# premium-ds - LLM usage guide
Premium React 19 design system, shipped as built ESM + types. This is a compact per-component
index; full prop types (with docs) live in node_modules/premium-ds/dist/*.d.ts.
Setup:
import { Button, toast } from 'premium-ds'; // barrel - or a subpath: premium-ds/button
import 'premium-ds/styles.css'; // link ONCE at the app root
Peers: react, react-dom, motion. (The curated Phosphor glyphs used internally are bundled in - not a peer.)
No bundler/transpile config - built ESM keeps 'use client' intact for the Next.js App Router.
Conventions:
- Sentence case everywhere; no emoji or exclamation marks in UI. One primary
Collapse - premium-ds/collapse
Layout-transition primitive; eases height open/closed, never teleports.
...revealed content...
Badge - premium-ds/badge
Glass or outline chip. tone neutral|info|success|warning|danger, dot, live, variant="outline", pill, size="sm".
Published
StatusBadge - premium-ds/status-badge
Canonical post status - tone + one-word label. status draft|scheduled|processing|published|failed; add `morph` to animate in place as status changes.
CountBadge - premium-ds/count-badge
Mono tabular count; `roll` animates digits like an odometer. value: number | string.
============================================================ FORMS
(all take label, helper/error/warning/success, size sm|md|lg, disabled)
TextField - premium-ds/text-field
Base text input; states disclose via Collapse. leadingIcon, clearable, optional/required.
set(e.target.value)} />
NumberField - premium-ds/number-field
Tabular figures, caret steppers, unit suffix, clamp to [min,max]. onChange(value: number).
OtpField - premium-ds/otp-field
Segmented one-time code; auto-advance, paste-to-fill. length, group, error, size.
Textarea - premium-ds/textarea
Auto-grow, char meter (max), ⌘/Ctrl+↵ submit (onSubmit). minRows/maxRows.