@trsys-tech/matrix-library 0.5.2-beta.2 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.es.js","sources":["../src/components/sidebar/Sidebar.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { VariantProps, tv } from \"tailwind-variants\";\r\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Skeleton } from \"../skeleton/Skeleton\";\r\nimport { Separator } from \"../separator/Separator\";\r\nimport { useIsMobile } from \"../../lib/hooks/use-mobile\";\r\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../tooltip/Tooltip\";\r\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"../sheet/Sheet\";\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 = \"4rem\";\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 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\nconst SidebarProvider = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n }\r\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\r\n const isMobile = useIsMobile();\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 setOpen(open => !open);\r\n }, [setOpen]);\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 (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\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 toggleSidebar,\r\n }),\r\n [state, open, setOpen, isMobile, toggleSidebar],\r\n );\r\n\r\n return (\r\n <SidebarContext.Provider value={contextValue}>\r\n <TooltipProvider delayDuration={0}>\r\n <div\r\n style={{ ...style } as React.CSSProperties}\r\n className={cn(\"group/sidebar-wrapper flex h-full w-full has-[[data-variant=inset]]:bg-gray-50\", className)}\r\n ref={ref}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </TooltipProvider>\r\n </SidebarContext.Provider>\r\n );\r\n});\r\nSidebarProvider.displayName = \"SidebarProvider\";\r\ntype SidebarProviderProps = React.ComponentProps<typeof SidebarProvider>;\r\n\r\nconst Sidebar = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n side?: \"left\" | \"right\";\r\n variant?: \"sidebar\" | \"floating\" | \"inset\";\r\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\r\n width?: string;\r\n widthIcon?: string;\r\n widthMobile?: string;\r\n }\r\n>(({ side = \"left\", variant = \"sidebar\", collapsible = \"offcanvas\", className, children, width, widthIcon, widthMobile, style, ...props }, ref) => {\r\n const { isMobile, state, open, setOpen } = useSidebar();\r\n\r\n if (collapsible === \"none\") {\r\n return (\r\n <div\r\n data-side={side}\r\n style={\r\n {\r\n ...(side === \"left\"\r\n ? {\r\n \"--sidebar-left-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-left-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }\r\n : {\r\n \"--sidebar-right-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-right-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }),\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n className={cn(\r\n \"flex h-full data-[side=left]:w-[--sidebar-left-width] data-[side=right]:w-[--sidebar-right-width] flex-col bg-gray-50\",\r\n className,\r\n )}\r\n ref={ref}\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={open} onOpenChange={setOpen} {...props}>\r\n <SheetContent\r\n data-sidebar=\"sidebar\"\r\n data-mobile=\"true\"\r\n data-side={side}\r\n className=\"data-[side=left]:w-[--sidebar-left-width] data-[side=right]:w-[--sidebar-right-width] bg-gray-50 p-0 [&>button]:hidden\"\r\n style={\r\n {\r\n ...(side === \"left\"\r\n ? {\r\n \"--sidebar-left-width\": widthMobile ?? SIDEBAR_WIDTH_MOBILE,\r\n }\r\n : {\r\n \"--sidebar-right-width\": widthMobile ?? SIDEBAR_WIDTH_MOBILE,\r\n }),\r\n } as React.CSSProperties\r\n }\r\n side={side}\r\n >\r\n <VisuallyHidden>\r\n <SheetHeader>\r\n <SheetTitle> </SheetTitle>\r\n <SheetDescription> </SheetDescription>\r\n </SheetHeader>\r\n </VisuallyHidden>\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 ref={ref}\r\n className=\"group peer hidden md:block relative\"\r\n data-state={state}\r\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\r\n data-variant={variant}\r\n data-side={side}\r\n style={\r\n {\r\n ...(side === \"left\"\r\n ? {\r\n \"--sidebar-left-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-left-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }\r\n : {\r\n \"--sidebar-right-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-right-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }),\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n >\r\n {/* This is what handles the sidebar gap on desktop */}\r\n <div\r\n className={cn(\r\n \"duration-200 relative h-full group-data-[side=left]:w-[--sidebar-left-width] group-data-[side=right]:w-[--sidebar-right-width] bg-transparent transition-[width] ease-linear\",\r\n \"group-data-[side=left]:group-data-[collapsible=offcanvas]:w-0 group-data-[side=right]:group-data-[collapsible=offcanvas]:w-0\",\r\n \"group-data-[side=right]:rotate-180\",\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"group-data-[side=left]:group-data-[collapsible=icon]:w-[calc(var(--sidebar-left-width-icon)_+_theme(spacing.4))] group-data-[side=right]:group-data-[collapsible=icon]:w-[calc(var(--sidebar-right-width-icon)_+_theme(spacing.4))]\"\r\n : \"group-data-[side=left]:group-data-[collapsible=icon]:w-[--sidebar-left-width-icon] group-data-[side=right]:group-data-[collapsible=icon]:w-[--sidebar-right-width-icon]\",\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"duration-200 absolute inset-y-0 z-10 hidden h-full group-data-[side=left]:w-[--sidebar-left-width] group-data-[side=right]:w-[--sidebar-right-width] transition-[left,right,width] ease-linear md:flex\",\r\n side === \"left\"\r\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-left-width)*-1)]\"\r\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-right-width)*-1)]\",\r\n // Adjust the padding for floating and inset variants.\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"p-2 group-data-[side=left]:group-data-[collapsible=icon]:w-[calc(var(--sidebar-left-width-icon)_+_theme(spacing.4)_+2px)] group-data-[side=right]:group-data-[collapsible=icon]:w-[calc(var(--sidebar-right-width-icon)_+_theme(spacing.4)_+2px)]\"\r\n : \"group-data-[side=left]:group-data-[collapsible=icon]:w-[--sidebar-left-width-icon] group-data-[side=right]:group-data-[collapsible=icon]:w-[--sidebar-right-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=\"flex h-full w-full flex-col bg-gray-50 group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow\"\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n});\r\nSidebar.displayName = \"Sidebar\";\r\ntype SidebarProps = React.ComponentProps<typeof Sidebar>;\r\n\r\nconst SidebarTrigger = React.forwardRef<React.ElementRef<\"button\">, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\r\n ({ className, onClick, asChild, ...props }, ref) => {\r\n const { toggleSidebar } = useSidebar();\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"trigger\"\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 );\r\n },\r\n);\r\nSidebarTrigger.displayName = \"SidebarTrigger\";\r\ntype SidebarTriggerProps = React.ComponentProps<typeof SidebarTrigger>;\r\n\r\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(({ className, ...props }, ref) => {\r\n const { toggleSidebar } = useSidebar();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n data-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 \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-gray-50-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\r\n \"[[data-side=left]_&]:cursor-w-resize [[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]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-gray-50\",\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\nSidebarRail.displayName = \"SidebarRail\";\r\ntype SidebarRailProps = React.ComponentProps<typeof SidebarRail>;\r\n\r\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({ className, ...props }, ref) => {\r\n return (\r\n <main\r\n ref={ref}\r\n className={cn(\r\n \"relative flex h-full flex-1 flex-col bg-background\",\r\n \"peer-data-[variant=inset]:min-h-[calc(100%-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarInset.displayName = \"SidebarInset\";\r\ntype SidebarInsetProps = React.ComponentProps<typeof SidebarInset>;\r\n\r\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"header\" className={cn(\"flex flex-col gap-2 p-2\", className)} {...props} />;\r\n});\r\nSidebarHeader.displayName = \"SidebarHeader\";\r\ntype SidebarHeaderProps = React.ComponentProps<typeof SidebarHeader>;\r\n\r\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"footer\" className={cn(\"flex flex-col gap-2 p-2\", className)} {...props} />;\r\n});\r\nSidebarFooter.displayName = \"SidebarFooter\";\r\ntype SidebarFooterProps = React.ComponentProps<typeof SidebarFooter>;\r\n\r\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\r\n ({ className, ...props }, ref) => {\r\n return <Separator ref={ref} data-sidebar=\"separator\" className={cn(\"mx-2 w-auto bg-gray-50-border\", className)} {...props} />;\r\n },\r\n);\r\nSidebarSeparator.displayName = \"SidebarSeparator\";\r\ntype SidebarSeparatorProps = React.ComponentProps<typeof SidebarSeparator>;\r\n\r\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"content\"\r\n className={cn(\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarContent.displayName = \"SidebarContent\";\r\ntype SidebarContentProps = React.ComponentProps<typeof SidebarContent>;\r\n\r\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"group\" className={cn(\"relative flex w-full min-w-0 flex-col py-2\", className)} {...props} />;\r\n});\r\nSidebarGroup.displayName = \"SidebarGroup\";\r\ntype SidebarGroupProps = React.ComponentProps<typeof SidebarGroup>;\r\n\r\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & { asChild?: boolean }>(\r\n ({ className, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"div\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"group-label\"\r\n className={cn(\r\n \"duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-none transition-[margin,opa] 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\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\r\ntype SidebarGroupLabelProps = React.ComponentProps<typeof SidebarGroupLabel>;\r\n\r\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\r\n ({ className, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"group-action\"\r\n className={cn(\r\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-none transition-transform hover:bg-gray-50-accent 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 after:md: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\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\r\ntype SidebarGroupActionProps = React.ComponentProps<typeof SidebarGroupAction>;\r\n\r\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => (\r\n <div ref={ref} data-sidebar=\"group-content\" className={cn(\"w-full text-sm\", className)} {...props} />\r\n));\r\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\r\ntype SidebarGroupContentProps = React.ComponentProps<typeof SidebarGroupContent>;\r\n\r\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\r\n <ul ref={ref} data-sidebar=\"menu\" className={cn(\"flex w-full min-w-0 flex-col gap-4\", className)} {...props} />\r\n));\r\nSidebarMenu.displayName = \"SidebarMenu\";\r\ntype SidebarMenuProps = React.ComponentProps<typeof SidebarMenu>;\r\n\r\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ className, ...props }, ref) => (\r\n <li ref={ref} data-sidebar=\"menu-item\" className={cn(\"group/menu-item relative ps-2\", className)} {...props} />\r\n));\r\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\r\ntype SidebarMenuItemProps = React.ComponentProps<typeof SidebarMenuItem>;\r\n\r\nconst sidebarMenuButtonVariants = tv({\r\n base: [\r\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-s-md rounded-e-none p-2 text-left text-sm text-text-400 font-medium outline-none transition-[width,height,padding] hover:bg-gray-50 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\",\r\n \"data-[active=true]:bg-primary data-[active=true]:text-gray-0 data-[active=true]:font-bold group-data-[collapsible=icon]:size-10 group-data-[collapsible=icon]:w-14 group-data-[collapsible=icon]:p-2 group-data-[collapsible=icon]:pl-4 [&>span:last-child]:truncate\",\r\n \"[&>svg]:size-6 [&>svg]:shrink-0 [&>svg]:data-[active=true]:text-secondary group-data-[collapsible=icon]:[&>svg]:me-2\",\r\n \"data-[active=true]:before:[content:''] data-[active=true]:before:absolute data-[active=true]:before:start-0 data-[active=true]:before:h-10 data-[active=true]:before:w-1 data-[active=true]:before:bg-secondary data-[active=true]:before:rounded-e-md\",\r\n \"overflow-ellipsis whitespace-nowrap\",\r\n ].join(\" \"),\r\n variants: {\r\n variant: {\r\n default: \"hover:bg-gray-50\",\r\n outline: \"bg-background shadow-[0_0_0_1px_hsl(var(--gray--300))] hover:bg-gray-50 hover:shadow-[0_0_0_1px_hsl(var(--gray-400))]\",\r\n },\r\n size: {\r\n default: \"h-10 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\nconst SidebarMenuButton = React.forwardRef<\r\n HTMLButtonElement,\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>(({ asChild = false, isActive = false, variant = \"default\", size = \"default\", tooltip, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n const { isMobile, state } = useSidebar();\r\n\r\n const button = (\r\n <Comp\r\n ref={ref}\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 side=\"right\" align=\"center\" hidden={state !== \"collapsed\" || isMobile} {...tooltip} />\r\n </Tooltip>\r\n );\r\n});\r\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\r\ntype SidebarMenuButtonProps = React.ComponentProps<typeof SidebarMenuButton>;\r\n\r\nconst SidebarMenuAction = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n showOnHover?: boolean;\r\n }\r\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-action\"\r\n className={cn(\r\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-none transition-transform hover:bg-gray-50-accent 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 after:md: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 && \"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\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\r\ntype SidebarMenuActionProps = React.ComponentProps<typeof SidebarMenuAction>;\r\n\r\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"menu-badge\"\r\n className={cn(\r\n \"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 pointer-events-none\",\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\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\r\ntype SidebarMenuBadgeProps = React.ComponentProps<typeof SidebarMenuBadge>;\r\n\r\nconst SidebarMenuSkeleton = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n showIcon?: boolean;\r\n }\r\n>(({ className, showIcon = false, ...props }, ref) => {\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 ref={ref} data-sidebar=\"menu-skeleton\" className={cn(\"rounded-md h-8 flex gap-2 px-2 items-center\", className)} {...props}>\r\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\r\n <Skeleton\r\n className=\"h-4 flex-1 max-w-[--skeleton-width]\"\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\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\r\ntype SidebarMenuSkeletonProps = React.ComponentProps<typeof SidebarMenuSkeleton>;\r\n\r\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n data-sidebar=\"menu-sub\"\r\n className={cn(\"flex min-w-0 translate-x-px flex-col gap-1\", \"group-data-[collapsible=icon]:hidden\", className)}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\r\ntype SidebarMenuSubProps = React.ComponentProps<typeof SidebarMenuSub>;\r\n\r\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ ...props }, ref) => <li ref={ref} {...props} />);\r\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\r\ntype SidebarMenuSubItemProps = React.ComponentProps<typeof SidebarMenuSubItem>;\r\n\r\nconst SidebarMenuSubButton = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentProps<\"a\"> & {\r\n asChild?: boolean;\r\n size?: \"sm\" | \"md\";\r\n isActive?: boolean;\r\n }\r\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"a\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-sub-button\"\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(\r\n \"flex h-10 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-s-md ps-10 text-sm text-text-400 font-medium outline-none hover:bg-gray-50 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-gray-100 data-[active=true]:text-text\",\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\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\r\ntype SidebarMenuSubButtonProps = React.ComponentProps<typeof SidebarMenuSubButton>;\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 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 type SidebarProps,\r\n type SidebarContentProps,\r\n type SidebarFooterProps,\r\n type SidebarGroupProps,\r\n type SidebarGroupActionProps,\r\n type SidebarGroupContentProps,\r\n type SidebarGroupLabelProps,\r\n type SidebarHeaderProps,\r\n type SidebarInsetProps,\r\n type SidebarMenuProps,\r\n type SidebarMenuActionProps,\r\n type SidebarMenuBadgeProps,\r\n type SidebarMenuButtonProps,\r\n type SidebarMenuItemProps,\r\n type SidebarMenuSkeletonProps,\r\n type SidebarMenuSubProps,\r\n type SidebarMenuSubButtonProps,\r\n type SidebarMenuSubItemProps,\r\n type SidebarProviderProps,\r\n type SidebarRailProps,\r\n type SidebarSeparatorProps,\r\n type SidebarTriggerProps,\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","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","isMobile","useIsMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","TooltipProvider","cn","Sidebar","side","variant","collapsible","width","widthIcon","widthMobile","Sheet","jsxs","SheetContent","VisuallyHidden","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","asChild","Slot","SidebarRail","SidebarInset","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","tv","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":";;;;;;;;;;;AAcA,MAAMA,IAAsB,iBACtBC,IAAyB,OAAU,KAAK,GACxCC,IAAgB,SAChBC,IAAuB,SACvBC,IAAqB,QACrBC,IAA4B,KAU5BC,IAAiBC,EAAM,cAAqC,IAAI;AAEtE,SAASC,IAAa;AACpB,QAAMC,IAAUF,EAAM,WAAWD,CAAc;AAC/C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,mDAAmD;AAGrE,SAAOA;AACT;AAEA,MAAMC,IAAkBH,EAAM,WAO5B,CAAC,EAAE,aAAAI,IAAc,IAAM,MAAMC,GAAU,cAAcC,GAAa,WAAAC,GAAW,OAAAC,GAAO,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAAQ;AAClH,QAAMC,IAAWC,EAAA,GAIX,CAACC,GAAOC,CAAQ,IAAIf,EAAM,SAASI,CAAW,GAC9CY,IAAOX,KAAYS,GACnBG,IAAUjB,EAAM;AAAA,IACpB,CAACkB,MAAmD;AAClD,YAAMC,IAAY,OAAOD,KAAU,aAAaA,EAAMF,CAAI,IAAIE;AAC9D,MAAIZ,IACFA,EAAYa,CAAS,IAErBJ,EAASI,CAAS,GAIpB,SAAS,SAAS,GAAG1B,CAAmB,IAAI0B,CAAS,qBAAqBzB,CAAsB;AAAA,IAClG;AAAA,IACA,CAACY,GAAaU,CAAI;AAAA,EAAA,GAIdI,IAAgBpB,EAAM,YAAY,MAC/BiB,EAAQ,CAAAD,MAAQ,CAACA,CAAI,GAC3B,CAACC,CAAO,CAAC;AAGZ,EAAAjB,EAAM,UAAU,MAAM;AACpB,UAAMqB,IAAgB,CAACC,MAAyB;AAC9C,MAAIA,EAAM,QAAQxB,MAA8BwB,EAAM,WAAWA,EAAM,aACrEA,EAAM,eAAA,GACNF,EAAA;AAAA,IAEJ;AAEA,kBAAO,iBAAiB,WAAWC,CAAa,GACzC,MAAM,OAAO,oBAAoB,WAAWA,CAAa;AAAA,EAClE,GAAG,CAACD,CAAa,CAAC;AAIlB,QAAMG,IAAQP,IAAO,aAAa,aAE5BQ,IAAexB,EAAM;AAAA,IACzB,OAAO;AAAA,MACL,OAAAuB;AAAA,MACA,MAAAP;AAAA,MACA,SAAAC;AAAA,MACA,UAAAL;AAAA,MACA,eAAAQ;AAAA,IAAA;AAAA,IAEF,CAACG,GAAOP,GAAMC,GAASL,GAAUQ,CAAa;AAAA,EAAA;AAGhD,SACE,gBAAAK,EAAC1B,EAAe,UAAf,EAAwB,OAAOyB,GAC9B,UAAA,gBAAAC,EAACC,GAAA,EAAgB,eAAe,GAC9B,UAAA,gBAAAD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,GAAGjB,EAAA;AAAA,MACZ,WAAWmB,EAAG,kFAAkFpB,CAAS;AAAA,MACzG,KAAAI;AAAA,MACC,GAAGD;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA,GAEL,EAAA,CACF;AAEJ,CAAC;AACDN,EAAgB,cAAc;AAG9B,MAAMyB,IAAU5B,EAAM,WAUpB,CAAC,EAAE,MAAA6B,IAAO,QAAQ,SAAAC,IAAU,WAAW,aAAAC,IAAc,aAAa,WAAAxB,GAAW,UAAAE,GAAU,OAAAuB,GAAO,WAAAC,GAAW,aAAAC,GAAa,OAAA1B,GAAO,GAAGE,EAAA,GAASC,MAAQ;AACjJ,QAAM,EAAE,UAAAC,GAAU,OAAAW,GAAO,MAAAP,GAAM,SAAAC,EAAA,IAAYhB,EAAA;AAE3C,SAAI8B,MAAgB,SAEhB,gBAAAN;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAWI;AAAA,MACX,OACE;AAAA,QACE,GAAIA,MAAS,SACT;AAAA,UACE,wBAAwBG,KAASrC;AAAA,UACjC,6BAA6BsC,KAAapC;AAAA,QAAA,IAE5C;AAAA,UACE,yBAAyBmC,KAASrC;AAAA,UAClC,8BAA8BsC,KAAapC;AAAA,QAAA;AAAA,QAEjD,GAAGW;AAAA,MAAA;AAAA,MAGP,WAAWmB;AAAA,QACT;AAAA,QACApB;AAAA,MAAA;AAAA,MAEF,KAAAI;AAAA,MACC,GAAGD;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA,IAKHG,sBAECuB,GAAA,EAAM,MAAAnB,GAAY,cAAcC,GAAU,GAAGP,GAC5C,UAAA,gBAAA0B;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,gBAAa;AAAA,MACb,eAAY;AAAA,MACZ,aAAWR;AAAA,MACX,WAAU;AAAA,MACV,OACE;AAAA,QACE,GAAIA,MAAS,SACT;AAAA,UACE,wBAAwBK,KAAetC;AAAA,QAAA,IAEzC;AAAA,UACE,yBAAyBsC,KAAetC;AAAA,QAAA;AAAA,MAC1C;AAAA,MAGR,MAAAiC;AAAA,MAEA,UAAA;AAAA,QAAA,gBAAAJ,EAACa,GAAA,EACC,4BAACC,GAAA,EACC,UAAA;AAAA,UAAA,gBAAAd,EAACe,KAAW,UAAA,IAAA,CAAC;AAAA,UACb,gBAAAf,EAACgB,KAAiB,UAAA,IAAA,CAAC;AAAA,QAAA,EAAA,CACrB,EAAA,CACF;AAAA,QACA,gBAAAhB,EAAC,OAAA,EAAI,WAAU,+BAA+B,UAAAhB,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAE3D,IAKF,gBAAA2B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAzB;AAAA,MACA,WAAU;AAAA,MACV,cAAYY;AAAA,MACZ,oBAAkBA,MAAU,cAAcQ,IAAc;AAAA,MACxD,gBAAcD;AAAA,MACd,aAAWD;AAAA,MACX,OACE;AAAA,QACE,GAAIA,MAAS,SACT;AAAA,UACE,wBAAwBG,KAASrC;AAAA,UACjC,6BAA6BsC,KAAapC;AAAA,QAAA,IAE5C;AAAA,UACE,yBAAyBmC,KAASrC;AAAA,UAClC,8BAA8BsC,KAAapC;AAAA,QAAA;AAAA,QAEjD,GAAGW;AAAA,MAAA;AAAA,MAKP,UAAA;AAAA,QAAA,gBAAAiB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWE;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACAG,MAAY,cAAcA,MAAY,UAClC,wOACA;AAAA,YAAA;AAAA,UACN;AAAA,QAAA;AAAA,QAEF,gBAAAL;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWE;AAAA,cACT;AAAA,cACAE,MAAS,SACL,wFACA;AAAA;AAAA,cAEJC,MAAY,cAAcA,MAAY,UAClC,sPACA;AAAA,cACJvB;AAAA,YAAA;AAAA,YAED,GAAGG;AAAA,YAEJ,UAAA,gBAAAe;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,gBAAa;AAAA,gBACb,WAAU;AAAA,gBAET,UAAAhB;AAAA,cAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;AACDmB,EAAQ,cAAc;AAGtB,MAAMc,IAAiB1C,EAAM;AAAA,EAC3B,CAAC,EAAE,WAAAO,GAAW,SAAAoC,GAAS,SAAAC,GAAS,GAAGlC,EAAA,GAASC,MAAQ;AAClD,UAAM,EAAE,eAAAS,EAAA,IAAkBnB,EAAA;AAG1B,WACE,gBAAAwB;AAAA,MAHWmB,IAAUC,IAAO;AAAA,MAG3B;AAAA,QACC,KAAAlC;AAAA,QACA,gBAAa;AAAA,QACb,WAAWgB,EAAG,WAAWpB,CAAS;AAAA,QAClC,SAAS,CAAAe,MAAS;AAChB,UAAAqB,IAAUrB,CAAK,GACfF,EAAA;AAAA,QACF;AAAA,QACC,GAAGV;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AACAgC,EAAe,cAAc;AAG7B,MAAMI,IAAc9C,EAAM,WAA8D,CAAC,EAAE,WAAAO,GAAW,GAAGG,EAAA,GAASC,MAAQ;AACxH,QAAM,EAAE,eAAAS,EAAA,IAAkBnB,EAAA;AAE1B,SACE,gBAAAwB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAd;AAAA,MACA,gBAAa;AAAA,MACb,cAAW;AAAA,MACX,UAAU;AAAA,MACV,SAASS;AAAA,MACT,OAAM;AAAA,MACN,WAAWO;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACApB;AAAA,MAAA;AAAA,MAED,GAAGG;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;AACDoC,EAAY,cAAc;AAG1B,MAAMC,IAAe/C,EAAM,WAAyD,CAAC,EAAE,WAAAO,GAAW,GAAGG,EAAA,GAASC,MAE1G,gBAAAc;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAd;AAAA,IACA,WAAWgB;AAAA,MACT;AAAA,MACA;AAAA,MACApB;AAAA,IAAA;AAAA,IAED,GAAGG;AAAA,EAAA;AAAA,CAGT;AACDqC,EAAa,cAAc;AAG3B,MAAMC,IAAgBhD,EAAM,WAAwD,CAAC,EAAE,WAAAO,GAAW,GAAGG,EAAA,GAASC,MACrG,gBAAAc,EAAC,OAAA,EAAI,KAAAd,GAAU,gBAAa,UAAS,WAAWgB,EAAG,2BAA2BpB,CAAS,GAAI,GAAGG,EAAA,CAAO,CAC7G;AACDsC,EAAc,cAAc;AAG5B,MAAMC,IAAgBjD,EAAM,WAAwD,CAAC,EAAE,WAAAO,GAAW,GAAGG,EAAA,GAASC,MACrG,gBAAAc,EAAC,OAAA,EAAI,KAAAd,GAAU,gBAAa,UAAS,WAAWgB,EAAG,2BAA2BpB,CAAS,GAAI,GAAGG,EAAA,CAAO,CAC7G;AACDuC,EAAc,cAAc;AAG5B,MAAMC,IAAmBlD,EAAM;AAAA,EAC7B,CAAC,EAAE,WAAAO,GAAW,GAAGG,EAAA,GAASC,MACjB,gBAAAc,EAAC0B,GAAA,EAAU,KAAAxC,GAAU,gBAAa,aAAY,WAAWgB,EAAG,iCAAiCpB,CAAS,GAAI,GAAGG,EAAA,CAAO;AAE/H;AACAwC,EAAiB,cAAc;AAG/B,MAAME,IAAiBpD,EAAM,WAAwD,CAAC,EAAE,WAAAO,GAAW,GAAGG,EAAA,GAASC,MAE3G,gBAAAc;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAd;AAAA,IACA,gBAAa;AAAA,IACb,WAAWgB,EAAG,kGAAkGpB,CAAS;AAAA,IACxH,GAAGG;AAAA,EAAA;AAAA,CAGT;AACD0C,EAAe,cAAc;AAG7B,MAAMC,KAAerD,EAAM,WAAwD,CAAC,EAAE,WAAAO,GAAW,GAAGG,EAAA,GAASC,MACpG,gBAAAc,EAAC,OAAA,EAAI,KAAAd,GAAU,gBAAa,SAAQ,WAAWgB,EAAG,8CAA8CpB,CAAS,GAAI,GAAGG,EAAA,CAAO,CAC/H;AACD2C,GAAa,cAAc;AAG3B,MAAMC,KAAoBtD,EAAM;AAAA,EAC9B,CAAC,EAAE,WAAAO,GAAW,SAAAqC,IAAU,IAAO,GAAGlC,EAAA,GAASC,MAIvC,gBAAAc;AAAA,IAHWmB,IAAUC,IAAO;AAAA,IAG3B;AAAA,MACC,KAAAlC;AAAA,MACA,gBAAa;AAAA,MACb,WAAWgB;AAAA,QACT;AAAA,QACA;AAAA,QACApB;AAAA,MAAA;AAAA,MAED,GAAGG;AAAA,IAAA;AAAA,EAAA;AAIZ;AACA4C,GAAkB,cAAc;AAGhC,MAAMC,KAAqBvD,EAAM;AAAA,EAC/B,CAAC,EAAE,WAAAO,GAAW,SAAAqC,IAAU,IAAO,GAAGlC,EAAA,GAASC,MAIvC,gBAAAc;AAAA,IAHWmB,IAAUC,IAAO;AAAA,IAG3B;AAAA,MACC,KAAAlC;AAAA,MACA,gBAAa;AAAA,MACb,WAAWgB;AAAA,QACT;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACApB;AAAA,MAAA;AAAA,MAED,GAAGG;AAAA,IAAA;AAAA,EAAA;AAIZ;AACA6C,GAAmB,cAAc;AAGjC,MAAMC,KAAsBxD,EAAM,WAAwD,CAAC,EAAE,WAAAO,GAAW,GAAGG,EAAA,GAASC,MAClH,gBAAAc,EAAC,SAAI,KAAAd,GAAU,gBAAa,iBAAgB,WAAWgB,EAAG,kBAAkBpB,CAAS,GAAI,GAAGG,GAAO,CACpG;AACD8C,GAAoB,cAAc;AAGlC,MAAMC,KAAczD,EAAM,WAAyD,CAAC,EAAE,WAAAO,GAAW,GAAGG,EAAA,GAASC,MAC3G,gBAAAc,EAAC,QAAG,KAAAd,GAAU,gBAAa,QAAO,WAAWgB,EAAG,sCAAsCpB,CAAS,GAAI,GAAGG,GAAO,CAC9G;AACD+C,GAAY,cAAc;AAG1B,MAAMC,KAAkB1D,EAAM,WAAsD,CAAC,EAAE,WAAAO,GAAW,GAAGG,EAAA,GAASC,MAC5G,gBAAAc,EAAC,QAAG,KAAAd,GAAU,gBAAa,aAAY,WAAWgB,EAAG,iCAAiCpB,CAAS,GAAI,GAAGG,GAAO,CAC9G;AACDgD,GAAgB,cAAc;AAG9B,MAAMC,KAA4BC,EAAG;AAAA,EACnC,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,MACT,SAAS;AAAA,IAAA;AAAA,IAEX,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAEV,CAAC,GAEKC,KAAoB7D,EAAM,WAO9B,CAAC,EAAE,SAAA4C,IAAU,IAAO,UAAAkB,IAAW,IAAO,SAAAhC,IAAU,WAAW,MAAAiC,IAAO,WAAW,SAAAC,GAAS,WAAAzD,GAAW,GAAGG,EAAA,GAASC,MAAQ;AACrH,QAAMsD,IAAOrB,IAAUC,IAAO,UACxB,EAAE,UAAAjC,GAAU,OAAAW,EAAA,IAAUtB,EAAA,GAEtBiE,IACJ,gBAAAzC;AAAA,IAACwC;AAAA,IAAA;AAAA,MACC,KAAAtD;AAAA,MACA,gBAAa;AAAA,MACb,aAAWoD;AAAA,MACX,eAAaD;AAAA,MACb,WAAWnC,EAAGgC,GAA0B,EAAE,SAAA7B,GAAS,MAAAiC,EAAA,CAAM,GAAGxD,CAAS;AAAA,MACpE,GAAGG;AAAA,IAAA;AAAA,EAAA;AAIR,SAAKsD,KAID,OAAOA,KAAY,aACrBA,IAAU;AAAA,IACR,UAAUA;AAAA,EAAA,sBAKXG,GAAA,EACC,UAAA;AAAA,IAAA,gBAAA1C,EAAC2C,GAAA,EAAe,SAAO,IAAE,UAAAF,GAAO;AAAA,IAChC,gBAAAzC,EAAC4C,GAAA,EAAe,MAAK,SAAQ,OAAM,UAAS,QAAQ9C,MAAU,eAAeX,GAAW,GAAGoD,EAAA,CAAS;AAAA,EAAA,GACtG,KAbOE;AAeX,CAAC;AACDL,GAAkB,cAAc;AAGhC,MAAMS,KAAoBtE,EAAM,WAM9B,CAAC,EAAE,WAAAO,GAAW,SAAAqC,IAAU,IAAO,aAAA2B,IAAc,IAAO,GAAG7D,EAAA,GAASC,MAI9D,gBAAAc;AAAA,EAHWmB,IAAUC,IAAO;AAAA,EAG3B;AAAA,IACC,KAAAlC;AAAA,IACA,gBAAa;AAAA,IACb,WAAWgB;AAAA,MACT;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA4C,KAAe;AAAA,MACfhE;AAAA,IAAA;AAAA,IAED,GAAGG;AAAA,EAAA;AAAA,CAGT;AACD4D,GAAkB,cAAc;AAGhC,MAAME,KAAmBxE,EAAM,WAAwD,CAAC,EAAE,WAAAO,GAAW,GAAGG,EAAA,GAASC,MAC/G,gBAAAc;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAd;AAAA,IACA,gBAAa;AAAA,IACb,WAAWgB;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACApB;AAAA,IAAA;AAAA,IAED,GAAGG;AAAA,EAAA;AACN,CACD;AACD8D,GAAiB,cAAc;AAG/B,MAAMC,KAAsBzE,EAAM,WAKhC,CAAC,EAAE,WAAAO,GAAW,UAAAmE,IAAW,IAAO,GAAGhE,EAAA,GAASC,MAAQ;AAEpD,QAAMqB,IAAQhC,EAAM,QAAQ,MACnB,GAAG,KAAK,MAAM,KAAK,WAAW,EAAE,IAAI,EAAE,KAC5C,CAAA,CAAE;AAEL,SACE,gBAAAoC,EAAC,OAAA,EAAI,KAAAzB,GAAU,gBAAa,iBAAgB,WAAWgB,EAAG,+CAA+CpB,CAAS,GAAI,GAAGG,GACtH,UAAA;AAAA,IAAAgE,KAAY,gBAAAjD,EAACkD,GAAA,EAAS,WAAU,qBAAoB,gBAAa,sBAAqB;AAAA,IACvF,gBAAAlD;AAAA,MAACkD;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,gBAAa;AAAA,QACb,OACE;AAAA,UACE,oBAAoB3C;AAAA,QAAA;AAAA,MACtB;AAAA,IAAA;AAAA,EAEJ,GACF;AAEJ,CAAC;AACDyC,GAAoB,cAAc;AAGlC,MAAMG,KAAiB5E,EAAM,WAAyD,CAAC,EAAE,WAAAO,GAAW,GAAGG,EAAA,GAASC,MAC9G,gBAAAc;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAd;AAAA,IACA,gBAAa;AAAA,IACb,WAAWgB,EAAG,8CAA8C,wCAAwCpB,CAAS;AAAA,IAC5G,GAAGG;AAAA,EAAA;AACN,CACD;AACDkE,GAAe,cAAc;AAG7B,MAAMC,KAAqB7E,EAAM,WAAsD,CAAC,EAAE,GAAGU,EAAA,GAASC,MAAQ,gBAAAc,EAAC,MAAA,EAAG,KAAAd,GAAW,GAAGD,GAAO,CAAE;AACzImE,GAAmB,cAAc;AAGjC,MAAMC,KAAuB9E,EAAM,WAOjC,CAAC,EAAE,SAAA4C,IAAU,IAAO,MAAAmB,IAAO,MAAM,UAAAD,GAAU,WAAAvD,GAAW,GAAGG,EAAA,GAASC,MAIhE,gBAAAc;AAAA,EAHWmB,IAAUC,IAAO;AAAA,EAG3B;AAAA,IACC,KAAAlC;AAAA,IACA,gBAAa;AAAA,IACb,aAAWoD;AAAA,IACX,eAAaD;AAAA,IACb,WAAWnC;AAAA,MACT;AAAA,MACA;AAAA,MACAoC,MAAS,QAAQ;AAAA,MACjBA,MAAS,QAAQ;AAAA,MACjB;AAAA,MACAxD;AAAA,IAAA;AAAA,IAED,GAAGG;AAAA,EAAA;AAAA,CAGT;AACDoE,GAAqB,cAAc;"}
1
+ {"version":3,"file":"sidebar.es.js","sources":["../src/components/sidebar/Sidebar.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { VariantProps, tv } from \"tailwind-variants\";\r\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Skeleton } from \"../skeleton/Skeleton\";\r\nimport { Separator } from \"../separator/Separator\";\r\nimport { useIsMobile } from \"../../lib/hooks/use-mobile\";\r\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../tooltip/Tooltip\";\r\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"../sheet/Sheet\";\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 = \"4rem\";\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 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\nconst SidebarProvider = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n }\r\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\r\n const isMobile = useIsMobile();\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 setOpen(open => !open);\r\n }, [setOpen]);\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 (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\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 toggleSidebar,\r\n }),\r\n [state, open, setOpen, isMobile, toggleSidebar],\r\n );\r\n\r\n return (\r\n <SidebarContext.Provider value={contextValue}>\r\n <TooltipProvider delayDuration={0}>\r\n <div\r\n style={{ ...style } as React.CSSProperties}\r\n className={cn(\"group/sidebar-wrapper flex h-full w-full has-[[data-variant=inset]]:bg-gray-50\", className)}\r\n ref={ref}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </TooltipProvider>\r\n </SidebarContext.Provider>\r\n );\r\n});\r\nSidebarProvider.displayName = \"SidebarProvider\";\r\ntype SidebarProviderProps = React.ComponentProps<typeof SidebarProvider>;\r\n\r\nconst Sidebar = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n side?: \"left\" | \"right\";\r\n variant?: \"sidebar\" | \"floating\" | \"inset\";\r\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\r\n width?: string;\r\n widthIcon?: string;\r\n widthMobile?: string;\r\n }\r\n>(({ side = \"left\", variant = \"sidebar\", collapsible = \"offcanvas\", className, children, width, widthIcon, widthMobile, style, ...props }, ref) => {\r\n const { isMobile, state, open, setOpen } = useSidebar();\r\n\r\n if (collapsible === \"none\") {\r\n return (\r\n <div\r\n data-side={side}\r\n style={\r\n {\r\n ...(side === \"left\"\r\n ? {\r\n \"--sidebar-left-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-left-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }\r\n : {\r\n \"--sidebar-right-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-right-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }),\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n className={cn(\r\n \"flex h-full data-[side=left]:w-[--sidebar-left-width] data-[side=right]:w-[--sidebar-right-width] flex-col bg-gray-50\",\r\n className,\r\n )}\r\n ref={ref}\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={open} onOpenChange={setOpen} {...props}>\r\n <SheetContent\r\n data-sidebar=\"sidebar\"\r\n data-mobile=\"true\"\r\n data-side={side}\r\n className=\"data-[side=left]:w-[--sidebar-left-width] data-[side=right]:w-[--sidebar-right-width] bg-gray-50 p-0 [&>button]:hidden\"\r\n style={\r\n {\r\n ...(side === \"left\"\r\n ? {\r\n \"--sidebar-left-width\": widthMobile ?? SIDEBAR_WIDTH_MOBILE,\r\n }\r\n : {\r\n \"--sidebar-right-width\": widthMobile ?? SIDEBAR_WIDTH_MOBILE,\r\n }),\r\n } as React.CSSProperties\r\n }\r\n side={side}\r\n >\r\n <VisuallyHidden>\r\n <SheetHeader>\r\n <SheetTitle> </SheetTitle>\r\n <SheetDescription> </SheetDescription>\r\n </SheetHeader>\r\n </VisuallyHidden>\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 ref={ref}\r\n className=\"group peer hidden md:block relative\"\r\n data-state={state}\r\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\r\n data-variant={variant}\r\n data-side={side}\r\n style={\r\n {\r\n ...(side === \"left\"\r\n ? {\r\n \"--sidebar-left-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-left-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }\r\n : {\r\n \"--sidebar-right-width\": width ?? SIDEBAR_WIDTH,\r\n \"--sidebar-right-width-icon\": widthIcon ?? SIDEBAR_WIDTH_ICON,\r\n }),\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n >\r\n {/* This is what handles the sidebar gap on desktop */}\r\n <div\r\n className={cn(\r\n \"duration-200 relative h-full group-data-[side=left]:w-[--sidebar-left-width] group-data-[side=right]:w-[--sidebar-right-width] bg-transparent transition-[width] ease-linear\",\r\n \"group-data-[side=left]:group-data-[collapsible=offcanvas]:w-0 group-data-[side=right]:group-data-[collapsible=offcanvas]:w-0\",\r\n \"group-data-[side=right]:rotate-180\",\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"group-data-[side=left]:group-data-[collapsible=icon]:w-[calc(var(--sidebar-left-width-icon)_+_theme(spacing.4))] group-data-[side=right]:group-data-[collapsible=icon]:w-[calc(var(--sidebar-right-width-icon)_+_theme(spacing.4))]\"\r\n : \"group-data-[side=left]:group-data-[collapsible=icon]:w-[--sidebar-left-width-icon] group-data-[side=right]:group-data-[collapsible=icon]:w-[--sidebar-right-width-icon]\",\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"duration-200 absolute inset-y-0 z-10 hidden h-full group-data-[side=left]:w-[--sidebar-left-width] group-data-[side=right]:w-[--sidebar-right-width] transition-[left,right,width] ease-linear md:flex\",\r\n side === \"left\"\r\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-left-width)*-1)]\"\r\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-right-width)*-1)]\",\r\n // Adjust the padding for floating and inset variants.\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"p-2 group-data-[side=left]:group-data-[collapsible=icon]:w-[calc(var(--sidebar-left-width-icon)_+_theme(spacing.4)_+2px)] group-data-[side=right]:group-data-[collapsible=icon]:w-[calc(var(--sidebar-right-width-icon)_+_theme(spacing.4)_+2px)]\"\r\n : \"group-data-[side=left]:group-data-[collapsible=icon]:w-[--sidebar-left-width-icon] group-data-[side=right]:group-data-[collapsible=icon]:w-[--sidebar-right-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=\"flex h-full w-full flex-col bg-gray-50 group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow\"\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n});\r\nSidebar.displayName = \"Sidebar\";\r\ntype SidebarProps = React.ComponentProps<typeof Sidebar>;\r\n\r\nconst SidebarTrigger = React.forwardRef<React.ElementRef<\"button\">, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\r\n ({ className, onClick, asChild, ...props }, ref) => {\r\n const { toggleSidebar } = useSidebar();\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"trigger\"\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 );\r\n },\r\n);\r\nSidebarTrigger.displayName = \"SidebarTrigger\";\r\ntype SidebarTriggerProps = React.ComponentProps<typeof SidebarTrigger>;\r\n\r\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(({ className, ...props }, ref) => {\r\n const { toggleSidebar } = useSidebar();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n data-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 \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-gray-50-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\r\n \"[[data-side=left]_&]:cursor-w-resize [[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]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-gray-50\",\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\nSidebarRail.displayName = \"SidebarRail\";\r\ntype SidebarRailProps = React.ComponentProps<typeof SidebarRail>;\r\n\r\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({ className, ...props }, ref) => {\r\n return (\r\n <main\r\n ref={ref}\r\n className={cn(\r\n \"relative flex h-full flex-1 flex-col bg-background\",\r\n \"peer-data-[variant=inset]:min-h-[calc(100%-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarInset.displayName = \"SidebarInset\";\r\ntype SidebarInsetProps = React.ComponentProps<typeof SidebarInset>;\r\n\r\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"header\" className={cn(\"flex flex-col gap-2 p-2\", className)} {...props} />;\r\n});\r\nSidebarHeader.displayName = \"SidebarHeader\";\r\ntype SidebarHeaderProps = React.ComponentProps<typeof SidebarHeader>;\r\n\r\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"footer\" className={cn(\"flex flex-col gap-2 p-2\", className)} {...props} />;\r\n});\r\nSidebarFooter.displayName = \"SidebarFooter\";\r\ntype SidebarFooterProps = React.ComponentProps<typeof SidebarFooter>;\r\n\r\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\r\n ({ className, ...props }, ref) => {\r\n return <Separator ref={ref} data-sidebar=\"separator\" className={cn(\"mx-2 w-auto bg-gray-50-border\", className)} {...props} />;\r\n },\r\n);\r\nSidebarSeparator.displayName = \"SidebarSeparator\";\r\ntype SidebarSeparatorProps = React.ComponentProps<typeof SidebarSeparator>;\r\n\r\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"content\"\r\n className={cn(\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarContent.displayName = \"SidebarContent\";\r\ntype SidebarContentProps = React.ComponentProps<typeof SidebarContent>;\r\n\r\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\r\n return <div ref={ref} data-sidebar=\"group\" className={cn(\"relative flex w-full min-w-0 flex-col py-2\", className)} {...props} />;\r\n});\r\nSidebarGroup.displayName = \"SidebarGroup\";\r\ntype SidebarGroupProps = React.ComponentProps<typeof SidebarGroup>;\r\n\r\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & { asChild?: boolean }>(\r\n ({ className, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"div\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"group-label\"\r\n className={cn(\r\n \"duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-none transition-[margin,opacity] 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\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\r\ntype SidebarGroupLabelProps = React.ComponentProps<typeof SidebarGroupLabel>;\r\n\r\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\r\n ({ className, asChild = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"group-action\"\r\n className={cn(\r\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-none transition-transform hover:bg-gray-50-accent 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 after:md: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\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\r\ntype SidebarGroupActionProps = React.ComponentProps<typeof SidebarGroupAction>;\r\n\r\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => (\r\n <div ref={ref} data-sidebar=\"group-content\" className={cn(\"w-full text-sm\", className)} {...props} />\r\n));\r\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\r\ntype SidebarGroupContentProps = React.ComponentProps<typeof SidebarGroupContent>;\r\n\r\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\r\n <ul ref={ref} data-sidebar=\"menu\" className={cn(\"flex w-full min-w-0 flex-col gap-4\", className)} {...props} />\r\n));\r\nSidebarMenu.displayName = \"SidebarMenu\";\r\ntype SidebarMenuProps = React.ComponentProps<typeof SidebarMenu>;\r\n\r\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ className, ...props }, ref) => (\r\n <li ref={ref} data-sidebar=\"menu-item\" className={cn(\"group/menu-item relative ps-2\", className)} {...props} />\r\n));\r\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\r\ntype SidebarMenuItemProps = React.ComponentProps<typeof SidebarMenuItem>;\r\n\r\nconst sidebarMenuButtonVariants = tv({\r\n base: [\r\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-s-md rounded-e-none p-2 text-left text-sm text-text-400 font-medium outline-none transition-[width,height,padding] hover:bg-gray-50 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\",\r\n \"data-[active=true]:bg-primary data-[active=true]:text-gray-0 data-[active=true]:font-bold group-data-[collapsible=icon]:size-10 group-data-[collapsible=icon]:w-14 group-data-[collapsible=icon]:p-2 group-data-[collapsible=icon]:pl-4 [&>span:last-child]:truncate\",\r\n \"[&>svg]:size-6 [&>svg]:shrink-0 [&>svg]:data-[active=true]:text-secondary group-data-[collapsible=icon]:[&>svg]:me-2\",\r\n \"data-[active=true]:before:[content:''] data-[active=true]:before:absolute data-[active=true]:before:start-0 data-[active=true]:before:h-10 data-[active=true]:before:w-1 data-[active=true]:before:bg-secondary data-[active=true]:before:rounded-e-md\",\r\n \"overflow-ellipsis whitespace-nowrap\",\r\n ].join(\" \"),\r\n variants: {\r\n variant: {\r\n default: \"hover:bg-gray-50\",\r\n outline: \"bg-background shadow-[0_0_0_1px_hsl(var(--gray--300))] hover:bg-gray-50 hover:shadow-[0_0_0_1px_hsl(var(--gray-400))]\",\r\n },\r\n size: {\r\n default: \"h-10 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\nconst SidebarMenuButton = React.forwardRef<\r\n HTMLButtonElement,\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>(({ asChild = false, isActive = false, variant = \"default\", size = \"default\", tooltip, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n const { isMobile, state } = useSidebar();\r\n\r\n const button = (\r\n <Comp\r\n ref={ref}\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 side=\"right\" align=\"center\" hidden={state !== \"collapsed\" || isMobile} {...tooltip} />\r\n </Tooltip>\r\n );\r\n});\r\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\r\ntype SidebarMenuButtonProps = React.ComponentProps<typeof SidebarMenuButton>;\r\n\r\nconst SidebarMenuAction = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n showOnHover?: boolean;\r\n }\r\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-action\"\r\n className={cn(\r\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-none transition-transform hover:bg-gray-50-accent 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 after:md: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 && \"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\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\r\ntype SidebarMenuActionProps = React.ComponentProps<typeof SidebarMenuAction>;\r\n\r\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n data-sidebar=\"menu-badge\"\r\n className={cn(\r\n \"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 pointer-events-none\",\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\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\r\ntype SidebarMenuBadgeProps = React.ComponentProps<typeof SidebarMenuBadge>;\r\n\r\nconst SidebarMenuSkeleton = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n showIcon?: boolean;\r\n }\r\n>(({ className, showIcon = false, ...props }, ref) => {\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 ref={ref} data-sidebar=\"menu-skeleton\" className={cn(\"rounded-md h-8 flex gap-2 px-2 items-center\", className)} {...props}>\r\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\r\n <Skeleton\r\n className=\"h-4 flex-1 max-w-[--skeleton-width]\"\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\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\r\ntype SidebarMenuSkeletonProps = React.ComponentProps<typeof SidebarMenuSkeleton>;\r\n\r\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\r\n <ul\r\n ref={ref}\r\n data-sidebar=\"menu-sub\"\r\n className={cn(\"flex min-w-0 translate-x-px flex-col gap-1\", \"group-data-[collapsible=icon]:hidden\", className)}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\r\ntype SidebarMenuSubProps = React.ComponentProps<typeof SidebarMenuSub>;\r\n\r\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ ...props }, ref) => <li ref={ref} {...props} />);\r\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\r\ntype SidebarMenuSubItemProps = React.ComponentProps<typeof SidebarMenuSubItem>;\r\n\r\nconst SidebarMenuSubButton = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentProps<\"a\"> & {\r\n asChild?: boolean;\r\n size?: \"sm\" | \"md\";\r\n isActive?: boolean;\r\n }\r\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\r\n const Comp = asChild ? Slot : \"a\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar=\"menu-sub-button\"\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(\r\n \"flex h-10 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-s-md ps-10 text-sm text-text-400 font-medium outline-none hover:bg-gray-50 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-gray-100 data-[active=true]:text-text\",\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\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\r\ntype SidebarMenuSubButtonProps = React.ComponentProps<typeof SidebarMenuSubButton>;\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 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 type SidebarProps,\r\n type SidebarContentProps,\r\n type SidebarFooterProps,\r\n type SidebarGroupProps,\r\n type SidebarGroupActionProps,\r\n type SidebarGroupContentProps,\r\n type SidebarGroupLabelProps,\r\n type SidebarHeaderProps,\r\n type SidebarInsetProps,\r\n type SidebarMenuProps,\r\n type SidebarMenuActionProps,\r\n type SidebarMenuBadgeProps,\r\n type SidebarMenuButtonProps,\r\n type SidebarMenuItemProps,\r\n type SidebarMenuSkeletonProps,\r\n type SidebarMenuSubProps,\r\n type SidebarMenuSubButtonProps,\r\n type SidebarMenuSubItemProps,\r\n type SidebarProviderProps,\r\n type SidebarRailProps,\r\n type SidebarSeparatorProps,\r\n type SidebarTriggerProps,\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","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","isMobile","useIsMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","TooltipProvider","cn","Sidebar","side","variant","collapsible","width","widthIcon","widthMobile","Sheet","jsxs","SheetContent","VisuallyHidden","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","asChild","Slot","SidebarRail","SidebarInset","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","tv","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"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"}