import * as React from "react" import { cva, type VariantProps } from "class-variance-authority" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import { cn } from "@/lib/utils" function InputGroup({ className, ...props }: React.ComponentProps<"div">) { return (
[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", className )} {...props} /> ) } const inputGroupAddonVariants = cva( "flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>svg:not([class*='size-'])]:size-4", { variants: { align: { "inline-start": "order-first pl-2", "inline-end": "order-last pr-2", "block-start": "order-first w-full justify-start px-3 pt-2", "block-end": "order-last w-full justify-start px-3 pb-2", }, }, defaultVariants: { align: "inline-start" }, } ) function InputGroupAddon({ className, align = "inline-start", ...props }: React.ComponentProps<"div"> & VariantProps) { return (
{ if ((event.target as HTMLElement).closest("button")) return ;(event.currentTarget.parentElement?.querySelector("input, textarea") as HTMLInputElement | HTMLTextAreaElement | null)?.focus() }} {...props} /> ) } function InputGroupButton({ className, type = "button", variant = "ghost", size = "icon-sm", ...props }: React.ComponentProps) { return