From 9bfa49ae0751865604726fd4e1e3e02dbb054a0b Mon Sep 17 00:00:00 2001 From: Henry Li Date: Sat, 17 Jan 2026 17:52:15 +0800 Subject: [PATCH] feat:enhance focus status --- frontend/src/components/ui/input-group.tsx | 52 +++++++++++----------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/frontend/src/components/ui/input-group.tsx b/frontend/src/components/ui/input-group.tsx index 3d1f9d9..76ea1f0 100644 --- a/frontend/src/components/ui/input-group.tsx +++ b/frontend/src/components/ui/input-group.tsx @@ -1,12 +1,12 @@ -"use client" +"use client"; -import * as React from "react" -import { cva, type VariantProps } from "class-variance-authority" +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "@/lib/utils" -import { Button } from "@/components/ui/button" -import { Input } from "@/components/ui/input" -import { Textarea } from "@/components/ui/textarea" +import { cn } from "@/lib/utils"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Textarea } from "@/components/ui/textarea"; function InputGroup({ className, ...props }: React.ComponentProps<"div">) { return ( @@ -14,7 +14,7 @@ function InputGroup({ className, ...props }: React.ComponentProps<"div">) { data-slot="input-group" role="group" className={cn( - "group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none", + "group/input-group border-input/0 dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none", "h-9 min-w-0 has-[>textarea]:h-auto", // Variants based on alignment. @@ -24,16 +24,16 @@ function InputGroup({ className, ...props }: React.ComponentProps<"div">) { "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3", // Focus state. - "has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]", + "has-[[data-slot=input-group-control]:focus-visible]:border-input has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]", // Error state. "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", - className + className, )} {...props} /> - ) + ); } const inputGroupAddonVariants = cva( @@ -54,8 +54,8 @@ const inputGroupAddonVariants = cva( defaultVariants: { align: "inline-start", }, - } -) + }, +); function InputGroupAddon({ className, @@ -70,13 +70,13 @@ function InputGroupAddon({ className={cn(inputGroupAddonVariants({ align }), className)} onClick={(e) => { if ((e.target as HTMLElement).closest("button")) { - return + return; } - e.currentTarget.parentElement?.querySelector("input")?.focus() + e.currentTarget.parentElement?.querySelector("input")?.focus(); }} {...props} /> - ) + ); } const inputGroupButtonVariants = cva( @@ -94,8 +94,8 @@ const inputGroupButtonVariants = cva( defaultVariants: { size: "xs", }, - } -) + }, +); function InputGroupButton({ className, @@ -113,7 +113,7 @@ function InputGroupButton({ className={cn(inputGroupButtonVariants({ size }), className)} {...props} /> - ) + ); } function InputGroupText({ className, ...props }: React.ComponentProps<"span">) { @@ -121,11 +121,11 @@ function InputGroupText({ className, ...props }: React.ComponentProps<"span">) { - ) + ); } function InputGroupInput({ @@ -137,11 +137,11 @@ function InputGroupInput({ data-slot="input-group-control" className={cn( "flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent", - className + className, )} {...props} /> - ) + ); } function InputGroupTextarea({ @@ -153,11 +153,11 @@ function InputGroupTextarea({ data-slot="input-group-control" className={cn( "flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent", - className + className, )} {...props} /> - ) + ); } export { @@ -167,4 +167,4 @@ export { InputGroupText, InputGroupInput, InputGroupTextarea, -} +};