<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Design System & Styling</title>
<meta name="description" content="A programming language that compiles to HTML, CSS, and JavaScript. Build SPAs and static sites with built-in components, reactivity, routing, i18n, and animations.">
<link rel="stylesheet" href="../styles.css">
</head>
<body>
<div id="app">
<div class="wf-row">
<div class="wf-container wf-animate-fadeIn">
<div class="wf-spacer"></div>
<h1 class="wf-heading wf-heading--h1">Design System & Styling</h1>
<p class="wf-text wf-text--muted">Token-based design system. Every component uses design tokens for colors, spacing, typography. Change the entire look with a config update.</p>
<div class="wf-spacer"></div>
<h2 class="wf-heading wf-heading--h2">Variant Modifiers</h2>
<p class="wf-text">Apply common styles with modifier keywords.</p>
<div class="wf-spacer"></div>
<div class="wf-card wf-card--outlined">
<div class="wf-card__header">
<p class="wf-text wf-text--bold">Size Modifiers</p>
</div>
<div class="wf-card__body">
<div class="wf-row">
<button class="wf-btn wf-btn--primary wf-btn--small">Small</button>
<button class="wf-btn wf-btn--primary">Medium</button>
<button class="wf-btn wf-btn--primary wf-btn--large">Large</button>
</div>
</div>
</div>
<div class="wf-spacer"></div>
<div class="wf-card wf-card--outlined">
<div class="wf-card__header">
<p class="wf-text wf-text--bold">Color Modifiers</p>
</div>
<div class="wf-card__body">
<div class="wf-row">
<button class="wf-btn wf-btn--primary">Primary</button>
<button class="wf-btn wf-btn--secondary">Secondary</button>
<button class="wf-btn wf-btn--success">Success</button>
<button class="wf-btn wf-btn--danger">Danger</button>
<button class="wf-btn wf-btn--warning">Warning</button>
<button class="wf-btn wf-btn--info">Info</button>
</div>
<div class="wf-spacer"></div>
<div class="wf-row">
<span class="wf-badge wf-badge--primary">Primary</span>
<span class="wf-badge wf-badge--success">Success</span>
<span class="wf-badge wf-badge--danger">Danger</span>
<span class="wf-badge wf-badge--warning">Warning</span>
</div>
</div>
</div>
<div class="wf-spacer"></div>
<div class="wf-card wf-card--outlined">
<div class="wf-card__header">
<p class="wf-text wf-text--bold">Shape and Elevation</p>
</div>
<div class="wf-card__body">
<div class="wf-row">
<button class="wf-btn wf-btn--primary">Default</button>
<button class="wf-btn wf-btn--primary wf-btn--rounded">Rounded</button>
<button class="wf-btn wf-btn--primary wf-btn--full">Full Width</button>
</div>
<div class="wf-spacer"></div>
<div class="wf-row">
<div class="wf-card">
<div class="wf-card__body">
<p class="wf-text">Default</p>
</div>
</div>
<div class="wf-card wf-card--elevated">
<div class="wf-card__body">
<p class="wf-text">Elevated</p>
</div>
</div>
<div class="wf-card wf-card--outlined">
<div class="wf-card__body">
<p class="wf-text">Outlined</p>
</div>
</div>
</div>
</div>
</div>
<div class="wf-spacer"></div>
<div class="wf-card wf-card--outlined">
<div class="wf-card__header">
<p class="wf-text wf-text--bold">Text Modifiers</p>
</div>
<div class="wf-card__body">
<p class="wf-text wf-text--bold">Bold text.</p>
<p class="wf-text wf-text--italic">Italic text.</p>
<p class="wf-text">Uppercase text.</p>
<p class="wf-text wf-text--muted">Muted text.</p>
<p class="wf-text wf-text--primary">Primary colored text.</p>
<p class="wf-text wf-text--small">Small text.</p>
<p class="wf-text wf-text--large">Large text.</p>
</div>
</div>
<div class="wf-spacer"></div>
<hr class="wf-divider">
<div class="wf-spacer"></div>
<h2 class="wf-heading wf-heading--h2">Design Tokens</h2>
<p class="wf-text">All styling is built on tokens — CSS custom properties. Override any token in your config.</p>
<div class="wf-spacer"></div>
<div class="wf-row">
<div class="wf-col">
<div class="wf-card wf-card--outlined">
<div class="wf-card__header">
<p class="wf-text wf-text--bold">Colors</p>
</div>
<div class="wf-card__body">
<table class="wf-table">
<thead>
<td>Token</td>
<td>Value</td>
</thead>
<tr>
<td>color-primary</td>
<td>#3B82F6</td>
</tr>
<tr>
<td>color-success</td>
<td>#22C55E</td>
</tr>
<tr>
<td>color-danger</td>
<td>#EF4444</td>
</tr>
<tr>
<td>color-warning</td>
<td>#F59E0B</td>
</tr>
<tr>
<td>color-text</td>
<td>#0F172A</td>
</tr>
<tr>
<td>color-border</td>
<td>#E2E8F0</td>
</tr>
</table>
</div>
</div>
</div>
<div class="wf-col">
<div class="wf-card wf-card--outlined">
<div class="wf-card__header">
<p class="wf-text wf-text--bold">Spacing and Radius</p>
</div>
<div class="wf-card__body">
<table class="wf-table">
<thead>
<td>Token</td>
<td>Value</td>
</thead>
<tr>
<td>spacing-xs</td>
<td>0.25rem</td>
</tr>
<tr>
<td>spacing-sm</td>
<td>0.5rem</td>
</tr>
<tr>
<td>spacing-md</td>
<td>1rem</td>
</tr>
<tr>
<td>spacing-lg</td>
<td>1.5rem</td>
</tr>
<tr>
<td>radius-md</td>
<td>0.5rem</td>
</tr>
<tr>
<td>radius-full</td>
<td>9999px</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div class="wf-spacer"></div>
<hr class="wf-divider">
<div class="wf-spacer"></div>
<h2 class="wf-heading wf-heading--h2">Themes</h2>
<p class="wf-text">4 built-in themes. Set in webfluent.app.json. Each preview below shows the actual colors and style of that theme.</p>
<div class="wf-spacer"></div>
<div class="wf-grid" style="grid-template-columns: repeat(2, 1fr)">
<div class="wf-card">
<div class="wf-card__body">
<div class="wf-row">
<span class="wf-badge wf-badge--primary">default</span>
<p class="wf-text wf-text--bold">Default</p>
</div>
<div class="wf-spacer"></div>
<p class="wf-text wf-text--muted wf-text--small">Clean, modern light theme with blue primary.</p>
<div class="wf-spacer"></div>
<div class="wf-row">
<button class="wf-btn wf-btn--primary wf-btn--small">Primary</button>
<button class="wf-btn wf-btn--success wf-btn--small">Success</button>
<span class="wf-badge wf-badge--info">Tag</span>
</div>
<div class="wf-spacer"></div>
<progress class="wf-progress wf-progress--primary" value="65" max="100"></progress>
<div class="wf-spacer"></div>
<code class="wf-code">"theme": { "name": "default" }</code>
</div>
</div>
<div class="wf-card">
<div class="wf-card__body">
<div class="wf-row">
<span class="wf-badge wf-badge--secondary">dark</span>
<p class="wf-text wf-text--bold">Dark</p>
</div>
<div class="wf-spacer"></div>
<p class="wf-text wf-text--small">Dark backgrounds with light text and vibrant accents.</p>
<div class="wf-spacer"></div>
<div class="wf-row">
<button class="wf-btn wf-btn--primary wf-btn--small">Primary</button>
<button class="wf-btn wf-btn--danger wf-btn--small">Danger</button>
<span class="wf-badge wf-badge--success">Live</span>
</div>
<div class="wf-spacer"></div>
<progress class="wf-progress wf-progress--info" value="80" max="100"></progress>
<div class="wf-spacer"></div>
<code class="wf-code">"theme": { "name": "dark" }</code>
</div>
</div>
<div class="wf-card">
<div class="wf-card__body">
<div class="wf-row">
<span class="wf-badge">minimal</span>
<p class="wf-text wf-text--bold">Minimal</p>
</div>
<div class="wf-spacer"></div>
<p class="wf-text wf-text--small">Black and white. No shadows, no border-radius. Pure content.</p>
<div class="wf-spacer"></div>
<div class="wf-row">
<button class="wf-btn wf-btn--small">Action</button>
<span class="wf-badge">Note</span>
</div>
<div class="wf-spacer"></div>
<progress class="wf-progress" value="50" max="100"></progress>
<div class="wf-spacer"></div>
<code class="wf-code">"theme": { "name": "minimal" }</code>
</div>
</div>
<div class="wf-card">
<div class="wf-card__body">
<div class="wf-row">
<span class="wf-badge wf-badge--danger">brutalist</span>
<p class="wf-text wf-text--bold">Brutalist</p>
</div>
<div class="wf-spacer"></div>
<p class="wf-text wf-text--small">Monospace font, bold red primary, hard offset shadows.</p>
<div class="wf-spacer"></div>
<div class="wf-row">
<button class="wf-btn wf-btn--danger wf-btn--small">Action</button>
<span class="wf-badge wf-badge--danger">Alert</span>
</div>
<div class="wf-spacer"></div>
<progress class="wf-progress wf-progress--danger" value="90" max="100"></progress>
<div class="wf-spacer"></div>
<code class="wf-code">"theme": { "name": "brutalist" }</code>
</div>
</div>
</div>
<div class="wf-spacer"></div>
<hr class="wf-divider">
<div class="wf-spacer"></div>
<h2 class="wf-heading wf-heading--h2">Custom Tokens</h2>
<p class="wf-text">Override any design token in your config to customize the theme.</p>
<div class="wf-spacer"></div>
<div class="wf-card wf-card--outlined">
<div class="wf-card__body">
<code class="wf-code">{
"theme": {
"name": "default",
"tokens": {
"color-primary": "#8B5CF6",
"color-secondary": "#EC4899",
"font-family": "Poppins, sans-serif",
"radius-md": "1rem"
}
}
}</code>
</div>
</div>
<div class="wf-spacer"></div>
<hr class="wf-divider">
<div class="wf-spacer"></div>
<h2 class="wf-heading wf-heading--h2">Style Blocks</h2>
<p class="wf-text">Override styles on any component with inline style blocks.</p>
<div class="wf-spacer"></div>
<div class="wf-card wf-card--outlined">
<div class="wf-card__body">
<code class="wf-code">Button("Custom") {
style {
background: "#8B5CF6"
padding: xl
radius: lg
}
}</code>
</div>
</div>
<div class="wf-spacer"></div>
</div>
</div>
</div>
<script src="../app.js"></script>
</body>
</html>