# freeCodeCamp UIKit
Dark-first, token-driven, framework-agnostic component library,
distributed as a copy-source registry: components are copied into your
project source (shadcn-style) and tailored there - NOT installed from npm.
## Start here
- [Starter guide](https://design.freecodecamp.org/registry/starter.md) - bootstrap a project: theme, fonts, directory layout, AGENTS.md snippet.
- [Theme](https://design.freecodecamp.org/registry/theme.md) - tokens.css + base.css. Required by every component. Edit token values to recolour; keep token names.
- [Machine index](https://design.freecodecamp.org/registry/index.json) - every item, its files (raw URLs) and dependencies, as JSON.
## Components
Each page contains install steps, props and the full source (.tsx + .css) to copy.
- [Alert](https://design.freecodecamp.org/components/alert.md) - An in-page live region that surfaces info, success, warning, or danger messages with the correct ARIA role out of the box.
- [AuthLayout](https://design.freecodecamp.org/components/auth-layout.md) - Centered card shell for auth flows - login, signup, forgot-password, magic-link. Optional brand lockup above the card, optional footer below, optional background pattern for a little texture.
- [Avatar](https://design.freecodecamp.org/components/avatar.md) - Square user badge. Image by default, two-letter initials fallback, optional status dot. Three sizes locked to the type scale.
- [Badge](https://design.freecodecamp.org/components/badge.md) - A compact coloured tag for statuses, counts, and metadata. Polymorphic via `variant`, semantic-free by default.
- [Breadcrumb](https://design.freecodecamp.org/components/breadcrumb.md) - Hierarchical trail of links with the current page marked via aria-current. Compound API plus a CSS pseudo-element separator so the visible slash never reaches the accessibility tree.
- [Button](https://design.freecodecamp.org/components/button.md) - The primary action primitive. Gold CTA by default, three sizes, six variants, polymorphic via a single `variant` prop.
- [Callout](https://design.freecodecamp.org/components/callout.md) - A flagged prose block for tips, notes, warnings, and cautions - the Markdown admonition we reach for inside long-form docs.
- [Card](https://design.freecodecamp.org/components/card.md) - A compound surface with optional header, body, and footer slots. Reach for Card when a block of content needs its own visual frame.
- [Checkbox](https://design.freecodecamp.org/components/checkbox.md) - A native checkbox with an optional paired label. Owns the `type='checkbox'` attribute so consumers never have to set it.
- [Close button](https://design.freecodecamp.org/components/close-button.md) - The small × affordance for dismissing panels, toasts, and modals. Defaults to `aria-label='Close'` so every dismiss target stays labelled.
- [Combobox](https://design.freecodecamp.org/components/combobox.md) - Text input paired with a filterable option list - the marquee Wave 2 component. Sync filter, custom item renderers, and a data-uikit-combobox adapter that boots the vanilla runtime for server-rendered pages.
- [CommandPalette](https://design.freecodecamp.org/components/command-palette.md) - Keyboard-driven launcher. Search input + grouped filterable list + shortcut badges. Arrow keys navigate, Enter selects, Escape closes.
- [DataTable](https://design.freecodecamp.org/components/data-table.md) - Structured tabular display with sortable columns, row selection, loading skeletons, and an empty-state slot. Caller owns sort and selection state; columns accept string-key or function accessors.
- [DescriptionList](https://design.freecodecamp.org/components/description-list.md) - Semantic dl/dt/dd pair with mono terminal terms and Lato body details. Two layouts - vertical grid for metadata panels, inline for compact key/value strips.
- [Divider](https://design.freecodecamp.org/components/divider.md) - Horizontal or vertical rule. Solid by default, dashed for the terminal-native version. Renders `
`.
- [Dropdown](https://design.freecodecamp.org/components/dropdown.md) - A menu button pattern with keyboard navigation and outside-click dismiss. Pair `` with `` / ``.
- [EmptyState](https://design.freecodecamp.org/components/empty-state.md) - Centered placeholder for empty lists, empty search results, and zero-state dashboards. Optional icon, title, description, and action slots.
- [Fieldset](https://design.freecodecamp.org/components/fieldset.md) - Semantic field grouping with legend. Native fieldset + legend styled to the terminal shell - the right container for any cluster of related form controls.
- [Form control](https://design.freecodecamp.org/components/form-control.md) - A label-plus-control compound that threads `id` / `htmlFor` / `aria-describedby` across its slots. Wraps Input, Textarea, or a custom field.
- [Form group](https://design.freecodecamp.org/components/form-group.md) - A vertical cluster for a single control plus its label, help, and error text. Pairs with `` and ``.
- [FormStepper](https://design.freecodecamp.org/components/form-stepper.md) - Numbered multi-step wizard. Progress header + render-prop body. Caller owns the current step; completed steps are backward-navigable, upcoming steps are gated.
- [Heading](https://design.freecodecamp.org/components/heading.md) - Section and page headings. Level and visual size decoupled so you can honour document outline without sacrificing composition.
- [Help block](https://design.freecodecamp.org/components/help-block.md) - The help / success / error microcopy line that sits beneath a form control. Three tones, one primitive.
- [Hotspots](https://design.freecodecamp.org/components/hotspots.md) - Clickable regions overlaid on a background image, diagram, or SVG. Quiz mode compares the pick to a target and surfaces feedback plus a hint after repeated misses.
- [Image](https://design.freecodecamp.org/components/image.md) - A responsive `` primitive with a required `alt` contract. Pair with a `