Create a theme. A few knobs, every component.
A foldkit-mixins theme is a handful of knobs; every color, space, corner and shadow is a CSS expression over them. Turn one and the components below follow, then copy the theme into your application.
Card
Invite your team
Everyone you invite can edit every page.
New
Three seats left on the Starter plan.
Input
We send the receipt here.
Alert
A new version is out
Reload to pick up the latest fixes. Your drafts are kept.
Badge
LiveIn reviewFailedDraftArchived
Table
| Invoice | Status | Amount |
|---|---|---|
| INV-001 | Paid | $250.00 |
| INV-002 | Pending | $150.00 |
| INV-003 | Paid | $350.00 |
Item
Deploy finished
2 minutes ago
Production is live.Avatar%22%2F%3E%3Ccircle%20cx%3D%2220%22%20cy%3D%2216%22%20r%3D%227%22%20fill%3D%22hsl(210%2030%25%2045%25)%22%2F%3E%3Cellipse%20cx%3D%2220%22%20cy%3D%2239%22%20rx%3D%2213%22%20ry%3D%2211%22%20fill%3D%22hsl(210%2030%25%2045%25)%22%2F%3E%3C%2Fsvg%3E)
%22%2F%3E%3Ccircle%20cx%3D%2220%22%20cy%3D%2216%22%20r%3D%227%22%20fill%3D%22hsl(20%2030%25%2045%25)%22%2F%3E%3Cellipse%20cx%3D%2220%22%20cy%3D%2239%22%20rx%3D%2213%22%20ry%3D%2211%22%20fill%3D%22hsl(20%2030%25%2045%25)%22%2F%3E%3C%2Fsvg%3E)
%22%2F%3E%3Ccircle%20cx%3D%2220%22%20cy%3D%2216%22%20r%3D%227%22%20fill%3D%22hsl(140%2030%25%2045%25)%22%2F%3E%3Cellipse%20cx%3D%2220%22%20cy%3D%2239%22%20rx%3D%2213%22%20ry%3D%2211%22%20fill%3D%22hsl(140%2030%25%2045%25)%22%2F%3E%3C%2Fsvg%3E)
AL
GH
AT
Empty
No projects yet
Create one to get started.
Kbd
Search with ⌘ K
Tabs
Six people, three open milestones, one launch.
Menu
Nothing chosen yet
Your theme
Your application’s style module. Its forSlots styles each component’s slots with a recipe, as every component page shows.
ts
import { AppStyle } from 'foldkit-mixins/app'
import { Theme } from 'foldkit-mixins/theme'
export const { t, slots, forSlots, stylesheet } = AppStyle.make({
palette: Theme.compose(
Theme.oklch({
accent: { h: 264, c: 0.17, l: '52%' },
surfaceSaturation: 0.006,
surfaceContrast: '24%',
}),
Theme.define({
knob: {
'radius-factor': '1.4',
density: '1',
motion: '1',
'shadow-strength': '100%',
},
font: { body: '"Geist", ui-sans-serif, system-ui, sans-serif', heading: 'inherit' },
}),
),
})