Heading Components

Page header components used across the Wave app. Includes the legacy Heading.vue (100+ usages) and the newer SkrHeading.vue (98 files).

components/Heading.vue — Page header with title, subtitle, hints, and action slot. Grid layout with title/subtitle on the left and an optional action slot on the right.

PropTypeDescription
titleStringMain heading text (renders as h1)
subtitleStringSubtitle below the title
hintTitleStringBold hint label
hintTextStringHint description text
centerBooleanCenter-align the heading
paddedBooleanAdd lateral padding (used in profile pages)
truncatedBooleanTruncate long titles with ellipsis
defaultPaddingBooleanAdd bottom padding (default: true)
title + subtitle

Page Title

This is a subtitle that describes the page content.

Heading with hintTitle and hintText props for additional context.

title + subtitle + hintTitle + hintText

With Hint

Subtitle text here.

Important:

This is a helpful hint for the user.

The default slot places content (usually a button) in the top-right grid cell.

title + subtitle + default slot (button)

With Action Button

This heading has a button in the slot.

Using the center prop for centered layouts (e.g. signup, error pages).

center + title + subtitle

Centered Heading

Centered layout variant.

SkrHeading

components/SkrHeading.vue — Typography heading component with 3 levels. Used in 98 files. Renders as semantic HTML (h1/h2/h3) or a styled div.

PropTypeDescription
level'1' | '2' | '3'Heading size level (required)
semanticBooleanRender as h1/h2/h3 instead of div
dataCyStringTest selector attribute

The three heading levels with their default font sizes.

level="1" semantic

Profile Settings

level="2"
Complete your registration
level="3"
Section subtitle

With semantic, the component renders proper heading elements (<h1>, <h2>, <h3>). Without it, renders as a styled <div>. Both look identical — the difference is in the HTML output for accessibility.

semantic (renders <h1>)

Dashboard

HTML: <h1 class="heading1">Dashboard</h1>

non-semantic (renders <div>)
Dashboard

HTML: <div class="heading1">Dashboard</div>

Common patterns found across the codebase.

Page title + subtitle (most common, ~50 pages)

Members

Manage team members and their permissions.
Overlay heading with data-cy

Signing Complete

Your document has been signed successfully.
Centered layout (welcome, error, signup pages)

Welcome to Skribble

Complete your registration to get started.
Rich slot content (links, line breaks, bold text)

We'll be right back

Skribble is currently under maintenance.

Check our status page for updates.
Slot with bold emphasis

Delete Account

Are you sure you want to delete your account?

This action cannot be undone.
Level 2 with custom class (mt-9, text-pre-wrap)

Document Signed

The document has been signed by all parties. It is now available for download.
All three levels together

Heading Level 1

Heading Level 2

Heading Level 3