This component no longer exists. It was in Quantumblack Design System Registry’s manifest when we first indexed it and is not there now — the registry served its inventory on 2026-08-08 and this item was not on it. The install command below will fail. It is kept here because a tutorial somewhere still tells people to run it.
Input Group
quantumblack-design-system-registry/input-groupRemovedComponent
A composite input component with support for icons, buttons, and text addons.
Install it
npx shadcn@latest add http://designsystem.quantumblack.com/r/input-group.jsonSource
1'use client';23import { type VariantProps, cva } from 'class-variance-authority';4import * as React from 'react';56import { Button } from '@/components/ui/button';7import {8 Input,9 type InputProps,10 inputSizeDefinitions,11 inputVariantStyles,12} from '@/components/ui/input';13import { Textarea } from '@/components/ui/textarea';14import { cn } from '@/lib/utils';1516// Focus state wrapper styles for default variant17// Triggered by child input focus-visible OR data-open="true" on the wrapper18const defaultFocusStyles = [19 'has-[[data-slot=input-group-control]:focus-visible]:bg-stateslayer-overlay-active-inverse',20 'has-[[data-slot=input-group-control]:focus-visible]:ring-stroke-status-focus',21 'has-[[data-slot=input-group-control]:focus-visible]:shadow-elevation-0',22 'data-[open=true]:bg-stateslayer-overlay-active-inverse',23 'data-[open=true]:ring-stroke-status-focus',24 'data-[open=true]:shadow-elevation-0',25] as const;2627// Per-size focus ring width for InputGroup default variant28const inputGroupFocusRingWidth = {29 sm: 'has-[[data-slot=input-group-control]:focus-visible]:ring-[1px] data-[open=true]:ring-[1px]',30 default:31 'has-[[data-slot=input-group-control]:focus-visible]:ring-[1px] data-[open=true]:ring-[1px]',32 lg: 'has-[[data-slot=input-group-control]:focus-visible]:ring-[2px] data-[open=true]:ring-[2px]',33} as const;3435// Focus state wrapper styles for inline variant36// Triggered by child input focus-visible OR data-open="true" on the wrapper37const inlineFocusStyles = [38 'has-[[data-slot=input-group-control]:focus-visible]:border-b-stroke-status-focus',39 'has-[[data-slot=input-group-control]:focus-visible]:ring-0',40 'has-[[data-slot=input-group-control]:focus-visible]:shadow-elevation-0',41 'data-[open=true]:border-b-stroke-status-focus',42 'data-[open=true]:ring-0',43 'data-[open=true]:shadow-elevation-0',44] as const;4546// Per-size focus border-bottom width for InputGroup inline variant47const inputGroupInlineFocusBorderWidth = {48 sm: 'has-[[data-slot=input-group-control]:focus-visible]:border-b-[1px] data-[open=true]:border-b-[1px]',49 default:50 'has-[[data-slot=input-group-control]:focus-visible]:border-b-[1px] data-[open=true]:border-b-[1px]',51 lg: 'has-[[data-slot=input-group-control]:focus-visible]:border-b-[2px] data-[open=true]:border-b-[2px]',52} as const;5354// Error state wrapper styles for default variant55const defaultErrorStyles = [56 'has-[[data-slot][aria-invalid=true]]:!border',57// … truncated
What it pulls in
Other registry items
