๐ŸŽฏ 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

Chip Group

Selectable chip pills for filtering and tagging. Supports single or multi-select, size/color/variant combinations, count badges, removable chips, icons, and disabled options.

Quick Preview

Selected: all

Installation

// Copy from
src/components/ui/ChipGroup.tsx

Usage

'use client'
import { useState } from 'react'
import { ChipGroup } from '@/components/ui/ChipGroup'
// Single-select
export function FilterBar() {
const [filter, setFilter] = useState<string | undefined>('all')
return (
<ChipGroup
options={[
{ value: 'all', label: 'All' },
{ value: 'react', label: 'React' },
{ value: 'vue', label: 'Vue' },
{ value: 'svelte',label: 'Svelte' },
]}
value={filter}
onChange={setFilter}
/>
)
}
// Multi-select
export function TagPicker() {
const [tags, setTags] = useState<string[]>([])
return (
<ChipGroup
multi
options={[
{ value: 'ts', label: 'TypeScript', icon: '๐Ÿ”ท' },
{ value: 'react', label: 'React', icon: 'โš›๏ธ' },
{ value: 'next', label: 'Next.js', icon: 'โ–ฒ' },
]}
value={tags}
onChange={setTags}
/>
)
}

Examples

Single-select (default)

Click a chip to select it; click again to deselect.

selected: all

Multi-select

Pass multi prop to allow multiple selections.

selected: [ui, forms]

With icons

Add an icon string or emoji to each option.

selected: [ts, react]

Size variants

size="sm" | "md" | "lg"

Color variants

color="primary" | "blue" | "violet" | "orange"

Visual variant

variant="filled" | "outline" | "soft"

With count badge

showCount displays a small badge with the option count.

Removable chips

removable allows deselecting via an ร— button on selected chips.

selected: [css, ts]

Disabled chips

Pass disabled: true on individual options.

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
options*ChipOption[]-Array of selectable chip items
multiboolean-Enable multi-selection; omit or false for single-select
valuestring | string[]-Controlled selected value(s)
defaultValuestring | string[]-Uncontrolled initial selection
onChange(value: string | string[] | undefined) => void-Fires on selection change
size'sm' | 'md' | 'lg''md'Chip size
variant'filled' | 'outline' | 'soft''filled'Visual style
color'primary' | 'gray' | 'blue' | 'violet' | 'orange''primary'Active color theme
showCountbooleanfalseShow count badge per chip
removablebooleanfalseShow ร— to deselect on selected chips
classNamestring-Additional CSS classes for the wrapper