Interfaces that change faces, not frameworks

One markup, one class list, one JavaScript file — wearing fifty completely different design languages. Flip one attribute and the whole page repaints itself.

Start free Why Bukalemun?
Zero dependencies 50 skins, light + dark MIT licensed

Everything speaks token

Components never name a colour, a radius or a shadow — skins do. That is the whole trick.

Tokens

One contract, fifty voices

Semantic roles like surface, text and primary are the only vocabulary a component is allowed to read. Skins rewrite the roles, not the rules.

Pure CSS

Works with JavaScript off

Every visual piece is a stylesheet. The runtime only adds behaviour: dialogs, tabs, toasts, tables. Delete it and the page still looks right.

32 KB

Base plus one skin

Ship the core and a single skin, gzipped, and you are done. The full fifty-skin bundle exists for playgrounds, not payloads.

Pricing

Same component tree on every tier — only the tokens differ. Sound familiar?

Hobby

$0 / forever

For side projects and quick prototypes.

  • All 50 skins
  • Unlimited personal projects
  • Community support
  • Custom skin audits

Agency

$49 / month

For client work at volume.

  • Everything in Studio
  • Unlimited client seats
  • Custom skin commissioning
  • White-glove migration

Word of mouth

We reskinned an entire dashboard suite from neo-brutalist to clinical for a hospital client. One attribute. The design review took longer than the migration.
MK Mara Kessler Design lead, Fieldnote
The token contract is stricter than my own design system, and that is exactly why I trust it. Sixty components, zero hardcoded colours. Obsessive in the good way.
AR Aydin Rahman Frontend engineer, freelance

FAQ

Do skins change layout or only looks?

Looks only. Spacing scales, type and motion are tier-one primitives every skin inherits, so your layout survives the switch intact.

Can I ship just one skin?

Yes. Load the base bundle plus a single skin file — roughly 32 KB gzipped all together.

How is dark mode handled?

Every skin ships a light and a dark palette, both contrast-audited against WCAG targets. Toggle with one attribute or one function call.

What if I disagree with a knob?

Every component reads tier-three knobs you can override — button radius, card shadow, badge transform. Restyle without forking.

Repaint your next project in one line

Start free