@sth87/shadcn-design-system 0.1.5 → 0.1.6

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.
Files changed (48) hide show
  1. package/dist/AI_CONTEXT.md +1 -0
  2. package/dist/cjs/components/Button/Button.cjs +1 -1
  3. package/dist/cjs/components/Button/Button.cjs.map +1 -1
  4. package/dist/cjs/components/DatePicker/RangePicker.cjs +1 -1
  5. package/dist/cjs/components/DatePicker/RangePicker.cjs.map +1 -1
  6. package/dist/cjs/components/Input/Input.cjs +1 -1
  7. package/dist/cjs/components/Input/Input.cjs.map +1 -1
  8. package/dist/cjs/components/Table/data-table.cjs +1 -1
  9. package/dist/cjs/components/Table/data-table.cjs.map +1 -1
  10. package/dist/cjs/packages/ui/src/components/alert-dialog.cjs +1 -1
  11. package/dist/cjs/packages/ui/src/components/alert-dialog.cjs.map +1 -1
  12. package/dist/cjs/packages/ui/src/components/calendar.cjs +1 -1
  13. package/dist/cjs/packages/ui/src/components/calendar.cjs.map +1 -1
  14. package/dist/cjs/packages/ui/src/components/combobox.cjs +1 -1
  15. package/dist/cjs/packages/ui/src/components/combobox.cjs.map +1 -1
  16. package/dist/cjs/packages/ui/src/components/context-menu.cjs +1 -1
  17. package/dist/cjs/packages/ui/src/components/context-menu.cjs.map +1 -1
  18. package/dist/cjs/packages/ui/src/components/popover.cjs +1 -1
  19. package/dist/cjs/packages/ui/src/components/popover.cjs.map +1 -1
  20. package/dist/cjs/packages/ui/src/components/sidebar.cjs +1 -1
  21. package/dist/cjs/packages/ui/src/components/sidebar.cjs.map +1 -1
  22. package/dist/cjs/styles/index.css +1 -1
  23. package/dist/esm/components/Button/Button.js +22 -24
  24. package/dist/esm/components/Button/Button.js.map +1 -1
  25. package/dist/esm/components/DatePicker/RangePicker.js +41 -41
  26. package/dist/esm/components/DatePicker/RangePicker.js.map +1 -1
  27. package/dist/esm/components/Input/Input.js +37 -36
  28. package/dist/esm/components/Input/Input.js.map +1 -1
  29. package/dist/esm/components/Table/data-table.js +22 -16
  30. package/dist/esm/components/Table/data-table.js.map +1 -1
  31. package/dist/esm/packages/ui/src/components/alert-dialog.js +7 -7
  32. package/dist/esm/packages/ui/src/components/alert-dialog.js.map +1 -1
  33. package/dist/esm/packages/ui/src/components/calendar.js +1 -1
  34. package/dist/esm/packages/ui/src/components/calendar.js.map +1 -1
  35. package/dist/esm/packages/ui/src/components/combobox.js +1 -1
  36. package/dist/esm/packages/ui/src/components/combobox.js.map +1 -1
  37. package/dist/esm/packages/ui/src/components/context-menu.js +1 -1
  38. package/dist/esm/packages/ui/src/components/context-menu.js.map +1 -1
  39. package/dist/esm/packages/ui/src/components/popover.js +1 -1
  40. package/dist/esm/packages/ui/src/components/popover.js.map +1 -1
  41. package/dist/esm/packages/ui/src/components/sidebar.js +2 -2
  42. package/dist/esm/packages/ui/src/components/sidebar.js.map +1 -1
  43. package/dist/esm/styles/index.css +1 -1
  44. package/dist/types/components/Button/Button.d.ts.map +1 -1
  45. package/dist/types/components/Input/Input.d.ts +1 -0
  46. package/dist/types/components/Input/Input.d.ts.map +1 -1
  47. package/dist/types/components/Table/data-table.d.ts.map +1 -1
  48. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.cjs","sources":["../../../../../../../../packages/ui/src/components/sidebar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\n\nimport { useIsMobile } from \"@dsui/ui/hooks/use-mobile\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { Button } from \"@dsui/ui/components/button\";\nimport { Input } from \"@dsui/ui/components/input\";\nimport { Separator } from \"@dsui/ui/components/separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@dsui/ui/components/sheet\";\nimport { Skeleton } from \"@dsui/ui/components/skeleton\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@dsui/ui/components/tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"ds:group/sidebar-wrapper ds:has-data-[variant=inset]:bg-sidebar ds:flex ds:min-h-svh ds:w-full\",\n \"ds:has-data-[variant=tilt]:[perspective:1000px] ds:has-data-[variant=tilt]:bg-black/20\",\n \"ds:has-data-[variant=depth]:[perspective:1000px] ds:has-data-[variant=depth]:bg-black/20\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\" | \"tilt\" | \"depth\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"ds:bg-sidebar ds:text-sidebar-foreground ds:flex ds:h-full ds:w-(--sidebar-width) ds:flex-col\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"ds:bg-sidebar ds:text-sidebar-foreground ds:w-(--sidebar-width) ds:p-0 ds:[&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"ds:sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"ds:flex ds:h-full ds:w-full ds:flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"ds:group ds:peer ds:text-sidebar-foreground ds:hidden ds:md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"ds:relative ds:w-(--sidebar-width) ds:bg-transparent ds:transition-[width] ds:duration-200 ds:ease-linear\",\n \"ds:group-data-[collapsible=offcanvas]:w-0\",\n \"ds:group-data-[side=right]:rotate-180\",\n \"ds:group-data-[side=right]:hidden\",\n variant === \"floating\" || variant === \"inset\"\n ? \"ds:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"ds:group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"ds:fixed ds:inset-y-0 ds:z-10 ds:hidden ds:h-svh ds:w-(--sidebar-width) ds:transition-[left,right,width] ds:duration-200 ds:ease-linear ds:md:flex\",\n side === \"left\"\n ? \"ds:left-0 ds:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"ds:right-0 ds:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"ds:p-2 ds:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"ds:group-data-[collapsible=icon]:w-(--sidebar-width-icon) ds:group-data-[side=left]:border-r ds:group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"ds:bg-sidebar ds:group-data-[variant=floating]:border-sidebar-border ds:flex ds:h-full ds:w-full ds:flex-col ds:group-data-[variant=floating]:rounded-lg ds:group-data-[variant=floating]:border ds:group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"ds:size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"ds:sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"ds:hover:after:bg-sidebar-border ds:absolute ds:inset-y-0 ds:z-20 ds:hidden ds:w-4 ds:-translate-x-1/2 ds:transition-all ds:ease-linear ds:group-data-[side=left]:-right-4 ds:group-data-[side=right]:left-0 ds:after:absolute ds:after:inset-y-0 ds:after:left-1/2 ds:after:w-[2px] ds:sm:flex\",\n \"ds:in-data-[side=left]:cursor-w-resize ds:in-data-[side=right]:cursor-e-resize\",\n \"ds:[[data-side=left][data-state=collapsed]_&]:cursor-e-resize ds:[[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"ds:hover:group-data-[collapsible=offcanvas]:bg-sidebar ds:group-data-[collapsible=offcanvas]:translate-x-0 ds:group-data-[collapsible=offcanvas]:after:left-full\",\n \"ds:[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"ds:[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n const { setOpen, state } = useSidebar();\n const mainRef = React.useRef<HTMLElement>(null);\n\n const handleClick = React.useCallback(() => {\n if (mainRef.current) {\n const sidebar = mainRef.current.parentElement?.querySelector(\n '[data-slot=\"sidebar\"]'\n );\n const variant = sidebar?.getAttribute(\"data-variant\");\n if ((variant === \"tilt\" || variant === \"depth\") && state === \"expanded\") {\n setOpen(false);\n }\n }\n }, [setOpen, state]);\n\n return (\n <main\n ref={mainRef}\n data-slot=\"sidebar-inset\"\n onClick={handleClick}\n className={cn(\n \"ds:bg-background ds:relative ds:flex ds:w-full ds:flex-1 ds:flex-col\",\n \"ds:md:peer-data-[variant=inset]:m-2 ds:md:peer-data-[variant=inset]:ml-0 ds:md:peer-data-[variant=inset]:rounded-xl ds:md:peer-data-[variant=inset]:shadow-sm ds:md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n \"ds:md:peer-data-[variant=sidebar]:peer-data-[side=left]:peer-data-[state=collapsed]:peer-data-[collapsible=icon]:ml-(--sidebar-width-icon) ds:md:peer-data-[variant=sidebar]:peer-data-[side=right]:peer-data-[state=collapsed]:peer-data-[collapsible=icon]:mr-(--sidebar-width-icon)\",\n \"ds:md:peer-data-[variant=sidebar]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:ml-0 ds:md:peer-data-[variant=sidebar]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:mr-0\",\n \"ds:md:peer-data-[variant=sidebar]:peer-data-[side=right]:mr-(--sidebar-width)\",\n \"ds:md:peer-data-[variant=inset]:peer-data-[side=left]:peer-data-[state=collapsed]:peer-data-[collapsible=icon]:ml-(--sidebar-width-icon) ds:md:peer-data-[variant=inset]:peer-data-[side=right]:peer-data-[state=collapsed]:peer-data-[collapsible=icon]:mr-(--sidebar-width-icon)\",\n \"ds:md:peer-data-[variant=inset]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:ml-0 ds:md:peer-data-[variant=inset]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:mr-0\",\n \"ds:md:peer-data-[variant=inset]:peer-data-[side=right]:mr-(--sidebar-width)\",\n \"ds:md:peer-data-[variant=tilt]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:ml-0 ds:md:peer-data-[variant=tilt]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:mr-0\",\n \"ds:md:peer-data-[variant=tilt]:peer-data-[side=right]:mr-(--sidebar-width)\",\n \"ds:md:peer-data-[variant=tilt]:transition-transform ds:md:peer-data-[variant=tilt]:duration-200 ds:md:peer-data-[variant=tilt]:ease-linear\",\n \"ds:md:peer-data-[variant=tilt]:peer-data-[side=left]:origin-right ds:md:peer-data-[variant=tilt]:peer-data-[side=left]:peer-data-[state=expanded]:[transform:rotate3d(0,1,0,-25deg)]\",\n \"ds:md:peer-data-[variant=tilt]:peer-data-[side=right]:origin-left ds:md:peer-data-[variant=tilt]:peer-data-[side=right]:peer-data-[state=expanded]:[transform:rotate3d(0,1,0,25deg)]\",\n \"ds:md:peer-data-[variant=tilt]:peer-data-[state=expanded]:blur-[2px]\",\n \"ds:md:peer-data-[variant=depth]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:ml-0 ds:md:peer-data-[variant=depth]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:mr-0\",\n \"ds:md:peer-data-[variant=depth]:peer-data-[side=right]:mr-(--sidebar-width)\",\n \"ds:md:peer-data-[variant=depth]:transition-transform ds:md:peer-data-[variant=depth]:duration-200 ds:md:peer-data-[variant=depth]:ease-linear\",\n \"ds:md:peer-data-[variant=depth]:peer-data-[state=expanded]:[transform:scale(0.95)_translateZ(-50px)]\",\n \"ds:md:peer-data-[variant=depth]:peer-data-[state=expanded]:backdrop-blur-[1px]\",\n \"ds:md:peer-data-[variant=depth]:peer-data-[state=expanded]:blur-[2px]\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"ds:bg-background ds:h-8 ds:w-full ds:shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"ds:flex ds:flex-col ds:gap-2 ds:p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"ds:flex ds:flex-col ds:gap-2 ds:p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"ds:bg-sidebar-border ds:mx-2 ds:w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"ds:flex ds:min-h-0 ds:flex-1 ds:flex-col ds:gap-2 ds:overflow-auto ds:group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"ds:relative ds:flex ds:w-full ds:min-w-0 ds:flex-col ds:p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"ds:text-sidebar-foreground/70 ds:ring-sidebar-ring ds:flex ds:h-8 ds:shrink-0 ds:items-center ds:rounded-md ds:px-2 ds:text-xs ds:font-medium ds:outline-hidden ds:transition-[margin,opacity] ds:duration-200 ds:ease-linear ds:focus-visible:ring-2 ds:[&>svg]:size-4 ds:[&>svg]:shrink-0\",\n \"ds:group-data-[collapsible=icon]:-mt-8 ds:group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"ds:text-sidebar-foreground ds:ring-sidebar-ring ds:hover:bg-sidebar-accent ds:hover:text-sidebar-accent-foreground ds:absolute ds:top-3.5 ds:right-3 ds:flex ds:aspect-square ds:w-5 ds:items-center ds:justify-center ds:rounded-md ds:p-0 ds:outline-hidden ds:transition-transform ds:focus-visible:ring-2 ds:[&>svg]:size-4 ds:[&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"ds:after:absolute ds:after:-inset-2 ds:md:after:hidden\",\n \"ds:group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"ds:w-full ds:text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"ds:flex ds:w-full ds:min-w-0 ds:flex-col ds:gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"ds:group/menu-item ds:relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"ds:peer/menu-button ds:flex ds:w-full ds:items-center ds:gap-2 ds:overflow-hidden ds:rounded-md ds:p-2 ds:text-left ds:text-sm ds:outline-hidden ds:ring-sidebar-ring ds:transition-[width,height,padding] ds:hover:bg-sidebar-accent ds:hover:text-sidebar-accent-foreground ds:focus-visible:ring-2 ds:active:bg-sidebar-accent ds:active:text-sidebar-accent-foreground ds:disabled:pointer-events-none ds:disabled:opacity-50 ds:group-has-data-[sidebar=menu-action]/menu-item:pr-8 ds:aria-disabled:pointer-events-none ds:aria-disabled:opacity-50 ds:data-[active=true]:bg-sidebar-accent ds:data-[active=true]:font-medium ds:data-[active=true]:text-sidebar-accent-foreground ds:data-[state=open]:hover:bg-sidebar-accent ds:data-[state=open]:hover:text-sidebar-accent-foreground ds:group-data-[collapsible=icon]:size-8! ds:group-data-[collapsible=icon]:p-2! ds:[&>span:last-child]:truncate ds:[&>svg]:size-4 ds:[&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"ds:hover:bg-sidebar-accent ds:hover:text-sidebar-accent-foreground\",\n outline:\n \"ds:bg-background ds:shadow-[0_0_0_1px_hsl(var(--sidebar-border))] ds:hover:bg-sidebar-accent ds:hover:text-sidebar-accent-foreground ds:hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"ds:h-8 ds:text-sm\",\n sm: \"ds:h-7 ds:text-xs\",\n lg: \"ds:h-12 ds:text-sm ds:group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"ds:text-sidebar-foreground ds:ring-sidebar-ring ds:hover:bg-sidebar-accent ds:hover:text-sidebar-accent-foreground ds:peer-hover/menu-button:text-sidebar-accent-foreground ds:absolute ds:top-1.5 ds:right-1 ds:flex ds:aspect-square ds:w-5 ds:items-center ds:justify-center ds:rounded-md ds:p-0 ds:outline-hidden ds:transition-transform ds:focus-visible:ring-2 ds:[&>svg]:size-4 ds:[&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"ds:after:absolute ds:after:-inset-2 ds:md:after:hidden\",\n \"ds:peer-data-[size=sm]/menu-button:top-1\",\n \"ds:peer-data-[size=default]/menu-button:top-1.5\",\n \"ds:peer-data-[size=lg]/menu-button:top-2.5\",\n \"ds:group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"ds:peer-data-[active=true]/menu-button:text-sidebar-accent-foreground ds:group-focus-within/menu-item:opacity-100 ds:group-hover/menu-item:opacity-100 ds:data-[state=open]:opacity-100 ds:md:opacity-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"ds:text-sidebar-foreground ds:pointer-events-none ds:absolute ds:right-1 ds:flex ds:h-5 ds:min-w-5 ds:items-center ds:justify-center ds:rounded-md ds:px-1 ds:text-xs ds:font-medium ds:tabular-nums ds:select-none\",\n \"ds:peer-hover/menu-button:text-sidebar-accent-foreground ds:peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"ds:peer-data-[size=sm]/menu-button:top-1\",\n \"ds:peer-data-[size=default]/menu-button:top-1.5\",\n \"ds:peer-data-[size=lg]/menu-button:top-2.5\",\n \"ds:group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"ds:flex ds:h-8 ds:items-center ds:gap-2 ds:rounded-md ds:px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"ds:size-4 ds:rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"ds:h-4 ds:max-w-(--skeleton-width) ds:flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"ds:border-sidebar-border ds:mx-3.5 ds:flex ds:min-w-0 ds:translate-x-px ds:flex-col ds:gap-1 ds:border-l ds:px-2.5 ds:py-0.5\",\n \"ds:group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"ds:group/menu-sub-item ds:relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"ds:text-sidebar-foreground ds:ring-sidebar-ring ds:hover:bg-sidebar-accent ds:hover:text-sidebar-accent-foreground ds:active:bg-sidebar-accent ds:active:text-sidebar-accent-foreground ds:[&>svg]:text-sidebar-accent-foreground ds:flex ds:h-7 ds:min-w-0 ds:-translate-x-px ds:items-center ds:gap-2 ds:overflow-hidden ds:rounded-md ds:px-2 ds:outline-hidden ds:focus-visible:ring-2 ds:disabled:pointer-events-none ds:disabled:opacity-50 ds:aria-disabled:pointer-events-none ds:aria-disabled:opacity-50 ds:[&>span:last-child]:truncate ds:[&>svg]:size-4 ds:[&>svg]:shrink-0\",\n \"ds:data-[active=true]:bg-sidebar-accent ds:data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"ds:text-xs\",\n size === \"md\" && \"ds:text-sm\",\n \"ds:group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\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","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","jsxs","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeftIcon","SidebarRail","SidebarInset","mainRef","handleClick","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","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"uuBA2BMA,EAAsB,gBACtBC,EAAyB,KAAU,GAAK,EACxCC,EAAgB,QAChBC,EAAuB,QACvBC,EAAqB,OACrBC,EAA4B,IAY5BC,EAAiBC,EAAM,cAA0C,IAAI,EAE3E,SAASC,GAAa,CACpB,MAAMC,EAAUF,EAAM,WAAWD,CAAc,EAC/C,GAAI,CAACG,EACH,MAAM,IAAI,MAAM,mDAAmD,EAGrE,OAAOA,CACT,CAEA,SAASC,EAAgB,CACvB,YAAAC,EAAc,GACd,KAAMC,EACN,aAAcC,EACd,UAAAC,EACA,MAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAIG,CACD,MAAMC,EAAWC,EAAAA,YAAA,EACX,CAACC,EAAYC,CAAa,EAAId,EAAM,SAAS,EAAK,EAIlD,CAACe,EAAOC,CAAQ,EAAIhB,EAAM,SAASI,CAAW,EAC9Ca,EAAOZ,GAAYU,EACnBG,EAAUlB,EAAM,YACnBmB,GAAmD,CAClD,MAAMC,EAAY,OAAOD,GAAU,WAAaA,EAAMF,CAAI,EAAIE,EAC1Db,EACFA,EAAYc,CAAS,EAErBJ,EAASI,CAAS,EAIpB,SAAS,OAAS,GAAG3B,CAAmB,IAAI2B,CAAS,qBAAqB1B,CAAsB,EAClG,EACA,CAACY,EAAaW,CAAI,CAAA,EAIdI,EAAgBrB,EAAM,YAAY,IAC/BW,EAAWG,EAAeG,GAAS,CAACA,CAAI,EAAIC,EAASD,GAAS,CAACA,CAAI,EACzE,CAACN,EAAUO,EAASJ,CAAa,CAAC,EAGrCd,EAAM,UAAU,IAAM,CACpB,MAAMsB,EAAiBC,GAAyB,CAE5CA,EAAM,MAAQzB,IACbyB,EAAM,SAAWA,EAAM,WAExBA,EAAM,eAAA,EACNF,EAAA,EAEJ,EAEA,cAAO,iBAAiB,UAAWC,CAAa,EACzC,IAAM,OAAO,oBAAoB,UAAWA,CAAa,CAClE,EAAG,CAACD,CAAa,CAAC,EAIlB,MAAMG,EAAQP,EAAO,WAAa,YAE5BQ,EAAezB,EAAM,QACzB,KAAO,CACL,MAAAwB,EACA,KAAAP,EACA,QAAAC,EACA,SAAAP,EACA,WAAAE,EACA,cAAAC,EACA,cAAAO,CAAA,GAEF,CAACG,EAAOP,EAAMC,EAASP,EAAUE,EAAYC,EAAeO,CAAa,CAAA,EAG3E,OACEK,EAAAA,IAAC3B,EAAe,SAAf,CAAwB,MAAO0B,EAC9B,SAAAC,EAAAA,IAACC,EAAAA,gBAAA,CAAgB,cAAe,EAC9B,SAAAD,EAAAA,IAAC,MAAA,CACC,YAAU,kBACV,MACE,CACE,kBAAmB/B,EACnB,uBAAwBE,EACxB,GAAGW,CAAA,EAGP,UAAWoB,EAAAA,GACT,iGACA,yFACA,2FACArB,CAAA,EAED,GAAGG,EAEH,SAAAD,CAAA,CAAA,EAEL,CAAA,CACF,CAEJ,CAEA,SAASoB,EAAQ,CACf,KAAAC,EAAO,OACP,QAAAC,EAAU,UACV,YAAAC,EAAc,YACd,UAAAzB,EACA,SAAAE,EACA,GAAGC,CACL,EAIG,CACD,KAAM,CAAE,SAAAC,EAAU,MAAAa,EAAO,WAAAX,EAAY,cAAAC,CAAA,EAAkBb,EAAA,EAEvD,OAAI+B,IAAgB,OAEhBN,EAAAA,IAAC,MAAA,CACC,YAAU,UACV,UAAWE,EAAAA,GACT,gGACArB,CAAA,EAED,GAAGG,EAEH,SAAAD,CAAA,CAAA,EAKHE,QAECsB,QAAA,CAAM,KAAMpB,EAAY,aAAcC,EAAgB,GAAGJ,EACxD,SAAAwB,EAAAA,KAACC,EAAAA,aAAA,CACC,eAAa,UACb,YAAU,UACV,cAAY,OACZ,UAAU,8FACV,MACE,CACE,kBAAmBvC,CAAA,EAGvB,KAAAkC,EAEA,SAAA,CAAAI,EAAAA,KAACE,EAAAA,YAAA,CAAY,UAAU,aACrB,SAAA,CAAAV,EAAAA,IAACW,EAAAA,YAAW,SAAA,SAAA,CAAO,EACnBX,EAAAA,IAACY,EAAAA,kBAAiB,SAAA,8BAAA,CAA4B,CAAA,EAChD,EACAZ,EAAAA,IAAC,MAAA,CAAI,UAAU,0CAA2C,SAAAjB,CAAA,CAAS,CAAA,CAAA,CAAA,EAEvE,EAKFyB,EAAAA,KAAC,MAAA,CACC,UAAU,oEACV,aAAYV,EACZ,mBAAkBA,IAAU,YAAcQ,EAAc,GACxD,eAAcD,EACd,YAAWD,EACX,YAAU,UAGV,SAAA,CAAAJ,EAAAA,IAAC,MAAA,CACC,YAAU,cACV,UAAWE,EAAAA,GACT,4GACA,4CACA,wCACA,oCACAG,IAAY,YAAcA,IAAY,QAClC,sFACA,2DAAA,CACN,CAAA,EAEFL,EAAAA,IAAC,MAAA,CACC,YAAU,oBACV,UAAWE,EAAAA,GACT,qJACAE,IAAS,OACL,uFACA,yFAEJC,IAAY,YAAcA,IAAY,QAClC,iGACA,mIACJxB,CAAA,EAED,GAAGG,EAEJ,SAAAgB,EAAAA,IAAC,MAAA,CACC,eAAa,UACb,YAAU,gBACV,UAAU,8OAET,SAAAjB,CAAA,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CAGN,CAEA,SAAS8B,EAAe,CACtB,UAAAhC,EACA,QAAAiC,EACA,GAAG9B,CACL,EAAwC,CACtC,KAAM,CAAE,cAAAW,CAAA,EAAkBpB,EAAA,EAE1B,OACEiC,EAAAA,KAACO,EAAAA,OAAA,CACC,eAAa,UACb,YAAU,kBACV,QAAQ,QACR,KAAK,OACL,UAAWb,EAAAA,GAAG,YAAarB,CAAS,EACpC,QAAUgB,GAAU,CAClBiB,IAAUjB,CAAK,EACfF,EAAA,CACF,EACC,GAAGX,EAEJ,SAAA,CAAAgB,EAAAA,IAACgB,EAAAA,cAAA,EAAc,EACfhB,EAAAA,IAAC,OAAA,CAAK,UAAU,aAAa,SAAA,gBAAA,CAAc,CAAA,CAAA,CAAA,CAGjD,CAEA,SAASiB,EAAY,CAAE,UAAApC,EAAW,GAAGG,GAAyC,CAC5E,KAAM,CAAE,cAAAW,CAAA,EAAkBpB,EAAA,EAE1B,OACEyB,EAAAA,IAAC,SAAA,CACC,eAAa,OACb,YAAU,eACV,aAAW,iBACX,SAAU,GACV,QAASL,EACT,MAAM,iBACN,UAAWO,EAAAA,GACT,kSACA,iFACA,+HACA,mKACA,+DACA,+DACArB,CAAA,EAED,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASkC,EAAa,CAAE,UAAArC,EAAW,GAAGG,GAAuC,CAC3E,KAAM,CAAE,QAAAQ,EAAS,MAAAM,CAAA,EAAUvB,EAAA,EACrB4C,EAAU7C,EAAM,OAAoB,IAAI,EAExC8C,EAAc9C,EAAM,YAAY,IAAM,CAC1C,GAAI6C,EAAQ,QAAS,CAInB,MAAMd,EAHUc,EAAQ,QAAQ,eAAe,cAC7C,uBAAA,GAEuB,aAAa,cAAc,GAC/Cd,IAAY,QAAUA,IAAY,UAAYP,IAAU,YAC3DN,EAAQ,EAAK,CAEjB,CACF,EAAG,CAACA,EAASM,CAAK,CAAC,EAEnB,OACEE,EAAAA,IAAC,OAAA,CACC,IAAKmB,EACL,YAAU,gBACV,QAASC,EACT,UAAWlB,EAAAA,GACT,uEACA,iOACA,yRACA,4MACA,gFACA,qRACA,wMACA,8EACA,sMACA,6EACA,6IACA,uLACA,uLACA,uEACA,wMACA,8EACA,gJACA,uGACA,iFACA,wEACArB,CAAA,EAED,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASqC,EAAa,CACpB,UAAAxC,EACA,GAAGG,CACL,EAAuC,CACrC,OACEgB,EAAAA,IAACsB,EAAAA,MAAA,CACC,YAAU,gBACV,eAAa,QACb,UAAWpB,EAAAA,GAAG,mDAAoDrB,CAAS,EAC1E,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASuC,EAAc,CAAE,UAAA1C,EAAW,GAAGG,GAAsC,CAC3E,OACEgB,EAAAA,IAAC,MAAA,CACC,YAAU,iBACV,eAAa,SACb,UAAWE,EAAAA,GAAG,sCAAuCrB,CAAS,EAC7D,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASwC,EAAc,CAAE,UAAA3C,EAAW,GAAGG,GAAsC,CAC3E,OACEgB,EAAAA,IAAC,MAAA,CACC,YAAU,iBACV,eAAa,SACb,UAAWE,EAAAA,GAAG,sCAAuCrB,CAAS,EAC7D,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASyC,EAAiB,CACxB,UAAA5C,EACA,GAAGG,CACL,EAA2C,CACzC,OACEgB,EAAAA,IAAC0B,EAAAA,UAAA,CACC,YAAU,oBACV,eAAa,YACb,UAAWxB,EAAAA,GAAG,yCAA0CrB,CAAS,EAChE,GAAGG,CAAA,CAAA,CAGV,CAEA,SAAS2C,EAAe,CAAE,UAAA9C,EAAW,GAAGG,GAAsC,CAC5E,OACEgB,EAAAA,IAAC,MAAA,CACC,YAAU,kBACV,eAAa,UACb,UAAWE,EAAAA,GACT,sHACArB,CAAA,EAED,GAAGG,CAAA,CAAA,CAGV,CAEA,SAAS4C,EAAa,CAAE,UAAA/C,EAAW,GAAGG,GAAsC,CAC1E,OACEgB,EAAAA,IAAC,MAAA,CACC,YAAU,gBACV,eAAa,QACb,UAAWE,EAAAA,GAAG,8DAA+DrB,CAAS,EACrF,GAAGG,CAAA,CAAA,CAGV,CAEA,SAAS6C,EAAkB,CACzB,UAAAhD,EACA,QAAAiD,EAAU,GACV,GAAG9C,CACL,EAAwD,CACtD,MAAM+C,EAAOD,EAAUE,EAAAA,KAAO,MAE9B,OACEhC,EAAAA,IAAC+B,EAAA,CACC,YAAU,sBACV,eAAa,cACb,UAAW7B,EAAAA,GACT,8RACA,oFACArB,CAAA,EAED,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASiD,GAAmB,CAC1B,UAAApD,EACA,QAAAiD,EAAU,GACV,GAAG9C,CACL,EAA2D,CACzD,MAAM+C,EAAOD,EAAUE,EAAAA,KAAO,SAE9B,OACEhC,EAAAA,IAAC+B,EAAA,CACC,YAAU,uBACV,eAAa,eACb,UAAW7B,EAAAA,GACT,sVAEA,yDACA,0CACArB,CAAA,EAED,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASkD,GAAoB,CAC3B,UAAArD,EACA,GAAGG,CACL,EAAgC,CAC9B,OACEgB,EAAAA,IAAC,MAAA,CACC,YAAU,wBACV,eAAa,gBACb,UAAWE,EAAAA,GAAG,uBAAwBrB,CAAS,EAC9C,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASmD,GAAY,CAAE,UAAAtD,EAAW,GAAGG,GAAqC,CACxE,OACEgB,EAAAA,IAAC,KAAA,CACC,YAAU,eACV,eAAa,OACb,UAAWE,EAAAA,GAAG,oDAAqDrB,CAAS,EAC3E,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASoD,GAAgB,CAAE,UAAAvD,EAAW,GAAGG,GAAqC,CAC5E,OACEgB,EAAAA,IAAC,KAAA,CACC,YAAU,oBACV,eAAa,YACb,UAAWE,EAAAA,GAAG,iCAAkCrB,CAAS,EACxD,GAAGG,CAAA,CAAA,CAGV,CAEA,MAAMqD,GAA4BC,EAAAA,IAChC,u5BACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,qEACT,QACE,6LAAA,EAEJ,KAAM,CACJ,QAAS,oBACT,GAAI,oBACJ,GAAI,0DAAA,CACN,EAEF,gBAAiB,CACf,QAAS,UACT,KAAM,SAAA,CACR,CAEJ,EAEA,SAASC,GAAkB,CACzB,QAAAT,EAAU,GACV,SAAAU,EAAW,GACX,QAAAnC,EAAU,UACV,KAAAoC,EAAO,UAAA,QACPC,EACA,UAAA7D,EACA,GAAGG,CACL,EAIoD,CAClD,MAAM+C,EAAOD,EAAUE,EAAAA,KAAO,SACxB,CAAE,SAAA/C,EAAU,MAAAa,CAAA,EAAUvB,EAAA,EAEtBoE,EACJ3C,EAAAA,IAAC+B,EAAA,CACC,YAAU,sBACV,eAAa,cACb,YAAWU,EACX,cAAaD,EACb,UAAWtC,EAAAA,GAAGmC,GAA0B,CAAE,QAAAhC,EAAS,KAAAoC,CAAA,CAAM,EAAG5D,CAAS,EACpE,GAAGG,CAAA,CAAA,EAIR,OAAK0D,GAID,OAAOA,GAAY,WACrBA,EAAU,CACR,SAAUA,CAAA,UAKXE,UAAA,CACC,SAAA,CAAA5C,EAAAA,IAAC6C,EAAAA,eAAA,CAAe,QAAO,GAAE,SAAAF,EAAO,EAChC3C,EAAAA,IAAC8C,EAAAA,eAAA,CACC,KAAK,QACL,MAAM,SACN,OAAQhD,IAAU,aAAeb,EAChC,GAAGyD,CAAA,CAAA,CACN,EACF,GAlBOC,CAoBX,CAEA,SAASI,GAAkB,CACzB,UAAAlE,EACA,QAAAiD,EAAU,GACV,YAAAkB,EAAc,GACd,GAAGhE,CACL,EAGG,CACD,MAAM+C,EAAOD,EAAUE,EAAAA,KAAO,SAE9B,OACEhC,EAAAA,IAAC+B,EAAA,CACC,YAAU,sBACV,eAAa,cACb,UAAW7B,EAAAA,GACT,+YAEA,yDACA,2CACA,kDACA,6CACA,0CACA8C,GACE,0MACFnE,CAAA,EAED,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASiE,GAAiB,CACxB,UAAApE,EACA,GAAGG,CACL,EAAgC,CAC9B,OACEgB,EAAAA,IAAC,MAAA,CACC,YAAU,qBACV,eAAa,aACb,UAAWE,EAAAA,GACT,sNACA,iIACA,2CACA,kDACA,6CACA,0CACArB,CAAA,EAED,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASkE,GAAoB,CAC3B,UAAArE,EACA,SAAAsE,EAAW,GACX,GAAGnE,CACL,EAEG,CAED,MAAMoE,EAAQ9E,EAAM,QAAQ,IACnB,GAAG,KAAK,MAAM,KAAK,SAAW,EAAE,EAAI,EAAE,IAC5C,CAAA,CAAE,EAEL,OACEkC,EAAAA,KAAC,MAAA,CACC,YAAU,wBACV,eAAa,gBACb,UAAWN,EAAAA,GAAG,gEAAiErB,CAAS,EACvF,GAAGG,EAEH,SAAA,CAAAmE,GACCnD,EAAAA,IAACqD,EAAAA,SAAA,CACC,UAAU,0BACV,eAAa,oBAAA,CAAA,EAGjBrD,EAAAA,IAACqD,EAAAA,SAAA,CACC,UAAU,+CACV,eAAa,qBACb,MACE,CACE,mBAAoBD,CAAA,CACtB,CAAA,CAEJ,CAAA,CAAA,CAGN,CAEA,SAASE,GAAe,CAAE,UAAAzE,EAAW,GAAGG,GAAqC,CAC3E,OACEgB,EAAAA,IAAC,KAAA,CACC,YAAU,mBACV,eAAa,WACb,UAAWE,EAAAA,GACT,+HACA,0CACArB,CAAA,EAED,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASuE,GAAmB,CAC1B,UAAA1E,EACA,GAAGG,CACL,EAA+B,CAC7B,OACEgB,EAAAA,IAAC,KAAA,CACC,YAAU,wBACV,eAAa,gBACb,UAAWE,EAAAA,GAAG,qCAAsCrB,CAAS,EAC5D,GAAGG,CAAA,CAAA,CAGV,CAEA,SAASwE,GAAqB,CAC5B,QAAA1B,EAAU,GACV,KAAAW,EAAO,KACP,SAAAD,EAAW,GACX,UAAA3D,EACA,GAAGG,CACL,EAIG,CACD,MAAM+C,EAAOD,EAAUE,EAAAA,KAAO,IAE9B,OACEhC,EAAAA,IAAC+B,EAAA,CACC,YAAU,0BACV,eAAa,kBACb,YAAWU,EACX,cAAaD,EACb,UAAWtC,EAAAA,GACT,2jBACA,+FACAuC,IAAS,MAAQ,aACjBA,IAAS,MAAQ,aACjB,0CACA5D,CAAA,EAED,GAAGG,CAAA,CAAA,CAGV"}
1
+ {"version":3,"file":"sidebar.cjs","sources":["../../../../../../../../packages/ui/src/components/sidebar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { PanelLeftIcon } from \"lucide-react\";\n\nimport { useIsMobile } from \"@dsui/ui/hooks/use-mobile\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { Button } from \"@dsui/ui/components/button\";\nimport { Input } from \"@dsui/ui/components/input\";\nimport { Separator } from \"@dsui/ui/components/separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@dsui/ui/components/sheet\";\nimport { Skeleton } from \"@dsui/ui/components/skeleton\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@dsui/ui/components/tooltip\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\";\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open]\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\";\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"ds:group/sidebar-wrapper ds:has-data-[variant=inset]:bg-sidebar ds:flex ds:min-h-svh ds:w-full\",\n \"ds:has-data-[variant=tilt]:[perspective:1000px] ds:has-data-[variant=tilt]:bg-black/20\",\n \"ds:has-data-[variant=depth]:[perspective:1000px] ds:has-data-[variant=depth]:bg-black/20\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\";\n variant?: \"sidebar\" | \"floating\" | \"inset\" | \"tilt\" | \"depth\";\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"ds:bg-sidebar ds:text-sidebar-foreground ds:flex ds:h-full ds:w-(--sidebar-width) ds:flex-col\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"ds:bg-sidebar ds:text-sidebar-foreground ds:w-(--sidebar-width) ds:p-0 ds:[&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"ds:sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"ds:flex ds:h-full ds:w-full ds:flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"ds:group ds:peer ds:text-sidebar-foreground ds:hidden ds:md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"ds:relative ds:w-(--sidebar-width) ds:bg-transparent ds:transition-[width] ds:duration-200 ds:ease-linear\",\n \"ds:group-data-[collapsible=offcanvas]:w-0\",\n \"ds:group-data-[side=right]:rotate-180\",\n \"ds:group-data-[side=right]:hidden\",\n variant === \"floating\" || variant === \"inset\"\n ? \"ds:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--ds-spacing(4)))]\"\n : \"ds:group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n \"ds:fixed ds:inset-y-0 ds:z-10 ds:hidden ds:h-svh ds:w-(--sidebar-width) ds:transition-[left,right,width] ds:duration-200 ds:ease-linear ds:md:flex\",\n side === \"left\"\n ? \"ds:left-0 ds:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"ds:right-0 ds:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"ds:p-2 ds:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--ds-spacing(4))+2px)]\"\n : \"ds:group-data-[collapsible=icon]:w-(--sidebar-width-icon) ds:group-data-[side=left]:border-r ds:group-data-[side=right]:border-l\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"ds:bg-sidebar ds:group-data-[variant=floating]:border-sidebar-border ds:flex ds:h-full ds:w-full ds:flex-col ds:group-data-[variant=floating]:rounded-lg ds:group-data-[variant=floating]:border ds:group-data-[variant=floating]:shadow-sm\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"ds:size-7\", className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"ds:sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"ds:hover:after:bg-sidebar-border ds:absolute ds:inset-y-0 ds:z-20 ds:hidden ds:w-4 ds:-translate-x-1/2 ds:transition-all ds:ease-linear ds:group-data-[side=left]:-right-4 ds:group-data-[side=right]:left-0 ds:after:absolute ds:after:inset-y-0 ds:after:left-1/2 ds:after:w-[2px] ds:sm:flex\",\n \"ds:in-data-[side=left]:cursor-w-resize ds:in-data-[side=right]:cursor-e-resize\",\n \"ds:[[data-side=left][data-state=collapsed]_&]:cursor-e-resize ds:[[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"ds:hover:group-data-[collapsible=offcanvas]:bg-sidebar ds:group-data-[collapsible=offcanvas]:translate-x-0 ds:group-data-[collapsible=offcanvas]:after:left-full\",\n \"ds:[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"ds:[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n const { setOpen, state } = useSidebar();\n const mainRef = React.useRef<HTMLElement>(null);\n\n const handleClick = React.useCallback(() => {\n if (mainRef.current) {\n const sidebar = mainRef.current.parentElement?.querySelector(\n '[data-slot=\"sidebar\"]'\n );\n const variant = sidebar?.getAttribute(\"data-variant\");\n if ((variant === \"tilt\" || variant === \"depth\") && state === \"expanded\") {\n setOpen(false);\n }\n }\n }, [setOpen, state]);\n\n return (\n <main\n ref={mainRef}\n data-slot=\"sidebar-inset\"\n onClick={handleClick}\n className={cn(\n \"ds:bg-background ds:relative ds:flex ds:w-full ds:flex-1 ds:flex-col\",\n \"ds:md:peer-data-[variant=inset]:m-2 ds:md:peer-data-[variant=inset]:ml-0 ds:md:peer-data-[variant=inset]:rounded-xl ds:md:peer-data-[variant=inset]:shadow-sm ds:md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\n \"ds:md:peer-data-[variant=sidebar]:peer-data-[side=left]:peer-data-[state=collapsed]:peer-data-[collapsible=icon]:ml-(--sidebar-width-icon) ds:md:peer-data-[variant=sidebar]:peer-data-[side=right]:peer-data-[state=collapsed]:peer-data-[collapsible=icon]:mr-(--sidebar-width-icon)\",\n \"ds:md:peer-data-[variant=sidebar]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:ml-0 ds:md:peer-data-[variant=sidebar]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:mr-0\",\n \"ds:md:peer-data-[variant=sidebar]:peer-data-[side=right]:mr-(--sidebar-width)\",\n \"ds:md:peer-data-[variant=inset]:peer-data-[side=left]:peer-data-[state=collapsed]:peer-data-[collapsible=icon]:ml-(--sidebar-width-icon) ds:md:peer-data-[variant=inset]:peer-data-[side=right]:peer-data-[state=collapsed]:peer-data-[collapsible=icon]:mr-(--sidebar-width-icon)\",\n \"ds:md:peer-data-[variant=inset]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:ml-0 ds:md:peer-data-[variant=inset]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:mr-0\",\n \"ds:md:peer-data-[variant=inset]:peer-data-[side=right]:mr-(--sidebar-width)\",\n \"ds:md:peer-data-[variant=tilt]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:ml-0 ds:md:peer-data-[variant=tilt]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:mr-0\",\n \"ds:md:peer-data-[variant=tilt]:peer-data-[side=right]:mr-(--sidebar-width)\",\n \"ds:md:peer-data-[variant=tilt]:transition-transform ds:md:peer-data-[variant=tilt]:duration-200 ds:md:peer-data-[variant=tilt]:ease-linear\",\n \"ds:md:peer-data-[variant=tilt]:peer-data-[side=left]:origin-right ds:md:peer-data-[variant=tilt]:peer-data-[side=left]:peer-data-[state=expanded]:[transform:rotate3d(0,1,0,-25deg)]\",\n \"ds:md:peer-data-[variant=tilt]:peer-data-[side=right]:origin-left ds:md:peer-data-[variant=tilt]:peer-data-[side=right]:peer-data-[state=expanded]:[transform:rotate3d(0,1,0,25deg)]\",\n \"ds:md:peer-data-[variant=tilt]:peer-data-[state=expanded]:blur-[2px]\",\n \"ds:md:peer-data-[variant=depth]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:ml-0 ds:md:peer-data-[variant=depth]:peer-data-[state=collapsed]:peer-data-[collapsible=offcanvas]:mr-0\",\n \"ds:md:peer-data-[variant=depth]:peer-data-[side=right]:mr-(--sidebar-width)\",\n \"ds:md:peer-data-[variant=depth]:transition-transform ds:md:peer-data-[variant=depth]:duration-200 ds:md:peer-data-[variant=depth]:ease-linear\",\n \"ds:md:peer-data-[variant=depth]:peer-data-[state=expanded]:[transform:scale(0.95)_translateZ(-50px)]\",\n \"ds:md:peer-data-[variant=depth]:peer-data-[state=expanded]:backdrop-blur-[1px]\",\n \"ds:md:peer-data-[variant=depth]:peer-data-[state=expanded]:blur-[2px]\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"ds:bg-background ds:h-8 ds:w-full ds:shadow-none\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\"ds:flex ds:flex-col ds:gap-2 ds:p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"ds:flex ds:flex-col ds:gap-2 ds:p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"ds:bg-sidebar-border ds:mx-2 ds:w-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"ds:flex ds:min-h-0 ds:flex-1 ds:flex-col ds:gap-2 ds:overflow-auto ds:group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"ds:relative ds:flex ds:w-full ds:min-w-0 ds:flex-col ds:p-2\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n \"ds:text-sidebar-foreground/70 ds:ring-sidebar-ring ds:flex ds:h-8 ds:shrink-0 ds:items-center ds:rounded-md ds:px-2 ds:text-xs ds:font-medium ds:outline-hidden ds:transition-[margin,opacity] ds:duration-200 ds:ease-linear ds:focus-visible:ring-2 ds:[&>svg]:size-4 ds:[&>svg]:shrink-0\",\n \"ds:group-data-[collapsible=icon]:-mt-8 ds:group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n \"ds:text-sidebar-foreground ds:ring-sidebar-ring ds:hover:bg-sidebar-accent ds:hover:text-sidebar-accent-foreground ds:absolute ds:top-3.5 ds:right-3 ds:flex ds:aspect-square ds:w-5 ds:items-center ds:justify-center ds:rounded-md ds:p-0 ds:outline-hidden ds:transition-transform ds:focus-visible:ring-2 ds:[&>svg]:size-4 ds:[&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"ds:after:absolute ds:after:-inset-2 ds:md:after:hidden\",\n \"ds:group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"ds:w-full ds:text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"ds:flex ds:w-full ds:min-w-0 ds:flex-col ds:gap-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"ds:group/menu-item ds:relative\", className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"ds:peer/menu-button ds:flex ds:w-full ds:items-center ds:gap-2 ds:overflow-hidden ds:rounded-md ds:p-2 ds:text-left ds:text-sm ds:outline-hidden ds:ring-sidebar-ring ds:transition-[width,height,padding] ds:hover:bg-sidebar-accent ds:hover:text-sidebar-accent-foreground ds:focus-visible:ring-2 ds:active:bg-sidebar-accent ds:active:text-sidebar-accent-foreground ds:disabled:pointer-events-none ds:disabled:opacity-50 ds:group-has-data-[sidebar=menu-action]/menu-item:pr-8 ds:aria-disabled:pointer-events-none ds:aria-disabled:opacity-50 ds:data-[active=true]:bg-sidebar-accent ds:data-[active=true]:font-medium ds:data-[active=true]:text-sidebar-accent-foreground ds:data-[state=open]:hover:bg-sidebar-accent ds:data-[state=open]:hover:text-sidebar-accent-foreground ds:group-data-[collapsible=icon]:size-8! ds:group-data-[collapsible=icon]:p-2! ds:[&>span:last-child]:truncate ds:[&>svg]:size-4 ds:[&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"ds:hover:bg-sidebar-accent ds:hover:text-sidebar-accent-foreground\",\n outline:\n \"ds:bg-background ds:shadow-[0_0_0_1px_hsl(var(--sidebar-border))] ds:hover:bg-sidebar-accent ds:hover:text-sidebar-accent-foreground ds:hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"ds:h-8 ds:text-sm\",\n sm: \"ds:h-7 ds:text-xs\",\n lg: \"ds:h-12 ds:text-sm ds:group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? Slot : \"button\";\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n \"ds:text-sidebar-foreground ds:ring-sidebar-ring ds:hover:bg-sidebar-accent ds:hover:text-sidebar-accent-foreground ds:peer-hover/menu-button:text-sidebar-accent-foreground ds:absolute ds:top-1.5 ds:right-1 ds:flex ds:aspect-square ds:w-5 ds:items-center ds:justify-center ds:rounded-md ds:p-0 ds:outline-hidden ds:transition-transform ds:focus-visible:ring-2 ds:[&>svg]:size-4 ds:[&>svg]:shrink-0\",\n // Increases the hit area of the button on mobile.\n \"ds:after:absolute ds:after:-inset-2 ds:md:after:hidden\",\n \"ds:peer-data-[size=sm]/menu-button:top-1\",\n \"ds:peer-data-[size=default]/menu-button:top-1.5\",\n \"ds:peer-data-[size=lg]/menu-button:top-2.5\",\n \"ds:group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"ds:peer-data-[active=true]/menu-button:text-sidebar-accent-foreground ds:group-focus-within/menu-item:opacity-100 ds:group-hover/menu-item:opacity-100 ds:data-[state=open]:opacity-100 ds:md:opacity-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"ds:text-sidebar-foreground ds:pointer-events-none ds:absolute ds:right-1 ds:flex ds:h-5 ds:min-w-5 ds:items-center ds:justify-center ds:rounded-md ds:px-1 ds:text-xs ds:font-medium ds:tabular-nums ds:select-none\",\n \"ds:peer-hover/menu-button:text-sidebar-accent-foreground ds:peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"ds:peer-data-[size=sm]/menu-button:top-1\",\n \"ds:peer-data-[size=default]/menu-button:top-1.5\",\n \"ds:peer-data-[size=lg]/menu-button:top-2.5\",\n \"ds:group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"ds:flex ds:h-8 ds:items-center ds:gap-2 ds:rounded-md ds:px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"ds:size-4 ds:rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"ds:h-4 ds:max-w-(--skeleton-width) ds:flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"ds:border-sidebar-border ds:mx-3.5 ds:flex ds:min-w-0 ds:translate-x-px ds:flex-col ds:gap-1 ds:border-l ds:px-2.5 ds:py-0.5\",\n \"ds:group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"ds:group/menu-sub-item ds:relative\", className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n size?: \"sm\" | \"md\";\n isActive?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"ds:text-sidebar-foreground ds:ring-sidebar-ring ds:hover:bg-sidebar-accent ds:hover:text-sidebar-accent-foreground ds:active:bg-sidebar-accent ds:active:text-sidebar-accent-foreground ds:[&>svg]:text-sidebar-accent-foreground ds:flex ds:h-7 ds:min-w-0 ds:-translate-x-px ds:items-center ds:gap-2 ds:overflow-hidden ds:rounded-md ds:px-2 ds:outline-hidden ds:focus-visible:ring-2 ds:disabled:pointer-events-none ds:disabled:opacity-50 ds:aria-disabled:pointer-events-none ds:aria-disabled:opacity-50 ds:[&>span:last-child]:truncate ds:[&>svg]:size-4 ds:[&>svg]:shrink-0\",\n \"ds:data-[active=true]:bg-sidebar-accent ds:data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"ds:text-xs\",\n size === \"md\" && \"ds:text-sm\",\n \"ds:group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\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","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","jsxs","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeftIcon","SidebarRail","SidebarInset","mainRef","handleClick","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","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"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"}