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.
Files changed (109) hide show
  1. package/dist/components/footer/Disclosure.d.ts +3 -2
  2. package/dist/components/footer/DisclosureToggleOpen.d.ts +13 -0
  3. package/dist/components/footer/LegalLinks.d.ts +16 -0
  4. package/dist/components/footer/LinksAndSocial.d.ts +25 -0
  5. package/dist/components/general/AccordionBlock.d.ts +15 -0
  6. package/dist/components/general/AllBlogsPostBlock.d.ts +21 -0
  7. package/dist/components/general/BackgroundColorBlock.d.ts +12 -0
  8. package/dist/components/general/BasicContentBlock.d.ts +18 -0
  9. package/dist/components/general/BodyTextCopyBlock.d.ts +12 -0
  10. package/dist/components/general/ContentImageBlock.d.ts +15 -0
  11. package/dist/components/general/CrossSellCardBlock.d.ts +18 -0
  12. package/dist/components/general/DecorativeListBlock.d.ts +13 -0
  13. package/dist/components/general/EmailCalloutBlock.d.ts +14 -0
  14. package/dist/components/general/EmbeddedVideoBlock.d.ts +15 -0
  15. package/dist/components/general/FullSizeImageWithHighlightBox.d.ts +21 -0
  16. package/dist/components/general/HorizontalRule.d.ts +13 -0
  17. package/dist/components/general/HotJobsBlock.d.ts +21 -0
  18. package/dist/components/general/InlineMessage.d.ts +14 -0
  19. package/dist/components/general/LastChanceBlock.d.ts +15 -0
  20. package/dist/components/general/MultiStepLeadForm.d.ts +19 -0
  21. package/dist/components/general/MultiTestimonial.d.ts +19 -0
  22. package/dist/components/general/OptIn.d.ts +16 -0
  23. package/dist/components/general/ProductBlock.d.ts +17 -0
  24. package/dist/components/general/PullQuote.d.ts +12 -0
  25. package/dist/components/general/RTBDescriptive.d.ts +18 -0
  26. package/dist/components/general/RTBDynamic.d.ts +21 -0
  27. package/dist/components/general/RTBHighlight.d.ts +18 -0
  28. package/dist/components/general/RecentBlogPostsBlock.d.ts +22 -0
  29. package/dist/components/general/ResourceSpotlight.d.ts +18 -0
  30. package/dist/components/general/SideMenuExplorer.d.ts +16 -0
  31. package/dist/components/general/SimpleCTABlock.d.ts +15 -0
  32. package/dist/components/general/SpacingBlock.d.ts +12 -0
  33. package/dist/components/general/SpeedBump.d.ts +16 -0
  34. package/dist/components/general/TableBlock.d.ts +13 -0
  35. package/dist/components/general/WAHFU.d.ts +15 -0
  36. package/dist/components/header/HeaderCTA.d.ts +9 -0
  37. package/dist/components/header/HeaderLogo.d.ts +10 -0
  38. package/dist/components/header/HeaderProduct.d.ts +10 -0
  39. package/dist/components/header/HeaderSectionNavigation.d.ts +12 -0
  40. package/dist/components/header/HeaderSectionTitle.d.ts +8 -0
  41. package/dist/components/header/HeaderUnderwriter.d.ts +9 -0
  42. package/dist/components/header/TopLevelNavigation.d.ts +13 -0
  43. package/dist/components/hero/CTAHeroBlock.d.ts +24 -0
  44. package/dist/components/hero/HeroBlock.d.ts +18 -0
  45. package/dist/components/hero/MultiHero.d.ts +25 -0
  46. package/dist/components/hero/NotAvailableHeroBlock.d.ts +22 -0
  47. package/dist/index.d.ts +92 -2
  48. package/dist/lion-make.js +1855 -545
  49. package/dist/lion-make.umd.cjs +10 -10
  50. package/guidelines/Guidelines.md +46 -50
  51. package/guidelines/composition/constraints.md +40 -8
  52. package/guidelines/composition/zones.md +49 -11
  53. package/guidelines/content-types/footer/anklet.md +62 -0
  54. package/guidelines/content-types/footer/compliance.md +49 -0
  55. package/guidelines/content-types/footer/disclaimers.md +48 -0
  56. package/guidelines/content-types/footer/disclosure-toggle-open.md +51 -0
  57. package/guidelines/content-types/footer/disclosures.md +50 -0
  58. package/guidelines/content-types/footer/legal-links.md +59 -0
  59. package/guidelines/content-types/footer/links-and-social.md +94 -0
  60. package/guidelines/content-types/footer/overview.md +73 -16
  61. package/guidelines/content-types/general/accordion-block.md +42 -0
  62. package/guidelines/content-types/general/all-blogs-post-block.md +52 -0
  63. package/guidelines/content-types/general/background-color-block.md +42 -0
  64. package/guidelines/content-types/general/basic-content-block.md +43 -0
  65. package/guidelines/content-types/general/body-text-copy-block.md +38 -0
  66. package/guidelines/content-types/general/content-image-block.md +37 -0
  67. package/guidelines/content-types/general/cross-sell-card-block.md +45 -0
  68. package/guidelines/content-types/general/decorative-list-block.md +40 -0
  69. package/guidelines/content-types/general/email-callout-block.md +38 -0
  70. package/guidelines/content-types/general/embedded-video-block.md +36 -0
  71. package/guidelines/content-types/general/full-size-image-with-highlight-box.md +52 -0
  72. package/guidelines/content-types/general/horizontal-rule.md +35 -0
  73. package/guidelines/content-types/general/hot-jobs-block.md +52 -0
  74. package/guidelines/content-types/general/inline-message.md +36 -0
  75. package/guidelines/content-types/general/last-chance-block.md +40 -0
  76. package/guidelines/content-types/general/multi-step-lead-form.md +60 -0
  77. package/guidelines/content-types/general/multi-testimonial.md +49 -0
  78. package/guidelines/content-types/general/opt-in.md +42 -0
  79. package/guidelines/content-types/general/overview.md +134 -24
  80. package/guidelines/content-types/general/product-block.md +43 -0
  81. package/guidelines/content-types/general/pull-quote.md +36 -0
  82. package/guidelines/content-types/general/recent-blog-posts-block.md +48 -0
  83. package/guidelines/content-types/general/resource-spotlight.md +44 -0
  84. package/guidelines/content-types/general/rtb-descriptive.md +53 -0
  85. package/guidelines/content-types/general/rtb-dynamic.md +55 -0
  86. package/guidelines/content-types/general/rtb-highlight.md +50 -0
  87. package/guidelines/content-types/general/side-menu-explorer.md +62 -0
  88. package/guidelines/content-types/general/simple-cta-block.md +44 -0
  89. package/guidelines/content-types/general/spacing-block.md +40 -0
  90. package/guidelines/content-types/general/speed-bump.md +45 -0
  91. package/guidelines/content-types/general/table-block.md +55 -0
  92. package/guidelines/content-types/general/wahfu.md +66 -0
  93. package/guidelines/content-types/header/header-cta.md +41 -0
  94. package/guidelines/content-types/header/header-logo.md +45 -0
  95. package/guidelines/content-types/header/header-product.md +45 -0
  96. package/guidelines/content-types/header/header-section-navigation.md +55 -0
  97. package/guidelines/content-types/header/header-section-title.md +43 -0
  98. package/guidelines/content-types/header/header-underwriter.md +46 -0
  99. package/guidelines/content-types/header/overview.md +61 -15
  100. package/guidelines/content-types/header/top-level-navigation.md +70 -0
  101. package/guidelines/content-types/hero/cta-hero-block.md +70 -0
  102. package/guidelines/content-types/hero/hero-block.md +56 -0
  103. package/guidelines/content-types/hero/multi-hero.md +78 -0
  104. package/guidelines/content-types/hero/not-available-hero-block.md +64 -0
  105. package/guidelines/content-types/hero/overview.md +53 -18
  106. package/guidelines/content-types/overview.md +86 -29
  107. package/guidelines/discovery.md +158 -0
  108. package/guidelines/setup.md +90 -16
  109. 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 is the primary visual area of the page, immediately below the header. It always spans the full width of the page regardless of template.
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
- ## Available Content Types
7
+ ---
8
8
 
