# Xenon Design System (llms.txt) > Xenon is a minimalistic, hairline-crisp UI kit for web (React DOM) and React Native (Expo), built from one shared token geometry and two renderers. ## Core Principles & Hard Design Rules - **Pure Canvas**: No gradients. No shadows of any kind (CSS box-shadow, iOS shadow*, Android elevation). Depth comes solely from hairlines (1px borders) and tonal layering. - **1px Hairline Precision**: All borders, separators, and dividers are strictly 1px (StyleSheet.hairlineWidth on native). Never use detached browser focus outlines (no outline-offset: 2px). - **Fluid Spring Kinematics**: Zero instant/snappy transitions. All disclosures, active states, expansions, and dismissals use physics springs (springSoft / springSnappy) or cubic-bezier(0.2, 0, 0, 1). - **No Emoji & Strict Iconography**: No emoji or raw ASCII/unicode characters for UI chrome (+, -, x, !, >). Icons are strictly Phosphor Thin (weight 200/thin). - **Typographic Restraint**: Font weights are strictly 200, 300, or 400. Never 500 or above. - **Don Norman Invariant**: Every component strictly embodies the 7 Norman principles: Affordances, Signifiers, Mapping, Feedback (<100ms), Conceptual Models, Architectural Constraints, and Discoverability. - **Radius Scale**: Discrete radius stops R0 (0px), R1 (4px), R2 (8px), R3 (12px), R4 (16px), R5 (20px - default), R6 (9999px pill). Form inputs maintain architectural geometry (R1-R2 / 6-8px), pills are reserved for buttons and search bars. ## Agent Quickstart Xenon's design rules are as binding as its components. Before writing UI, read the rules (AGENTS.md in the package, or /llms-full.txt which embeds the full guidelines). ```bash # inside an existing React 19 app (Vite or Next.js App Router); if none exists: # npm create vite@latest my-app -- --template react-ts npx @xenon-kit/cli init ``` `init` installs `@xenon-kit/web` and `@phosphor-icons/react`, imports `@xenon-kit/web/styles.css`, wraps the app in `XenonProvider`, and writes AGENTS.md + CLAUDE.md with the binding design rules. Manual setup: ```bash npm install @xenon-kit/web @phosphor-icons/react ``` ```tsx import "@xenon-kit/web/styles.css"; import { XenonProvider } from "@xenon-kit/web"; {children} ``` ## Agent Resources - Rules (offline, version-locked): `node_modules/@xenon-kit/web/AGENTS.md` and `node_modules/@xenon-kit/web/docs/` - Exact props: `node_modules/@xenon-kit/web/dist/index.d.ts` - Full spec + guidelines: https://xenon.hi-ashwin.xyz/llms-full.txt - Registry index: https://xenon.hi-ashwin.xyz/r - Component detail (props, usage): https://xenon.hi-ashwin.xyz/r/.json ## Component Registry (26 Components) ### Button (`button`) - **Category**: Primitives - **Description**: Signature pill-first action control with physics-based spring squash interaction (0.98 scale on press). - **Accessibility**: Rendered as native button element with role='button', supports Space and Enter keys, manages disabled and aria-busy states. - **Registry JSON**: https://xenon.design/r/button.json - **CLI Command**: `npx @xenon-kit/cli init` ```tsx import { Button } from "@xenon-kit/web"; export function Example() { return ( ); } ``` ### IconButton (`icon-button`) - **Category**: Primitives - **Description**: Concentric circular action button strictly optimized for Phosphor Thin icons with mandatory accessible labeling. - **Accessibility**: Enforces non-empty ariaLabel prop, rendered with role='button' and accessible screen reader name. - **Registry JSON**: https://xenon.design/r/icon-button.json - **CLI Command**: `npx @xenon-kit/cli init` ```tsx import { IconButton, Icon } from "@xenon-kit/web"; import { Gear } from "@phosphor-icons/react"; export function Example() { return ( ); } ``` ### ButtonGroup (`button-group`) - **Category**: Primitives - **Description**: Grouped capsule action bar where child buttons share outer bounds and internal 1px hairline dividers. - **Accessibility**: Wraps buttons in a role='group' container with optional aria-label. - **Registry JSON**: https://xenon.design/r/button-group.json - **CLI Command**: `npx @xenon-kit/cli init` ```tsx import { ButtonGroup, Button } from "@xenon-kit/web"; export function Example() { return ( ); } ``` ### Surface (`surface`) - **Category**: Primitives - **Description**: Base structural container supporting concentric radius inheritance and Apple HIG Liquid Glass floating layers. - **Accessibility**: Semantic generic container, transparent to screen readers. - **Registry JSON**: https://xenon.design/r/surface.json - **CLI Command**: `npx @xenon-kit/cli init` ```tsx import { Surface, Text } from "@xenon-kit/web"; export function Example() { return ( Concentric surface layer ); } ``` ### Typography (Text & Heading) (`typography`) - **Category**: Primitives - **Description**: Apple HIG calibrated Geist Sans typography system restricted strictly to light weights (200, 300, 400). - **Accessibility**: Emits semantic h1-h6 headings and p/span elements with appropriate text hierarchy. - **Registry JSON**: https://xenon.design/r/typography.json - **CLI Command**: `npx @xenon-kit/cli init` ```tsx import { Heading, Text } from "@xenon-kit/web"; export function Example() { return ( <> Minimalist Architecture Geist typography with negative space. ); } ``` ### Input (`input`) - **Category**: Form Controls - **Description**: Restrained architectural text field (6-8px radius, 12px optical padding) avoiding stadium pill shapes. - **Accessibility**: Accessible input element supporting ARIA descriptions, errors, and clear triggers. - **Registry JSON**: https://xenon.design/r/input.json - **CLI Command**: `npx @xenon-kit/cli init` ```tsx import { Input } from "@xenon-kit/web"; export function Example() { return ; } ``` ### Field (`field`) - **Category**: Form Controls - **Description**: Persistent structural wrapper binding labels, helper annotations, and error callouts to input controls. - **Accessibility**: Connects label and input via htmlFor/id, injects aria-describedby for errors and helper texts. - **Registry JSON**: https://xenon.design/r/field.json - **CLI Command**: `npx @xenon-kit/cli init` ```tsx import { Field, Input } from "@xenon-kit/web"; export function Example() { return ( ); } ``` ### Textarea (`textarea`) - **Category**: Form Controls - **Description**: Architectural multi-line text input with smooth auto-expansion, character limit tracking, and hairline borders. - **Accessibility**: Standard textarea element with full keyboard and screen reader accessibility. - **Registry JSON**: https://xenon.design/r/textarea.json - **CLI Command**: `npx @xenon-kit/cli init` ```tsx import { Textarea } from "@xenon-kit/web"; export function Example() { return