🎯 Nexus teaches Next.js from foundations to professional systemsβ€’βš‘ App Router, React 19, and Tailwind v4 in one learning pathβ€’πŸ§© Inspect real components, layouts, and reusable patternsβ€’πŸ› οΈ Build production discipline, not just polished demosβ€’πŸ“š Tracks, references, and design studies in one placeβ€’πŸŽ― Nexus teaches Next.js from foundations to professional systemsβ€’βš‘ App Router, React 19, and Tailwind v4 in one learning pathβ€’πŸ§© Inspect real components, layouts, and reusable patternsβ€’πŸ› οΈ Build production discipline, not just polished demosβ€’πŸ“š Tracks, references, and design studies in one placeβ€’πŸŽ― Nexus teaches Next.js from foundations to professional systemsβ€’βš‘ App Router, React 19, and Tailwind v4 in one learning pathβ€’πŸ§© Inspect real components, layouts, and reusable patternsβ€’πŸ› οΈ Build production discipline, not just polished demosβ€’πŸ“š Tracks, references, and design studies in one placeβ€’πŸŽ― Nexus teaches Next.js from foundations to professional systemsβ€’βš‘ App Router, React 19, and Tailwind v4 in one learning pathβ€’πŸ§© Inspect real components, layouts, and reusable patternsβ€’πŸ› οΈ Build production discipline, not just polished demosβ€’πŸ“š Tracks, references, and design studies in one placeβ€’
UI Components

Input

A text input with label, helper text, error state, and icon slot support

Quick Preview

We'll never share your email.

Structure

Anatomy of the Input component β€” every optional layer is labeled.

Label (optional)
leftIcon
Input field Β· value / placeholder
rightIcon
helperText (optional)
errorText (optional)
Input field β€” core elementIcon slots β€” leftIcon / rightIconLabel β€” optionalerrorText β€” replaces helperText

States

Click inside any cell to focus the input and observe the live focus ring.

Input β€” all states

Click inside each cell to trigger the live focus state

6 states

Default

Empty β€” resting

Filled

Value entered

Focus

↑ Click to focus

Error

errorText is set

Must include a number

With helper

helperText guidance

Disabled

Cannot interact

Sizes

Three size tokens β€” sm md (default) lg.

Sizes β€” sm / md / lg

Click each input to compare focus ring sizes

3 states

Small β€” sm

px-3 py-1.5 text-sm

Medium β€” md

px-4 py-2.5 text-sm Β· default

Large β€” lg

px-4 py-3 text-base

Installation

// Copy the Input component from
src/components/ui/Input.tsx

Usage

import { Input } from '@/components/ui/Input'
export default function Example() {
return (
<Input
label="Username"
placeholder="Enter username"
helperText="Min 3 characters"
/>
)
}

Examples

With Icons

Prompt Preview

Copy a prompt that recreates this UI

Paste this into your AI coding assistant to generate code that closely matches the reference, including color, size, shape, typography, spacing, and polish.

Copy-ready AI prompt

Starts from the current visual reference and project constraints.

Tweak only product-specific copy or data after the first generation pass.

Props

Extends all native <input> attributes.

PropTypeDefaultDescription
labelstring-Label text above the input
helperTextstring-Helper text below the input
errorTextstring-Error message β€” replaces helperText and applies error styling
size"sm" | "md" | "lg""md"Size of the input
leftIconReact.ReactNode-Icon on the left inside the input
rightIconReact.ReactNode-Icon on the right inside the input
disabledboolean-Disable input interactions

Features

  • βœ“ForwardRef support
  • βœ“Accessible label/input association via id
  • βœ“Error state with aria-invalid + aria-describedby
  • βœ“Left and right icon slots
  • βœ“Three sizes (sm, md, lg)
  • βœ“Primary color focus ring