Select
avail-widgets/selectFreeComponent
UI primitive: Select
Install it
npx shadcn@latest add https://elements.nexus.availproject.org/r/select.jsonSource
1"use client";23import * as React from "react";4import * as SelectPrimitive from "@radix-ui/react-select";5import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";67import { cn } from "@/lib/utils";89function Select({10 ...props11}: React.ComponentProps<typeof SelectPrimitive.Root>) {12 return <SelectPrimitive.Root data-slot="select" {...props} />;13}1415function SelectGroup({16 ...props17}: React.ComponentProps<typeof SelectPrimitive.Group>) {18 return <SelectPrimitive.Group data-slot="select-group" {...props} />;19}2021function SelectValue({22 ...props23}: React.ComponentProps<typeof SelectPrimitive.Value>) {24 return <SelectPrimitive.Value data-slot="select-value" {...props} />;25}2627function SelectTrigger({28 className,29 size = "default",30 children,31 ...props32}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {33 size?: "sm" | "default";34}) {35 return (36 <SelectPrimitive.Trigger37 data-slot="select-trigger"38 data-size={size}39 className={cn(40 "border-input data-placeholder:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",41 className,42 )}43 {...props}44 >45 {children}46 <SelectPrimitive.Icon asChild>47 <ChevronDownIcon className="size-4 opacity-50" />48 </SelectPrimitive.Icon>49 </SelectPrimitive.Trigger>50 );51}5253function SelectContent({54 className,55 children,56 position = "popper",57 ...props58}: React.ComponentProps<typeof SelectPrimitive.Content>) {59 return (60 <SelectPrimitive.Portal>61 <SelectPrimitive.Content62 data-slot="select-content"63 className={cn(64// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from avail-widgets
All 27 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | avail-widgets | Components | Free | 2 deps | |
| All Elementsall | avail-widgets | Components | Free | no deps | |
| Animated Spinneranimated-spinner | avail-widgets | Components | Free | no deps | |
| Badgebadge | avail-widgets | Components | Free | 2 deps | |
| Bridge Depositbridge-deposit | avail-widgets | Components | Free | 3 deps · 32 files | |
| Buttonbutton | avail-widgets | Components | Free | 2 deps | |
| Cardcard | avail-widgets | Components | Free | no deps | |
| Checkboxcheckbox | avail-widgets | Components | Free | 2 deps |
