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.
- MIT licence
- React 18 and 19
- TypeScript
- Light and dark theme
- English and Spanish
Invoiced this month
12.480 €
+8.4%up
Unpaid orders
4
Of 128 this month
- 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
Your brand, one command
Accessible, with tests
You only pay for what you use
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.
npx amset-ui create my-app # in an existing project:npx amset-ui initUse it
Components are used through their API: variant, tone and size, without writing classes.
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.
npx amset-ui themeOn 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.
npx amset-ui add button iban-fieldnpx amset-ui add dashboardMore 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.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.
20 components
32 components
24 components
15 components
16 components
4 components
6 components
19 components
14 components
2 components
21 components
26 components
12 components
10 components
16 components
Try them here
Everything you see here is a real component from the library: press, sort, filter and choose.
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.
import { RichTextEditor } from '@amset/ui/rich-text' <RichTextEditor label="Notes" format="html" defaultValue={html} onChange={setHtml} />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.
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
Online shops
Management dashboards
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/uiyour 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 onceTable: 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 contentDataImportWizard: importing in batches with progress and cancel, UTF-16 CSV, hidden sheets, merged cells and formula errorsFileManager: uploading one by one with cancel and retry, per-item result when deleting or moving, maximum size and repeated namesSchemaForm: 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 focusDataImportWizard: each error shows the file’s own row, a decompression cap and notices that say whyFileManagerandMediaManager: dropped files go throughaccept, 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
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.
