select
9ui/selectFreeComponent
9ui publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by 9ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://9ui.dev/r/select.jsonSource
1import * as React from "react"2import { Select as BaseSelect } from "@base-ui/react/select"3import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react"45import { cn } from "@/lib/utils"67function Select({ ...props }: React.ComponentProps<typeof BaseSelect.Root>) {8 return <BaseSelect.Root data-slot="select" {...props} />9}1011function SelectGroup({12 ...props13}: React.ComponentProps<typeof BaseSelect.Group>) {14 return <BaseSelect.Group data-slot="select-group" {...props} />15}1617function SelectPortal({18 ...props19}: React.ComponentProps<typeof BaseSelect.Portal>) {20 return <BaseSelect.Portal data-slot="select-portal" {...props} />21}2223function SelectPositioner({24 ...props25}: React.ComponentProps<typeof BaseSelect.Positioner>) {26 return <BaseSelect.Positioner data-slot="select-positioner" {...props} />27}2829function SelectValue({30 className,31 ...props32}: React.ComponentProps<typeof BaseSelect.Value>) {33 return (34 <BaseSelect.Value35 data-slot="select-value"36 className={cn("text-sm", className)}37 {...props}38 />39 )40}4142function SelectTrigger({43 className,44 size = "default",45 children,46 ...props47}: React.ComponentProps<typeof BaseSelect.Trigger> & {48 size?: "sm" | "default"49}) {50 return (51 <BaseSelect.Trigger52 data-slot="select-trigger"53 data-size={size}54 className={cn(55 "group [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/50 aria-invalid:border-destructive bg-input hover:border-ring/70 flex w-fit items-center justify-between gap-2 rounded-md border px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow,border-color] outline-none select-none focus-visible:ring-[3px] data-disabled:pointer-events-none data-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 data-popup-open:[&_*[data-slot=select-icon]]:rotate-180 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",56 className57 )}58 {...props}59 >60 {children}61 <BaseSelect.Icon>62 <ChevronDownIcon63 data-slot="select-icon"64 className="size-4 opacity-50 transition-transform"65 />66 </BaseSelect.Icon>67 </BaseSelect.Trigger>68 )69}7071function SelectList({72 className,73 ...props74}: React.ComponentProps<typeof BaseSelect.List>) {75 return (76 <BaseSelect.List77 data-slot="select-list"78// … truncated
Files it writes
More from 9ui
All 56 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| accordionaccordion | 9ui | Components | Free | no deps | |
| alertalert | 9ui | Components | Free | no deps | |
| alert-dialogalert-dialog | 9ui | Components | Free | no deps | |
| aspect-ratioaspect-ratio | 9ui | Components | Free | no deps | |
| autocompleteautocomplete | 9ui | Components | Free | no deps | |
| avataravatar | 9ui | Components | Free | no deps | |
| badgebadge | 9ui | Components | Free | no deps | |
| breadcrumbsbreadcrumbs | 9ui | Components | Free | no deps |
