A dark-first design system for sites that look like they were built by an engineer.
Copy-paste components. CSS tokens. No SDK. You own the code.
npx @entrepta/cli@latest init14 components across 4 categories, all written in React 19 and styled with Tailwind v4 + CSS variables.
- Primitives: Button, Badge, Input, Card, Dialog, Dropdown, Tooltip, Tabs
- Layout: StatusBar, TopNav
- Feedback: Toast, Skeleton, CommandPalette
- Content: CodeBlock
Plus 6 theme presets you can switch with one flag: entrepta, blossom, marmalade, julia, ivy, bosco.
npx @entrepta/cli@latest init --theme=ivy
npx @entrepta/cli@latest add button card command-paletteThe CLI writes your globals.css, sets up lib/utils.ts, installs peer deps, and copies the components into your project.
If you want to skip the CLI:
- Install peer deps:
pnpm add clsx tailwind-merge class-variance-authority - Copy
packages/registry/styles/globals.cssinto your project, then append one theme file frompackages/registry/styles/themes/ - Copy
lib/utils.tswith thecnhelper - Copy any component file from
packages/registry/intocomponents/entrepta/
Each component page in the docs has a Manual tab with its own dependency list and copy-pasteable source.
import { Button } from "@/components/entrepta/button";
import { CodeBlock } from "@/components/entrepta/code-block";
export function Hero() {
return (
<>
<Button variant="primary">Ship</Button>
<CodeBlock
code="npx @entrepta/cli@latest init --theme=ivy"
variant="terminal"
filename="terminal · zsh"
language="bash"
/>
</>
);
}- React 19 + Next.js 15 (App Router) as the reference setup
- Tailwind v4 for utility classes
- Radix UI primitives for behavior and a11y
- CSS variables for all design tokens
- TypeScript strict
- class-variance-authority for variants
- lucide-react icons (1.5px stroke)
entrepta/
├── apps/
│ └── docs/ Next.js site at entrepta.vercel.app
├── packages/
│ ├── cli/ npx @entrepta/cli@latest — init, add
│ └── registry/ source of truth for components, tokens, themes
MIT. Built by Anna Maria.