Introduction
Jamie's design system is a component library built on Base UI and Tailwind CSS v4.
Packages
@jamie/ui
The core component library. Import components as:
import { Button } from '@jamie/ui/button'
import { Dialog } from '@jamie/ui/dialog'
import { Select } from '@jamie/ui/select'@jamie/icons
Brand and product icons, typed as LucideProps. Import per icon:
// product specific icons
import JamieIcon from '@jamie/icons/JamieIcon'
// generic UI icons
import { InfoIcon } from 'lucide-react'For generic UI icons, use lucide-react directly.
Foundations
Three foundation pages cover the system's visual language:
- Colors — Primitive and semantic color tokens, including light and dark mode mappings
- Typography — The type scale from Display down to Label, with size and weight pairings
- Icons — The full icon set available across components
Composition
Components use the Base UI render prop for element-level composition. Pass the element you want to render as a prop — the component's styles, behavior, and accessibility attributes transfer automatically:
<Button render={<a href="/meetings" />}>
View Meetings
</Button>For advanced cases, pass a function to access the component's internal state:
<Switch.Thumb
render={(props, state) => (
<span {...props}>{state.checked ? <CheckIcon /> : <XIcon />}</span>
)}
/>