Pricing with three tiers
A comparison section built from the Plan card, Table and Button components.
Samla / Frontend framework and design system
Samla provides reusable foundations, components, sections and patterns for high-quality marketing websites. Every new site starts from a system that has already been thought through.
Specimen
Form controls
We only use this to send release notes.
Enter a full address, including https://
Tags and status
Card
A comparison section built from the Plan card, Table and Button components.
Sections use space-10 on desktop and space-9 on mobile.
Principles
Typography, spacing, grids and hierarchy carry the design. Visual quality comes from precise decisions, with nothing added to compensate for weak structure.
Predominantly static HTML with minimal JavaScript. Every page is set up for strong Core Web Vitals and technically sound SEO from the first commit.
A coherent architecture in which each layer is assembled from the one beneath it, so a change to a token travels all the way to a template.
Foundations → Primitives → Components → Sections → Patterns → Templates
Predictable conventions make Samla straightforward for developers and coding agents to understand, use and extend.
<section class="section" data-surface="brand">
<a class="button" data-variant="primary">
/* classes say what it is, attributes say how it varies */
Components
Landscape architecture
Public spaces designed to be used, and to last.
A small studio working with councils and developers on parks, streets and squares.
Trusted by
Yes. Samla ships with a neutral palette. Replace the brand and surface tokens and every component follows, from buttons to full templates.
No. Pages render as static HTML. Interactive components add small, isolated scripts only where they are needed.
Consistent naming, documented contracts and a strict layer hierarchy give agents a clear set of rules to follow, so generated pages stay on-system.
Any. The reference implementation is plain HTML, CSS and vanilla JavaScript. Astro, Statamic, WordPress or React implementations keep the same class names, variants and contracts.
Notes on proportion, measure and the columns underneath this site.
How it works
Three steps from brief to a live site.
Code
Excerpts from this repository
<section class="hero" data-layout="text">
<div class="hero__inner container">
<p class="hero__eyebrow">Landscape architecture</p>
<h1 class="hero__title text-display">Public spaces…</h1>
<div class="hero__actions button-group">
<a class="button" href="/projects">View projects</a>
<a class="button" data-variant="secondary" href="/about">About</a>
</div>
</div>
</section>
<section class="section" data-surface="alternate">
<!-- section-header, then a grid of features -->
</section>
<section class="section" data-surface="brand">
<!-- cta: "Start a project" -->
</section>
/* data-variant: primary | secondary | text */
/* data-size: default (48) | small (44) */
.button {
min-height: var(--control-height);
padding: 0 1.375rem;
border-radius: var(--radius-1);
background-color: var(--action-bg);
color: var(--action-text);
transition: background-color var(--duration-fast) var(--ease-standard);
}
.button[data-variant="secondary"] {
background-color: transparent;
border-color: var(--action-border);
}
:root {
/* Colour */
--color-paper: #F7F6F2;
--color-ink: #121212;
--color-muted: #5C5B57;
--color-brand: #C4331A;
/* Type */
--font-sans: 'Instrument Sans', sans-serif;
--text-display: clamp(2.75rem, 1.2rem + 5vw, 5.75rem);
/* Space */
--space-5: 1.5rem;
--space-10: 8rem;
}
[data-surface="dark"] {
--surface-bg: var(--color-ink);
--surface-text: var(--color-on-dark);
--action-bg: var(--color-paper);
}
# Building with Samla
## Before anything else
- Check whether a primitive, component, section, pattern
or variant already solves the requirement.
## Composition
- Build pages from sections. Avoid one-off layout CSS.
- Use tokens for every colour, size and font.
- Every section accepts `data-surface`.
## Structure
- Choose heading levels from the outline. One `h1`.
- Choose size from the type scale: `text-section-heading`.
- Interactive components work without JavaScript first.
Documented contracts. Every component lists its content, variants and defaults.
Tokens only. Components never reference raw colours, sizes or fonts.
Plain-language rules. AGENTS.md explains how the system fits together.
Surfaces
Each surface is a small set of tokens. The markup inside all four panels below is identical.
Plan your next launch with confidence.
Sections, patterns and templates ready to compose.
Plan your next launch with confidence.
Sections, patterns and templates ready to compose.
Plan your next launch with confidence.
Sections, patterns and templates ready to compose.
Plan your next launch with confidence.
Sections, patterns and templates ready to compose.
Architecture
Tokens for colour, type, space, radius and motion.
Layout, buttons, links, forms, media, tags.
Cards, quotes, navigation, dialogs, carousels.
Complete page bands: heroes, splits, CTAs, logo rails.
Domain arrangements: listings, profiles, articles.
Full-page reference compositions.
Documentation
The documentation covers every layer, from tokens to templates, with guidance on accessibility, SEO and performance throughout.