Select
components-site-template/selectFreeComponent
A select dropdown with trigger, content, items, and grouping primitives.
Install it
npx shadcn@latest add https://ui-docs.anxndsgn.com/r/select.jsonSource
1import * as React from "react";2import { Select as SelectPrimitive } from "@base-ui/react/select";3import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";45import { cn } from "@/lib/utils";67const Select = SelectPrimitive.Root;89function SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {10 return (11 <SelectPrimitive.Group12 data-slot="select-group"13 className={cn("scroll-my-1 p-1", className)}14 {...props}15 />16 );17}1819function SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {20 return (21 <SelectPrimitive.Value22 data-slot="select-value"23 className={cn("flex flex-1 text-left", className)}24 {...props}25 />26 );27}2829function SelectTrigger({30 className,31 size = "default",32 children,33 ...props34}: SelectPrimitive.Trigger.Props & {35 size?: "sm" | "default";36}) {37 return (38 <SelectPrimitive.Trigger39 data-slot="select-trigger"40 data-size={size}41 className={cn(42 "flex w-fit items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",43 className,44 )}45 {...props}46 >47 {children}48 <SelectPrimitive.Icon49 render={<ChevronDownIcon className="pointer-events-none size-4 text-muted-foreground" />}50 />51 </SelectPrimitive.Trigger>52 );53}5455function SelectContent({56 className,57 children,58 side = "bottom",59 sideOffset = 4,60 align = "center",61 alignOffset = 0,62 alignItemWithTrigger = true,63 ...props64}: SelectPrimitive.Popup.Props &65 Pick<66 SelectPrimitive.Positioner.Props,67 "align" | "alignOffset" | "side" | "sideOffset" | "alignItemWithTrigger"68 >) {69 return (70 <SelectPrimitive.Portal>71// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from components-site-template
All 12 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Buttonbutton | components-site-template | Components | Free | no deps | |
| Button Demobutton-demo | components-site-template | Components | Free | no deps | |
| Dropdown Menudropdown-menu | components-site-template | Components | Free | 2 deps | |
| Dropdown Menu Demodropdown-menu-demo | components-site-template | Components | Free | no deps | |
| Scroll Areascroll-area | components-site-template | Components | Free | 1 dep | |
| Scroll Area Demoscroll-area-demo | components-site-template | Components | Free | no deps | |
| Select Demoselect-demo | components-site-template | Components | Free | no deps | |
| Separatorseparator | components-site-template | Components | Free | 1 dep |
