Skip to component content

Align headings, labels, and body copy with Bootstrap's utility-first text semantics and Moo UI tokenized roles.

Build with character

Readable portals feel calm

"Whitespace has a job"

Usage

Use semantic headings, paragraphs, lists, and Bootstrap text utilities to keep document structure and visual hierarchy working together. Choose the HTML element first, then apply the typography role or utility that matches the visual level the interface needs.

Keep heading levels meaningful for screen readers, search indexing, and in-page navigation. Use muted text for supporting copy, section labels for small categorical context, and display sizes only when a heading needs more presence than the surrounding content hierarchy.

Use utility classes when the visual size must differ from the HTML element, such as a paragraph styled as a heading inside a compact card. Keep body copy readable, avoid decorative over-scaling in dense app screens, and let whitespace separate ideas instead of adding extra frames.

Headings

Map semantic intent to the heading roles first, then use utility classes when visual level and HTML level need to differ.

Typography

Product Console

Operations playbook

Incident summary

<div class="d-grid gap-3">
  <h1 class="fw-semibold">Product Console</h1>
  <h2 class="h3">Operations playbook</h2>
  <h2 class="h4">Incident summary</h2>
</div>

Semantic headings

Keep the document outline meaningful when screen readers and search indexing are reading this content.

Typography

h1. Team roadmap

h2. Sprint planning

h3. Release checklist

h4. Ticket priorities

h5. Deployment notes
h6. Open action items
<div class="d-grid gap-2">
  <h1 class="mb-0">h1. Team roadmap</h1>
  <h2 class="mb-0">h2. Sprint planning</h2>
  <h3 class="mb-0">h3. Release checklist</h3>
  <h4 class="mb-0">h4. Ticket priorities</h4>
  <h5 class="mb-0">h5. Deployment notes</h5>
  <h6 class="mb-0">h6. Open action items</h6>
</div>

Heading utilities

Use heading utility classes when the visual style must stay large but the document structure should stay compact.

Typography

h1. Dashboard view

h2. Usage analytics

h3. Team activity

h4. API usage

h5. Integration status

h6. Audit log

<div class="d-grid gap-2">
  <p class="h1 mb-0">h1. Dashboard view</p>
  <p class="h2 mb-0">h2. Usage analytics</p>
  <p class="h3 mb-0">h3. Team activity</p>
  <p class="h4 mb-0">h4. API usage</p>
  <p class="h5 mb-0">h5. Integration status</p>
  <p class="h6 mb-0">h6. Audit log</p>
</div>

Customizing headings

Use small.text-body-secondary for contextual metadata that should stay subordinate to the heading.

Typography

Maintenance window Planned 02:00–03:00 UTC

<h3 class="mb-0">
  Maintenance window <small class="text-body-secondary">Planned 02:00–03:00 UTC</small>
</h3>

Display headings

Use display-1 through display-6 when a heading needs more visual presence than the surrounding content hierarchy.

Typography

Display 1 · Uptime

Display 2 · Capacity

Display 3 · Releases

Display 4 · Delivery

Display 5 · Quality

Display 6 · Legible

<div class="d-grid gap-2">
  <h1 class="display-1 mb-0">Display 1 · Uptime</h1>
  <h1 class="display-2 mb-0">Display 2 · Capacity</h1>
  <h1 class="display-3 mb-0">Display 3 · Releases</h1>
  <h1 class="display-4 mb-0">Display 4 · Delivery</h1>
  <h1 class="display-5 mb-0">Display 5 · Quality</h1>
  <h1 class="display-6 mb-0">Display 6 · Legible</h1>
</div>

Supporting text

Use lead, secondary, and label roles to show hierarchy without inventing one-off text styles for each page.

Typography

Track status, ownership, and escalation points from one shared index.

Muted text fits status chips and non-blocking helper notes. Section label
<div class="d-grid gap-3">
  <p class="moo-page-description text-body-secondary mb-0">Track status, ownership, and escalation points from one shared index.</p>
  <span class="text-body-secondary">Muted text fits status chips and non-blocking helper notes.</span>
  <span class="small fw-semibold">Section label</span>
</div>

Lead

Add lead when an introductory paragraph needs more visual weight than ordinary body copy.

Typography

Lead copy is useful for a short onboarding message or migration note.

<p class="lead mb-0">Lead copy is useful for a short onboarding message or migration note.</p>

Inline text elements

Use semantic inline elements for their meaning: mark highlights, del removes, ins adds, and strong/em convey emphasis.

Typography

Use mark to highlight text for reference.

This line is no longer accurate.

This line is no longer relevant.

This line was added to the document.

This line carries a non-textual annotation.

This is fine print and supporting detail.

This line carries strong importance.

This line carries emphasis.

