native-select
gr8monk3ys/native-selectFreeComponent
native-select (identity-styled).
Install it
npx shadcn@latest add https://ui.lscaturchio.xyz/r/native-select.jsonSource
1import * as React from "react"2import { ChevronDownIcon } from "lucide-react"34import { cn } from "@/lib/utils"56function NativeSelect({7 className,8 size = "default",9 ...props10}: Omit<React.ComponentProps<"select">, "size"> & { size?: "sm" | "default" }) {11 return (12 <div13 className="group/native-select relative w-fit has-[select:disabled]:opacity-50"14 data-slot="native-select-wrapper"15 >16 <select17 data-slot="native-select"18 data-size={size}19 className={cn(20 "h-9 w-full min-w-0 appearance-none rounded-xl border border-input bg-transparent px-3 py-2 pr-9 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-8 data-[size=sm]:py-1 dark:bg-input/30 dark:hover:bg-input/50",21 "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",22 "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",23 className24 )}25 {...props}26 />27 <ChevronDownIcon28 className="pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-muted-foreground opacity-50 select-none"29 aria-hidden="true"30 data-slot="native-select-icon"31 />32 </div>33 )34}3536function NativeSelectOption({37 className,38 ...props39}: React.ComponentProps<"option">) {40 return (41 <option42 data-slot="native-select-option"43 className={cn("bg-[Canvas] text-[CanvasText]", className)}44 {...props}45 />46 )47}4849function NativeSelectOptGroup({50 className,51 ...props52}: React.ComponentProps<"optgroup">) {53 return (54 <optgroup55 data-slot="native-select-optgroup"56 className={cn("bg-[Canvas] text-[CanvasText]", className)}57 {...props}58 />59 )60}6162export { NativeSelect, NativeSelectOptGroup, NativeSelectOption }
What it pulls in
npm packages
Files it writes
More from gr8monk3ys
All 69 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | gr8monk3ys | Components | Free | 2 deps | |
| ActiveNavLinkactive-nav-link | gr8monk3ys | Components | Free | no deps · 2 files | |
| alertalert | gr8monk3ys | Components | Free | 1 dep | |
| alert-dialogalert-dialog | gr8monk3ys | Components | Free | 1 dep | |
| aspect-ratioaspect-ratio | gr8monk3ys | Components | Free | 1 dep | |
| attachmentattachment | gr8monk3ys | Components | Free | 2 deps | |
| Avataravatar | gr8monk3ys | Components | Free | 1 dep | |
| Badgebadge | gr8monk3ys | Components | Free | 1 dep |
