Dropdown Menu
solid-ui/dropdown-menuFreeComponent
A dropdown menu component
Live preview
live · rendered by the registry
Rendered by solid-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://www.solid-ui.com/r/dropdown-menu.jsonSource
1import type { Component, ComponentProps, JSX, ValidComponent } from "solid-js"2import { splitProps } from "solid-js"34import * as DropdownMenuPrimitive from "@kobalte/core/dropdown-menu"5import type { PolymorphicProps } from "@kobalte/core/polymorphic"67import { cn } from "~/lib/utils"89const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger10const DropdownMenuPortal = DropdownMenuPrimitive.Portal11const DropdownMenuSub = DropdownMenuPrimitive.Sub12const DropdownMenuGroup = DropdownMenuPrimitive.Group13const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup1415const DropdownMenu: Component<DropdownMenuPrimitive.DropdownMenuRootProps> = (props) => {16 return <DropdownMenuPrimitive.Root gutter={4} {...props} />17}1819type DropdownMenuContentProps<T extends ValidComponent = "div"> =20 DropdownMenuPrimitive.DropdownMenuContentProps<T> & {21 class?: string | undefined22 }2324const DropdownMenuContent = <T extends ValidComponent = "div">(25 props: PolymorphicProps<T, DropdownMenuContentProps<T>>26) => {27 const [, rest] = splitProps(props as DropdownMenuContentProps, ["class"])28 return (29 <DropdownMenuPrimitive.Portal>30 <DropdownMenuPrimitive.Content31 class={cn(32 "z-50 min-w-32 origin-[var(--kb-menu-content-transform-origin)] animate-content-hide overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[expanded]:animate-content-show",33 props.class34 )}35 {...rest}36 />37 </DropdownMenuPrimitive.Portal>38 )39}4041type DropdownMenuItemProps<T extends ValidComponent = "div"> =42 DropdownMenuPrimitive.DropdownMenuItemProps<T> & {43 class?: string | undefined44 }4546const DropdownMenuItem = <T extends ValidComponent = "div">(47 props: PolymorphicProps<T, DropdownMenuItemProps<T>>48) => {49 const [, rest] = splitProps(props as DropdownMenuItemProps, ["class"])50 return (51 <DropdownMenuPrimitive.Item52 class={cn(53 "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",54 props.class55 )}56 {...rest}57 />58 )59}6061const DropdownMenuShortcut: Component<ComponentProps<"span">> = (props) => {62 const [, rest] = splitProps(props, ["class"])63 return <span class={cn("ml-auto text-xs tracking-widest opacity-60", props.class)} {...rest} />64}6566// … truncated
What it pulls in
npm packages
Files it writes
More from solid-ui
All 55 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | solid-ui | Components | Free | 2 deps | |
| Alertalert | solid-ui | Components | Free | 3 deps | |
| Alert Dialogalert-dialog | solid-ui | Components | Free | 2 deps | |
| Aspect Ratioaspect-ratio | solid-ui | Components | Free | 1 dep | |
| Avataravatar | solid-ui | Components | Free | 2 deps | |
| Badgebadge | solid-ui | Components | Free | 2 deps | |
| Badge Deltabadge-delta | solid-ui | Components | Free | 2 deps | |
| Bar Listbar-list | solid-ui | Components | Free | 1 dep |
