# 8-BIT NES > Cross-framework NES-arcade design system — CSS design tokens + class recipes + light-DOM web components (``). Zero build step, dark-only, square 90° corners, hard shadow. Official source of truth for the `8bit-nes` package (v0.16.0). Install: `pnpm add 8bit-nes` then `import "8bit-nes/all.css"; import "8bit-nes";`. Or CDN: `https://cdn.jsdelivr.net/npm/8bit-nes@0.16.0/all.min.css`. The look is themed entirely from `tokens.css`; recolor any block with `data-accent="blue|gold|cyan|purple|good|warn|crit|…"` (default accent `good` = green). Full machine-readable reference: [llms-full.txt](https://tutranmvp.github.io/8bit-components/llms-full.txt) · [components.json](https://tutranmvp.github.io/8bit-components/components.json). ## Getting started - [Introduction](https://tutranmvp.github.io/8bit-components/docs.html#/intro): A cross-framework component system with the feel of a 1985 arcade cabinet — square pixel boxes, hard shadows, chiptune, and XP. Modern-crisp, dark-only, zero build. - [Installation](https://tutranmvp.github.io/8bit-components/docs.html#/install): Add the package, import the CSS once, register the web components. Three environments, one result. - [Theming](https://tutranmvp.github.io/8bit-components/docs.html#/theming): One file is the source of truth. Change the look in tokens.css — never in a component. - [Layout & rhythm](https://tutranmvp.github.io/8bit-components/docs.html#/layout): Every scale in one place: space on 4px, size on 2px, integer type rungs, three weights, one stacking ladder, three breakpoints — all enforced by pnpm check. - [Colors](https://tutranmvp.github.io/8bit-components/docs.html#/colors): The full palette. Grounds, ink, and a base + deep pair for every brand and semantic accent — all tokens in tokens.css. ## Element - [Button](https://tutranmvp.github.io/8bit-components/docs.html#/button) — `.btn`: Primary action. Green (the primary accent) by default; set data-accent to recolor. Presses in on :active — the signature move. - [Badge](https://tutranmvp.github.io/8bit-components/docs.html#/badge) — `.badge`: Static status marker. Not interactive — for state you can read at a glance. - [Chip](https://tutranmvp.github.io/8bit-components/docs.html#/chip) — `.chip`: Toggleable filter or tag. Interactive — presses in, fills with its accent when active. - [Card](https://tutranmvp.github.io/8bit-components/docs.html#/card) — `.card`: Surface for grouped content. A left accent bar classifies it; hard border, hard shadow, square corners. - [Avatar](https://tutranmvp.github.io/8bit-components/docs.html#/avatar) — `.avatar`: User image or initials. Square by design so the hard shadow stays crisp; group them to overlap. - [Kbd](https://tutranmvp.github.io/8bit-components/docs.html#/kbd) — `.kbd`: Keyboard key hint. Inline, mono, inset — for shortcuts in prose. - [Separator](https://tutranmvp.github.io/8bit-components/docs.html#/separator) — `.separator`: Divider between content. Solid or dashed; horizontal or vertical. - [Icon](https://tutranmvp.github.io/8bit-components/docs.html#/icon) — ``: Pixel icon set on a 16×16 grid. currentColor + 1em, so icons inherit text color/accent and scale with font-size. Vector — razor-sharp at any DPR (low-res & retina). Tree-shakeable named exports. - [Toolbar](https://tutranmvp.github.io/8bit-components/docs.html#/toolbar) — `.toolbar`: A row of actions that scrolls on a phone instead of reflowing under your thumb. - [Split view](https://tutranmvp.github.io/8bit-components/docs.html#/split) — ``: Two panes, one divider you can drag, arrow or double-click. Stacks with dir="column". ## Form - [Input](https://tutranmvp.github.io/8bit-components/docs.html#/input) — `.input`: Single-line text field. Recessed on the screen surface; focus flips the border to gold. - [Textarea](https://tutranmvp.github.io/8bit-components/docs.html#/textarea) — `.textarea`: Multi-line text. Vertically resizable, same recessed treatment as Input. - [Select](https://tutranmvp.github.io/8bit-components/docs.html#/select) — `.select`: Native select, restyled. Keeps the OS keyboard and mobile picker behaviour; gold chevron. - [Checkbox](https://tutranmvp.github.io/8bit-components/docs.html#/checkbox) — `.checkbox`: Boolean toggle in a list. Square box with a pixel check when on. - [Radio](https://tutranmvp.github.io/8bit-components/docs.html#/radio) — `.radio`: One-of-many choice. Same square box, filled solid when selected. - [Switch](https://tutranmvp.github.io/8bit-components/docs.html#/switch) — `.switch`: On/off setting with immediate effect. Green (good) accent by default. - [Field](https://tutranmvp.github.io/8bit-components/docs.html#/field) — `.field`: Label + control + hint/error wrapper. The .err modifier turns the whole field critical. - [ColorPicker](https://tutranmvp.github.io/8bit-components/docs.html#/colorpicker) — `.swatch`: Native color input, restyled as a square chip. The OS picker stays; only the swatch is themed. - [InputDate](https://tutranmvp.github.io/8bit-components/docs.html#/inputdate) — `.input[type="date"]`: Native date input in the 8-bit shell. Keeps the OS calendar; the picker glyph is tinted to the primary. - [InputTime](https://tutranmvp.github.io/8bit-components/docs.html#/inputtime) — `.input[type="time"]`: Native time input, same shell as InputDate. OS clock picker, tinted glyph. - [CheckboxGroup](https://tutranmvp.github.io/8bit-components/docs.html#/checkboxgroup) — `.control-group`: A
that groups related checkboxes under one legend. Add .row to lay them out horizontally. - [RadioGroup](https://tutranmvp.github.io/8bit-components/docs.html#/radiogroup) — `.control-group`: Same .control-group fieldset, holding radios that share a name (single choice). - [InputNumber](https://tutranmvp.github.io/8bit-components/docs.html#/inputnumber) — ``: A − [n] + stepper over a native number input. wires the buttons; value clamps to min/max/step. - [Switcher](https://tutranmvp.github.io/8bit-components/docs.html#/switcher) — ``: Cycle a small option set with ◀ / ▶ — the arcade settings row. Perfect for a domain setting with a few mutually-exclusive choices (display mode, difficulty, theme). - [InputRating](https://tutranmvp.github.io/8bit-components/docs.html#/inputrating) — ``: Star picker. Click or arrow-key to set; add readonly for a display-only score. size=lg enlarges it. - [PinInput](https://tutranmvp.github.io/8bit-components/docs.html#/pininput) — ``: One-time-code / PIN entry: N single-char cells that auto-advance, accept a full paste, and fire nes:complete. - [InputTags](https://tutranmvp.github.io/8bit-components/docs.html#/inputtags) — ``: Type + Enter (or comma) to add a chip; × or Backspace removes. Value is the ordered tag list. - [FileUpload](https://tutranmvp.github.io/8bit-components/docs.html#/fileupload) — ``: Click-or-drop zone over a native file input. Lists chosen files with a remove button; supports multiple + accept. - [Listbox](https://tutranmvp.github.io/8bit-components/docs.html#/listbox) — ``: An always-open selectable list with roving focus. Single by default; add multiple for many. Options via child JSON. - [InputMenu](https://tutranmvp.github.io/8bit-components/docs.html#/inputmenu) — ``: Free-text combobox: type to filter suggestions, or keep any typed value. Autocomplete without locking the input. - [SelectMenu](https://tutranmvp.github.io/8bit-components/docs.html#/selectmenu) — ``: Strict searchable single-select: a trigger shows the label; the popup adds a filter box; the value must be one of the options. - [Form](https://tutranmvp.github.io/8bit-components/docs.html#/form) — ``: A thin wrapper that runs native constraint validation, renders inline errors under each .field, and emits nes:submit with the data. - [Range](https://tutranmvp.github.io/8bit-components/docs.html#/range) — `.range`: Slider on a native . Recessed track, square accent thumb. Set data-accent to recolor. - [Segmented control](https://tutranmvp.github.io/8bit-components/docs.html#/segment) — `.segment`: A row of connected buttons for a single choice — the pressed one fills with the accent. Great for a difficulty or view switch. - [Number stepper](https://tutranmvp.github.io/8bit-components/docs.html#/stepper) — `.stepper`: A − [n] + control around a native number input. Wire the buttons to step the value. ## Feedback - [Alert](https://tutranmvp.github.io/8bit-components/docs.html#/alert) — `.callout`: Inline message with a semantic tone. Four shades map to meaning, not decoration. - [Progress](https://tutranmvp.github.io/8bit-components/docs.html#/progress) — `.pbar`: Determinate bar. Fills with a smooth ease so progress glides — striped so the amount reads at a glance. - [Skeleton](https://tutranmvp.github.io/8bit-components/docs.html#/skeleton) — `.skeleton`: Loading placeholder. The shimmer ticks in steps rather than gliding. - [Toast](https://tutranmvp.github.io/8bit-components/docs.html#/toast) — `toast()`: Transient confirmation. Fires from JS, auto-dismisses, and is announced politely. - [Spinner](https://tutranmvp.github.io/8bit-components/docs.html#/spinner) — `.spinner`: A square loader whose lit edges spin smoothly — a loader with no curve. Three sizes; accent-ready. - [Meter](https://tutranmvp.github.io/8bit-components/docs.html#/meter) — `.meter`: A discrete segmented gauge — HP / energy in blocks. Add .on to filled cells; good/warn/crit read as health states. - [Empty state](https://tutranmvp.github.io/8bit-components/docs.html#/empty) — `.empty`: The "no data" / "game over" panel. Square dashed edge, centered mono copy, and always an action out. - [Callout](https://tutranmvp.github.io/8bit-components/docs.html#/callout) — `.callout`: An inline aside inside a document — distinct from the page-level .banner. Seven kinds, each with its own accent and marker. - [Banner](https://tutranmvp.github.io/8bit-components/docs.html#/banner) — `.banner`: A full-width, page-level notice — distinct from the inline .callout box. Accent-tinted, optional dismiss. ## Navigation - [Tabs](https://tutranmvp.github.io/8bit-components/docs.html#/tabs) — ``: Switch between panels. Roving focus and arrow keys, built from [data-label] children. - [Breadcrumb](https://tutranmvp.github.io/8bit-components/docs.html#/breadcrumb) — `.breadcrumb`: Path to the current page. Mono, chevron-separated, last item current. - [Pagination](https://tutranmvp.github.io/8bit-components/docs.html#/pagination) — `.pagination`: Page through a list. The current page fills with the primary accent; ends disable. - [Steps](https://tutranmvp.github.io/8bit-components/docs.html#/steps) — `.steps`: Stage progression. Mark cleared stages .done and the active one aria-current — reads as NES "STAGE 1 · 2 · 3". - [Nav list](https://tutranmvp.github.io/8bit-components/docs.html#/navlist) — `.navlist`: Vertical sidebar navigation for app shells. Mark the current item with aria-current; recolor with data-accent. - [Map of Content](https://tutranmvp.github.io/8bit-components/docs.html#/toc) — ``: The live “on this page” index: it builds itself from your headings, follows the scroll, and hides when there is nothing worth indexing. Mobile-first — a collapsible bar naming the current section, an open rail when there's room. ## Overlay - [Popover](https://tutranmvp.github.io/8bit-components/docs.html#/popover) — ``: An anchored panel in the top layer, so no ancestor's overflow can clip it. - [Confirm](https://tutranmvp.github.io/8bit-components/docs.html#/confirm) — `confirmDialog()`: A destructive confirm as a promise. Focus starts on Cancel, so Enter is never the answer you regret. - [Modal](https://tutranmvp.github.io/8bit-components/docs.html#/modal) — ``: Focus-trapping dialog on the native element. Opens with showModal(). - [Dropdown](https://tutranmvp.github.io/8bit-components/docs.html#/dropdown) — `