Input Group
pure-ui/input-groupFreeComponent
A customizable input group component
Install it
npx shadcn@latest add https://raw.githubusercontent.com/MusKRI/pure-ui/main/public/r/input-group.jsonSource
1"use client";23import * as React from "react";4import { tv, type VariantProps } from "tailwind-variants";56import { cn } from "@/lib/classes";7import { Input, type InputProps } from "@/registry/pure-ui/ui/input";8import { Textarea, type TextareaProps } from "@/registry/pure-ui/ui/textarea";9import { Button } from "@/registry/pure-ui/ui/button";1011function InputGroup({ className, ...props }: React.ComponentProps<"div">) {12 return (13 <div14 data-slot="input-group"15 role="group"16 className={cn(17 "relative group/input-group min-w-0 inline-flex rounded-lg iteems-center border border-input/70 bg-background dark:bg-input/32 text-base/5 shadow-xs outline-none",18 "[transition:box-shadow_150ms_ease-out]",1920 // Variants based on alignment.21 "has-[>[data-align=inline-start]]:[&>input]:pl-2",22 "has-[>[data-align=inline-end]]:[&>input]:pr-2",23 "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3",24 "has-[>[data-align=block-end]]:[&>input]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>textarea]:pt-3",2526 // Focus State27 "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[1px]",2829 // Error State30 "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",3132 className33 )}34 {...props}35 />36 );37}3839const inputGroupAddonVariants = tv({40 base: `flex h-auto cursor-text text-muted-foreground items-center justify-center text-sm gap-2 py-1.5 font-medium select-none not-has-[button]:**:[svg]:opacity-72 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 group-data-[disabled=true]/input-group:opacity-50`,41 variants: {42 align: {43 "inline-start":44 "order-first ps-[calc(--spacing(3)-1px)] has-[>[data-slot=badge]]:-ms-1.5 has-[>button]:-ms-2 has-[>kbd]:ms-[-0.35rem] [[data-size=sm]+&]:ps-[calc(--spacing(2.5)-1px)]",45 "inline-end":46 "order-last pe-[calc(--spacing(3)-1px)] has-[>[data-slot=badge]]:-me-1.5 has-[>button]:-me-2 has-[>kbd]:me-[-0.35rem] [[data-size=sm]+&]:pe-[calc(--spacing(2.5)-1px)]",47 "block-start":48// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from Pure UI
All 291 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | Pure UI | Components | Free | 4 deps | |
| Avataravatar | Pure UI | Components | Free | 3 deps | |
| Badgebadge | Pure UI | Components | Free | 4 deps | |
| Buttonbutton | Pure UI | Components | Free | 4 deps | |
| Button Groupbutton-group | Pure UI | Components | Free | 4 deps | |
| Calendarcalendar | Pure UI | Components | Free | 4 deps | |
| Cardcard | Pure UI | Components | Free | 2 deps | |
| Checkboxcheckbox | Pure UI | Components | Free | 4 deps |
