Headline
Headline - universal HTML tag (nice for SEO).
Headings give both your visitors and search engines important clues about the content’s hierarchy and relevancy.
It’s good to use only H1-H6 for important headings, but sometimes I want more things to be unified. That’s why I created this universal component.
Thanks to this, I can make a header that always looks the same, regardless of whether it is an H1 or a DIV or P.
Import
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="js"><code><span class="line"><span style="color:#F97583">import</span><span style="color:#E1E4E8"> Headline </span><span style="color:#F97583">from</span><span style="color:#9ECBFF"> 'spoko-design-system/src/components/Headline.vue'</span><span style="color:#E1E4E8">;</span></span></code></pre>
Props
|
as | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'div' | 'span' | 'span' | HTML element rendered as the headline container. |
class | string | '' | UnoCSS/Tailwind classes, including responsive variants (e.g. `text-2xl md:text-4xl`). |
fontFamily | 'head' | 'text' | 'novamono' | 'mono' | 'head' | Font family applied to the headline. |
fontWeight | 'light' | 'regular' | 'bold' | 'light-bold' | 'light-thin' | 'regular' | Font weight variant. |
underline | boolean | 'center' | false | `true` = left-aligned underline; `center` = centered underline. |
defaultSize | string | 'text-inherit' | Fallback font-size class when no `class` prop is provided. |
noFlexLayout | boolean | false | Disables the default flex layout (used for icon alignment). |
noMargin | boolean | false | Disables default `mb-2.5` bottom margin. |
noLeading | boolean | false | Disables default `leading-none` line height. |
HTML Attributes Support
The component supports all standard HTML attributes via v-bind="$attrs":
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="vue"><code><span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span></span>
<span class="line"><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h1"</span></span>
<span class="line"><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-4xl"</span></span>
<span class="line"><span style="color:#B392F0"> id</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"main-title"</span></span>
<span class="line"><span style="color:#B392F0"> data-section</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"hero"</span></span>
<span class="line"><span style="color:#B392F0"> aria-label</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"Main headline"</span></span>
<span class="line"><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Accessible Headline</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span></code></pre>
CSS Custom Properties
Customize underline colors using CSS variables:
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="css"><code><span class="line"><span style="color:#6A737D">/* Override underline colors globally */</span></span>
<span class="line"><span style="color:#B392F0">:root</span><span style="color:#E1E4E8"> {</span></span>
<span class="line"><span style="color:#FFAB70"> --headline-underline-accent</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">#0066cc</span><span style="color:#E1E4E8">; </span><span style="color:#6A737D">/* Main underline color */</span></span>
<span class="line"><span style="color:#FFAB70"> --headline-underline-base</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">#999999</span><span style="color:#E1E4E8">; </span><span style="color:#6A737D">/* Thin line color */</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D">/* Or scope to specific headlines */</span></span>
<span class="line"><span style="color:#B392F0">.custom-headline</span><span style="color:#E1E4E8"> {</span></span>
<span class="line"><span style="color:#FFAB70"> --headline-underline-accent</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">#ff6600</span><span style="color:#E1E4E8">;</span></span>
<span class="line"><span style="color:#FFAB70"> --headline-underline-base</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">#cccccc</span><span style="color:#E1E4E8">;</span></span>
<span class="line"><span style="color:#E1E4E8">}</span></span></code></pre>
Examples
Basic Usage
Responsive Typography
Responsive Hero
Bold Responsive
Multi-breakpoint
Extra large screens
Font Families & Weights
Light Text
Bold Text
Nova Mono CodeMono Code
With Underline
Underlined Headline
Centered Underline
With Icons
Code Examples
Basic Usage
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="vue"><code><span class="line"><span style="color:#6A737D"><!-- Simple headline with defaults (inherits font size) --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h1"</span><span style="color:#E1E4E8">>Default Headline</</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"><!-- With explicit size --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h1"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-xl"</span><span style="color:#E1E4E8">>Regular Headline</</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"><!-- Font family and weight --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h2"</span><span style="color:#B392F0"> font-weight</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"light"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-lg"</span><span style="color:#E1E4E8">>Light Headline</</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h3"</span><span style="color:#B392F0"> font-weight</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"bold"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-2xl"</span><span style="color:#E1E4E8">>Bold Headline</</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span></code></pre>
Responsive Typography
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="vue"><code><span class="line"><span style="color:#6A737D"><!-- Hero headline - small on mobile, large on desktop --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h1"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-2xl md:text-4xl lg:text-6xl"</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Responsive Hero</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"><!-- Progressive scaling across all breakpoints --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h2"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-base sm:text-lg md:text-xl lg:text-2xl xl:text-3xl"</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Multi-breakpoint Headline</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"><!-- Extra large screens support --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h2"</span><span style="color:#B392F0"> font-weight</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"light-bold"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-lg md:text-2xl lg:text-4xl 3xl:text-6xl"</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Scales up to 3xl breakpoint</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span></code></pre>
Font Families
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="vue"><code><span class="line"><span style="color:#6A737D"><!-- Heading font (default) --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h1"</span><span style="color:#B392F0"> font-weight</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"regular"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-xl"</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Regular Headline</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"><!-- Text font for body content --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"p"</span><span style="color:#B392F0"> font-family</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text"</span><span style="color:#B392F0"> font-weight</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"light"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-base"</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Light Text Content</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"><!-- Monospace fonts --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"code"</span><span style="color:#B392F0"> font-family</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"novamono"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-sm"</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Nova Mono Code</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"code"</span><span style="color:#B392F0"> font-family</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"mono"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-sm"</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Mono Code</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span></code></pre>
With Underline
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="vue"><code><span class="line"><span style="color:#6A737D"><!-- Left-aligned underline --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h2"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-3xl"</span><span style="color:#B392F0"> underline</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Underlined Headline</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"><!-- Centered underline with responsive sizing --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h2"</span><span style="color:#B392F0"> font-weight</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"bold"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-2xl md:text-4xl"</span><span style="color:#B392F0"> underline</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"center"</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Centered Underline</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span></code></pre>
With Icons
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="vue"><code><span class="line"><span style="color:#6A737D"><!-- Icon with responsive sizing --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h1"</span><span style="color:#B392F0"> font-weight</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"light-bold"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-xl md:text-3xl lg:text-5xl"</span><span style="color:#B392F0"> underline</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> <Icon name="ph:cat-thin" class="inline-block mr-4" /></span></span>
<span class="line"><span style="color:#E1E4E8"> Complete Example</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"><!-- Simple icon headline --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h3"</span><span style="color:#B392F0"> font-weight</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"bold"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-2xl"</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> <Icon name="ph:cat-thin" class="inline-block mr-4" /></span></span>
<span class="line"><span style="color:#E1E4E8"> Headline with Icon</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span></code></pre>
Custom Styling
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="vue"><code><span class="line"><span style="color:#6A737D"><!-- Combine with any UnoCSS/Tailwind utilities --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h1"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-4xl md:text-6xl text-blue-600 dark:text-blue-400"</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Colored Headline</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"><!-- Responsive colors and sizes --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span></span>
<span class="line"><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h2"</span></span>
<span class="line"><span style="color:#B392F0"> font-weight</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"bold"</span></span>
<span class="line"><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-2xl md:text-4xl text-slate-700 md:text-blue-600"</span></span>
<span class="line"><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Responsive Color & Size</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span></code></pre>
Advanced Features
Remove Default Spacing
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="vue"><code><span class="line"><span style="color:#6A737D"><!-- No bottom margin --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h1"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-4xl"</span><span style="color:#B392F0"> no-margin</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Headline without margin</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"><!-- No line height adjustment --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h2"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-2xl"</span><span style="color:#B392F0"> no-leading</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Headline with normal line height</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"><!-- Remove both --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h3"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-xl"</span><span style="color:#B392F0"> no-margin</span><span style="color:#B392F0"> no-leading</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Fully custom spacing</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span></code></pre>
Disable Flex Layout
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="vue"><code><span class="line"><span style="color:#6A737D"><!-- By default, headlines without underline use flex layout for icon alignment --></span></span>
<span class="line"><span style="color:#6A737D"><!-- Disable it with noFlexLayout --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h2"</span><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-2xl"</span><span style="color:#B392F0"> no-flex-layout</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Block-level headline</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span></code></pre>
Custom Underline Colors
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="vue"><code><span class="line"><span style="color:#6A737D"><!-- In your component or style tag --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">style</span><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#B392F0"> .custom-underline-headline</span><span style="color:#E1E4E8"> {</span></span>
<span class="line"><span style="color:#FFAB70"> --headline-underline-accent</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">#ff6600</span><span style="color:#E1E4E8">;</span></span>
<span class="line"><span style="color:#FFAB70"> --headline-underline-base</span><span style="color:#E1E4E8">: </span><span style="color:#79B8FF">#cccccc</span><span style="color:#E1E4E8">;</span></span>
<span class="line"><span style="color:#E1E4E8"> }</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">style</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span></span>
<span class="line"><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h1"</span></span>
<span class="line"><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-4xl custom-underline-headline"</span></span>
<span class="line"><span style="color:#B392F0"> underline</span></span>
<span class="line"><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Custom colored underline</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span></code></pre>
Accessibility Features
<pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-language="vue"><code><span class="line"><span style="color:#6A737D"><!-- Add ARIA attributes for screen readers --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span></span>
<span class="line"><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h1"</span></span>
<span class="line"><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-4xl"</span></span>
<span class="line"><span style="color:#B392F0"> id</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"page-title"</span></span>
<span class="line"><span style="color:#B392F0"> role</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"heading"</span></span>
<span class="line"><span style="color:#B392F0"> aria-level</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"1"</span></span>
<span class="line"><span style="color:#B392F0"> aria-label</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"Welcome to our website"</span></span>
<span class="line"><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Welcome</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A737D"><!-- Add data attributes for tracking or testing --></span></span>
<span class="line"><span style="color:#E1E4E8"><</span><span style="color:#85E89D">Headline</span></span>
<span class="line"><span style="color:#B392F0"> as</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"h2"</span></span>
<span class="line"><span style="color:#B392F0"> class</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"text-2xl"</span></span>
<span class="line"><span style="color:#B392F0"> data-testid</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"section-heading"</span></span>
<span class="line"><span style="color:#B392F0"> data-analytics</span><span style="color:#E1E4E8">=</span><span style="color:#9ECBFF">"hero-title"</span></span>
<span class="line"><span style="color:#E1E4E8">></span></span>
<span class="line"><span style="color:#E1E4E8"> Section Title</span></span>
<span class="line"><span style="color:#E1E4E8"></</span><span style="color:#85E89D">Headline</span><span style="color:#E1E4E8">></span></span></code></pre>