# ElementsKit > Universal reactive primitives for the web — signals, JSX, custom elements, and browser-API helpers. Every page concatenated: [llms-full.txt](https://elements-kit.com/llms-full.txt) ## Core - [Introduction](https://elements-kit.com/index.md): Reactive primitives for any runtime: signals, data, routing, DOM and browser state. JSX, custom elements and the UI Kit are optional modules. - [Installation](https://elements-kit.com/getting-started/installation.md): Install ElementsKit and configure JSX in your TypeScript project. - [Quick start](https://elements-kit.com/getting-started/quick-start.md): From signals to custom elements — build the same counter five different ways. - [Philosophy](https://elements-kit.com/getting-started/philosophy.md): How ElementsKit thinks — composable, explicit, framework-optional primitives. - [Signals](https://elements-kit.com/signals.md): Fine-grained reactivity with signal, computed, effect, and more. - [Store](https://elements-kit.com/stores.md): Framework-agnostic reactive state with @reactive class fields. - [Scopes](https://elements-kit.com/scopes.md): Where effects live, when they dispose, and how to attach reactive code to custom elements. ## Primitives - [Primitives](https://elements-kit.com/primitives.md): Reactive building blocks for data, forms, routing, context, DOM events, observers, browser state and timing. One import each, any framework. - [Promise](https://elements-kit.com/primitives/promise.md): Wrap a Promise as a ComputedPromise — awaitable and reactive. - [Async](https://elements-kit.com/primitives/async.md): Reactive, awaitable async controllers — start, stop, rerun, and read state as signals. - [Retry](https://elements-kit.com/primitives/retry.md): Retry any async function with backoff. Composes with promise and async. - [Storage](https://elements-kit.com/primitives/storage.md): localStorage and sessionStorage as writable signals, synced across tabs. - [Form object](https://elements-kit.com/primitives/form-object.md): Read and write an HTMLFormElement as a nested plain object via field names. - [Routing](https://elements-kit.com/primitives/routing.md): Reactive location, search params and URL patterns, plus navigate: a router built from signals. - [Context](https://elements-kit.com/primitives/context.md): Pass values down a tree without props: setContext and getContext, for JSX, custom elements and plain scopes. - [DOM events](https://elements-kit.com/primitives/events.md): Event listeners and interaction signals: on, hover, focus-within, click-outside, long-press, active element. - [Observers](https://elements-kit.com/primitives/observers.md): Reactive element size, scroll, resize, intersection and mutation observers. - [Browser state](https://elements-kit.com/primitives/browser-state.md): Reactive window, viewport, network and device state: media queries, window size, orientation, online status, media devices. - [Media](https://elements-kit.com/primitives/media.md): Reactive audio and video player state: playing, muted, volume, time. - [Timing](https://elements-kit.com/primitives/timing.md): Reactive timeouts, intervals, debounced and throttled signals, and previous values. - [Building primitives](https://elements-kit.com/primitives/building-primitives.md): Turn any event-driven API into a signal with fromEvent and sync. ## Rendering - [Elements](https://elements-kit.com/elements.md): JSX compiles to real DOM elements. Reactive props are effects under the hood. - [Components](https://elements-kit.com/components.md): Class components — reactive state and element rendering in one place. - [For](https://elements-kit.com/elements/for.md): Keyed list rendering — each item renders once per key, no re-renders on reorder. - [Types](https://elements-kit.com/elements/types.md): Derive JSX prop types from components without hand-written declaration blocks. - [Custom Elements](https://elements-kit.com/custom-elements.md): Native HTMLElement authoring, enhanced gradually with signals, JSX, and decorators. - [Attributes](https://elements-kit.com/custom-elements/attributes.md): Attributes vs properties — and how @attributes wires them to reactive state. - [Styling](https://elements-kit.com/custom-elements/styling.md): Style custom elements efficiently with Constructable Stylesheets and raw CSS imports. - [Slots](https://elements-kit.com/custom-elements/slots.md): Pass content into components — native slots with Shadow DOM, and ElementsKit Slots without it. - [Server Rendering](https://elements-kit.com/server-rendering.md): Stream HTML from any JavaScript runtime and hydrate it on the client — no compiler, no VDOM. ## UI Kit - [UI](https://elements-kit.com/ui.md): ElementsKit UI components — accessible, reactive, framework-agnostic. - [Styles](https://elements-kit.com/ui/styles.md): Optional theme layer — design tokens, color scales, light/dark, sizing. - [Accordion](https://elements-kit.com/ui/accordion.md): Headless disclosure built on native
. Single-open grouping, animated open/close, zero JavaScript. - [Alert](https://elements-kit.com/ui/alert.md): Inline informational box — three variants, three sizes, color theming. - [Arrow](https://elements-kit.com/ui/arrow.md): Animated CTA chevron — pure CSS, one class, inherits color and font-size. - [Avatar](https://elements-kit.com/ui/avatar.md): User image with a text fallback — two variants, nine sizes, color theming. - [Badge](https://elements-kit.com/ui/badge.md): Inline status pill — four variants, three sizes, color theming. - [Button](https://elements-kit.com/ui/button.md): Headless button styled by the optional theme layer — six variants, four sizes. - [Card](https://elements-kit.com/ui/card.md): Block-level container with surface, border, and optional elevation. - [Checkbox](https://elements-kit.com/ui/checkbox.md): Headless checkbox styled by the optional theme layer — two variants, three sizes. - [Code](https://elements-kit.com/ui/code.md): Inline code span — four variants, nine sizes, color theming. - [Group](https://elements-kit.com/ui/group.md): CSS-only wrapper that attaches adjacent controls — buttons, inputs, selects, toggles — into one joined unit. - [Item](https://elements-kit.com/ui/item.md): A row with an avatar, a title and description, and trailing values or actions. - [Kbd](https://elements-kit.com/ui/kbd.md): Keyboard key chip — nine sizes. - [Label](https://elements-kit.com/ui/label.md): A label for a control, a checkbox or a group of menu items. - [Link](https://elements-kit.com/ui/link.md): Accent-colored anchor with configurable underline behavior and focus ring. - [Menu](https://elements-kit.com/ui/menu.md): A menu's content (items, trailing parts, labels and separators). - [OTP Input](https://elements-kit.com/ui/otp-input.md): Segmented one-time-passcode input — a single hidden field behind rendered cells, form-associated, with SMS autofill. - [Overlay](https://elements-kit.com/ui/overlay.md): One frame for every floating surface — windows, sheets, drawers, panels, and anchored popovers — geometry as a reactive box model projected into CSS channels. - [Progress](https://elements-kit.com/ui/progress.md): Native styled as a determinate or indeterminate bar — two variants, three sizes. - [Radio](https://elements-kit.com/ui/radio.md): Headless radio button styled by the optional theme layer — two variants, three sizes. - [Segmented Control](https://elements-kit.com/ui/segmented-control.md): CSS-only segmented control over native radios — two-tier indicator with crossfade fallback and CSS Anchor Positioning slide upgrade. - [Select](https://elements-kit.com/ui/select.md): Headless select — a styled native