Boostlook Style Guide

Comprehensive reference of every design token and component in the Boostlook design system.

Color Primitives

Primary

0
#ffffff
50
#f5f6f8
100
#e4e7ea
150
#d5d7d9
200
#c7cccf
300
#afb3b6
400
#949a9e
500
#798086
600
#62676b
700
#494d50
800
#393b3f
850
#2a2c30
900
#18191b
950
#0d0e0f

Brand Orange

50
#fbf2e6
100
#ffeaca
200
#ffd897
300
#ffc364
400
#ffb030
500
#ff9f00
600
#cd7e00
700
#9b5f00
800
#694000
900
#352000
950
#1e1200

Secondary

0
#f6fafd
25
#ebf4f9
50
#daeef9
100
#c2e2f4
200
#92cbe9
300
#62b3dd
400
#329cd2
500
#0284c7
600
#026a9f
700
#014f77
800
#013550
850
#01283c
900
#001a28
950
#000d14

Positive

0
#f8fefb
50
#f0fef7
100
#def7eb
200
#bdeed6
300
#9ce6c2
400
#7bddad
500
#5ad599
600
#48ac7b
700
#36825d
800
#255940
850
#1c4431
900
#132f22
950
#0a1b13

Negative

50
#fdf1f3
100
#ffe6ea
200
#ffcad2
300
#fe9aab
400
#f9677f
500
#eb3856
600
#bc233c
700
#8d1529
800
#600d1b
900
#39070f
950
#1d0408

Warning

0
rgba(255,248,243,.5)
50
#fff8f3
100
#ffefe2
200
#ffd4b3
300
#feb780
400
#ff9442
500
#fd760f
600
#c25909
700
#914104
800
#5d2a02
900
#341700
950
#1f0e01

Syntax Colors

Strong (light mode)

blue
#1345E8
green
#289D30
yellow
#A3A38C
pink
#D31FA7
grey
#9E9E9E

Weak (dark mode)

blue
#38DDFF
green
#72FE92
yellow
#FFF173
pink
#F358C0
grey
#A3A3A3

Accent Colors

Weak

teal
#C9F2EE
yellow
#F8EBA9
green
#E4E4C0

Strong

teal
#64DACE
yellow
#F5D039
green
#CACA62

Error Colors

weak
#FDF2F2
mid
#FF3B30
strong
#D32F2F

Semantic Color Tokens

These tokens map primitives to semantic roles. They automatically switch between light and dark themes.

Text

TokenSwatch
--text-main-text-primary
--text-main-text-body-primary
--text-main-text-body-secondary
--text-main-text-body-tetriary
--text-main-text-body-quaternary
--text-main-text-link-blue
--text-main-text-link-blue-secondary

Surface / Background

TokenSwatch
--surface-background-main-base-primary
--surface-background-main-surface-primary
--surface-background-main-surface-secondary
--surface-background-main-surface-tetriary
--surface-background-main-surface-blue-primary
--surface-background-main-surface-blue-secondary
--surface-background-main-surface-blue-tetriary
--surface-weak

Border

TokenSwatch
--border-border-primary
--border-border-secondary
--border-border-tetriary
--border-border-quaternary
--border-border-active
--border-border-blue
--border-border-positive
--border-border-negative
--border-border-warning
--stroke-weak

State Colors

TokenSwatch
--text-states-text-positive
--text-states-text-negative
--text-states-text-warning
--text-states-text-additional
--text-states-text-error-strong
--text-states-text-error-mid

Code Syntax Tokens

TokenSwatchUse
--text-code-blueKeywords
--text-code-greenStrings, functions
--text-code-yellowNumbers, comments
--text-code-pinkPreprocessor
--text-code-greyComments
--text-code-redOperators
--text-code-purpleKeywords (alt)
--text-code-neutralDefault text
--text-code-navyClasses
--text-code-turquoiseConstants

Typography Scale

Font Size Scale

--typography-font-size-3xs The quick brown fox (0.625rem)
--typography-font-size-2xs The quick brown fox (0.75rem)
--typography-font-size-xs The quick brown fox (0.875rem)
--typography-font-size-sm The quick brown fox (1rem)
--typography-font-size-md The quick brown fox (1.125rem)
--typography-font-size-lg The quick brown fox (1.25rem)
--typography-font-size-xl The quick brown fox (1.5rem)
--typography-font-size-2xl The quick brown fox (1.75rem)
--typography-font-size-3xl The quick brown fox (2rem)
--typography-font-size-4xl The quick brown fox (2.5rem)
--typography-font-size-5xl The quick brown fox (3rem)

Heading Hierarchy

Heading sizes are responsive (mobile vs desktop). Resize the browser to see the shift.

h1 — --typography-font-size-h1
desktop: 2rem (3xl) / mobile: 1.75rem (2xl)
Heading 1
h2 — --typography-font-size-h2
desktop: 1.25rem (lg) / mobile: 1.25rem (lg)
Heading 2
h3 — --typography-font-size-h3
desktop: 1.125rem (md) / mobile: 1rem (sm)
Heading 3
h4 — --typography-font-size-h4
desktop: 1rem (sm) / mobile: 0.875rem (xs)
Heading 4
h5 — --font-size-xs
0.875rem
Heading 5
h6 — --font-size-2xs
0.75rem
Heading 6

Font Families

Noto Sans (body) — The quick brown fox jumps over the lazy dog. 0123456789

Noto Sans Italic — The quick brown fox jumps over the lazy dog. 0123456789

Monaspace Neon (code) — const x = fn(); // 0123456789

Monaspace Xenon (code italic) — // This is a comment

Font Weight Variations

Light (300) — The quick brown fox jumps over the lazy dog.

Regular (400) — The quick brown fox jumps over the lazy dog.

