Select
adn-ui/selectFreeComponent
A common form component for choosing a predefined value in a dropdown menu.
Live preview
live · rendered by the registry
Rendered by adn-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://ui.awaiden.com/r/select.jsonSource
1"use client";23import "./select.css";4import { Select as BaseSelect } from "@base-ui/react/select";5import type React from "react";6import { cn } from "tailwind-variants";78import { SelectContext, useSelectContext } from "./select.context";9import { selectVariants, type SelectVariants } from "./select.variants";1011export type SelectProps = SelectVariants & React.ComponentProps<typeof BaseSelect.Root>;1213export const SelectRoot = ({ children, size, ...props }: SelectProps) => {14 const slots = selectVariants({ size });1516 return (17 <SelectContext.Provider value={{ slots }}>18 <BaseSelect.Root {...props}>{children}</BaseSelect.Root>19 </SelectContext.Provider>20 );21};2223export type SelectLabelProps = React.ComponentProps<typeof BaseSelect.Label>;2425export const SelectLabel = ({ className, ...props }: SelectLabelProps) => {26 const { slots } = useSelectContext();27 return <BaseSelect.Label className={cn(slots.label(), className)} {...props} />;28};2930export type SelectTriggerProps = React.ComponentProps<typeof BaseSelect.Trigger>;3132export const SelectTrigger = ({ className, ...props }: SelectTriggerProps) => {33 const { slots } = useSelectContext();34 return <BaseSelect.Trigger className={cn(slots.trigger(), className)} {...props} />;35};3637export type SelectValueProps = React.ComponentProps<typeof BaseSelect.Value>;3839export const SelectValue = ({ className, ...props }: SelectValueProps) => {40 const { slots } = useSelectContext();41 return <BaseSelect.Value className={cn(slots.value(), className)} {...props} />;42};4344export type SelectIconProps = React.ComponentProps<typeof BaseSelect.Icon>;4546export const SelectIcon = ({ children, className, ...props }: SelectIconProps) => {47 const { slots } = useSelectContext();48 return (49 <BaseSelect.Icon className={cn(slots.icon(), className)} {...props}>50 {children ?? (51 <svg className="h-4 w-4 stroke-current" fill="none" strokeWidth="2" viewBox="0 0 24 24">52 <path d="M7 10l5 5 5-5" />53 </svg>54 )}55 </BaseSelect.Icon>56 );57};5859export type SelectPortalProps = React.ComponentProps<typeof BaseSelect.Portal>;6061export const SelectPortal = (props: SelectPortalProps) => {62 return <BaseSelect.Portal {...props} />;63};6465export type SelectBackdropProps = React.ComponentProps<typeof BaseSelect.Backdrop>;6667export const SelectBackdrop = ({ className, ...props }: SelectBackdropProps) => {68 const { slots } = useSelectContext();69// … truncated
What it pulls in
npm packages
Files it writes
More from adn-ui
All 46 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | adn-ui | Components | Free | 2 deps · 5 files | |
| Alert Dialogalert-dialog | adn-ui | Components | Free | 2 deps · 5 files | |
| Aspect Ratioaspect-ratio | adn-ui | Components | Free | 1 dep · 5 files | |
| Autocompleteautocomplete | adn-ui | Components | Free | 2 deps · 5 files | |
| Avataravatar | adn-ui | Components | Free | 2 deps · 5 files | |
| Badgebadge | adn-ui | Components | Free | 1 dep · 5 files | |
| Breadcrumbbreadcrumb | adn-ui | Components | Free | 1 dep · 5 files | |
| Buttonbutton | adn-ui | Components | Free | 1 dep · 4 files |
