Skip to content
EspañolEnglish

Accessible React components,
with your brand and no dependencies.

@amset/ui is a React component library, from a button to a management table. It takes your colour, works with a keyboard and a screen reader, and pulls in not a single npm dependency. It is free and MIT-licensed.

Browse the componentsGet started

  • MIT licence
  • React 18 and 19
  • TypeScript
  • Light and dark theme
  • English and Spanish
Basic
ProfessionalPriority support
Company

Invoiced this month

12.480 €

+8.4%up

Unpaid orders

4

Of 128 this month

Uploading the invoice42%
Importing customers62%
Processing the order on the server
Uploading the delivery noteUpload failed
244
components, each with its own page
725
CSS variables you can change
2,134
icons, all with the same stroke
11
whole screens to copy
0
npm dependencies

Zero npm dependencies

It declares react and react-dom as peers and nothing else: no third-party library, neither installed nor copied in. Keyboard handling, focus and accessibility come from native browser elements and our own code, so you inherit no updates or security advisories from other people's packages.

Your brand, one command

Give it your palette in hex and it writes the whole theme: every colour role, in light and dark. And it refuses to emit any combination that fails the minimum contrast.

Accessible, with tests

Keyboard, focus and screen reader support in every component, checked with axe in light, dark and mobile on every page of the test bench.

You only pay for what you use

One file per component and no side effects: the bundler keeps what you import and drops the rest. A screen with a single field doesn't drag in the table.

Up and running in three steps

Works with Vite, Next and webpack. In Next, one provider takes every link through its router. There is no stylesheet to import: each component brings its own.

Create it or set it up

A new app with the library in place, or the library in yours. All it needs is React.

Code
npx amset-ui create my-app # in an existing project:npx amset-ui init

Use it

Components are used through their API: variant, tone and size, without writing classes.

Code
import { Button, TextField } from '@amset/ui' <TextField label="Email" type="email" /><Button variant="solid" tone="accent">Save</Button>

Give it your colour

Hand over your palette in hex and the command writes the theme, in light and dark.

Code
npx amset-ui theme

On public npm soon. Until then it installs from the AMSET package registry: the Get started guide walks through it. Installation guide

Or copy it into your project

If you would rather have the code in front of you than install it, amset-ui add copies the source of a component and everything it uses, with its stylesheets. From then on it is yours: a file you change is not overwritten when you copy again. Whole screens, like the panel or the invoice, are copied too.

Code
npx amset-ui add button iban-fieldnpx amset-ui add dashboard

The command line

More than components

What comes in the same package, 0.35.0.

npx amset-ui creates an app, sets the library up in yours, diagnoses it, migrates your code and generates your theme.
11 whole screens (dashboard, customers, invoice, settings, sign in) and two starters, Next and Vite.
16 pieces for an assistant interface, and our own rich text editor with review, versions and formulas.
Accessibility, weight against other libraries, security and licence, with what is measured and what is not.
AGENTS.md, llms.txt, api.json, a skill, the MCP server and Figma.
npx amset-ui migrate rewrites your code when the library renames something.

Components, by family

From the button to the table with filters, the calendar or the shopping cart. Every component has its own page with when to use it and when not to, the keyboard, what a screen reader announces and a working example.

What the user presses to make something happen.
20 components
Data entry, with its label, hint and error.
32 components
Picking between options: one, several or none.
24 components
Calendars, schedules and available slots.
15 components
Moving around the app without getting lost.
16 components
The frame of a screen: header, columns and whatever sticks in place.
4 components
The pieces that position everything else.
6 components
Where content rests.
19 components
Whatever opens above the page.
14 components
Telling people what is going on: loading, done, error or offline.
2 components
Showing numbers and lists without making them hard to read.
21 components
The pieces of an admin panel: tables, boards and filters.
26 components
Everything that takes someone from a product to an order.
12 components
Headings, text, quotes and code in the same voice.
10 components
The pieces of an assistant interface: messages, reasoning, tools and text input.
16 components

Browse all components

Try them here

Everything you see here is a real component from the library: press, sort, filter and choose.

Data

Dates

Status

Choice

Actions

People

A text editor of its own

RichTextEditor is a rich text field of our own, with no third-party dependencies. It has tables, blocks, comments and suggestions, version history, formulas in TeX and a spellchecker (you supply the dictionary). It stores the document as JSON and RichTextView draws it the same way on the server. It lives in its own subpath: anyone who does not use it loads not a single byte.

Code
import { RichTextEditor } from '@amset/ui/rich-text' <RichTextEditor label="Notes" format="html" defaultValue={html} onChange={setHtml} />

See the editor

A complete chat assistant

Messages, reasoning, tools, attachments, suggestions and an engine picker, working together. Type something, press a suggestion or attach a file: what it answers is a script, everything else is the library.

See the code and the other AI pieces

We use it every day

AMSET made it for its own products and uses it every day. What you see here is what they run.

The AMSET assistant

A dense application with menus, tables, forms and floating layers, in light and dark.

Online shops

Catalogue, cart, checkout and order tracking, in each shop’s own brand.

Management dashboards

Invoices, appointments, boards and tables with thousands of rows, for teams who spend the day in front of them.

For your coding assistant For agents

The package describes itself for your coding assistant (Claude Code, Cursor or any other): AGENTS.md, llms.txt, the real props in api.json, a skill, and the @amset/mcp MCP server.

You ask your editor

Build me an admin panel to manage users with a paginated table, a dynamic filter and an edit drawer, using the corporate palette #00d4ff.

And the AI writes code with

  • Real components and props, read from the @amset/ui your project has installed (api.json), not made up.
  • Code compiled against the library before you get it: a prop that does not exist does not pass.
  • Accessibility built in: labels, keyboard and focus already handled.
  • Your brand applied through a theme generated from your colour, rejected if it fails contrast.

Which files the package ships, how to use them, and the MCP server: For agents and tools

Latest release

What arrived in the latest version, taken from the changelog in the package.

0.35.0, released November 3, 2026

  • Table: several loose cell ranges at once
  • Table: leaving an edit that cannot be saved, range without folded groups, row count when paginated, load error, select everything filtered, batch paste and fit the width to the content
  • DataImportWizard: importing in batches with progress and cancel, UTF-16 CSV, hidden sheets, merged cells and formula errors
  • FileManager: uploading one by one with cancel and retry, per-item result when deleting or moving, maximum size and repeated names
  • SchemaForm: draft-07 fixed-position lists, objects without fields, values that arrive late, “no changes” after saving, keys with a dot or numeric keys, and a list’s error and focus
  • DataImportWizard: each error shows the file’s own row, a decompression cap and notices that say why
  • FileManager and MediaManager: dropped files go through accept, a bar for several uploads, shortcuts and “Load more”
  • Table: empty values last in both directions, page-only selection without hidden rows, tree search and local dates on export

All 9 changes in this release, and the earlier ones

Frequently asked questions

Want to try it?

Start with a single component and read its page: how to use it, when and when not to, the keyboard and accessibility.

Get startedBrowse the componentsTest bench