Input Group
uiable/input-groupFreeComponent
Input Group component.
Live preview
live · rendered by the registry
Rendered by uiable on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://uiable.com/r/input-group.jsonSource
1"use client";23import { ComponentProps } from "react";45import { cva, type VariantProps } from "class-variance-authority";67import { cn } from "@/lib/utils";8import { Button } from "@/components/ui/button";9import { Input } from "@/components/ui/input";10import { Textarea } from "@/components/ui/textarea";1112function InputGroup({ className, ...props }: ComponentProps<"div">) {13 return (14 <div15 data-slot="input-group"16 role="group"17 className={cn(18 "border-border dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-primary has-[[data-slot=input-group-control]:focus-visible]:ring-primary has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-input/50 dark:has-disabled:bg-input/80 group/input-group relative flex w-full min-w-0 items-center rounded-lg border transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-0 has-[[data-slot][aria-invalid=true]]:ring-0 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",19 className20 )}21 {...props}22 />23 );24}2526const inputGroupAddonVariants = cva(27 "text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none",28 {29 variants: {30 align: {31 "inline-start":32 "pl-3 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem] order-first",33 "inline-end":34 "pr-3 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem] order-last",35 "block-start":36 "px-2.5 pt-3 group-has-[>input]/input-group:pt-2 [.border-b]:pb-3 order-first w-full justify-start",37 "block-end":38 "px-2.5 pb-3 group-has-[>input]/input-group:pb-2 [.border-t]:pt-3 order-last w-full justify-start"39 }40// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from uiable
All 712 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | uiable | Components | Free | 2 deps | |
| Alertalert | uiable | Components | Free | 1 dep | |
| Alert Dialogalert-dialog | uiable | Components | Free | 1 dep | |
| Aspect Ratioaspect-ratio | uiable | Components | Free | no deps | |
| Attachmentattachment | uiable | Components | Free | 2 deps | |
| Avataravatar | uiable | Components | Free | 1 dep | |
| Badgebadge | uiable | Components | Free | 2 deps | |
| Breadcrumbbreadcrumb | uiable | Components | Free | 2 deps |
