Build elegant frontend UIs following Microsoft Foundry's NextGen Design System using Vite + React + pnpm. Use when creating dashboards, agent builders, data grids, entity management interfaces, or any application matching Foundry's refined dark-themed aesthetic. Triggers on requests for Foundry-style UI, NextGen design system, Microsoft Foundry interfaces, or enterprise admin dashboards with data tables, detail panels, and charts.
Build elegant, production-ready interfaces following Microsoft Foundry's NextGen Design System - a refined neutral dark-themed design language with minimal purple accents for primary actions only.
Purple (#8251EE / #A37EF5) is ONLY for:
Everything else uses NEUTRAL DARK GREYS:
Vite + React + pnpm - Fast, modern, elegant.
pnpm create vite@latest my-foundry-app --template react-ts
cd my-foundry-app
pnpm install
pnpm add lucide-react recharts
:root {
/* =================================
BACKGROUNDS - Neutral Dark Greys
================================= */
--bg-page: #0A0A0A; /* Page background - near black */
--bg-sidebar: #0D0D0D; /* Sidebar and topbar */
--bg-card: #141414; /* Cards, panels, dialogs - dark grey */
--bg-surface: #1C1C1C; /* Elevated surfaces */
--bg-elevated: #242424; /* Dropdowns, popovers */
--bg-hover: #2A2A2A; /* Hover states */
--bg-active: #333333; /* Pressed states */
/* =================================
TEXT - Neutral Whites/Greys
================================= */
--text-primary: #FFFFFF; /* Main body text - pure white */
--text-secondary: #A1A1A1; /* Secondary text - medium grey */
--text-muted: #6B6B6B; /* Placeholder, disabled, inactive tabs */
--text-disabled: #4A4A4A; /* Disabled text */
--text-link: #A37EF5; /* Links - this can be purple */
/* =================================
BRAND PURPLE - Use Sparingly!
================================= */
--brand-primary: #8251EE; /* Primary buttons, active indicators */
--brand-hover: #9366F5; /* Hover on purple elements */
--brand-light: #A37EF5; /* Links, active sidebar icons */
--brand-muted: rgba(130, 81, 238, 0.2); /* Focus shadows */
--accent-cta: #E91E8C; /* Magenta for sliders, critical CTAs */
/* =================================
BORDERS - Subtle Dark Grey
================================= */
--border-subtle: #1F1F1F; /* Very subtle dividers */
--border-default: #2A2A2A; /* Standard borders */
--border-strong: #333333; /* Emphasized borders */
--border-focus: #8251EE; /* Focus rings */
/* =================================
STATUS COLORS
================================= */
--success: #10B981;
--success-muted: rgba(16, 185, 129, 0.15);
--warning: #F59E0B;
--warning-muted: rgba(245, 158, 11, 0.15);
--error: #EF4444;
--error-muted: rgba(239, 68, 68, 0.15);
--info: #3B82F6;
/* Spacing */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-6: 24px;
--space-8: 32px;
/* Border Radius */
--radius-sm: 4px;
--radius-md: 6px;
--radius-lg: 8px;
--radius-xl: 12px;
/* Typography */
--font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}
| Component | Uses Purple? | Actual Colors | |-----------|--------------|---------------| | Primary Button | ✅ YES | Purple bg (#8251EE), white text | | Secondary Button | ❌ NO | Transparent bg, grey border (#333), white text | | Cards | ❌ NO | Dark grey bg (#141414), grey border (#2A2A2A) | | Page Background | ❌ NO | Near-black (#0A0A0A) | | Sidebar | ❌ NO | Dark grey bg (#0D0D0D) | | Active Tab | ✅ YES | White text + purple underline | | Inactive Tab | ❌ NO | Grey text (#6B6B6B) | | Row Selection | ✅ YES | Purple left indicator bar | | Sidebar Active Icon | ✅ YES | Purple icon color | | Sidebar Inactive Icon | ❌ NO | Grey icons (#6B6B6B) | | Input Fields | ❌ NO | Dark grey bg (#1C1C1C), grey border | | Primary Text | ❌ NO | White (#FFFFFF) | | Secondary Text | ❌ NO | Grey (#A1A1A1) | | Data Table Headers | ❌ NO | Grey text (#A1A1A1) | | Links | ✅ YES | Purple text (#A37EF5) |
{/* ✅ CORRECT: Primary button uses purple */}
<button className="btn-primary">Create</button>
{/* ✅ CORRECT: Secondary button uses GREY, not purple */}
<button className="btn-secondary">Cancel</button>
{/* ❌ WRONG: Don't use purple for secondary buttons! */}
<button className="bg-purple-900 border-purple-700">Cancel</button>
.btn-primary {
background: var(--brand-primary);
color: white;
border: none;
padding: 8px 16px;
border-radius: var(--radius-md);
}
.btn-primary:hover { background: var(--brand-hover); }
.btn-secondary {
background: transparent;
color: var(--text-primary);
border: 1px solid var(--border-strong);
padding: 8px 16px;
border-radius: var(--radius-md);
}
.btn-secondary:hover { background: var(--bg-hover); }
{/* ✅ CORRECT: Card uses neutral dark grey */}
<div className="card">
<h3>Card Title</h3>
<p>Description in grey</p>
</div>
{/* ❌ WRONG: Don't use purple for cards! */}
<div className="bg-purple-900 border-purple-700">...</div>
<div style={{background: '#2B1D44'}}>...</div>
/* Cards are NEUTRAL GREY, not purple */
.card {
background: var(--bg-card); /* #141414 */
border: 1px solid var(--border-default); /* #2A2A2A */
border-radius: var(--radius-lg);
padding: var(--space-4);
}
references/design-tokens.md for complete color, typography, and spacing scalesreferences/components.md for Badge, Button, DataGrid, Tabs, Input, Panel specsreferences/patterns.md for page layouts (Entity List, Detail Page, Dashboard)npx skills add microsoft/foundry-nextgen-frontend下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer