abnormal.UI overview

Controls

Input

A single-line text input.

Preview

Install

pnpm dlx shadcn@latest add @abnormal/input
Brings inutils

Usage

import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";

export default function InputDemo() {
return (
<div className="grid w-full max-w-sm gap-4">
<div className="grid gap-2">
<Label htmlFor="input-email">Email</Label>
<Input id="input-email" type="email" placeholder="you@example.com" />
</div>
<Input aria-label="Invalid" aria-invalid defaultValue="not an address" />
<Input aria-label="Disabled" disabled defaultValue="Disabled" />
</div>
);
}
Source
import * as React from "react";
import { cn } from "@/lib/utils";

/** 32px input: translucent control background, very faint border, control radius. */
function Input({ className, type, ...props }: React.ComponentProps<"input">) {
return (
<input
type={type}
data-slot="input"
className={cn(
"h-8 w-full min-w-0 rounded-control border border-input bg-control px-3 text-base text-foreground transition-[border-color,box-shadow,background-color] duration-150 placeholder:text-muted-foreground/70 focus-visible:border-[color-mix(in_oklab,var(--input),var(--text)_30%)] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground",
className,
)}
{...props}
/>
);
}

export { Input };