Installation
Everything you need to install the Edgecom design system and start building with it.
Installation
The Edgecom Design System is a public shadcn registry, distributed straight from GitHub. It ships our design tokens and Base UI components — pull them into your app with the shadcn CLI, no copy-paste and no hardcoded hex.
1Prerequisites
Your app needs a shadcn-initialized project on Tailwind v4. If you haven’t already, run pnpm dlx shadcn@latest init — it creates components.json, adds @import "tailwindcss"; to your CSS, and sets up the @/* path alias our components import through.
- Tailwind v4 with
@import "tailwindcss";in your CSS entry - A
@/*path alias (matchingcomponents.jsonaliases) - React 19 / Next 16 (or compatible) and the
lucide-reacticon set
2Install straight from GitHub
There’s nothing to configure — no components.json entry and no token. The public repo is the registry: reference any item by its GitHub address, edgecom-ai/design-system/<name>, and the CLI fetches it plus everything it depends on. Pin to a branch, tag, or commit by appending #ref.
# address format — no config, no auth
edgecom-ai/design-system/<name>
# pin to a tag, branch, or commit
edgecom-ai/design-system/button#v1.0.03Add components
Add whatever you need — the theme comes with it. Every component depends on theme, so the first install automatically writes the OKLCH tokens into your globals.css and drops cn into lib/utils.ts. Cross-component dependencies, hooks, and package deps all resolve on their own — adding sidebar, for example, pulls its sub-components and the use-mobile hook too.
# theme + tokens ride along on the first component you add
pnpm dlx shadcn@latest add edgecom-ai/design-system/button edgecom-ai/design-system/card
# want just the tokens (no component)? add the theme on its own
pnpm dlx shadcn@latest add edgecom-ai/design-system/themeRe-running is safe: files already present are skipped, so shared pieces like the theme and button are never duplicated. Pass --overwrite only when you mean to discard local edits.
4Build with semantic tokens — never hardcode
Every color is a token that tracks light/dark automatically. Use the utility, not the hex.
<Button className="bg-primary text-primary-foreground" /><button className="bg-[#0966C0] text-white" />Token families: primary accent secondary muted success warning info destructive border ring chart-1…5 — each with a matching -foreground. See Foundations → Semantic colors.
5Compose with Base UI, not Radix
Our primitives are built on Base UI. Pass a trigger via the render prop — there is no asChild.
// ✅ Base UI — pass the trigger element via `render`
<DialogTrigger render={<Button>Open</Button>} />
// ❌ not Radix-style asChild
<DialogTrigger asChild><Button>Open</Button></DialogTrigger>What’s inside
Foundations
Colors, chart ramp, typography
Components
Buttons, inputs, tables, overlays & more
Blocks
Charts & data tables
Browse the groups in the sidebar to preview every item in light and dark.