🎯 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

Button

A versatile button component with multiple variants and sizes

Quick Preview

Structure

Anatomy of the Button β€” what parts it can contain and their roles.

✦Label✦
Label β€” required Β· any ReactNodeIcon slot β€” optional Β· left or right Β· any ReactNodeContainer β€” rounded-[8px] Β· responsive padding per size

States

Hover, click, or press Tab to focus each button and observe live CSS transitions.

Primary β€” interactive states

Hover or Tab to each cell to trigger the live state

5 states

Default

Resting

Hover

↑ Move cursor over

Focus

⌨ Tab key to reach

Disabled

pointer-events-none

Loading

disabled + spinner

Variants β€” all four at rest

Click any button to see its active state

4 states

Primary

Secondary

Outline

Ghost

Variants β€” disabled state

All variants with disabled prop applied

4 states

Primary

Secondary

Outline

Ghost

Sizes

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

Sizes β€” sm / md / lg

Visual comparison of all three size tokens

3 states

Small β€” sm

px-4 py-2 text-sm

Medium β€” md

px-6 py-3 text-base Β· default

Large β€” lg

px-8 py-4 text-lg

Installation

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

Usage

import { Button } from '@/components/ui/Button'
export default function Example() {
return (
<Button variant="primary" size="md">
Get started
</Button>
)
}

Examples

With Icons

Pass icons as children alongside the label text

Full Width

Stretch to container width with className w-full

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

PropTypeDefaultDescription
variant"primary" | "secondary" | "outline" | "ghost""primary"Visual style variant of the button
size"sm" | "md" | "lg""md"Size of the button
asChildboolean-Render as a child component (for custom elements)
disabledboolean-Disable button interactions

Features

  • βœ“Multiple variants (primary, secondary, outline, ghost)
  • βœ“Three sizes (sm, md, lg)
  • βœ“ForwardRef support
  • βœ“Disabled state handling
  • βœ“Smooth transitions
  • βœ“Focus-visible ring