Skip to content

Commit 034534f

Browse files
committed
feat: update ui/input ui/textarea with error state styling
1 parent a53694d commit 034534f

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

src/components/ui/input.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,22 @@ import { cva, type VariantProps } from "class-variance-authority"
44
import { cn } from "@/lib/utils/cn"
55

66
const inputVariants = cva(
7-
"rounded border border-body placeholder:text-disabled hover:not-disabled:border-primary-hover focus-visible:outline focus-visible:outline-primary-hover focus-visible:outline-[3px] focus-visible:-outline-offset-2 disabled:cursor-not-allowed disabled:border-disabled bg-background",
7+
"rounded border placeholder:text-disabled focus-visible:outline focus-visible:outline-[3px] focus-visible:-outline-offset-2 disabled:cursor-not-allowed disabled:border-disabled bg-background",
88
{
99
variants: {
1010
size: {
1111
md: "p-2",
1212
sm: "p-1 text-sm",
1313
},
14+
hasError: {
15+
true: "border-error hover:not-disabled:border-error focus-visible:outline-error",
16+
false:
17+
"border-body hover:not-disabled:border-primary-hover focus-visible:outline-primary-hover",
18+
},
1419
},
1520
defaultVariants: {
1621
size: "md",
22+
hasError: false,
1723
},
1824
}
1925
)
@@ -23,11 +29,11 @@ export interface InputProps
2329
VariantProps<typeof inputVariants> {}
2430

2531
const Input = React.forwardRef<HTMLInputElement, InputProps>(
26-
({ className, type, size, ...props }, ref) => {
32+
({ className, type, size, hasError, ...props }, ref) => {
2733
return (
2834
<input
2935
type={type}
30-
className={cn(inputVariants({ size, className }))}
36+
className={cn(inputVariants({ size, hasError, className }))}
3137
ref={ref}
3238
{...props}
3339
/>

src/components/ui/textarea.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,22 @@ import { cva, type VariantProps } from "class-variance-authority"
44
import { cn } from "@/lib/utils/cn"
55

66
const textareaVariants = cva(
7-
"focus-visible:outline focus-visible:outline-primary-hover focus-visible:outline-[3px] focus-visible:-outline-offset-2 flex min-h-[200px] w-full rounded border border-body bg-background px-3 py-2 text-base ring-offset-background placeholder:text-disabled disabled:cursor-not-allowed disabled:opacity-50 hover:not-disabled:border-primary-hover",
7+
"focus-visible:outline focus-visible:outline-[3px] focus-visible:-outline-offset-2 flex min-h-[200px] w-full rounded border bg-background px-3 py-2 text-base ring-offset-background placeholder:text-disabled disabled:cursor-not-allowed disabled:opacity-50",
88
{
99
variants: {
1010
size: {
1111
md: "p-2",
1212
sm: "p-1 text-sm",
1313
},
14+
hasError: {
15+
true: "border-error hover:not-disabled:border-error focus-visible:outline-error",
16+
false:
17+
"border-body hover:not-disabled:border-primary-hover focus-visible:outline-primary-hover",
18+
},
1419
},
1520
defaultVariants: {
1621
size: "md",
22+
hasError: false,
1723
},
1824
}
1925
)
@@ -23,10 +29,10 @@ export interface TextareaProps
2329
VariantProps<typeof textareaVariants> {}
2430

2531
const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
26-
({ className, size, ...props }, ref) => {
32+
({ className, size, hasError, ...props }, ref) => {
2733
return (
2834
<textarea
29-
className={cn(textareaVariants({ size, className }))}
35+
className={cn(textareaVariants({ size, hasError, className }))}
3036
ref={ref}
3137
{...props}
3238
/>

0 commit comments

Comments
 (0)