spb/vquant Public MIT
VibeQuant — AI-powered institutional-grade financial intelligence platform.
TypeScript 84.3%
Python 11.7%
JavaScript 1.6%
CSS 1.5%
HTML 0.7%
1/*2 * =============================================================================3 * VibeQuant (vquant) — AI-Powered Financial Intelligence Platform4 * -----------------------------------------------------------------------------5 * File: client/src/components/ui/navigation-menu.tsx6 *7 * Author: Simon-Pierre Boucher8 * Contact: contact@spboucher.ai9 * Website: https://www.spboucher.ai10 * Demo: https://www.vquant.ai11 * License: MIT (see LICENSE)12 *13 * Copyright © 2026 Simon-Pierre Boucher. All rights reserved.14 * =============================================================================15 */1617import * as React from "react"18import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"19import { cva } from "class-variance-authority"20import { ChevronDown } from "lucide-react"2122import { cn } from "@/lib/utils"2324const NavigationMenu = React.forwardRef<25 React.ElementRef<typeof NavigationMenuPrimitive.Root>,26 React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>27>(({ className, children, ...props }, ref) => (28 <NavigationMenuPrimitive.Root29 ref={ref}30 className={cn(31 "relative z-10 flex max-w-max flex-1 items-center justify-center",32 className33 )}34 {...props}35 >36 {children}37 <NavigationMenuViewport />38 </NavigationMenuPrimitive.Root>39))40NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName4142const NavigationMenuList = React.forwardRef<43 React.ElementRef<typeof NavigationMenuPrimitive.List>,44 React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>45>(({ className, ...props }, ref) => (46 <NavigationMenuPrimitive.List47 ref={ref}48 className={cn(49 "group flex flex-1 list-none items-center justify-center space-x-1",50 className51 )}52 {...props}53 />54))55NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName5657const NavigationMenuItem = NavigationMenuPrimitive.Item5859const navigationMenuTriggerStyle = cva(60 "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent"61)6263const NavigationMenuTrigger = React.forwardRef<64 React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,65 React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>66>(({ className, children, ...props }, ref) => (67 <NavigationMenuPrimitive.Trigger68 ref={ref}69 className={cn(navigationMenuTriggerStyle(), "group", className)}70 {...props}71 >72 {children}{" "}73 <ChevronDown74 className="relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180"75 aria-hidden="true"76 />77 </NavigationMenuPrimitive.Trigger>78))79NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName8081const NavigationMenuContent = React.forwardRef<82 React.ElementRef<typeof NavigationMenuPrimitive.Content>,83 React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>84>(({ className, ...props }, ref) => (85 <NavigationMenuPrimitive.Content86 ref={ref}87 className={cn(88 "left-0 top-0 w-full 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 md:absolute md:w-auto ",89 className90 )}91 {...props}92 />93))94NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName9596const NavigationMenuLink = NavigationMenuPrimitive.Link9798const NavigationMenuViewport = React.forwardRef<99 React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,100 React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>101>(({ className, ...props }, ref) => (102 <div className={cn("absolute left-0 top-full flex justify-center")}>103 <NavigationMenuPrimitive.Viewport104 className={cn(105 "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",106 className107 )}108 ref={ref}109 {...props}110 />111 </div>112))113NavigationMenuViewport.displayName =114 NavigationMenuPrimitive.Viewport.displayName115116const NavigationMenuIndicator = React.forwardRef<117 React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,118 React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>119>(({ className, ...props }, ref) => (120 <NavigationMenuPrimitive.Indicator121 ref={ref}122 className={cn(123 "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",124 className125 )}126 {...props}127 >128 <div className="relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" />129 </NavigationMenuPrimitive.Indicator>130))131NavigationMenuIndicator.displayName =132 NavigationMenuPrimitive.Indicator.displayName133134export {135 navigationMenuTriggerStyle,136 NavigationMenu,137 NavigationMenuList,138 NavigationMenuItem,139 NavigationMenuContent,140 NavigationMenuTrigger,141 NavigationMenuLink,142 NavigationMenuIndicator,143 NavigationMenuViewport,144}145