Medium (500) — The quick brown fox jumps over the lazy dog.

Semibold (600) — The quick brown fox jumps over the lazy dog.

Bold (700) — The quick brown fox jumps over the lazy dog.


Spacing & Sizing Scale

Responsive Spacing (Figma Tokens)

These tokens are responsive (mobile → desktop). Resize the browser to see the shift.

--spacing-xs
2px / 2px
--spacing-s
4px / 4px
--spacing-default
6px → 8px
--spacing-medium
8px → 12px
--spacing-large
16px → 24px
--spacing-xl
20px → 32px
--spacing-xxl
48px → 60px
--spacing-avatar
40px → 48px

Primitive Spacing

--spacing-size-4xs
0.125rem / 2px
--spacing-size-3xs
0.25rem / 4px
--spacing-size-2xs
0.5rem / 8px
--spacing-size-xs
0.75rem / 12px
--spacing-size-sm
1rem / 16px
--spacing-size-md
1.125rem / 18px
--spacing-size-lg
1.5rem / 24px
--spacing-size-xl
2rem / 32px
--spacing-size-2xl
2.5rem / 40px
--spacing-size-3xl
3rem / 48px

Corner Radius Scale

Primitive Radii

xs
0.125rem
s
0.25rem
m
0.375rem
l
0.5rem
xl
0.75rem
xxl
1rem

Responsive Radii (mobile → desktop)

--radius-xs
--radius-s
--radius-m
--radius-l
--radius-xl
--radius-xxl

Headings

All six heading levels as they appear in documentation pages.

Heading Level 1

Heading Level 2

Heading Level 3

Heading Level 4

Heading Level 5
Heading Level 6

Paragraphs & Text

This is a standard paragraph of body text. It demonstrates the default font size, line height, and color used across all documentation pages. Good typography makes technical content easier to read and understand.

This paragraph contains bold text, italic text, and bold italic text. It also includes inline code for referencing identifiers like std::vector<int> or function names like co_await within prose.

A shorter paragraph to show spacing between consecutive blocks of text.


An internal link to another page in this documentation set.

An external link to Boost.org that opens in a new tab.

A same-page anchor link back to the Headings section above.


Lists

Unordered List

  • First item in the list

  • Second item with bold and inline code

  • Third item with a nested list:

    • Nested item A

    • Nested item B

    • Nested item C

  • Fourth item after the nested list

Ordered List

  1. Clone the repository

  2. Install dependencies

  3. Build the project:

    1. Run cmake -B build

    2. Run cmake --build build

  4. Run the tests


Code Blocks

highlight.js Code Block

A C++ code block with highlight.js markup:

#include <iostream>
#include <vector>
#include <algorithm>

namespace example {

template<typename T>
class container
{
public:
    /// Constructs an empty container
    container() = default;

    /// Adds an element to the back
    void push_back(const T& value)
    {
        data_.push_back(value);
    }

    /// Returns the number of elements
    [[nodiscard]] size_t size() const noexcept
    {
        return data_.size();
    }

private:
    std::vector<T> data_;
};

} // namespace example

int main()
{
    example::container<int> c;
    c.push_back(42);
    c.push_back(17);

    std::cout << "Size: " << c.size() << "\n";
    return 0;
}

cpp-highlight Code Block

Markup as produced by the cpp-highlight toolchain:

#include <boost/capy/capy.hpp>
#include <iostream>

namespace capy = boost::capy;

// A simple coroutine that returns an int
capy::task<int> compute(int x, int y)
{
    auto result = co_await capy::async_add(x, y);
    co_return result * 2;
}

int main()
{
    auto ctx = capy::make_context();
    auto val = ctx.run(compute(21, 21));
    std::cout << "Result: " << val << "\n";  // prints 84
    return 0;
}

Rouge-style Code Block

Markup as produced by the Rouge highlighter (Asciidoctor default):

#include <string>
#include <optional>

template<typename T>
class result
{
public:
    // Construct from a value
    explicit result(T value)
        : value_(std::move(value)) {}

    // Construct from an error string
    explicit result(std::string error)
        : error_(std::move(error)) {}

    bool has_value() const noexcept
    {
        return value_.has_value();
    }

private:
    std::optional<T> value_;
    std::string error_;
};

Inline Code

Use std::move() to transfer ownership. The type std::vector<int> is a dynamic array. Call container.size() to get the element count. The keyword co_await suspends a coroutine.

Short Snippet

task<int> compute_async(int x)
{
    auto result = co_await fetch_value(x);
    co_return result * 2;
}

Admonitions

This is a note admonition. Use it for supplementary information that adds context without being critical to the main flow.
This is a tip admonition. Use it for helpful suggestions, best practices, or shortcuts that improve the reader’s workflow.
This is a warning admonition. Use it when the reader might encounter unexpected behavior or potential pitfalls.
This is a caution admonition. Use it for actions that could cause data loss, security issues, or other serious consequences.
This is an important admonition. Use it for essential information that the reader must not overlook.

Tables

Name Type Default Description

buffer_size

std::size_t

4096

The size of the internal read buffer in bytes.

timeout

std::chrono::milliseconds

30000

Maximum time to wait for an operation to complete.

max_retries

int

3

Number of retry attempts before reporting failure.

verbose

bool

false

Enable detailed logging of internal operations.


Images & Captions

Placeholder diagram
Figure 1. Architecture diagram showing the relationship between core components

Dividers

Content above a horizontal rule.


Content below a horizontal rule. The <hr> element provides visual separation between sections.


Breadcrumbs

Breadcrumbs are visible in the toolbar above the page title. They show the navigation path: Home / Style Guide.


Page Controls

The prev/next pagination nav appears below, as it would at the bottom of any documentation page.