// contributing.md
CSS carries most of the weight here.
The rest is up to you.
FrontAlign ships as a JIT-compiled utility engine, a small attribute-driven runtime, and an OKLCH theming layer — maintained by the people who use it. If you have filed an issue, built a component, or fixed a typo in the docs, you have already contributed.
How the codebase thinks
Three constraints shape every pull request we accept. Read them before your first one.
--engine: css-first;CSS carries the logic
Interactive states lean on :has(), :user-invalid, and logical properties wherever the platform allows it. JavaScript is the fallback, never the default.
--runtime: attribute-driven;One attribute, no state
The runtime listens for fa-* attributes through a single delegated observer. No component instances, no framework-specific state to keep in sync.
--theme: oklch;Color is a variable
Every shade in the system is computed in OKLCH. New components inherit theme, contrast, and dark mode automatically — never hardcode a color value.
Where to work
The repository is a small monorepo. Pick the directory that matches what you want to build.
packages/frontalignCore engine
The JIT compiler and the attribute-driven observer runtime that ship in every build.
packages/reactReact bindings
Typed component wrappers and hooks that mirror the core API for React applications.
docsDocumentation
Guides, API reference, and the examples most contributors read first.
packages/frontalign/themesDesign tokens
OKLCH color scales and the theming primitives every component is built on.
Local setup
Three commands take you from a clone to a running dev build with hot-reloading utilities.
$ git clone https://github.com/frontalign/frontalign.git$ cd frontalign && npm install$ npm run devCoding conventions, commit format, and the review process are documented in CONTRIBUTING.md.