Why FDS

What Flexa Design System is for, the problem it solves, and how it differs from Tailwind and other CSS frameworks.

FDS treats design as a small, deterministic, accessible data layer — not free-form CSS. A brand is a handful of values; a complete, contrast-checked theme is *derived* from it by pure functions; and every derived value is a semantic token (--fx-*) that can be validated. That is the whole idea, and it is deliberately narrow.

The mission

One core design system, N brand personalities. Instead of maintaining twenty stylesheets, you keep one system and derive every look from a tiny Brand (a primary colour, fonts, a radius feel). The taste, the spacing rhythm, the dark-mode logic and the accessibility floor live in the system — the brand only re-points them.

The problem it solves

Most design drift is not a taste problem — it is a *source-of-truth* problem. Colours get eyeballed, one-off hex values pile up, a rebrand means find-and-replace across hundreds of files, dark mode is bolted on by hand, and an inaccessible pairing ships because nothing was checking. When design is also generated by tools or AI, free-form CSS output is impossible to trust.

FDS removes the free-form middle. Because a theme is derived from a brand and expressed only in known tokens, a rebrand is one function call, dark mode falls out for free, contrast is enforced up front, and generated design can be gate-checked before it is ever applied.

How it differs from Tailwind (and friends)

Tailwind is a styling *workflow*: utility classes you compose in markup. FDS sits a layer below that — it is the token vocabulary and the derivation/validation around it. They are not competing at the same layer; you can feed FDS variables straight into a Tailwind theme and get both.

FDSTailwindshadcn/uiStyle Dictionary
What it isToken system + theme derivation + a11y gatesUtility-class CSS workflowCopy-in React componentsToken build pipeline
You authorA tiny brand → derived themeClasses in your HTMLComponent source you ownToken config → outputs
Ships to the browserCSS variables only, no JSGenerated CSSReact + your CSSNothing (build tool)
Theming a brandOne applyBrand call, derivedEdit the config by handRestyle components by handRe-run the build
AccessibilityGated (WCAG 2 + APCA + CVD)Up to youUp to youUp to you
DependenciesZeroA toolchainReact + depsNode toolchain

Its closest relatives are Radix Colors (semantic, accessible scales), Open Props (variable-first design values) and Style Dictionary (a token pipeline) — FDS is those three plus built-in brand derivation and WCAG gating, in one dependency-free package. It is *not* a component library: there are no React components and no runtime.

When to reach for FDS

Choose FDS when the hard part is consistency, theming and accessibility at the value layer:

Reach for Tailwind, vanilla CSS or a component kit instead when you are hand-authoring one-off UI, want a utility workflow, or need ready-made interactive components — and remember you can still drop FDS tokens underneath any of them. Skip FDS if you specifically want a component library: that is not what this is.

Ready to try it? Follow the Getting started guide, browse the full token vocabulary on the Tokens page, or derive a live theme in the Playground.