Skip to content
Nerdfishui
Esc
navigateopen⌘Jpreview

InputGroup

Display additional information or actions to an input or textarea.

'use client'

import {
	InputGroup,
	InputGroupAddon,
	InputGroupButton,
	InputGroupInput,
	InputGroupText,
	InputGroupTextarea,
} from '@nerdfish/react/input-group'
import { Separator } from '@nerdfish/react/separator'
import {
	Tooltip,
	TooltipContent,
	TooltipProvider,
	TooltipTrigger,
} from '@nerdfish/react/tooltip'
import {
	ArrowUpIcon,
	CheckIcon,
	InfoIcon,
	PlusIcon,
	SearchIcon,
} from 'lucide-react'

export default function InputGroupExample() {
	return (
		<div className="grid w-full gap-6">
			<InputGroup>
				<InputGroupInput placeholder="Search..." />
				<InputGroupAddon>
					<SearchIcon />
				</InputGroupAddon>
				<InputGroupAddon align="inline-end">12 results</InputGroupAddon>
			</InputGroup>
			<InputGroup>
				<InputGroupInput placeholder="example.com" className="pl-1!" />
				<InputGroupAddon>
					<InputGroupText>https://</InputGroupText>
				</InputGroupAddon>
				<InputGroupAddon align="inline-end">
					<TooltipProvider>
						<Tooltip>
							<TooltipTrigger
								render={
									<InputGroupButton className="rounded-full" size="xs" icon>
										<InfoIcon />
									</InputGroupButton>
								}
							/>
							<TooltipContent>This is content in a tooltip.</TooltipContent>
						</Tooltip>
					</TooltipProvider>
				</InputGroupAddon>
			</InputGroup>
			<InputGroup>
				<InputGroupTextarea placeholder="Ask, Search or Chat..." />
				<InputGroupAddon align="block-end">
					<InputGroupButton
						variant="outline"
						className="rounded-full"
						size="xs"
						icon
					>
						<PlusIcon />
					</InputGroupButton>

					<InputGroupText className="ml-auto">52% used</InputGroupText>
					<Separator orientation="vertical" className="h-4!" />
					<InputGroupButton
						variant="default"
						className="rounded-full"
						size="xs"
						icon
						disabled
					>
						<ArrowUpIcon />
						<span className="sr-only">Send</span>
					</InputGroupButton>
				</InputGroupAddon>
			</InputGroup>
			<InputGroup>
				<InputGroupInput placeholder="@handle" />
				<InputGroupAddon align="inline-end">
					<div className="bg-primary text-primary-foreground flex size-4 items-center justify-center rounded-full">
						<CheckIcon className="size-3" />
					</div>
				</InputGroupAddon>
			</InputGroup>
		</div>
	)
}