A complete design system package built on Bulma CSS. All color tokens are Bulma's actual CSS custom property definitions. Downstream code references variables — never hardcoded values.
What Bulma is: A modern CSS framework based on Flexbox that provides clean, semantic, and modular web interface primitives using class-based modifiers. No JavaScript required. (Source: Bulma's project description, bulma.css — zero JS files, class-driven architecture.)
- Source repository: github.com/jgthms/bulma — MIT licensed
- CDN source:
https://cdn.jsdelivr.net/npm/bulma/css/bulma.css - Documentation: bulma.io/documentation
Primary UI Surfaces: Responsive web applications, admin dashboards, content management UIs, SaaS product interfaces, marketing pages, and component libraries.
Core Capabilities (evidenced by source files):
- Flexbox-based responsive grid: Grid with semantic column sizing and breakpoint prefixes (source:
bulma.css.columns/.columnsystem, breakpoints at 769px, 1024px, 1216px, 1408px fromcolors_and_type.css). - 20+ pre-built component patterns: Buttons, cards, forms, tables, modals, navigation, hero, footer, pagination, breadcrumbs, dropdowns, panels, messages, notifications, tags, progress bars (source: Bulma documentation at bulma.io, preserved in
DESIGN.md§7). - Semantic color system: Primary, info, success, warning, danger — each with inverted, light, and outlined variants (source:
.is-primary,.is-info, etc. modifiers inbulma.css). - Standardized spacing scale: 0–6 mapping 0 to 3rem with directional suffixes (source:
--bulma-spacing-0through--bulma-spacing-6incolors_and_type.css). - Typography scale: 7 size levels (12px–40px), 5 weight levels, and alignment utilities (source:
--bulma-size-*and--bulma-weight-*incolors_and_type.css). - Class-driven composition:
.button.is-primary.is-outlined.is-smallinstead of custom CSS (source: Bulma's core architecture inbulma.css).
| Evidence | Location | Provenance |
|---|---|---|
| Bulma CSS source | github.com/jgthms/bulma | MIT-licensed Flexbox CSS framework by Jeremy Thomas |
| CDN stylesheet | https://cdn.jsdelivr.net/npm/bulma/css/bulma.css |
Runtime CSS loaded by all preview cards |
| Token definitions | colors_and_type.css |
Bulma's default :root custom property definitions extracted from CSS source (brand colors, neutral palette, derived surfaces, typography, spacing, radius, breakpoints) |
| Component patterns | DESIGN.md §7 Components |
Markup preserved from Bulma's official documentation at bulma.io/documentation with class names exact |
| Spacing scale | DESIGN.md §5 Spacing |
Values match Bulma's variable definitions (--bulma-spacing-0 through --bulma-spacing-6, 0 to 3rem) |
| Responsive breakpoints | DESIGN.md §6 Layout |
Bulma's documented breakpoints: 769px (--bulma-container-max-tablet), 1024px (--bulma-desktop), 1216px (--bulma-widescreen), 1408px (--bulma-fullhd) from colors_and_type.css |
| Type scale | DESIGN.md §4 Typography |
Bulma's --bulma-size-* variable definitions (12px–40px, 7 levels) and --bulma-weight-* (300–700, 5 levels) |
| Anti-patterns | DESIGN.md §10 Anti-patterns |
Derived from common misuse patterns in Bulma community forums and the framework's own documentation guidelines |
| Composition rules | context/source-context.md |
Source intake notes: Pages → Sections → Components → Bulma primitives, zero hardcoded colors, class-driven styling |
ds-bulma-design-system/
├── DESIGN.md # Canonical rules: color, type, spacing, layout, components, motion, voice (source-backed)
├── colors_and_type.css # Theme token definitions (Bulma's actual :root variable definitions + extended tokens)
├── README.md # This file — reusable package guide with product overview and reuse workflow
├── SKILL.md # Agent-facing skill entry with YAML frontmatter and provenance chain
├── context/
│ └── source-context.md # Source evidence, composition hierarchy, provenance notes, intake runbook
├── preview/
│ ├── brand-assets.html # Logo, wordmark, color palette, typography identity
│ ├── colors-primary.html # Brand palette swatches with live computed values (getComputedStyle)
│ ├── colors-neutral.html # Neutral palette (white → black) with usage map
│ ├── typography-specimens.html # Type scale, weights, alignments, text color utilities
│ ├── spacing-tokens.html # Spacing scale, directional suffixes with pixel equivalents
│ ├── spacing-radius.html # Border radius variants (default, small, rounded/pill)
│ ├── spacing-shadows.html # Shadow tokens and interactive hover demo
│ ├── components-buttons.html # Button colors, sizes, states, grouping
│ ├── components-cards.html # Card, media, notification patterns
│ ├── components-inputs.html # Form inputs, validation, selects, checkboxes, file upload
│ ├── components-tables.html # Table variants: striped, bordered, narrow, fullwidth
│ ├── components-modals.html # Modal, message, panel, tag patterns
│ └── components-navigation.html # Navbar, tabs, breadcrumb, pagination
├── assets/ # Brand assets (logos, wordmarks, icons — preserve when available)
├── build/ # Runtime build assets (installer icons, tray icons — preserve when available)
├── fonts/ # Font files (bind with @font-face in colors_and_type.css when available)
└── source_examples/ # High-signal original component snapshots (preserve when available)
Each preview card is a standalone HTML file. All color swatches display computed values from the live Bulma theme via getComputedStyle — no hardcoded hex strings. Each card loads Bulma CSS from CDN so the theme is live at render time.
| Preview File Path | What It Demonstrates | Components/Tokens Tested |
|---|---|---|
preview/brand-assets.html |
Logo variants, wordmark, color palette, typography identity using system tokens | Brand identity patterns using Bulma token references |
preview/colors-neutral.html |
Neutral palette (white → black) with detailed usage mapping | --bulma-white through --bulma-black neutral tokens |
preview/colors-primary.html |
Brand and state palette swatches with live computed HSL value display | --bulma-primary, --bulma-info, --bulma-success, --bulma-warning, --bulma-danger, --bulma-link |
preview/components-buttons.html |
Comprehensive button catalog (colors, sizes, states, outlines, icons, groupings) | .button with classes .is-primary, .is-info, .is-success, .is-warning, .is-danger, .is-link, .is-light, .is-outlined, .is-loading, .is-rounded |
preview/components-cards.html |
Card component layout and light/dark color notification patterns | .card, .card-image, .card-content, .media, .notification |
preview/components-inputs.html |
Complete form input catalog (text inputs, textarea, select dropdowns, checkboxes, radios, file upload, states) | .field, .control, .input, .textarea, .select, .checkbox, .radio, .file |
preview/components-modals.html |
Interactive modal layouts, primary/secondary message panels, and contextual tags | .modal, .message, .panel, .tag |
preview/components-navigation.html |
Standard navigation elements (navbar, boxed tabs, breadcrumbs, pagination) | .navbar, .tabs, .breadcrumb, .pagination |
preview/components-tables.html |
Data table styling (striped, bordered, narrow, hoverable, full-width) | .table, .is-striped, .is-hoverable, .is-bordered, .is-narrow, .is-fullwidth |
preview/spacing-radius.html |
Border radius token variants with visual examples | --bulma-radius-default, --bulma-radius-small, --bulma-radius-rounded |
preview/spacing-shadows.html |
Shadow and elevation tokens with interactive hover transition demos | .has-shadow styling class and transition duration tokens |
preview/spacing-tokens.html |
Margin and padding spacing scale from 0 to 6 with directional suffixes and pixel equivalents | --bulma-spacing-0 through --bulma-spacing-6, .mt-4, .px-3, .my-5 |
preview/typography-specimens.html |
Complete font family specimens, weight levels, text alignments, size hierarchy, and text color utilities | --bulma-size-1 through --bulma-size-7, --bulma-weight-light through --bulma-weight-bold, --bulma-family-sans-serif, --bulma-family-monospace |
The following directories are reserved as part of the package structure for storing source-backed assets when available:
assets/: Designated for branding assets (logos, wordmarks, icons). Currently empty as Bulma is a pure CSS framework with no bundled brand assets.build/: Designated for runtime build assets (installer icons, tray icons). Currently empty.fonts/: Designated for local custom font files. Currently empty.source_examples/: Designated for preserving high-signal original source-code component examples. Currently empty.
Note: While some or all of these directories are currently empty because Bulma is a pure CSS framework without bundled assets, they are maintained as expected directories in the package structure to allow for seamless downstream intake of brand assets, icons, or custom fonts.
- Read
SKILL.mdfor agent-facing usage instructions, skill frontmatter, and provenance chain. - Read
DESIGN.mdfor visual principles, component rules, source-backed context, and anti-patterns. - Load
colors_and_type.cssfor token references (or include via<link>in HTML). - Browse
preview/*.htmlfor 13 focused component patterns and live token examples. - Consult
context/source-context.mdfor provenance, composition hierarchy, and intake evidence. - Check
assets/,build/,fonts/,source_examples/for preserved source-backed resources.
- Include Bulma CSS in your project:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma/css/bulma.css">
- Include
colors_and_type.cssafter Bulma for extended tokens (typography, spacing, radius, semantic aliases). - Use Bulma's class-based modifiers for all styling — not custom CSS.
- Override
--bulma-*variables at the:rootlevel to retheme::root { --bulma-primary: hsl(250, 100%, 50%); --bulma-link: hsl(250, 100%, 50%); }
- Reference
preview/*.htmlfor component patterns and token usage examples.
Override Bulma's base variables before loading the CSS to change the entire palette:
:root {
--bulma-primary: hsl(250, 100%, 50%);
--bulma-link: hsl(250, 100%, 50%);
}All downstream tokens (--accent, --bg, --surface, --fg, --muted, --border) and component states follow automatically (Source: colors_and_type.css semantic alias tokens that reference var(--bulma-*)).
Follow the hierarchy proven from Bulma's architecture:
Pages → composed from Sections
Sections → composed from Components
Components → composed from Bulma primitives (.button, .card, .columns, etc.)
(Source: context/source-context.md §Component Composition.)
- Theme-derived colors: Every color is a CSS custom property; retheme by overriding variables (source: Bulma
colors_and_type.css:rootblock). - No hardcoded downstream values: Components use
var(--bulma-*), never write hex/HSL inline (source: Zero hardcoded colors rule derived from Bulma's CSS custom property architecture). - Class-driven composition: Bulma modifiers replace custom CSS for all component styling (source: Bulma's core architecture in
bulma.css). - Semantic color states: Primary, info, success, warning, danger for all interactive elements (source: Bulma semantic modifier system).
- Responsive by default: Mobile-first column system with breakpoint prefixes (source: Bulma grid documentation).
- Accessible foundations: Visible focus states, ARIA labels, semantic HTML,
prefers-reduced-motion(source: Bulma component accessibility patterns). - Pure CSS, no JS runtime: Interactivity via CSS selectors, not JavaScript (source: Bulma's zero-JavaScript architecture).
- ❌ Hardcoding hex/HSL values when tokens exist (source: Zero hardcoded colors rule).
- ❌ Using
style="color: #fff"instead ofstyle="color: var(--bulma-white);"(source: Theme-driven colors rule). - ❌ Using
style="background: hsl(171, 100%, 41%)"instead ofstyle="background: var(--bulma-primary);"(source: Theme-driven colors rule). - ❌ Using Bulma color utility classes like
has-text-white,has-text-black,has-background-white,has-background-black, etc. — these hardcode specific color names that don't adapt when the theme is overridden. - ❌ Mixing frameworks (e.g., Bootstrap + Bulma) (source:
context/source-context.mdstyling rules). - ❌ Skipping form labels or ARIA attributes (source: Bulma form and accessibility documentation).
- ❌ Overriding Bulma variables without documenting the retheme (source: Bulma retheming architecture).
- ❌ Writing custom CSS when a Bulma class already covers the need (source: Bulma class-based modifier architecture).
- ❌ Using JavaScript for interactions Bulma handles with CSS selectors (source: Bulma's zero-JS architecture).