<div class="d-grid gap-2">
  <p class="mb-0">
    Use <mark>mark</mark> to highlight text for reference.
  </p>
  <p class="mb-0">
    <del>This line is no longer accurate.</del>
  </p>
  <p class="mb-0">
    <s>This line is no longer relevant.</s>
  </p>
  <p class="mb-0">
    <ins>This line was added to the document.</ins>
  </p>
  <p class="mb-0">
    <u>This line carries a non-textual annotation.</u>
  </p>
  <p class="mb-0">
    <small>This is fine print and supporting detail.</small>
  </p>
  <p class="mb-0">
    <strong>This line carries strong importance.</strong>
  </p>
  <p class="mb-0">
    <em>This line carries emphasis.</em>
  </p>
</div>

Abbreviations

Add a title to abbr so an acronym has an accessible expanded meaning; initialism gives it a slightly smaller treatment.

Typography

HTML keeps its expanded meaning available on hover.

<p class="mb-0">
  <abbr title="HyperText Markup Language" class="initialism">HTML</abbr> keeps its expanded meaning available on hover.
</p>

Blockquotes

Wrap a quotation in blockquote and keep its attribution outside the quote with blockquote-footer and cite.

Typography

A calm interface makes the next action easier to find.

<figure class="mb-0">
  <blockquote class="blockquote mb-2">
    <p class="mb-0">A calm interface makes the next action easier to find.</p>
  </blockquote>
  <figcaption class="blockquote-footer mt-2 mb-0">
    A design principle in
    <cite title="Moo UI handbook">Moo UI handbook</cite>
  </figcaption>
</figure>

Blockquote alignment

Use text-center or text-end on the figure to align a quote and its attribution together.

Typography

A calm interface makes the next action easier to find.

A calm interface makes the next action easier to find.

<div class="d-grid gap-3 w-100">
  <figure class="text-center mb-0">
    <blockquote class="blockquote mb-2">
      <p class="mb-0">A calm interface makes the next action easier to find.</p>
    </blockquote>
    <figcaption class="blockquote-footer mt-2 mb-0">
      A design principle in
      <cite title="Moo UI handbook">Moo UI handbook</cite>
    </figcaption>
  </figure>
  <figure class="text-end mb-0">
    <blockquote class="blockquote mb-2">
      <p class="mb-0">A calm interface makes the next action easier to find.</p>
    </blockquote>
    <figcaption class="blockquote-footer mt-2 mb-0">
      A design principle in
      <cite title="Moo UI handbook">Moo UI handbook</cite>
    </figcaption>
  </figure>
</div>

Lists

Use list-unstyled for quiet lists, list-inline for compact rows, and the grid classes to align a description list.

Typography
  • Unstyled lists keep their structure without bullets.
  • The content remains a real list for assistive technology.
  • Inline item one
  • Inline item two
  • Inline item three
Term
A short definition aligned with the grid.
Another term
Another definition in the same rhythm.
<div class="d-grid gap-3 w-100">
  <ul class="list-unstyled mb-0">
    <li>Unstyled lists keep their structure without bullets.</li>
    <li>The content remains a real list for assistive technology.</li>
  </ul>
  <ul class="list-inline mb-0">
    <li class="list-inline-item">Inline item one</li>
    <li class="list-inline-item">Inline item two</li>
    <li class="list-inline-item">Inline item three</li>
  </ul>
  <dl class="row mb-0">
    <dt class="col-sm-3">Term</dt>
    <dd class="col-sm-9">A short definition aligned with the grid.</dd>
    <dt class="col-sm-3">Another term</dt>
    <dd class="col-sm-9 mb-0">Another definition in the same rhythm.</dd>
  </dl>
</div>

Alignment

Use text-start, text-center, and text-end to align text without a custom selector.

Typography

Start-aligned text follows the reading direction.

Center-aligned text suits short, focused labels.

End-aligned text closes the row cleanly.

<div class="d-grid gap-2 w-100">
  <p class="text-start mb-0">Start-aligned text follows the reading direction.</p>
  <p class="text-center mb-0">Center-aligned text suits short, focused labels.</p>
  <p class="text-end mb-0">End-aligned text closes the row cleanly.</p>
</div>

Transform

Use text-lowercase, text-uppercase, or text-capitalize when the displayed casing is part of the content treatment.

Typography

QUIET SYSTEM STATUS

quiet system status

quiet system status

<div class="d-grid gap-2">
  <p class="text-lowercase mb-0">QUIET SYSTEM STATUS</p>
  <p class="text-uppercase mb-0">quiet system status</p>
  <p class="text-capitalize mb-0">quiet system status</p>
</div>

Size and emphasis

Use fs-* for font size and fw-*/fst-* for weight or italics; these utilities change treatment without replacing semantic elements.

Typography

A slightly larger supporting line.

A stronger label for an important state.

A quiet note that stays in the same hierarchy.

<div class="d-grid gap-2">
  <p class="fs-5 mb-0">A slightly larger supporting line.</p>
  <p class="fw-semibold mb-0">A stronger label for an important state.</p>
  <p class="fst-italic mb-0">A quiet note that stays in the same hierarchy.</p>
</div>

Line height

Use lh-1, lh-base, or lh-lg when text density needs to change without a custom line-height declaration.

Typography

Tight line-height keeps a compact label close together.

