{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "navbar",
  "type": "registry:block",
  "title": "Navbar",
  "description": "A responsive navigation bar with mobile menu support and customizable links.",
  "registryDependencies": [
    "https://launchuicomponents.com/r/button.json"
  ],
  "files": [
    {
      "path": "components/sections/navbar/default.tsx",
      "content": "\"use client\";\n\nimport { type VariantProps } from \"class-variance-authority\";\nimport { Menu } from \"lucide-react\";\nimport { ReactNode } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport LaunchUI from \"../../logos/launch-ui\";\nimport { Button, buttonVariants } from \"../../ui/button\";\nimport {\n  Navbar as NavbarComponent,\n  NavbarLeft,\n  NavbarRight,\n} from \"../../ui/navbar\";\nimport Navigation from \"../../ui/navigation\";\nimport { Sheet, SheetContent, SheetTitle, SheetTrigger } from \"../../ui/sheet\";\n\ninterface NavbarLink {\n  text: string;\n  href: string;\n}\n\ninterface NavbarActionProps {\n  text: string;\n  href: string;\n  variant?: VariantProps<typeof buttonVariants>[\"variant\"];\n  icon?: ReactNode;\n  iconRight?: ReactNode;\n  isButton?: boolean;\n}\n\ninterface NavbarProps {\n  logo?: ReactNode;\n  name?: string;\n  homeUrl?: string;\n  mobileLinks?: NavbarLink[];\n  actions?: NavbarActionProps[];\n  showNavigation?: boolean;\n  customNavigation?: ReactNode;\n  className?: string;\n}\n\nexport default function Navbar({\n  logo = <LaunchUI />,\n  name = \"Launch UI\",\n  homeUrl = \"https://www.launchuicomponents.com/\",\n  mobileLinks = [\n    { text: \"Getting Started\", href: \"https://www.launchuicomponents.com/\" },\n    { text: \"Components\", href: \"https://www.launchuicomponents.com/\" },\n    { text: \"Documentation\", href: \"https://www.launchuicomponents.com/\" },\n  ],\n  actions = [\n    { text: \"Sign in\", href: \"https://www.launchuicomponents.com/\", isButton: false },\n    {\n      text: \"Get Started\",\n      href: \"https://www.launchuicomponents.com/\",\n      isButton: true,\n      variant: \"default\",\n    },\n  ],\n  showNavigation = true,\n  customNavigation,\n  className,\n}: NavbarProps) {\n  return (\n    <header className={cn(\"sticky top-0 z-50 -mb-4 px-4 pb-4\", className)}>\n      <div className=\"fade-bottom bg-background/15 absolute left-0 h-24 w-full backdrop-blur-lg\"></div>\n      <div className=\"max-w-container relative mx-auto\">\n        <NavbarComponent>\n          <NavbarLeft>\n            <a\n              href={homeUrl}\n              className=\"flex items-center gap-2 text-xl font-bold\"\n            >\n              {logo}\n              {name}\n            </a>\n            {showNavigation && (customNavigation || <Navigation />)}\n          </NavbarLeft>\n          <NavbarRight>\n            {actions.map((action) =>\n              action.isButton ? (\n                <Button\n                  key={`${action.href}-${action.text}`}\n                  variant={action.variant || \"default\"}\n                  asChild\n                >\n                  <a href={action.href}>\n                    {action.icon}\n                    {action.text}\n                    {action.iconRight}\n                  </a>\n                </Button>\n              ) : (\n                <a\n                  key={`${action.href}-${action.text}`}\n                  href={action.href}\n                  className=\"hidden text-sm md:block\"\n                >\n                  {action.text}\n                </a>\n              ),\n            )}\n            <Sheet>\n              <SheetTrigger asChild>\n                <Button\n                  variant=\"ghost\"\n                  size=\"icon\"\n                  className=\"shrink-0 md:hidden\"\n                >\n                  <Menu className=\"size-5\" />\n                  <span className=\"sr-only\">Toggle navigation menu</span>\n                </Button>\n              </SheetTrigger>\n              <SheetContent side=\"right\">\n                <SheetTitle className=\"sr-only\">Navigation menu</SheetTitle>\n                <nav className=\"grid gap-6 text-lg font-medium\">\n                  <a\n                    href={homeUrl}\n                    className=\"flex items-center gap-2 text-xl font-bold\"\n                  >\n                    <span>{name}</span>\n                  </a>\n                  {mobileLinks.map((link) => (\n                    <a\n                      key={`${link.href}-${link.text}`}\n                      href={link.href}\n                      className=\"text-muted-foreground hover:text-foreground\"\n                    >\n                      {link.text}\n                    </a>\n                  ))}\n                </nav>\n              </SheetContent>\n            </Sheet>\n          </NavbarRight>\n        </NavbarComponent>\n      </div>\n    </header>\n  );\n}\n",
      "type": "registry:block",
      "target": "components/sections/navbar/default.tsx"
    },
    {
      "path": "components/ui/navbar.tsx",
      "content": "import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Navbar({ className, ...props }: React.ComponentProps<\"nav\">) {\n  return (\n    <nav\n      data-slot=\"navbar\"\n      className={cn(\"flex items-center justify-between py-4\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction NavbarLeft({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"navbar-left\"\n      className={cn(\"flex items-center justify-start gap-4\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction NavbarRight({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"navbar-right\"\n      className={cn(\"flex items-center justify-end gap-4\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction NavbarCenter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"navbar-center\"\n      className={cn(\"flex items-center justify-center gap-4\", className)}\n      {...props}\n    />\n  );\n}\n\nexport { Navbar, NavbarCenter, NavbarLeft, NavbarRight };\n",
      "type": "registry:ui",
      "target": "components/ui/navbar.tsx"
    },
    {
      "path": "components/ui/navigation.tsx",
      "content": "\"use client\";\n\nimport Link from \"next/link\";\nimport * as React from \"react\";\nimport { ReactNode } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport LaunchUI from \"../logos/launch-ui\";\nimport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n} from \"./navigation-menu\";\n\ninterface ComponentItem {\n  title: string;\n  href: string;\n  description: string;\n}\n\ninterface MenuItem {\n  title: string;\n  href?: string;\n  isLink?: boolean;\n  content?: ReactNode;\n}\n\ninterface NavigationProps {\n  menuItems?: MenuItem[];\n  components?: ComponentItem[];\n  logo?: ReactNode;\n  logoTitle?: string;\n  logoDescription?: string;\n  logoHref?: string;\n  introItems?: {\n    title: string;\n    href: string;\n    description: string;\n  }[];\n}\n\nexport default function Navigation({\n  menuItems = [\n    {\n      title: \"Getting started\",\n      content: \"default\",\n    },\n    {\n      title: \"Components\",\n      content: \"components\",\n    },\n    {\n      title: \"Documentation\",\n      isLink: true,\n      href: \"https://www.launchuicomponents.com/\",\n    },\n  ],\n  components = [\n    {\n      title: \"Alert Dialog\",\n      href: `${\"https://www.launchuicomponents.com/\"}/docs/primitives/alert-dialog`,\n      description:\n        \"A modal dialog that interrupts the user with important content and expects a response.\",\n    },\n    {\n      title: \"Hover Card\",\n      href: `${\"https://www.launchuicomponents.com/\"}/docs/primitives/hover-card`,\n      description:\n        \"For sighted users to preview content available behind a link.\",\n    },\n    {\n      title: \"Progress\",\n      href: `${\"https://www.launchuicomponents.com/\"}/docs/primitives/progress`,\n      description:\n        \"Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.\",\n    },\n    {\n      title: \"Scroll Area\",\n      href: `${\"https://www.launchuicomponents.com/\"}/docs/primitives/scroll-area`,\n      description: \"A scrollable container with custom scrollbars.\",\n    },\n    {\n      title: \"Tabs\",\n      href: `${\"https://www.launchuicomponents.com/\"}/docs/primitives/tabs`,\n      description:\n        \"A set of layered sections of content, known as tab panels, that are displayed one at a time.\",\n    },\n    {\n      title: \"Tooltip\",\n      href: `${\"https://www.launchuicomponents.com/\"}/docs/primitives/tooltip`,\n      description:\n        \"A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.\",\n    },\n  ],\n  logo = <LaunchUI />,\n  logoTitle = \"Launch UI\",\n  logoDescription = \"Landing page template built with React, Shadcn/ui and Tailwind that you can copy/paste into your project.\",\n  logoHref = \"https://www.launchuicomponents.com/\",\n  introItems = [\n    {\n      title: \"Introduction\",\n      href: \"https://www.launchuicomponents.com/\",\n      description: \"Reusable components built using Radix UI and Tailwind CSS.\",\n    },\n    {\n      title: \"Installation\",\n      href: \"https://www.launchuicomponents.com/\",\n      description: \"How to install dependencies and structure your app.\",\n    },\n    {\n      title: \"Typography\",\n      href: \"https://www.launchuicomponents.com/\",\n      description: \"Styles for headings, paragraphs, and lists.\",\n    },\n  ],\n}: NavigationProps) {\n  return (\n    <NavigationMenu className=\"hidden md:flex\">\n      <NavigationMenuList>\n        {menuItems.map((item) => (\n          <NavigationMenuItem key={item.title}>\n            {item.isLink ? (\n              <NavigationMenuLink\n                className={navigationMenuTriggerStyle()}\n                asChild\n              >\n                <Link href={item.href || \"\"}>{item.title}</Link>\n              </NavigationMenuLink>\n            ) : (\n              <>\n                <NavigationMenuTrigger>{item.title}</NavigationMenuTrigger>\n                <NavigationMenuContent>\n                  {item.content === \"default\" ? (\n                    <ul className=\"grid gap-3 p-4 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]\">\n                      <li className=\"row-span-3\">\n                        <NavigationMenuLink asChild>\n                          <a\n                            className=\"from-muted/30 to-muted/10 flex h-full w-full flex-col justify-end rounded-md bg-linear-to-b p-6 no-underline outline-hidden select-none focus:shadow-md\"\n                            href={logoHref}\n                          >\n                            {logo}\n                            <div className=\"mt-4 mb-2 text-lg font-medium\">\n                              {logoTitle}\n                            </div>\n                            <p className=\"text-muted-foreground text-sm leading-tight\">\n                              {logoDescription}\n                            </p>\n                          </a>\n                        </NavigationMenuLink>\n                      </li>\n                      {introItems.map((intro) => (\n                        <ListItem\n                          key={intro.title}\n                          href={intro.href}\n                          title={intro.title}\n                        >\n                          {intro.description}\n                        </ListItem>\n                      ))}\n                    </ul>\n                  ) : item.content === \"components\" ? (\n                    <ul className=\"grid w-[400px] gap-3 p-4 md:w-[500px] md:grid-cols-2 lg:w-[600px]\">\n                      {components.map((component) => (\n                        <ListItem\n                          key={component.title}\n                          title={component.title}\n                          href={component.href}\n                        >\n                          {component.description}\n                        </ListItem>\n                      ))}\n                    </ul>\n                  ) : (\n                    item.content\n                  )}\n                </NavigationMenuContent>\n              </>\n            )}\n          </NavigationMenuItem>\n        ))}\n      </NavigationMenuList>\n    </NavigationMenu>\n  );\n}\n\nfunction ListItem({\n  className,\n  title,\n  children,\n  ...props\n}: React.ComponentProps<\"a\"> & { title: string }) {\n  return (\n    <li>\n      <NavigationMenuLink asChild>\n        <a\n          data-slot=\"list-item\"\n          className={cn(\n            \"hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground block space-y-1 rounded-md p-3 leading-none no-underline outline-hidden transition-colors select-none\",\n            className,\n          )}\n          {...props}\n        >\n          <div className=\"text-sm leading-none font-medium\">{title}</div>\n          <p className=\"text-muted-foreground line-clamp-2 text-sm leading-snug\">\n            {children}\n          </p>\n        </a>\n      </NavigationMenuLink>\n    </li>\n  );\n}\n",
      "type": "registry:ui",
      "target": "components/ui/navigation.tsx"
    },
    {
      "path": "components/ui/navigation-menu.tsx",
      "content": "import * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction NavigationMenu({\n  className,\n  children,\n  viewport = true,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n  viewport?: boolean;\n}) {\n  return (\n    <NavigationMenuPrimitive.Root\n      data-slot=\"navigation-menu\"\n      data-viewport={viewport}\n      className={cn(\n        \"group/navigation-menu relative z-10 flex max-w-max flex-1 items-center justify-center\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n      {viewport && <NavigationMenuViewport />}\n    </NavigationMenuPrimitive.Root>\n  );\n}\n\nfunction NavigationMenuList({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n  return (\n    <NavigationMenuPrimitive.List\n      data-slot=\"navigation-menu-list\"\n      className={cn(\n        \"group flex flex-1 list-none items-center justify-center gap-1\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction NavigationMenuItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n  return (\n    <NavigationMenuPrimitive.Item\n      data-slot=\"navigation-menu-item\"\n      className={cn(\"relative\", className)}\n      {...props}\n    />\n  );\n}\n\nconst navigationMenuTriggerStyle = cva(\n  \"group inline-flex h-9 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium hover:bg-foreground/5 hover:text-accent-foreground focus:bg-foreground/10 focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-foreground/10 data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-foreground/10 data-[state=open]:bg-foreground/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1\",\n);\n\nfunction NavigationMenuTrigger({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n  return (\n    <NavigationMenuPrimitive.Trigger\n      data-slot=\"navigation-menu-trigger\"\n      className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n      {...props}\n    >\n      {children}{\" \"}\n      <ChevronDownIcon\n        className=\"relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n        aria-hidden=\"true\"\n      />\n    </NavigationMenuPrimitive.Trigger>\n  );\n}\n\nfunction NavigationMenuContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n  return (\n    <NavigationMenuPrimitive.Content\n      data-slot=\"navigation-menu-content\"\n      className={cn(\n        \"data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto\",\n        \"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction NavigationMenuLink({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n  return (\n    <NavigationMenuPrimitive.Link\n      data-slot=\"navigation-menu-link\"\n      className={cn(\n        \"data-[active=true]:focus:bg-foreground/10 data-[active=true]:hover:bg-foreground/10 data-[active=true]:bg-foreground/10 data-[active=true]:text-accent-foreground hover:bg-foreground/10 hover:text-accent-foreground focus:bg-foreground/10 focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction NavigationMenuViewport({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n  return (\n    <div\n      className={cn(\n        \"absolute top-full left-0 isolate z-50 flex justify-center\",\n      )}\n    >\n      <NavigationMenuPrimitive.Viewport\n        data-slot=\"navigation-menu-viewport\"\n        className={cn(\n          \"origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 border-border dark:border-border/15 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow-sm md:w-[var(--radix-navigation-menu-viewport-width)]\",\n          className,\n        )}\n        {...props}\n      />\n    </div>\n  );\n}\n\nfunction NavigationMenuIndicator({\n  className,\n  ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {\n  return (\n    <NavigationMenuPrimitive.Indicator\n      data-slot=\"navigation-menu-indicator\"\n      className={cn(\n        \"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden\",\n        className,\n      )}\n      {...props}\n    >\n      <div className=\"bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md\" />\n    </NavigationMenuPrimitive.Indicator>\n  );\n}\n\nexport {\n  NavigationMenu,\n  NavigationMenuContent,\n  NavigationMenuIndicator,\n  NavigationMenuItem,\n  NavigationMenuLink,\n  NavigationMenuList,\n  NavigationMenuTrigger,\n  navigationMenuTriggerStyle,\n  NavigationMenuViewport,\n};\n",
      "type": "registry:ui",
      "target": "components/ui/navigation-menu.tsx"
    },
    {
      "path": "components/ui/button.tsx",
      "content": "import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"text-primary-foreground shadow-sm dark:hover:from-primary/80 hover:from-primary/70 dark:hover:to-primary/70 hover:to-primary/90 bg-linear-to-b from-primary/60 to-primary/100 dark:from-primary/100 dark:to-primary/70 border-t-primary\",\n        destructive:\n          \"bg-destructive/30 text-destructive-foreground shadow-xs hover:bg-destructive/90\",\n        outline:\n          \"border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground\",\n        glow: \"glass-4 hover:glass-5 shadow-md\",\n        secondary:\n          \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n        ghost: \"hover:bg-accent hover:text-accent-foreground\",\n        link: \"text-foreground underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-9 px-4 py-2\",\n        xs: \"h-7 rounded-md px-2\",\n        sm: \"h-8 rounded-md px-3 text-xs\",\n        lg: \"h-10 rounded-md px-5\",\n        icon: \"size-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  },\n);\n\nfunction Button({\n  className,\n  variant,\n  size,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean;\n  }) {\n  const Comp = asChild ? Slot : \"button\";\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  );\n}\n\nexport { Button, buttonVariants };\n",
      "type": "registry:ui",
      "target": "components/ui/button.tsx"
    },
    {
      "path": "components/ui/sheet.tsx",
      "content": "\"use client\";\n\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction sheetContentHasAccessibleTitle(node: React.ReactNode): boolean {\n  return React.Children.toArray(node).some((child) => {\n    if (!React.isValidElement(child)) return false;\n    if (child.type === SheetPrimitive.Title || child.type === SheetTitle) {\n      return true;\n    }\n    const nested = (child.props as { children?: React.ReactNode }).children;\n    if (nested != null) {\n      return sheetContentHasAccessibleTitle(nested);\n    }\n    return false;\n  });\n}\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n  return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n  return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n  return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n  return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n  return (\n    <SheetPrimitive.Overlay\n      data-slot=\"sheet-overlay\"\n      className={cn(\n        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction SheetContent({\n  className,\n  children,\n  side = \"right\",\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n  side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}) {\n  return (\n    <SheetPortal>\n      <SheetOverlay />\n      <SheetPrimitive.Content\n        data-slot=\"sheet-content\"\n        className={cn(\n          \"border-border dark:border-border/15 bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 gap-4 p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n          side === \"right\" &&\n            \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n          side === \"left\" &&\n            \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n          side === \"top\" &&\n            \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 border-b\",\n          side === \"bottom\" &&\n            \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 border-t\",\n          className,\n        )}\n        {...props}\n      >\n        {!sheetContentHasAccessibleTitle(children) && (\n          <SheetPrimitive.Title className=\"sr-only\">Menu</SheetPrimitive.Title>\n        )}\n        {children}\n        <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-6 right-6 z-[100] rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n          <XIcon className=\"size-5\" />\n          <span className=\"sr-only\">Close</span>\n        </SheetPrimitive.Close>\n      </SheetPrimitive.Content>\n    </SheetPortal>\n  );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-header\"\n      className={cn(\n        \"flex flex-col space-y-2 text-center sm:text-left\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"sheet-footer\"\n      className={cn(\n        \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction SheetTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n  return (\n    <SheetPrimitive.Title\n      data-slot=\"sheet-title\"\n      className={cn(\"text-foreground text-lg font-semibold\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction SheetDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n  return (\n    <SheetPrimitive.Description\n      data-slot=\"sheet-description\"\n      className={cn(\"text-muted-foreground text-sm\", className)}\n      {...props}\n    />\n  );\n}\n\nexport {\n  Sheet,\n  SheetClose,\n  SheetContent,\n  SheetDescription,\n  SheetFooter,\n  SheetHeader,\n  SheetTitle,\n  SheetTrigger,\n};\n",
      "type": "registry:ui",
      "target": "components/ui/sheet.tsx"
    },
    {
      "path": "components/logos/launch-ui.tsx",
      "content": "const LaunchUI = (props: React.SVGProps<SVGSVGElement>) => (\n  <svg\n    width={24}\n    height={24}\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <path\n      d=\"M10.5 12.75H3L6 9.75H9L15.75 3H20.25L10.5 12.75Z\"\n      fill=\"currentColor\"\n    />\n    <path d=\"M11.25 15V13.5L21 3.75V5.25L11.25 15Z\" fill=\"currentColor\" />\n    <path d=\"M11.25 18V16.5L21 6.75V8.25L11.25 18Z\" fill=\"currentColor\" />\n    <path d=\"M11.25 21V19.5L15 15.75V17.25L11.25 21Z\" fill=\"currentColor\" />\n  </svg>\n);\nexport default LaunchUI;\n",
      "type": "registry:component",
      "target": "components/logos/launch-ui.tsx"
    }
  ],
  "dependencies": [
    "@radix-ui/react-slot",
    "@radix-ui/react-dialog",
    "@radix-ui/react-navigation-menu",
    "@radix-ui/react-icons",
    "lucide-react"
  ]
}