Skip to main content
design systemv1.0by anna maria

A personal design system,
posed as an IDE.

entrepta is a dark-first component library you copy into your repo. Foundations, primitives, layout and feedback components. Built around editor metaphors: tabs, command palette, status bar, file paths, inline comments, shell prompts.

tokens
69
components
14
themes
6
· getting started

Three commands.
You own the code.

entrepta ships as CSS tokens + copy-paste components. No runtime SDK, no telemetry in the components you copy. Drop it into any Next.js project and start shipping.

terminal · zsh
~/projects/portfoliobash
01$ npx @entrepta/cli@latest init --theme=entrepta
wrote app/globals.css · created entrepta.json
02$ npx @entrepta/cli@latest add button badge input
3 components copied to components/entrepta/
03$ npm run dev
ready// run npm run dev
@entrepta/cliv1.0.1
size~7 kb gzipped
depsreact 19+
shipscss vars · components
licenseMIT
themes6 presets
mit · open sourceread the docs ↗

Six principles.
One product personality.

principle 01

Dark-first, always.

Both products are born dark. Light mode is optional, never priority. The deep zinc-950 is the canvas, not dashboard gray.

canvas: #09090B
principle 02

Editor as metaphor.

Tabs, command palette, status bar, file paths, inline comments, shell prompts, monospace metadata. Not decoration. Personality.

tabs · ⌘K · > · $ · //
principle 03

Typography with deliberate contrast.

Editorial serif for proper nouns. Mono for the rest. Sans only for long prose. The contrast is the signature.

newsreader · jetbrains mono · inter
principle 04

Color with restraint.

Brand accent shows up in CTAs, focus rings and featured cards. Emerald is exclusive to positive status. The rest is black, white, cold gray.

violet-500 · emerald-400 · zinc-*
principle 05

High density, clear hierarchy.

A lot of information without feeling chaotic. Strict 12-col grid, defined cards, small badges and dots create secondary rhythm.

12 cols · 24 gutters · 1280 max
principle 06

Subtle motion, or none.

Fast transitions (120–200ms), no springy theatrics. Loading uses shimmer or pulse. The product is not a demo reel.

120ms · 200ms · 320ms
· a11y

Accessible by
default.

Built on Radix primitives so keyboard navigation, focus management, and ARIA semantics come for free. The docs site adds the rest: skip links, live regions, and motion that respects user preferences.

  • keyboardevery interactive element reachable & operable
  • focusvisible 3px brand ring on every focusable surface
  • screen readersRadix primitives + aria-label on icon-only controls
  • skip linkpress Tab on any page → jump to main content
  • motionprefers-reduced-motion disables animations globally
  • live regionstheme & toast changes announced to screen readers
  • contrastAA targets for body copy; brand reserved for emphasis
  • dark + lightevery theme ships in two modes; the user picks via data-mode
· security

Audited by
design.

entrepta ships as copy-paste source — no runtime SDK, no telemetry, no remote code. The CLI guards against path traversal via aliases, the docs site sets a strict CSP and the usual hardening headers, and dependencies stay tight and audited.

  • copy-pastecomponents land in your repo as plain source — no runtime to compromise
  • no runtime telemetrythe CLI calls only npm; copied components ship zero analytics or beacons
  • alias guardCLI refuses to write outside the project, even if entrepta.json is tampered
  • shell-safepackage-manager spawn uses shell:false so deps can't inject commands
  • csp + headersstrict Content-Security-Policy, HSTS, X-Frame-Options DENY, no Powered-By
  • no evalzero eval / new Function / unsafe innerHTML in components or docs
  • deps minimalregistry has 4 runtime deps, CLI has 3 — easy to keep audited

What's inside. Seven categories.

· ready to ship

Start building.

Every token, every component, every state. Laid out in the docs. Press ⌘K to jump anywhere.

Active theme: entrepta, dark mode.