lion-make 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/footer/Disclosure.d.ts +3 -2
- package/dist/components/footer/DisclosureToggleOpen.d.ts +13 -0
- package/dist/components/footer/LegalLinks.d.ts +16 -0
- package/dist/components/footer/LinksAndSocial.d.ts +25 -0
- package/dist/components/general/AccordionBlock.d.ts +15 -0
- package/dist/components/general/AllBlogsPostBlock.d.ts +21 -0
- package/dist/components/general/BackgroundColorBlock.d.ts +12 -0
- package/dist/components/general/BasicContentBlock.d.ts +18 -0
- package/dist/components/general/BodyTextCopyBlock.d.ts +12 -0
- package/dist/components/general/ContentImageBlock.d.ts +15 -0
- package/dist/components/general/CrossSellCardBlock.d.ts +18 -0
- package/dist/components/general/DecorativeListBlock.d.ts +13 -0
- package/dist/components/general/EmailCalloutBlock.d.ts +14 -0
- package/dist/components/general/EmbeddedVideoBlock.d.ts +15 -0
- package/dist/components/general/FullSizeImageWithHighlightBox.d.ts +21 -0
- package/dist/components/general/HorizontalRule.d.ts +13 -0
- package/dist/components/general/HotJobsBlock.d.ts +21 -0
- package/dist/components/general/InlineMessage.d.ts +14 -0
- package/dist/components/general/LastChanceBlock.d.ts +15 -0
- package/dist/components/general/MultiStepLeadForm.d.ts +19 -0
- package/dist/components/general/MultiTestimonial.d.ts +19 -0
- package/dist/components/general/OptIn.d.ts +16 -0
- package/dist/components/general/ProductBlock.d.ts +17 -0
- package/dist/components/general/PullQuote.d.ts +12 -0
- package/dist/components/general/RTBDescriptive.d.ts +18 -0
- package/dist/components/general/RTBDynamic.d.ts +21 -0
- package/dist/components/general/RTBHighlight.d.ts +18 -0
- package/dist/components/general/RecentBlogPostsBlock.d.ts +22 -0
- package/dist/components/general/ResourceSpotlight.d.ts +18 -0
- package/dist/components/general/SideMenuExplorer.d.ts +16 -0
- package/dist/components/general/SimpleCTABlock.d.ts +15 -0
- package/dist/components/general/SpacingBlock.d.ts +12 -0
- package/dist/components/general/SpeedBump.d.ts +16 -0
- package/dist/components/general/TableBlock.d.ts +13 -0
- package/dist/components/general/WAHFU.d.ts +15 -0
- package/dist/components/header/HeaderCTA.d.ts +9 -0
- package/dist/components/header/HeaderLogo.d.ts +10 -0
- package/dist/components/header/HeaderProduct.d.ts +10 -0
- package/dist/components/header/HeaderSectionNavigation.d.ts +12 -0
- package/dist/components/header/HeaderSectionTitle.d.ts +8 -0
- package/dist/components/header/HeaderUnderwriter.d.ts +9 -0
- package/dist/components/header/TopLevelNavigation.d.ts +13 -0
- package/dist/components/hero/CTAHeroBlock.d.ts +24 -0
- package/dist/components/hero/HeroBlock.d.ts +18 -0
- package/dist/components/hero/MultiHero.d.ts +25 -0
- package/dist/components/hero/NotAvailableHeroBlock.d.ts +22 -0
- package/dist/index.d.ts +92 -2
- package/dist/lion-make.js +1855 -545
- package/dist/lion-make.umd.cjs +10 -10
- package/guidelines/Guidelines.md +46 -50
- package/guidelines/composition/constraints.md +40 -8
- package/guidelines/composition/zones.md +49 -11
- package/guidelines/content-types/footer/anklet.md +62 -0
- package/guidelines/content-types/footer/compliance.md +49 -0
- package/guidelines/content-types/footer/disclaimers.md +48 -0
- package/guidelines/content-types/footer/disclosure-toggle-open.md +51 -0
- package/guidelines/content-types/footer/disclosures.md +50 -0
- package/guidelines/content-types/footer/legal-links.md +59 -0
- package/guidelines/content-types/footer/links-and-social.md +94 -0
- package/guidelines/content-types/footer/overview.md +73 -16
- package/guidelines/content-types/general/accordion-block.md +42 -0
- package/guidelines/content-types/general/all-blogs-post-block.md +52 -0
- package/guidelines/content-types/general/background-color-block.md +42 -0
- package/guidelines/content-types/general/basic-content-block.md +43 -0
- package/guidelines/content-types/general/body-text-copy-block.md +38 -0
- package/guidelines/content-types/general/content-image-block.md +37 -0
- package/guidelines/content-types/general/cross-sell-card-block.md +45 -0
- package/guidelines/content-types/general/decorative-list-block.md +40 -0
- package/guidelines/content-types/general/email-callout-block.md +38 -0
- package/guidelines/content-types/general/embedded-video-block.md +36 -0
- package/guidelines/content-types/general/full-size-image-with-highlight-box.md +52 -0
- package/guidelines/content-types/general/horizontal-rule.md +35 -0
- package/guidelines/content-types/general/hot-jobs-block.md +52 -0
- package/guidelines/content-types/general/inline-message.md +36 -0
- package/guidelines/content-types/general/last-chance-block.md +40 -0
- package/guidelines/content-types/general/multi-step-lead-form.md +60 -0
- package/guidelines/content-types/general/multi-testimonial.md +49 -0
- package/guidelines/content-types/general/opt-in.md +42 -0
- package/guidelines/content-types/general/overview.md +134 -24
- package/guidelines/content-types/general/product-block.md +43 -0
- package/guidelines/content-types/general/pull-quote.md +36 -0
- package/guidelines/content-types/general/recent-blog-posts-block.md +48 -0
- package/guidelines/content-types/general/resource-spotlight.md +44 -0
- package/guidelines/content-types/general/rtb-descriptive.md +53 -0
- package/guidelines/content-types/general/rtb-dynamic.md +55 -0
- package/guidelines/content-types/general/rtb-highlight.md +50 -0
- package/guidelines/content-types/general/side-menu-explorer.md +62 -0
- package/guidelines/content-types/general/simple-cta-block.md +44 -0
- package/guidelines/content-types/general/spacing-block.md +40 -0
- package/guidelines/content-types/general/speed-bump.md +45 -0
- package/guidelines/content-types/general/table-block.md +55 -0
- package/guidelines/content-types/general/wahfu.md +66 -0
- package/guidelines/content-types/header/header-cta.md +41 -0
- package/guidelines/content-types/header/header-logo.md +45 -0
- package/guidelines/content-types/header/header-product.md +45 -0
- package/guidelines/content-types/header/header-section-navigation.md +55 -0
- package/guidelines/content-types/header/header-section-title.md +43 -0
- package/guidelines/content-types/header/header-underwriter.md +46 -0
- package/guidelines/content-types/header/overview.md +61 -15
- package/guidelines/content-types/header/top-level-navigation.md +70 -0
- package/guidelines/content-types/hero/cta-hero-block.md +70 -0
- package/guidelines/content-types/hero/hero-block.md +56 -0
- package/guidelines/content-types/hero/multi-hero.md +78 -0
- package/guidelines/content-types/hero/not-available-hero-block.md +64 -0
- package/guidelines/content-types/hero/overview.md +53 -18
- package/guidelines/content-types/overview.md +86 -29
- package/guidelines/discovery.md +158 -0
- package/guidelines/setup.md +90 -16
- package/package.json +1 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Header — Top Level Navigation
|
|
2
|
+
|
|
3
|
+
**Zone:** Header only.
|
|
4
|
+
|
|
5
|
+
## Description
|
|
6
|
+
|
|
7
|
+
The global navigation menu — the primary wayfinding element across all pages. Renders as a horizontal link bar with optional dropdown sub-menus. Every page must include exactly one `TopLevelNavigation`.
|
|
8
|
+
|
|
9
|
+
Supports one level of dropdown children. Deeper nesting is not supported in Mondrian.
|
|
10
|
+
|
|
11
|
+
## Props
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Required | Default | Description |
|
|
14
|
+
|---|---|---|---|---|
|
|
15
|
+
| `items` | `TopLevelNavItem[]` | Yes | — | Top-level navigation links |
|
|
16
|
+
| `ariaLabel` | `string` | No | `'Main navigation'` | Accessible label for the `<nav>` element |
|
|
17
|
+
| `className` | `string` | No | — | Additional CSS class |
|
|
18
|
+
|
|
19
|
+
### TopLevelNavItem
|
|
20
|
+
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
|---|---|---|---|
|
|
23
|
+
| `label` | `string` | Yes | Link text |
|
|
24
|
+
| `href` | `string` | Yes | Destination URL |
|
|
25
|
+
| `isActive` | `boolean` | No | Marks the currently active section |
|
|
26
|
+
| `children` | `TopLevelNavItem[]` | No | Dropdown sub-items (max 8 recommended) |
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
import { Section, TopLevelNavigation } from 'lion-make'
|
|
32
|
+
|
|
33
|
+
<Section zone="header">
|
|
34
|
+
<TopLevelNavigation
|
|
35
|
+
items={[
|
|
36
|
+
{
|
|
37
|
+
label: 'Life Insurance',
|
|
38
|
+
href: '/life',
|
|
39
|
+
isActive: true,
|
|
40
|
+
children: [
|
|
41
|
+
{ label: 'Term Life', href: '/life/term' },
|
|
42
|
+
{ label: 'Whole Life', href: '/life/whole' },
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{ label: 'Medicare', href: '/medicare' },
|
|
46
|
+
{ label: 'Supplemental Health', href: '/supplemental' },
|
|
47
|
+
{ label: 'About us', href: '/about' },
|
|
48
|
+
]}
|
|
49
|
+
/>
|
|
50
|
+
</Section>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Placement Rules
|
|
54
|
+
|
|
55
|
+
- Header zone only. One per page.
|
|
56
|
+
- Sits inside `GlobalHeaderBar`, typically after `HeaderLogo` and before `HeaderCTA`.
|
|
57
|
+
- Dropdown children are shown on hover (desktop) or tap (mobile).
|
|
58
|
+
|
|
59
|
+
## Accessibility
|
|
60
|
+
|
|
61
|
+
- `<nav aria-label="Main navigation">` wrapper.
|
|
62
|
+
- Active item gets `aria-current="page"`.
|
|
63
|
+
- Items with children get `aria-haspopup="true"`.
|
|
64
|
+
|
|
65
|
+
## Design Tokens
|
|
66
|
+
|
|
67
|
+
- Link: `var(--h5-font-size)`, `var(--font-weight-400)`, `var(--color-white)`
|
|
68
|
+
- Active / hover link: `var(--font-weight-600)`, bottom border `var(--border-width-thick)` solid `var(--color-white)`
|
|
69
|
+
- Dropdown background: `var(--color-white)`
|
|
70
|
+
- Dropdown link: `var(--color-text)`, `var(--font-weight-400)`
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# CTA Hero Block
|
|
2
|
+
|
|
3
|
+
**Zone:** Hero only.
|
|
4
|
+
|
|
5
|
+
## Description
|
|
6
|
+
|
|
7
|
+
The primary conversion hero. Full-width with a prominent heading, optional subheading and body copy, up to two CTAs, and an optional image or background. This is the default hero for product DLPs and campaign landing pages where driving a conversion action (quote, apply, call) is the primary goal.
|
|
8
|
+
|
|
9
|
+
Use this when the hero needs to drive a user action. If the hero is purely informational (no CTA), use `HeroBlock` instead.
|
|
10
|
+
|
|
11
|
+
## Props
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Required | Default | Description |
|
|
14
|
+
|---|---|---|---|---|
|
|
15
|
+
| `heading` | `string` | Yes | — | Page `<h1>` — primary message |
|
|
16
|
+
| `subheading` | `string` | No | — | Secondary message line, lighter weight |
|
|
17
|
+
| `body` | `string` | No | — | Supporting copy (1–2 sentences max) |
|
|
18
|
+
| `ctas` | `CTAHeroBlockCTA[]` | No | `[]` | 1–2 CTAs; first is primary, second is secondary |
|
|
19
|
+
| `imageSrc` | `string` | No | — | Hero image URL |
|
|
20
|
+
| `imageAlt` | `string` | No | `''` | Image alt text |
|
|
21
|
+
| `layout` | `'full-bleed' \| 'split-right' \| 'split-left'` | No | `'split-right'` | Layout treatment |
|
|
22
|
+
| `backgroundSrc` | `string` | No | — | Background image URL (full-bleed only) |
|
|
23
|
+
| `legalText` | `string` | No | — | Small legal/disclaimer line below CTAs |
|
|
24
|
+
| `className` | `string` | No | — | Additional CSS class |
|
|
25
|
+
|
|
26
|
+
### CTAHeroBlockCTA
|
|
27
|
+
|
|
28
|
+
| Prop | Type | Required | Description |
|
|
29
|
+
|---|---|---|---|
|
|
30
|
+
| `label` | `string` | Yes | Button text |
|
|
31
|
+
| `href` | `string` | Yes | Destination URL |
|
|
32
|
+
| `variant` | `'primary' \| 'secondary'` | No | Button style (default: `'primary'`) |
|
|
33
|
+
|
|
34
|
+
## Layouts
|
|
35
|
+
|
|
36
|
+
| Layout | Description |
|
|
37
|
+
|---|---|
|
|
38
|
+
| `split-right` | Content left, image right (8+4 col on desktop) |
|
|
39
|
+
| `split-left` | Image left, content right (4+8 col on desktop) |
|
|
40
|
+
| `full-bleed` | Background image behind content, centered or left-aligned |
|
|
41
|
+
|
|
42
|
+
## Usage
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
import { Section, CTAHeroBlock } from 'lion-make'
|
|
46
|
+
|
|
47
|
+
<Section zone="hero">
|
|
48
|
+
<CTAHeroBlock
|
|
49
|
+
heading="Protect your family for less than a coffee a day"
|
|
50
|
+
subheading="Term life insurance that fits your budget and never raises your rate."
|
|
51
|
+
ctas={[
|
|
52
|
+
{ label: 'Get a free quote', href: '/quote', variant: 'primary' },
|
|
53
|
+
{ label: 'Learn how it works', href: '/term-life', variant: 'secondary' },
|
|
54
|
+
]}
|
|
55
|
+
imageSrc="/img/hero-family.jpg"
|
|
56
|
+
imageAlt="Family at home"
|
|
57
|
+
layout="split-right"
|
|
58
|
+
legalText="Rates based on a 35-year-old non-smoker in good health."
|
|
59
|
+
/>
|
|
60
|
+
</Section>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Design Tokens
|
|
64
|
+
|
|
65
|
+
- Background: `var(--color-brand)` or image
|
|
66
|
+
- Heading: `var(--h1-font-size)`, `var(--font-weight-700)`, `var(--color-white)`
|
|
67
|
+
- Subheading: `var(--h3-font-size)`, `var(--font-weight-300)`, `var(--color-white)`
|
|
68
|
+
- Primary CTA: `var(--color-white)` background, `var(--color-brand)` text
|
|
69
|
+
- Secondary CTA: transparent background, `var(--color-white)` border + text
|
|
70
|
+
- Legal text: `var(--h6-font-size)`, `var(--color-white-opaque)`
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Hero Block
|
|
2
|
+
|
|
3
|
+
**Zone:** Hero only.
|
|
4
|
+
|
|
5
|
+
## Description
|
|
6
|
+
|
|
7
|
+
The standard informational hero. Used when the hero zone carries context and orientation rather than a direct conversion action. Supports an eyebrow label, heading, subheading, body copy, and an optional image — but no CTA slots. If a CTA is needed, use `CTAHeroBlock` instead.
|
|
8
|
+
|
|
9
|
+
Typical use cases: section index pages, About pages, content hub headers, educational/resource pages.
|
|
10
|
+
|
|
11
|
+
## Props
|
|
12
|
+
|
|
13
|
+
| Prop | Type | Required | Default | Description |
|
|
14
|
+
|---|---|---|---|---|
|
|
15
|
+
| `heading` | `string` | Yes | — | Page `<h1>` |
|
|
16
|
+
| `subheading` | `string` | No | — | Supporting headline, lighter weight |
|
|
17
|
+
| `body` | `string` | No | — | Introductory paragraph |
|
|
18
|
+
| `eyebrow` | `string` | No | — | Small uppercase label above the heading (e.g., product category) |
|
|
19
|
+
| `imageSrc` | `string` | No | — | Hero image URL |
|
|
20
|
+
| `imageAlt` | `string` | No | `''` | Image alt text |
|
|
21
|
+
| `layout` | `'full-bleed' \| 'split-right' \| 'split-left' \| 'minimal'` | No | `'full-bleed'` | Layout treatment |
|
|
22
|
+
| `backgroundSrc` | `string` | No | — | Background image URL (full-bleed only) |
|
|
23
|
+
| `className` | `string` | No | — | Additional CSS class |
|
|
24
|
+
|
|
25
|
+
## Layouts
|
|
26
|
+
|
|
27
|
+
| Layout | Description |
|
|
28
|
+
|---|---|
|
|
29
|
+
| `full-bleed` | Background image or color fills the full hero width |
|
|
30
|
+
| `split-right` | Content left, image right |
|
|
31
|
+
| `split-left` | Image left, content right |
|
|
32
|
+
| `minimal` | Text only, no image; centered or left-aligned; typically shorter |
|
|
33
|
+
|
|
34
|
+
## Usage
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
import { Section, HeroBlock } from 'lion-make'
|
|
38
|
+
|
|
39
|
+
<Section zone="hero">
|
|
40
|
+
<HeroBlock
|
|
41
|
+
eyebrow="Life Insurance"
|
|
42
|
+
heading="Coverage built around your life"
|
|
43
|
+
subheading="Explore options for every stage — from starting a family to planning for retirement."
|
|
44
|
+
imageSrc="/img/hero-life.jpg"
|
|
45
|
+
imageAlt="Person reviewing documents"
|
|
46
|
+
layout="split-right"
|
|
47
|
+
/>
|
|
48
|
+
</Section>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Design Tokens
|
|
52
|
+
|
|
53
|
+
- Heading: `var(--h1-font-size)`, `var(--font-weight-700)`, `var(--color-white)` (or `var(--color-text)` on light backgrounds)
|
|
54
|
+
- Eyebrow: `var(--h6-font-size)`, `var(--font-weight-600)`, uppercase, `var(--color-teal)`
|
|
55
|
+
- Subheading: `var(--h3-font-size)`, `var(--font-weight-300)`
|
|
56
|
+
- Body: `var(--body-font-size)`, `var(--font-weight-400)`
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Multi Hero
|
|
2
|
+
|
|
3
|
+
**Zone:** Hero only.
|
|
4
|
+
|
|
5
|
+
## Description
|
|
6
|
+
|
|
7
|
+
A multi-panel hero that rotates or tabs between 2–5 content slides. Each panel is independently authored with its own heading, image, and optional CTA. Use when multiple products or campaigns need to share the hero zone on a hub page (e.g., a home page or insurance category index).
|
|
8
|
+
|
|
9
|
+
Auto-rotation is optional and disabled by default for accessibility. When enabled, panels must include sufficient contrast and the rotation must be user-pausable.
|
|
10
|
+
|
|
11
|
+
**Limit to hub/home pages.** On product DLPs, use `CTAHeroBlock` — a single focused message always outperforms a rotating hero for conversion.
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
| Prop | Type | Required | Default | Description |
|
|
16
|
+
|---|---|---|---|---|
|
|
17
|
+
| `panels` | `MultiHeroPanel[]` | Yes | — | Slide content (min 2, max 5 recommended) |
|
|
18
|
+
| `autoRotate` | `boolean` | No | `false` | Whether panels advance automatically |
|
|
19
|
+
| `rotateIntervalMs` | `number` | No | `5000` | Auto-rotation interval in milliseconds |
|
|
20
|
+
| `defaultActiveIndex` | `number` | No | `0` | Index of the panel shown on load |
|
|
21
|
+
| `showIndicators` | `boolean` | No | `true` | Dot indicators below the hero |
|
|
22
|
+
| `className` | `string` | No | — | Additional CSS class |
|
|
23
|
+
|
|
24
|
+
### MultiHeroPanel
|
|
25
|
+
|
|
26
|
+
| Prop | Type | Required | Description |
|
|
27
|
+
|---|---|---|---|
|
|
28
|
+
| `heading` | `string` | Yes | Panel `<h1>` |
|
|
29
|
+
| `subheading` | `string` | No | Supporting headline |
|
|
30
|
+
| `body` | `string` | No | Short paragraph |
|
|
31
|
+
| `imageSrc` | `string` | No | Panel image URL |
|
|
32
|
+
| `imageAlt` | `string` | No | Image alt text |
|
|
33
|
+
| `ctaLabel` | `string` | No | CTA button text |
|
|
34
|
+
| `ctaHref` | `string` | No | CTA destination |
|
|
35
|
+
| `id` | `string` | No | Unique ID for `aria-controls` |
|
|
36
|
+
|
|
37
|
+
## Usage
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
import { Section, MultiHero } from 'lion-make'
|
|
41
|
+
|
|
42
|
+
<Section zone="hero">
|
|
43
|
+
<MultiHero
|
|
44
|
+
autoRotate={false}
|
|
45
|
+
panels={[
|
|
46
|
+
{
|
|
47
|
+
heading: 'Life insurance made simple',
|
|
48
|
+
subheading: 'Affordable coverage, guaranteed rates.',
|
|
49
|
+
imageSrc: '/img/hero-life.jpg',
|
|
50
|
+
imageAlt: '',
|
|
51
|
+
ctaLabel: 'Get a quote',
|
|
52
|
+
ctaHref: '/life/quote',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
heading: 'Medicare coverage you can count on',
|
|
56
|
+
subheading: 'Supplement plans to fill the gaps.',
|
|
57
|
+
imageSrc: '/img/hero-medicare.jpg',
|
|
58
|
+
imageAlt: '',
|
|
59
|
+
ctaLabel: 'Explore plans',
|
|
60
|
+
ctaHref: '/medicare',
|
|
61
|
+
},
|
|
62
|
+
]}
|
|
63
|
+
/>
|
|
64
|
+
</Section>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Accessibility
|
|
68
|
+
|
|
69
|
+
- Each panel has `aria-hidden` when not active.
|
|
70
|
+
- Indicators use `role="tab"` + `aria-selected`.
|
|
71
|
+
- If `autoRotate` is `true`, a pause button must be provided (implement in the consuming app).
|
|
72
|
+
|
|
73
|
+
## Design Tokens
|
|
74
|
+
|
|
75
|
+
- Active indicator: `var(--color-brand)`
|
|
76
|
+
- Inactive indicator: `var(--color-line)`
|
|
77
|
+
- Panel heading: `var(--h1-font-size)`, `var(--font-weight-700)`, `var(--color-white)`
|
|
78
|
+
- Panel CTA: `var(--color-white)` background, `var(--color-brand)` text
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Not Available Hero Block
|
|
2
|
+
|
|
3
|
+
**Zone:** Hero only.
|
|
4
|
+
|
|
5
|
+
## Description
|
|
6
|
+
|
|
7
|
+
A dedicated hero for pages or products that are not available in the user's state or region. Replaces the standard hero entirely when the product cannot be offered — do not render another hero type alongside this one.
|
|
8
|
+
|
|
9
|
+
The block communicates clearly that the product is unavailable, names the state if known, offers alternative products or paths, and provides a contact option.
|
|
10
|
+
|
|
11
|
+
This component should be rendered conditionally based on state-availability data from the product catalog or facet system. Never hardcode unavailability — derive it from the facet targeting layer.
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
| Prop | Type | Required | Default | Description |
|
|
16
|
+
|---|---|---|---|---|
|
|
17
|
+
| `stateName` | `string` | No | — | Name of the unavailable state (e.g., `'New York'`). Used in the default heading if `heading` is not provided. |
|
|
18
|
+
| `heading` | `string` | No | `'Not available in [stateName]'` | Override the default heading |
|
|
19
|
+
| `body` | `string` | No | Default message | Override the default body copy |
|
|
20
|
+
| `alternatives` | `NotAvailableAlternative[]` | No | `[]` | Links to related available products |
|
|
21
|
+
| `contactCtaLabel` | `string` | No | — | Contact CTA label (e.g., "Talk to an agent") |
|
|
22
|
+
| `contactCtaHref` | `string` | No | — | Contact CTA destination |
|
|
23
|
+
| `imageSrc` | `string` | No | — | Optional supporting image |
|
|
24
|
+
| `imageAlt` | `string` | No | `''` | Image alt text |
|
|
25
|
+
| `className` | `string` | No | — | Additional CSS class |
|
|
26
|
+
|
|
27
|
+
### NotAvailableAlternative
|
|
28
|
+
|
|
29
|
+
| Prop | Type | Description |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| `label` | `string` | Link text (e.g., "Explore Medicare Supplement plans") |
|
|
32
|
+
| `href` | `string` | Destination URL |
|
|
33
|
+
|
|
34
|
+
## Usage
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
import { Section, NotAvailableHeroBlock } from 'lion-make'
|
|
38
|
+
|
|
39
|
+
// Rendered when facet targeting determines the product is unavailable in the user's state
|
|
40
|
+
<Section zone="hero">
|
|
41
|
+
<NotAvailableHeroBlock
|
|
42
|
+
stateName="New York"
|
|
43
|
+
alternatives={[
|
|
44
|
+
{ label: 'Medicare Supplement plans', href: '/medicare' },
|
|
45
|
+
{ label: 'Supplemental health coverage', href: '/supplemental' },
|
|
46
|
+
]}
|
|
47
|
+
contactCtaLabel="Talk to an agent"
|
|
48
|
+
contactCtaHref="/contact"
|
|
49
|
+
/>
|
|
50
|
+
</Section>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Default copy (when props are omitted)
|
|
54
|
+
|
|
55
|
+
- **Heading:** "Not available in [stateName]" or "Not available in your state"
|
|
56
|
+
- **Body:** "This product is not currently offered in your area. Explore available options below or contact us for help finding coverage."
|
|
57
|
+
|
|
58
|
+
## Design Tokens
|
|
59
|
+
|
|
60
|
+
- Background: `var(--color-gray-lightest)`
|
|
61
|
+
- Heading: `var(--h2-font-size)`, `var(--font-weight-700)`, `var(--color-text)`
|
|
62
|
+
- Body: `var(--body-font-size)`, `var(--color-gray-dark)`
|
|
63
|
+
- Alternative links: `var(--color-brand)`, underline
|
|
64
|
+
- Contact CTA: `var(--color-brand)` background, `var(--color-white)` text
|
|
@@ -1,41 +1,76 @@
|
|
|
1
1
|
# Hero Zone Content Types
|
|
2
2
|
|
|
3
|
-
**Zone rule:** These content types can only be placed in the Hero zone. Never use them in Header, General, or Footer zones.
|
|
3
|
+
**Zone rule:** These content types can only be placed in the Hero zone. Never use them in Header, General, Anklet, or Footer zones.
|
|
4
4
|
|
|
5
|
-
The Hero zone
|
|
5
|
+
The Hero zone sits immediately below the Header and spans full page width regardless of template (Forehead or Sideburn). Every page should have one hero — the type chosen depends on the page's goal.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
---
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Content Types
|
|
10
|
+
|
|
11
|
+
| Content type | Component | When to use |
|
|
10
12
|
|---|---|---|
|
|
11
|
-
| Hero | `
|
|
13
|
+
| CTA Hero Block | `CTAHeroBlock` | Primary conversion goal — product DLPs, campaign pages |
|
|
14
|
+
| Hero Block | `HeroBlock` | Informational — section hubs, About, resource pages |
|
|
15
|
+
| Multi Hero | `MultiHero` | Multiple products/messages — home page, category hubs |
|
|
16
|
+
| Not Available Hero Block | `NotAvailableHeroBlock` | Product unavailable in user's state (facet-triggered) |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Decision Tree
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
Does the hero need a CTA?
|
|
24
|
+
├── Yes → Does the page feature a single product/campaign?
|
|
25
|
+
│ ├── Yes → CTAHeroBlock
|
|
26
|
+
│ └── No (hub page, multiple products) → MultiHero
|
|
27
|
+
└── No → Is the product unavailable in the user's state?
|
|
28
|
+
├── Yes → NotAvailableHeroBlock
|
|
29
|
+
└── No → HeroBlock
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
12
33
|
|
|
13
|
-
##
|
|
34
|
+
## Layout Options
|
|
14
35
|
|
|
15
|
-
|
|
|
36
|
+
| Layout | Supported by |
|
|
16
37
|
|---|---|
|
|
17
|
-
| `full-bleed` |
|
|
18
|
-
| `split` |
|
|
19
|
-
| `
|
|
38
|
+
| `full-bleed` | CTAHeroBlock, HeroBlock |
|
|
39
|
+
| `split-right` | CTAHeroBlock, HeroBlock |
|
|
40
|
+
| `split-left` | CTAHeroBlock, HeroBlock |
|
|
41
|
+
| `minimal` | HeroBlock only |
|
|
42
|
+
| Multi-panel | MultiHero (unique — panels, not a layout prop) |
|
|
43
|
+
|
|
44
|
+
---
|
|
20
45
|
|
|
21
46
|
## Placement Example
|
|
22
47
|
|
|
23
48
|
```tsx
|
|
24
|
-
import { Section,
|
|
49
|
+
import { Section, CTAHeroBlock } from 'lion-make'
|
|
25
50
|
|
|
26
51
|
<Section zone="hero">
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
52
|
+
<CTAHeroBlock
|
|
53
|
+
heading="Protect your family for less than a coffee a day"
|
|
54
|
+
subheading="Term life insurance that fits your budget."
|
|
55
|
+
ctas={[
|
|
56
|
+
{ label: 'Get a free quote', href: '/quote', variant: 'primary' },
|
|
57
|
+
{ label: 'Learn how it works', href: '/term-life', variant: 'secondary' },
|
|
58
|
+
]}
|
|
59
|
+
imageSrc="/img/hero-family.jpg"
|
|
32
60
|
imageAlt="Family at home"
|
|
33
|
-
|
|
34
|
-
ctaHref="/quote"
|
|
61
|
+
layout="split-right"
|
|
35
62
|
/>
|
|
36
63
|
</Section>
|
|
37
64
|
```
|
|
38
65
|
|
|
66
|
+
---
|
|
67
|
+
|
|
39
68
|
## Files in This Section
|
|
40
69
|
|
|
70
|
+
- [cta-hero-block.md](./cta-hero-block.md)
|
|
71
|
+
- [hero-block.md](./hero-block.md)
|
|
72
|
+
- [multi-hero.md](./multi-hero.md)
|
|
73
|
+
- [not-available-hero-block.md](./not-available-hero-block.md)
|
|
74
|
+
|
|
75
|
+
Legacy (pre-Mondrian generic stub — kept for backward compatibility):
|
|
41
76
|
- [hero-variants.md](./hero-variants.md)
|
|
@@ -8,52 +8,109 @@ Content types are predefined design patterns. Each content type belongs to exact
|
|
|
8
8
|
2. **What is the purpose of this content?** → determines the specific type within the category.
|
|
9
9
|
|
|
10
10
|
```
|
|
11
|
-
Is this for the top of every page (logo, nav)?
|
|
12
|
-
→ Header zone → [header
|
|
11
|
+
Is this for the top of every page (logo, nav, CTAs)?
|
|
12
|
+
→ Header zone → [header/overview.md](./header/overview.md)
|
|
13
13
|
|
|
14
|
-
Is this the primary visual/headline area?
|
|
15
|
-
→ Hero zone → [hero
|
|
14
|
+
Is this the primary visual/headline area of the page?
|
|
15
|
+
→ Hero zone → [hero/overview.md](./hero/overview.md)
|
|
16
16
|
|
|
17
|
-
Is this informational, promotional, or a form in the body of the page?
|
|
18
|
-
→ General zone → [general
|
|
17
|
+
Is this informational, promotional, interactive, or a form in the body of the page?
|
|
18
|
+
→ General zone → [general/overview.md](./general/overview.md)
|
|
19
19
|
|
|
20
|
-
Is this
|
|
21
|
-
→
|
|
20
|
+
Is this a quick-links bar above the footer?
|
|
21
|
+
→ Anklet zone → Anklet component
|
|
22
|
+
|
|
23
|
+
Is this legal, compliance, nav, or disclosure content in the bottom of the page?
|
|
24
|
+
→ Footer zone → [footer/overview.md](./footer/overview.md)
|
|
22
25
|
```
|
|
23
26
|
|
|
27
|
+
---
|
|
28
|
+
|
|
24
29
|
## Content Type Catalog by Zone
|
|
25
30
|
|
|
26
|
-
### Header Zone
|
|
31
|
+
### Header Zone
|
|
27
32
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
|
31
|
-
|
|
33
|
+
7 content types — placed inside structural bars (`CorporateUniversalHeader`, `GlobalHeaderBar`).
|
|
34
|
+
|
|
35
|
+
| Content Type | Component | Typical bar | Required |
|
|
36
|
+
|---|---|---|---|
|
|
37
|
+
| Call to Action | `HeaderCTA` | GlobalHeaderBar | No |
|
|
38
|
+
| Logo | `HeaderLogo` | CorporateUniversalHeader or GlobalHeaderBar | Yes — one per page |
|
|
39
|
+
| Product | `HeaderProduct` | GlobalHeaderBar | No — product DLPs only |
|
|
40
|
+
| Section Navigation | `HeaderSectionNavigation` | Below GlobalHeaderBar | No — section hubs only |
|
|
41
|
+
| Section Title | `HeaderSectionTitle` | GlobalHeaderBar | No |
|
|
42
|
+
| Top Level Navigation | `TopLevelNavigation` | GlobalHeaderBar | Yes — one per page |
|
|
43
|
+
| Underwriter | `HeaderUnderwriter` | CorporateUniversalHeader | Varies — required by compliance on product pages |
|
|
44
|
+
|
|
45
|
+
→ Full detail: [header/overview.md](./header/overview.md)
|
|
32
46
|
|
|
33
|
-
|
|
47
|
+
---
|
|
34
48
|
|
|
35
|
-
|
|
49
|
+
### Hero Zone
|
|
50
|
+
|
|
51
|
+
4 content types — one per page. Choose based on page goal.
|
|
52
|
+
|
|
53
|
+
| Content Type | Component | When to use |
|
|
36
54
|
|---|---|---|
|
|
37
|
-
| Hero | `
|
|
55
|
+
| CTA Hero Block | `CTAHeroBlock` | Conversion goal (product DLPs, campaigns) |
|
|
56
|
+
| Hero Block | `HeroBlock` | Informational (section hubs, About, resources) |
|
|
57
|
+
| Multi Hero | `MultiHero` | Multiple products/messages (home, category hubs) |
|
|
58
|
+
| Not Available Hero Block | `NotAvailableHeroBlock` | Product unavailable in user's state |
|
|
59
|
+
|
|
60
|
+
→ Full detail + decision tree: [hero/overview.md](./hero/overview.md)
|
|
61
|
+
|
|
62
|
+
---
|
|
38
63
|
|
|
39
64
|
### General Zone (Primary Column, Sideburn, Outro)
|
|
40
65
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
|
44
|
-
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
66
|
+
37 content types. Zone availability varies — not all types are valid in Sideburn or Outro. See [general/overview.md](./general/overview.md) for the full zone availability matrix.
|
|
67
|
+
|
|
68
|
+
| Group | Content Types |
|
|
69
|
+
|---|---|
|
|
70
|
+
| **Forms** | `LeadForm`, `MultiStepLeadForm`, `EmailCalloutBlock`, `OptIn` |
|
|
71
|
+
| **CTAs** | `CTA`, `SimpleCTABlock`, `CallOut` |
|
|
72
|
+
| **Value props (RTBs)** | `RTBs`, `RTBDescriptive`, `RTBHighlight`, `RTBDynamic` |
|
|
73
|
+
| **Trust & social proof** | `ConfidenceTags`, `MultiTestimonial`, `PullQuote`, `WAHFU` |
|
|
74
|
+
| **Media** | `ContentImageBlock`, `FullSizeImageWithHighlightBox`, `EmbeddedVideoBlock` |
|
|
75
|
+
| **Products & content** | `ProductBlock`, `CrossSellCardBlock`, `ResourceSpotlight`, `BasicContentBlock` |
|
|
76
|
+
| **Reference & structure** | `AccordionBlock`, `SideMenuExplorer`, `TableBlock`, `DecorativeListBlock` |
|
|
77
|
+
| **Urgency** | `LastChanceBlock`, `SpeedBump` |
|
|
78
|
+
| **Prose & text** | `BodyTextCopyBlock`, `RichText`, `PullQuote` |
|
|
79
|
+
| **Layout & utility** | `SpacingBlock`, `HorizontalRule`, `BackgroundColorBlock`, `InlineMessage` |
|
|
80
|
+
| **Platform-specific** | `AllBlogsPostBlock` (blog), `RecentBlogPostsBlock` (blog), `HotJobsBlock` (careers) |
|
|
49
81
|
|
|
50
|
-
|
|
82
|
+
→ Full detail + zone matrix: [general/overview.md](./general/overview.md)
|
|
51
83
|
|
|
52
|
-
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### Anklet Zone
|
|
87
|
+
|
|
88
|
+
Fixed structure — one component, no variants.
|
|
89
|
+
|
|
90
|
+
| Content Type | Component | Description |
|
|
53
91
|
|---|---|---|
|
|
54
|
-
|
|
|
55
|
-
|
|
56
|
-
|
|
92
|
+
| Anklet | `Anklet` | Horizontal quick-links bar above the footer |
|
|
93
|
+
|
|
94
|
+
The `Anklet` component is placed outside any `<Section>` wrapper, between the General Content zone and the Footer zone.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### Footer Zone
|
|
99
|
+
|
|
100
|
+
7 content types with a mandatory render order.
|
|
101
|
+
|
|
102
|
+
| Order | Content Type | Component | Description |
|
|
103
|
+
|---|---|---|---|
|
|
104
|
+
| 1 | Links & Social | `LinksAndSocial` | Footer nav columns + social icons |
|
|
105
|
+
| 2 | Disclaimers | `Disclaimer` | Static legal copy (always visible) |
|
|
106
|
+
| 3 | Disclosures | `Disclosure` | Toggle starts collapsed |
|
|
107
|
+
| 3 | Disclosure Toggle Open | `DisclosureToggleOpen` | Toggle starts expanded |
|
|
108
|
+
| 4 | Compliance | `ComplianceBlock` | Item Number / Material ID |
|
|
109
|
+
| 5 | Legal Links | `LegalLinks` | Privacy, Terms, Copyright — always last |
|
|
110
|
+
|
|
111
|
+
→ Full detail + placement example: [footer/overview.md](./footer/overview.md)
|
|
112
|
+
|
|
113
|
+
---
|
|
57
114
|
|
|
58
115
|
## Zone Exclusivity Rule
|
|
59
116
|
|