9
- | Content Type | Component | Description |
9
+ ## Content Types
10
+
11
+ | Content type | Component | When to use |
10
12
  |---|---|---|
11
- | Hero | `Hero` | Full-page-width hero with heading, optional image, and CTA |
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
- ## Variants
34
+ ## Layout Options
14
35
 
15
- | Variant | Description |
36
+ | Layout | Supported by |
16
37
  |---|---|
17
- | `full-bleed` | Background image or gradient fills the entire hero area edge to edge |
18
- | `split` | Content on the left, image on the right (50/50) |
19
- | `minimal` | Text-only, no image, centered or left-aligned |
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, Hero } from 'lion-make'
49
+ import { Section, CTAHeroBlock } from 'lion-make'
25
50
 
26
51
  <Section zone="hero">
27
- <Hero
28
- variant="full-bleed"
29
- heading="Protect what matters most"
30
- subheading="Affordable life insurance starting at $0.99."
31
- imageSrc="/hero-family.jpg"
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
- ctaLabel="Get a Quote"
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 content types](./header/overview.md)
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 content types](./hero/overview.md)
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 content types](./general/overview.md)
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 legal, compliance, or disclosure content?
21
- Footer zone → [footer content types](./footer/overview.md)
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 (header section only)
31
+ ### Header Zone
27
32
 
28
- | Content Type | Component | Description |
29
- |---|---|---|
30
- | Corporate Universal Header | `CorporateUniversalHeader` | Blue bar with state selector and logo |
31
- | Global Header Bar | `GlobalHeaderBar` | White bar with logo, underwriter info, CTAs |
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
- ### Hero Zone (hero section only)
47
+ ---
34
48
 
35
- | Content Type | Component | Variants |
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 | `Hero` | `full-bleed`, `split`, `minimal` |
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
- | Content Type | Component | Allowed zones |
42
- |---|---|---|
43
- | CTA | `CTA` | Primary Column, Sideburn, Outro |
44
- | Call-Out | `CallOut` | Primary Column, Sideburn, Outro |
45
- | RTBs | `RTBs` | Primary Column, Sideburn, Outro |
46
- | Confidence Tags | `ConfidenceTags` | Primary Column, Sideburn, Outro |
47
- | Lead Form | `LeadForm` | Primary Column, Outro only (not Sideburn) |
48
- | Rich Text | `RichText` | Primary Column, Sideburn, Outro |
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
- ### Footer Zone (footer section only)
82
+ Full detail + zone matrix: [general/overview.md](./general/overview.md)
51
83
 
52
- | Content Type | Component | Subsection |
84
+ ---
85
+
86
+ ### Anklet Zone
87
+
88
+ Fixed structure — one component, no variants.
89
+
90
+ | Content Type | Component | Description |
53
91
  |---|---|---|
54
- | Disclaimer | `Disclaimer` | Disclaimer subsection |
55
- | Disclosure | `Disclosure` | Disclosure subsection |
56
- | Compliance Block | `ComplianceBlock` | Compliance subsection |
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