Appearance
Vibe Design System — AI Context
Post this file at the start of a conversation when building UI with VibeLabs.
Full API reference: https://developer.vibelabs.help — look up any package for all tokens, classes, props, events, slots, and usage examples.
Architecture
Three tiers, each independently importable:
@vibe-labs/design → CSS reset + tokens + utility classes
@vibe-labs/design-components → CSS component styles + TypeScript types
@vibe-labs/design-vue → Vue 3 components + composables (no bundled CSS)CSS cascade layer order (lowest → highest priority):
vibe.reset → vibe.tokens → vibe.utilities → vibe.components → vibe.theme → vibe.accessibilityUnlayered CSS always wins — white-label overrides need no !important.
Setup
css
/* main.css */
@import "@vibe-labs/design";
@import "@vibe-labs/design-components";ts
// main.ts
import { VibeButton, VibeModal, toast } from "@vibe-labs/design-vue";Dark/light mode on the <html> element:
html
<html> <!-- dark (default) -->
<html data-mode="light"> <!-- light -->
<html data-mode="system"> <!-- follow OS -->Component Variant System
Components use data-* attributes, not modifier classes:
html
<button class="btn" data-variant="primary" data-size="lg">Click</button>
<span class="badge" data-variant="success" data-dot></span>
<div class="card" data-variant="elevated" data-interactive></div>data-variant— visual style (primary,secondary,ghost,danger, …)data-size— size (sm,md,lg)- Boolean flags — presence = true (
data-dot,data-loading) - State — use native/ARIA:
:disabled,aria-selected,aria-expanded
Available Packages
Design Tokens — @vibe-labs/design
Reference: https://developer.vibelabs.help/design/tokens/
| Package | Tokens |
|---|---|
| reset | CSS reset |
| colors | --color-* — full palette + semantic accent colours |
| typography | --text-* --font-* — size scale, weight, line-height, families |
| spacing | --space-* — 4px base scale |
| borders | --border-* --radius-* |
| surfaces | --surface-* --overlay-* --blur-* --opacity-* |
| elevation | --shadow-* --ring-* |
| forms | --input-* --btn-* --select-* |
| gradients | --gradient-* |
| display | --z-* |
| flex | Flex utility classes |
| grids | Grid utility classes |
| layouts | Layout utility classes |
| sizing | Width/height utilities |
| images | Image utility classes |
| filters | Compound filter effects |
| interactions | Cursor, pointer, user-select utilities |
| transitions | --duration-* --ease-* + transition utilities |
| responsive | --breakpoint-* |
CSS Components — @vibe-labs/design-components
Reference: https://developer.vibelabs.help/design/components/
avatars · badges · buttons · cards · charts · dropdowns · graphs · images · inputs · lists · menus · modals · pagination · progress · responsive · sliders · spinners · tables · tabs · timeline · toasts · toggles · uploads
Each package provides: component tokens (--{name}-*), generated CSS classes, and TypeScript types ({Name}Variants, {Name}Sizes, {Name}StyleProps).
Vue Components — @vibe-labs/design-vue
Reference: https://developer.vibelabs.help/design/vue/
avatars · badges · buttons · cards · charts · core · dropdowns · forms · graphs · hotspots · images · inputs · lists · menus · modals · pagination · progress · responsive · sliders · spinners · tables · tabs · timeline · toasts · toggles · uploads
Each package provides: Vibe{Name} Vue 3 SFCs, typed props (extending the CSS-level style props), and composables where needed. No CSS is bundled — styles come from @vibe-labs/design-components.
Themes — @vibe-labs/design-themes-default
Reference: https://developer.vibelabs.help/design/themes/default
Three accent themes: purple, cyan, gold. Applied via data-theme on any ancestor:
html
<html data-theme="purple">Each theme overrides --color-accent, --surface-*, and typography via @layer vibe.theme.
White-Labeling
Override semantic tokens with unlayered CSS (no !important needed):
css
:root {
--color-accent: #0070f3;
--color-accent-contrast: #fff;
--surface-background: #09090b;
}How to Use This Doc
When building UI with Vibe:
- Check this file to identify which package(s) are relevant.
- Fetch the package page from
developer.vibelabs.helpto get exact token names, class names, prop signatures, and examples. - Use the data-attribute variant system — never add modifier classes manually.