Client Site Component Install
Install @vandoko registry components with client-specific brand tokens and design system
A client site (Meridian Robotics from New Client — Full Pipeline) installs @vandoko components with their own brand theme, not the Vandoko theme. The CSS custom property system means no component code needs to change — only the token values differ.
Prerequisites
Before starting, confirm you have: - Client Next.js project initialized with
shadcn/ui - BrandStrategy artifact from the go-vandoko pipeline (Recipe 1
output) - brand-config.json generated (or BrandStrategy available to
generate it)
Flow
Step 1: Generate brand-config.json
Run the brand-config-generator skill:
/generate brand configThe skill asks for inputs. For Meridian Robotics, provide:
| Field | Value |
|---|---|
| Company name | Meridian Robotics |
| Tagline | Precision at Work |
| Description | Industrial automation and cobot integration for mid-market manufacturers |
| Primary color | #1E3A5F |
| Secondary color | #4A6FA5 |
| Accent color | #FF6B35 |
| Background | #0D1117 |
| Foreground | #FAFAFA |
| Display font | Space Grotesk |
| Display font source | |
| Body font | Inter |
Output: ./brand-config.json
Step 2: Export design tokens
Run the design-token-export skill, providing the path to brand-config.json and selecting all formats:
/export design tokensOutput written to ./tokens/:
| File | Format | Content |
|---|---|---|
variables.css | CSS custom properties | --brand-primary: #1E3A5F; --brand-primary-oklch: oklch(0.35 0.06 245); etc. |
tokens.json | W3C DTCG JSON | { "brand": { "color": { "primary": { "$value": "#1E3A5F", "$type": "color" } } } } |
figma-variables.json | Figma Variables API | RGBA float values for programmatic Figma import |
Step 3: Apply tokens to the client project
In the client's Next.js project, import the CSS variables and override the shadcn/ui theme:
@import "./tokens/variables.css";
/* Override shadcn/ui theme variables with brand tokens */
:root {
--primary: var(--brand-primary-oklch);
--secondary: var(--brand-secondary-oklch);
--accent: var(--brand-accent-oklch);
--background: var(--brand-background-oklch);
--foreground: var(--brand-foreground-oklch);
--muted: var(--brand-muted-oklch);
--border: var(--brand-border-oklch);
}The import must come before any shadcn theme definitions so the overrides take effect correctly.
Step 4: Install @vandoko components
Install components using the standard shadcn CLI — no special flags needed:
# Install individual components
npx shadcn@latest add @vandoko/hero-industrial
npx shadcn@latest add @vandoko/pricing-saas
# Components inherit the client's brand tokens via CSS custom properties
# No code changes needed -- oklch tokens resolve from globals.cssThe installed components use Tailwind classes like bg-primary, text-foreground, border-border — which resolve to Meridian's colors through the CSS custom property override chain defined in Step 3.
Step 5: Verify theme customization
Start the dev server:
pnpm devInspect the hero component in the browser and confirm:
- Background should be
#0D1117(Meridian's background), not#0A0A0A(Vandoko's) - Primary CTA should be
#1E3A5F(Meridian's industrial blue), not#00EEFF(Vandoko's cyan) - Typography should render Space Grotesk headings with Inter body text
Verification Checklist
brand-config.jsoncontains all hex values (no oklch/HSL at this stage)tokens/variables.csshas both hex and oklch decompositionstokens/tokens.jsonfollows W3C DTCG structure- Installed
@vandokocomponents render with Meridian's brand colors - No hardcoded Vandoko cyan or lime visible in the client site
- Font rendering matches Space Grotesk (headings) + Inter (body)
Troubleshooting
| Symptom | Likely Cause | Fix |
|---|---|---|
| Components show Vandoko cyan instead of client blue | CSS custom property override not applied | Verify globals.css imports variables.css BEFORE shadcn theme definitions |
| Font not loading | Google Fonts not configured | Add <link> tag for Space Grotesk in layout.tsx, or use next/font/google |
| oklch values look wrong | Hex-to-oklch conversion error | Cross-check with culori library: import { oklch } from 'culori'; oklch('#1E3A5F') |
| Figma import fails | Missing API token or file key | Provide FIGMA_TOKEN env var and file key in the curl command from references/design-tokens.md |
| Components break with missing dependencies | registryDependencies not installed | Run npx shadcn@latest add button card badge for base primitives first |
Stitch → Registry Pipeline
Generate UI screens in Gemini Stitch, export HTML, and publish to the @vandoko component registry
Anti-Patterns
Design and copy patterns that erode Vandoko's premium signal. Programmatic checks are enforced automatically; subjective checks are evaluated by the qa-orchestrator visual-quality-gate skill.