SPB Git

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%
7.9 KB · 215 lines tsx
Raw Blame History
1/*2 * =============================================================================3 *  VibeQuant (vquant) — AI-Powered Financial Intelligence Platform4 * -----------------------------------------------------------------------------5 *  File:      client/src/components/ui/dropdown-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 DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"19import { Check, ChevronRight, Circle } from "lucide-react"2021import { cn } from "@/lib/utils"2223const DropdownMenu = DropdownMenuPrimitive.Root2425const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger2627const DropdownMenuGroup = DropdownMenuPrimitive.Group2829const DropdownMenuPortal = DropdownMenuPrimitive.Portal3031const DropdownMenuSub = DropdownMenuPrimitive.Sub3233const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup3435const DropdownMenuSubTrigger = React.forwardRef<36  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,37  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {38    inset?: boolean39  }40>(({ className, inset, children, ...props }, ref) => (41  <DropdownMenuPrimitive.SubTrigger42    ref={ref}43    className={cn(44      "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",45      inset && "pl-8",46      className47    )}48    {...props}49  >50    {children}51    <ChevronRight className="ml-auto" />52  </DropdownMenuPrimitive.SubTrigger>53))54DropdownMenuSubTrigger.displayName =55  DropdownMenuPrimitive.SubTrigger.displayName5657const DropdownMenuSubContent = React.forwardRef<58  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,59  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>60>(({ className, ...props }, ref) => (61  <DropdownMenuPrimitive.SubContent62    ref={ref}63    className={cn(64      "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",65      className66    )}67    {...props}68  />69))70DropdownMenuSubContent.displayName =71  DropdownMenuPrimitive.SubContent.displayName7273const DropdownMenuContent = React.forwardRef<74  React.ElementRef<typeof DropdownMenuPrimitive.Content>,75  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>76>(({ className, sideOffset = 4, ...props }, ref) => (77  <DropdownMenuPrimitive.Portal>78    <DropdownMenuPrimitive.Content79      ref={ref}80      sideOffset={sideOffset}81      className={cn(82        "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",83        className84      )}85      {...props}86    />87  </DropdownMenuPrimitive.Portal>88))89DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName9091const DropdownMenuItem = React.forwardRef<92  React.ElementRef<typeof DropdownMenuPrimitive.Item>,93  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {94    inset?: boolean95  }96>(({ className, inset, ...props }, ref) => (97  <DropdownMenuPrimitive.Item98    ref={ref}99    className={cn(100      "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",101      inset && "pl-8",102      className103    )}104    {...props}105  />106))107DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName108109const DropdownMenuCheckboxItem = React.forwardRef<110  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,111  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>112>(({ className, children, checked, ...props }, ref) => (113  <DropdownMenuPrimitive.CheckboxItem114    ref={ref}115    className={cn(116      "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",117      className118    )}119    checked={checked}120    {...props}121  >122    <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">123      <DropdownMenuPrimitive.ItemIndicator>124        <Check className="h-4 w-4" />125      </DropdownMenuPrimitive.ItemIndicator>126    </span>127    {children}128  </DropdownMenuPrimitive.CheckboxItem>129))130DropdownMenuCheckboxItem.displayName =131  DropdownMenuPrimitive.CheckboxItem.displayName132133const DropdownMenuRadioItem = React.forwardRef<134  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,135  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>136>(({ className, children, ...props }, ref) => (137  <DropdownMenuPrimitive.RadioItem138    ref={ref}139    className={cn(140      "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",141      className142    )}143    {...props}144  >145    <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">146      <DropdownMenuPrimitive.ItemIndicator>147        <Circle className="h-2 w-2 fill-current" />148      </DropdownMenuPrimitive.ItemIndicator>149    </span>150    {children}151  </DropdownMenuPrimitive.RadioItem>152))153DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName154155const DropdownMenuLabel = React.forwardRef<156  React.ElementRef<typeof DropdownMenuPrimitive.Label>,157  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {158    inset?: boolean159  }160>(({ className, inset, ...props }, ref) => (161  <DropdownMenuPrimitive.Label162    ref={ref}163    className={cn(164      "px-2 py-1.5 text-sm font-semibold",165      inset && "pl-8",166      className167    )}168    {...props}169  />170))171DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName172173const DropdownMenuSeparator = React.forwardRef<174  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,175  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>176>(({ className, ...props }, ref) => (177  <DropdownMenuPrimitive.Separator178    ref={ref}179    className={cn("-mx-1 my-1 h-px bg-muted", className)}180    {...props}181  />182))183DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName184185const DropdownMenuShortcut = ({186  className,187  ...props188}: React.HTMLAttributes<HTMLSpanElement>) => {189  return (190    <span191      className={cn("ml-auto text-xs tracking-widest opacity-60", className)}192      {...props}193    />194  )195}196DropdownMenuShortcut.displayName = "DropdownMenuShortcut"197198export {199  DropdownMenu,200  DropdownMenuTrigger,201  DropdownMenuContent,202  DropdownMenuItem,203  DropdownMenuCheckboxItem,204  DropdownMenuRadioItem,205  DropdownMenuLabel,206  DropdownMenuSeparator,207  DropdownMenuShortcut,208  DropdownMenuGroup,209  DropdownMenuPortal,210  DropdownMenuSub,211  DropdownMenuSubContent,212  DropdownMenuSubTrigger,213  DropdownMenuRadioGroup,214}215