Base line-height keeps ordinary reading comfortable.

Large line-height gives a longer sentence more air.

<div class="d-grid gap-2">
  <p class="lh-1 mb-0">Tight line-height keeps a compact label close together.</p>
  <p class="lh-base mb-0">Base line-height keeps ordinary reading comfortable.</p>
  <p class="lh-lg mb-0">Large line-height gives a longer sentence more air.</p>
</div>

Text decoration

Use text-decoration-underline or text-decoration-line-through when the decoration communicates the text state.

Typography

Underline a policy reference before users confirm action.

Strike through an obsolete process step that was revised.

<div class="d-grid gap-2">
  <p class="text-decoration-underline mb-0">Underline a policy reference before users confirm action.</p>
  <p class="text-decoration-line-through mb-0">Strike through an obsolete process step that was revised.</p>
</div>

Monospace

Apply font-monospace to identifiers and terminal-like values when a fixed-width face improves scanning.

Typography

npm run lint --workspace=ui

<p class="font-monospace mb-0">npm run lint --workspace=ui</p>

Inline code

Wrap public classes, attributes, and contracts in <code> so technical names stay distinct inside prose.

Typography

Use npm run format for local CI-aligned formatting.

<p class="mb-0">
  Use <code>npm run format</code> for local CI-aligned formatting.
</p>

RTL

RTL

إرشادات التدقيق اليومي

يبدأ كل يوم بفحص واضح للمؤشرات المفتاحية وسلامة عملية الإبلاغ.

تم تحديث الملخص في توقيت UTC 07:00، ويمكن مراجعة البنود المفتوحة بنفس التسلسل.

  • تحقق من حالة الخدمة، وخطة الاسترجاع، ومسؤولية النشر.
  • سجل قرارات الحوكمة قبل اعتماد أي تغيير إضافي.
<div dir="rtl" class="d-grid gap-3">
  <h2 class="h3">إرشادات التدقيق اليومي</h2>
  <p class="lead mb-0">يبدأ كل يوم بفحص واضح للمؤشرات المفتاحية وسلامة عملية الإبلاغ.</p>
  <p class="mb-0 text-body-secondary">
    تم تحديث الملخص في توقيت <strong>UTC 07:00</strong>، ويمكن مراجعة البنود المفتوحة بنفس التسلسل.
  </p>
  <ul class="list-unstyled mb-0">
    <li>تحقق من حالة الخدمة، وخطة الاسترجاع، ومسؤولية النشر.</li>
    <li>سجل قرارات الحوكمة قبل اعتماد أي تغيير إضافي.</li>
  </ul>
</div>

הנחיות ביקורת יומית

כל יום מתחיל בסקירה ברורה של מדדי מפתח ובטיחות תהליך הדיווח.

עדכון תקציר ב־UTC 07:00; פתיחת פריטים בהלימה קבועה.

  • בדוק סטטוס שירות, תוכנית שחזור, ואחריות פריסה.
  • תעד החלטות ממשל לפני אימות שינוי נוסף.
<div dir="rtl" class="d-grid gap-3">
  <h2 class="h3">הנחיות ביקורת יומית</h2>
  <p class="lead mb-0">כל יום מתחיל בסקירה ברורה של מדדי מפתח ובטיחות תהליך הדיווח.</p>
  <p class="mb-0 text-body-secondary">
    עדכון תקציר ב־<strong>UTC 07:00</strong>; פתיחת פריטים בהלימה קבועה.
  </p>
  <ul class="list-unstyled mb-0">
    <li>בדוק סטטוס שירות, תוכנית שחזור, ואחריות פריסה.</li>
    <li>תעד החלטות ממשל לפני אימות שינוי נוסף.</li>
  </ul>
</div>

Daily audit checklist

Every shift begins with a clear review of key signals and reporting safety.

The summary refreshes at UTC 07:00, then open items are reviewed in order.

  • Confirm service status, recovery plan, and deployment owner.
  • Log governance decisions before any additional rollout.
<div dir="ltr" class="d-grid gap-3">
  <h2 class="h3">Daily audit checklist</h2>
  <p class="lead mb-0">Every shift begins with a clear review of key signals and reporting safety.</p>
  <p class="mb-0 text-body-secondary">
    The summary refreshes at <strong>UTC 07:00</strong>, then open items are reviewed in order.
  </p>
  <ul class="list-unstyled mb-0">
    <li>Confirm service status, recovery plan, and deployment owner.</li>
    <li>Log governance decisions before any additional rollout.</li>
  </ul>
</div>

Component reference

Status
Accepted
Runtime
native HTML/CSS
Markup
Bootstrap/native HTML
Reference

For more text patterns, see the Bootstrap Text utilities documentation.

Settings

Theme
Choose how Moo UI looks on this device.
Sidebar
Choose how the sidebar sits on the page.
Theme Builder
Tune catalog tokens and chart colors for this browser.
Base color
Theme color
Chart color
Heading font
Body font
Radius
Direction
Choose the reading direction. RTL flips the layout live.
Reset

Restore the default appearance.