vkfolio

sable.

A small, deliberate UI library. The page below is built using exactly its eight components — each labelled. The story and the demo are the same artefact.
<Button /> primary · ghost · disabled

npm install @vkfolio/sable — 9 kB gzipped, no dependencies.

<Input /> + <FormField /> — label, input, hint in one motion. Built the morning after I noticed I had written it inline in three projects.
stored on your machine — no server, no analytics.
<Select /> native <select> under the hood — no custom combobox JS.
<Stack /> layout primitive — direction, gap, no other props.

The eight, in order of frequency.

Stack is the most-used primitive. Everything else is composed inside one.

<Card /> border + padding + radius. That is the entire prop surface.

What's deliberately not in Sable.

No Accordion (never shipped one I was proud of). No Toast (only honest toast is the one your app already renders). No DataGrid (a DataGrid is a product, not a primitive).

<Dialog /> focus trap · escape closes · backdrop click closes · returns focus on close.

Compose — do not specialise.

Every contributor has a Modal-with-confirmation pattern they want as first-class. Every contributor's pattern is slightly different. The right answer is almost always: here is Dialog. Compose.

<Tabs /> aria-tabs · arrow keys to traverse · roving tabindex.

npm install @vkfolio/sable · zero deps · ESM + CJS.

Imports tree-shake to about 2.5 kB if you only use Button + Input + Stack.

<Table /> semantic HTML table. No sort, no resize, no infinite scroll. Bring your own behaviour.
componentsizewhy it earned its spot
Button0.6 kBthree projects, always.
Input + FormField1.2 kBphantom limb from earlier libraries.
Select0.4 kBnative is fine. Don't rebuild it.
Stack0.3 kBthe layout primitive.
Card0.3 kBcontainer for the rest.
Dialog1.8 kBthe focus-trap is the value.
Tabs1.5 kBbuilt once accessibly; never want to do it again.
Table0.3 kBstyle of a thing that already exists.
Sable — a small, deliberate UI library · MIT · 9 kB gzipped. Field note: why I built Sable →.
← back to the trace