Damo UI is a CLI + registry that copies Memphis-styled React components straight into your codebase, shadcn-style. Tokens, components, and patterns you own and can tweak.
1. Initialize
terminal
BASH
1# scaffold components.json (no dependency to add)2npx damo-ui init3
2. Wire the styles
Import the design tokens and the global stylesheet once in your root layout. Tokens define colors, typography, radius, shadow, and motion as CSS variables.
terminal
BASH
1# copies the design tokens / theme / global CSS into ./styles2npx damo-ui add base3
If you use Tailwind v4, replace your globals.css with:
app/globals.css
CSS
1/* app/globals.css */2@import './styles/tokens.css';3@import './styles/globals.css';45@import 'tailwindcss';6@import './styles/theme.css';78/* let Tailwind v4 scan your copied-in components */9@source './components/ui/**/*.{ts,tsx}';10
3. Render your first component
TSX
1// after: npx damo-ui add button2import { Button } from '@/components/ui/button'34export default function Page() {5 return <Button variant="primary">Save</Button>6}7
4. Wire theme, palette, density
Three orthogonal data-attributes on <html> drive every visual choice. Drop the lib's switcher components in your top bar and you're done — they read & write the attributes and persist to localStorage:
data-theme — the lib ships light only; declare your own [data-theme='dark'] CSS overrides. Wire a <AttrToggleGroup attribute="data-theme"> to switch between values.
data-palette — no built-ins; the lib's neutral defaults assume a single palette. Define [data-palette='cyberpunk'], [data-palette='sunset'], etc., and pass the same list to <AttrToggleGroup attribute="data-palette">.