Getting started
oks-ui is a React component library written in strict TypeScript, with a design system that lives entirely in CSS custom properties.
Step 1 of 5
Install it
NowOne package. There is no provider to add and nothing to configure.
$ npm install oks-uiadded 1 package oks-ui@1.5.0 0 dependenciesImport the styles once
NextOne line, in your app entry or root layout. It brings in the design tokens and every component's CSS.
import "oks-ui/styles.css";Tokens, the utility layer and the component styles are loaded. No
ThemeProviderto wrap your app in.Render your first component
NextImport from a per-component path and use it like any React component.
app/page.tsx import { Button } from "oks-ui/button"; import "oks-ui/button.css"; const Page = () => { return <Button color="primary">Get started</Button>; }; export default Page;That is a real Button, rendered right here.
Make it yours
NextOverride one CSS variable and every component follows. Pick a colour on the right.
:root { --oks-color-primary-500: #8b5cf6; }Pro plan:root { --oks-color-primary-500: #8b5cf6; }Ship it
NextYou have the whole loop. Where you go next depends on what you are building.
What you get
- 45 components — buttons, forms, tables, charts, overlays, navigation, a command palette, a Kanban board, a block editor. Enough to build a real product, not a starter kit.
- Zero runtime dependencies. The only peers are
reactandreact-dom. Nothing else reaches your bundle. - CSS-variable theming. Every colour, space, radius and shadow is an
--oks-*custom property. NoThemeProvider, no config object, no runtime JS for styling. - Accessible by default. Keyboard navigation, visible focus, ARIA roles and reduced-motion support are built into the interactive components.
- Strict TypeScript. Built with
noUncheckedIndexedAccess,exactOptionalPropertyTypes, and the full strict suite. Props are stable and intentional.
The tradeoff
oks-ui asks you to accept a small amount of strictness — a real type on every field, a stylesheet import, per-component subpath imports if you want the smallest possible bundle. In exchange you get components that don't surprise you, upgrades that are one version bump, and a theme system with no ceremony.