Input Group
blok/input-groupFreeComponent
A flexible input container that combines an input field with addons like icons, buttons, text, or dropdowns.
Install it
npx shadcn@latest add https://blok.sitecore.com/r/input-group.jsonSource
1"use client";23import { type VariantProps, cva } from "class-variance-authority";4import type * as React from "react";56import { Button } from "@/components/ui/button";7import { Input } from "@/components/ui/input";8import { Textarea } from "@/components/ui/textarea";9import { cn } from "@/lib/utils";1011function InputGroup({ className, ...props }: React.ComponentProps<"div">) {12 return (13 <div14 data-slot="input-group"15 role="group"16 className={cn(17 "group/input-group bg-white border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none",18 "h-9 min-w-0 has-[>textarea]:h-auto",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]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3",2526 // Focus state (matches input primary focus style).27 "has-[[data-slot=input-group-control]:focus-visible]:border-primary has-[[data-slot=input-group-control]:focus-visible]:ring-primary/50 has-[[data-slot=input-group-control]:focus-visible]:ring-1",28 // Focus state for buttons inside input group (dropdown triggers, etc.)29 "has-[button:focus-visible]:border-primary has-[button:focus-visible]:ring-primary/50 has-[button:focus-visible]:ring-1",3031 // Error state.32 "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",3334 className,35 )}36 {...props}37 />38 );39}4041const inputGroupAddonVariants = cva(42 "text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50",43 {44 variants: {45 align: {46 "inline-start":47 "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",48 "inline-end":49 "order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]",50 "block-start":51// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from blok
All 72 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | blok | Components | Free | 2 deps · 2 files | |
| Action baraction-bar | blok | Components | Free | 1 dep · 2 files | |
| Alertalert | blok | Components | Free | 2 deps · 2 files | |
| Alert dialogalert-dialog | blok | Components | Free | 2 deps | |
| Aspect ratioaspect-ratio | blok | Components | Free | 1 dep | |
| Avataravatar | blok | Components | Free | 1 dep | |
| Badgebadge | blok | Components | Free | 2 deps | |
| All componentsblok-components | blok | Components | Free | no deps |
