# Timeless UI > Framework-agnostic UI components built on modern web standards. Most components are plain CSS over > native HTML and need no JavaScript; the rest are Light-DOM custom elements, used only where > keyboard coordination, focus management, or state synchronisation cannot be expressed accessibly > in CSS. Targets Baseline 2025 browsers. Usable from plain HTML, React, Preact, Vue, Svelte, Solid, > or Astro. ## How to author Timeless markup Read this before writing any Timeless markup. The API is not prop-based, and guessing from React or Tailwind conventions produces markup that does not work. ### The two kinds of component Everything in the library is one of two things, and they are configured differently. Getting this wrong is the single most common failure. **CSS components** are a native element carrying a `ui-*` class. Configure them with `data-ui-*` attributes. There is nothing to register and nothing to import beyond the stylesheet. ```html ``` **Custom elements** are a registered `ui-*` tag wrapping your own markup. Configure them with plain attributes, never `data-ui-*`. Register each element you use. ```html ``` So: - `` is wrong twice — there is no `ui-button` element, and `variant` is not how a CSS component is configured. It is `