lion-make 0.2.0 → 0.3.1

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 (78) 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/header/HeaderCTA.d.ts +9 -0
  6. package/dist/components/header/HeaderLogo.d.ts +10 -0
  7. package/dist/components/header/HeaderProduct.d.ts +10 -0
  8. package/dist/components/header/HeaderSectionNavigation.d.ts +12 -0
  9. package/dist/components/header/HeaderSectionTitle.d.ts +8 -0
  10. package/dist/components/header/HeaderUnderwriter.d.ts +9 -0
  11. package/dist/components/header/TopLevelNavigation.d.ts +13 -0
  12. package/dist/components/hero/CTAHeroBlock.d.ts +24 -0
  13. package/dist/components/hero/HeroBlock.d.ts +18 -0
  14. package/dist/components/hero/MultiHero.d.ts +25 -0
  15. package/dist/components/hero/NotAvailableHeroBlock.d.ts +22 -0
  16. package/dist/index.d.ts +28 -0
  17. package/dist/lion-make.js +991 -633
  18. package/dist/lion-make.umd.cjs +10 -10
  19. package/guidelines/Guidelines.md +45 -49
  20. package/guidelines/composition/constraints.md +40 -8
  21. package/guidelines/composition/zones.md +49 -11
  22. package/guidelines/content-types/footer/anklet.md +62 -0
  23. package/guidelines/content-types/footer/compliance.md +49 -0
  24. package/guidelines/content-types/footer/disclaimers.md +48 -0
  25. package/guidelines/content-types/footer/disclosure-toggle-open.md +51 -0
  26. package/guidelines/content-types/footer/disclosures.md +50 -0
  27. package/guidelines/content-types/footer/legal-links.md +59 -0
  28. package/guidelines/content-types/footer/links-and-social.md +94 -0
  29. package/guidelines/content-types/footer/overview.md +73 -16
  30. package/guidelines/content-types/general/accordion-block.md +42 -0
  31. package/guidelines/content-types/general/all-blogs-post-block.md +52 -0
  32. package/guidelines/content-types/general/background-color-block.md +42 -0
  33. package/guidelines/content-types/general/basic-content-block.md +43 -0
  34. package/guidelines/content-types/general/body-text-copy-block.md +38 -0
  35. package/guidelines/content-types/general/content-image-block.md +37 -0
  36. package/guidelines/content-types/general/cross-sell-card-block.md +45 -0
  37. package/guidelines/content-types/general/decorative-list-block.md +40 -0
  38. package/guidelines/content-types/general/email-callout-block.md +38 -0
  39. package/guidelines/content-types/general/embedded-video-block.md +36 -0
  40. package/guidelines/content-types/general/full-size-image-with-highlight-box.md +52 -0
  41. package/guidelines/content-types/general/horizontal-rule.md +35 -0
  42. package/guidelines/content-types/general/hot-jobs-block.md +52 -0
  43. package/guidelines/content-types/general/inline-message.md +36 -0
  44. package/guidelines/content-types/general/last-chance-block.md +40 -0
  45. package/guidelines/content-types/general/multi-step-lead-form.md +60 -0
  46. package/guidelines/content-types/general/multi-testimonial.md +49 -0
  47. package/guidelines/content-types/general/opt-in.md +42 -0
  48. package/guidelines/content-types/general/overview.md +134 -24
  49. package/guidelines/content-types/general/product-block.md +43 -0
  50. package/guidelines/content-types/general/pull-quote.md +36 -0
  51. package/guidelines/content-types/general/recent-blog-posts-block.md +48 -0
  52. package/guidelines/content-types/general/resource-spotlight.md +44 -0
  53. package/guidelines/content-types/general/rtb-descriptive.md +53 -0
  54. package/guidelines/content-types/general/rtb-dynamic.md +55 -0
  55. package/guidelines/content-types/general/rtb-highlight.md +50 -0
  56. package/guidelines/content-types/general/side-menu-explorer.md +62 -0
  57. package/guidelines/content-types/general/simple-cta-block.md +44 -0
  58. package/guidelines/content-types/general/spacing-block.md +40 -0
  59. package/guidelines/content-types/general/speed-bump.md +45 -0
  60. package/guidelines/content-types/general/table-block.md +55 -0
  61. package/guidelines/content-types/general/wahfu.md +66 -0
  62. package/guidelines/content-types/header/header-cta.md +41 -0
  63. package/guidelines/content-types/header/header-logo.md +45 -0
  64. package/guidelines/content-types/header/header-product.md +45 -0
  65. package/guidelines/content-types/header/header-section-navigation.md +55 -0
  66. package/guidelines/content-types/header/header-section-title.md +43 -0
  67. package/guidelines/content-types/header/header-underwriter.md +46 -0
  68. package/guidelines/content-types/header/overview.md +61 -15
  69. package/guidelines/content-types/header/top-level-navigation.md +70 -0
  70. package/guidelines/content-types/hero/cta-hero-block.md +70 -0
  71. package/guidelines/content-types/hero/hero-block.md +56 -0
  72. package/guidelines/content-types/hero/multi-hero.md +78 -0
  73. package/guidelines/content-types/hero/not-available-hero-block.md +64 -0
  74. package/guidelines/content-types/hero/overview.md +53 -18
  75. package/guidelines/content-types/overview.md +86 -29
  76. package/guidelines/discovery.md +158 -0
  77. package/guidelines/setup.md +90 -16
  78. package/package.json +3 -3
@@ -0,0 +1,55 @@
1
+ # RTB - Dynamic
2
+
3
+ **Zone:** General — Primary Column, Outro only. Not valid in Sideburn.
4
+
5
+ ## Description
6
+
7
+ RTB (Reasons To Buy) variant that renders a responsive grid of benefit cards from a structured data source. Use when the number of items is variable or content-managed at runtime. Supports optional icons and horizontal rule separators.
8
+
9
+ Compare with:
10
+ - `RTBDescriptive` — text-heavy, explanatory body per item
11
+ - `RTBHighlight` — large stat/number callouts
12
+ - `RTBs` — illustration + short text list
13
+
14
+ ## Props
15
+
16
+ | Prop | Type | Required | Description |
17
+ |---|---|---|---|
18
+ | `items` | `RTBDynamicItem[]` | Yes | Array of benefit cards |
19
+ | `heading` | `string` | No | Section heading |
20
+ | `columns` | `2 \| 3 \| 4` | No | Number of grid columns (default: `3`) |
21
+ | `showDividers` | `boolean` | No | Horizontal rules between rows (default: `false`) |
22
+ | `className` | `string` | No | Additional CSS class |
23
+
24
+ ### RTBDynamicItem
25
+
26
+ | Prop | Type | Required | Description |
27
+ |---|---|---|---|
28
+ | `heading` | `string` | Yes | Card title |
29
+ | `body` | `string` | No | Supporting copy (1–2 sentences) |
30
+ | `iconSrc` | `string` | No | Icon URL |
31
+ | `iconAlt` | `string` | No | Icon alt text |
32
+
33
+ ## Usage
34
+
35
+ ```tsx
36
+ import { RTBDynamic } from 'lion-make'
37
+
38
+ <RTBDynamic
39
+ heading="What's included"
40
+ columns={3}
41
+ items={[
42
+ { iconSrc: '/icons/shield.svg', iconAlt: '', heading: 'Death benefit', body: 'Tax-free lump sum paid to your beneficiary.' },
43
+ { iconSrc: '/icons/calendar.svg', iconAlt: '', heading: 'Flexible terms', body: '10, 20, or 30-year term options.' },
44
+ { iconSrc: '/icons/dollar.svg', iconAlt: '', heading: 'Level premiums', body: 'Locked-in rate for the life of your policy.' },
45
+ ]}
46
+ />
47
+ ```
48
+
49
+ ## Design Tokens
50
+
51
+ - Grid gap: `var(--Grid-gutter-size)`
52
+ - Card border: `var(--border-width-thin)` solid `var(--color-line)`
53
+ - Card border-radius: `var(--border-radius-base)`
54
+ - Heading: `var(--h4-font-size)`, `var(--font-weight-600)`
55
+ - Body: `var(--body-font-size)`, `var(--font-weight-400)`
@@ -0,0 +1,50 @@
1
+ # RTB - Highlight
2
+
3
+ **Zone:** General — Primary Column, Sideburn, Outro.
4
+
5
+ ## Description
6
+
7
+ RTB (Reasons To Buy) variant using large stat/metric callouts as the primary visual hook. Each item leads with a bold number or short phrase, followed by a brief label. Use when data communicates trust more effectively than prose.
8
+
9
+ Compare with:
10
+ - `RTBDescriptive` — text-heavy, explanatory body per item
11
+ - `RTBDynamic` — multi-column grid driven by a data source
12
+ - `RTBs` — illustration + short text list
13
+
14
+ ## Props
15
+
16
+ | Prop | Type | Required | Description |
17
+ |---|---|---|---|
18
+ | `items` | `RTBHighlightItem[]` | Yes | Array of stat items (3–5 recommended) |
19
+ | `heading` | `string` | No | Optional section heading |
20
+ | `layout` | `'row' \| 'column'` | No | Arrangement direction (default: `'row'`) |
21
+ | `className` | `string` | No | Additional CSS class |
22
+
23
+ ### RTBHighlightItem
24
+
25
+ | Prop | Type | Required | Description |
26
+ |---|---|---|---|
27
+ | `stat` | `string` | Yes | The headline number or short phrase (e.g., "100+ years", "A+ rating") |
28
+ | `label` | `string` | Yes | Brief description of what the stat represents |
29
+
30
+ ## Usage
31
+
32
+ ```tsx
33
+ import { RTBHighlight } from 'lion-make'
34
+
35
+ <RTBHighlight
36
+ heading="Trusted by families since 1909"
37
+ items={[
38
+ { stat: '100+', label: 'Years in business' },
39
+ { stat: 'A+', label: 'AM Best financial strength rating' },
40
+ { stat: '$2.4B', label: 'Claims paid in 2023' },
41
+ { stat: '4M+', label: 'Customers nationwide' },
42
+ ]}
43
+ />
44
+ ```
45
+
46
+ ## Design Tokens
47
+
48
+ - Stat text: `var(--h1-font-size)`, `var(--font-weight-700)`, `var(--color-brand)`
49
+ - Label text: `var(--h5-font-size)`, `var(--font-weight-400)`, `var(--color-gray-dark)`
50
+ - Dividers between items: `var(--border-width-thin)` solid `var(--color-line)`
@@ -0,0 +1,62 @@
1
+ # Side Menu Explorer
2
+
3
+ **Zone:** General — Primary Column only. Not valid in Sideburn or Outro.
4
+
5
+ ## Description
6
+
7
+ A vertically-stacked tabbed navigation that controls which content panel is visible. Renders as a left-side menu with a persistent panel to the right. Typically used on product and category pages to let users explore coverage options without navigating away.
8
+
9
+ This component is structural (contains panels), so it must not be nested inside another Container.
10
+
11
+ ## Props
12
+
13
+ | Prop | Type | Required | Description |
14
+ |---|---|---|---|
15
+ | `items` | `SideMenuExplorerItem[]` | Yes | Tabs and their associated panels |
16
+ | `defaultActiveIndex` | `number` | No | Index of the tab to show on load (default: `0`) |
17
+ | `heading` | `string` | No | Accessible heading above the menu |
18
+ | `className` | `string` | No | Additional CSS class |
19
+
20
+ ### SideMenuExplorerItem
21
+
22
+ | Prop | Type | Required | Description |
23
+ |---|---|---|---|
24
+ | `label` | `string` | Yes | Tab button label |
25
+ | `panelContent` | `React.ReactNode` | Yes | Content rendered when this tab is active |
26
+ | `id` | `string` | No | Unique ID (used for `aria-controls`; auto-generated if omitted) |
27
+
28
+ ## Usage
29
+
30
+ ```tsx
31
+ import { SideMenuExplorer } from 'lion-make'
32
+
33
+ <SideMenuExplorer
34
+ heading="Explore our life insurance options"
35
+ items={[
36
+ {
37
+ label: 'Term Life',
38
+ panelContent: <TermLifePanel />,
39
+ },
40
+ {
41
+ label: 'Whole Life',
42
+ panelContent: <WholeLifePanel />,
43
+ },
44
+ {
45
+ label: 'Universal Life',
46
+ panelContent: <UniversalLifePanel />,
47
+ },
48
+ ]}
49
+ />
50
+ ```
51
+
52
+ ## Accessibility
53
+
54
+ - Menu uses `role="tablist"`, each tab `role="tab"`, each panel `role="tabpanel"`.
55
+ - Active tab has `aria-selected="true"`.
56
+ - Panel linked via `aria-labelledby`.
57
+
58
+ ## Design Tokens
59
+
60
+ - Menu background: `var(--color-gray-lightest)`
61
+ - Active tab: left border `var(--border-width-thick)` solid `var(--color-brand)`, text `var(--color-brand)`, `var(--font-weight-600)`
62
+ - Inactive tab: `var(--color-gray-dark)`, `var(--font-weight-400)`
@@ -0,0 +1,44 @@
1
+ # Simple CTA Block
2
+
3
+ **Zone:** General — Primary Column, Sideburn, Outro.
4
+
5
+ ## Description
6
+
7
+ A lightweight call-to-action block with a headline, optional subtext, and a single primary button. Distinct from `CTA` (the inline CTA element) — `SimpleCTABlock` is a standalone section block with its own container and background treatment.
8
+
9
+ Use for mid-page conversion nudges that don't need the full weight of a Hero.
10
+
11
+ ## Props
12
+
13
+ | Prop | Type | Required | Default | Description |
14
+ |---|---|---|---|---|
15
+ | `heading` | `string` | Yes | — | Block headline |
16
+ | `subtext` | `string` | No | — | Supporting copy, displayed below the heading |
17
+ | `ctaLabel` | `string` | Yes | — | Button text |
18
+ | `ctaHref` | `string` | Yes | — | Button destination |
19
+ | `ctaVariant` | `'primary' \| 'secondary'` | No | `'primary'` | Button style |
20
+ | `background` | `'white' \| 'gray' \| 'brand'` | No | `'white'` | Block background color |
21
+ | `alignment` | `'left' \| 'center'` | No | `'center'` | Text alignment |
22
+ | `className` | `string` | No | — | Additional CSS class |
23
+
24
+ ## Usage
25
+
26
+ ```tsx
27
+ import { SimpleCTABlock } from 'lion-make'
28
+
29
+ <SimpleCTABlock
30
+ heading="Ready to protect your family?"
31
+ subtext="Takes less than 5 minutes. No medical exam required."
32
+ ctaLabel="Get a free quote"
33
+ ctaHref="/quote"
34
+ background="gray"
35
+ />
36
+ ```
37
+
38
+ ## Design Tokens
39
+
40
+ - Background `gray`: `var(--color-gray-lightest)`
41
+ - Background `brand`: `var(--color-brand)`, text `var(--color-white)`
42
+ - Heading: `var(--h2-font-size)`, `var(--font-weight-700)`
43
+ - Subtext: `var(--body-font-size)`, `var(--font-weight-400)`
44
+ - Padding: `var(--padding-large-v)` vertical
@@ -0,0 +1,40 @@
1
+ # Spacing Block
2
+
3
+ **Zone:** General — Primary Column, Sideburn, Outro.
4
+
5
+ ## Description
6
+
7
+ An invisible structural block that inserts vertical whitespace between other content types. Use to control rhythm and breathing room without wrapping content in a full Container.
8
+
9
+ Renders as an empty `<div>` with a configurable height — no visible output.
10
+
11
+ ## Props
12
+
13
+ | Prop | Type | Required | Default | Description |
14
+ |---|---|---|---|---|
15
+ | `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | No | `'md'` | Vertical height of the space |
16
+ | `className` | `string` | No | — | Additional CSS class |
17
+
18
+ ## Size Reference
19
+
20
+ | Size | Rendered height |
21
+ |---|---|
22
+ | `xs` | `var(--spacing-xs)` — 0.8rem |
23
+ | `sm` | `var(--spacing-sm)` — 1.6rem |
24
+ | `md` | `var(--spacing-md)` — 3.2rem |
25
+ | `lg` | `var(--spacing-lg)` — 6.4rem |
26
+ | `xl` | `var(--spacing-xl)` — 9.6rem |
27
+
28
+ ## Usage
29
+
30
+ ```tsx
31
+ import { SpacingBlock } from 'lion-make'
32
+
33
+ <SpacingBlock size="lg" />
34
+ ```
35
+
36
+ ## When to use vs Container padding
37
+
38
+ - Use `SpacingBlock` between two sibling content types that each render in their own Container.
39
+ - Use Container `padding` props when you need to control space inside a single Container's top/bottom.
40
+ - Do not use `SpacingBlock` inside a Container — that creates double-spacing artifacts.
@@ -0,0 +1,45 @@
1
+ # Speed Bump
2
+
3
+ **Zone:** General — Primary Column, Outro only. Not valid in Sideburn.
4
+
5
+ ## Description
6
+
7
+ A full-width interstitial block used to interrupt content flow and redirect user attention before they continue scrolling. Typically presents a single focused question or confirmation step — "Before you go, are you sure you're covered?" — with one or two action paths.
8
+
9
+ Use sparingly: no more than one Speed Bump per page, and only when the user decision is significant.
10
+
11
+ ## Props
12
+
13
+ | Prop | Type | Required | Default | Description |
14
+ |---|---|---|---|---|
15
+ | `heading` | `string` | Yes | — | Primary question or statement |
16
+ | `subtext` | `string` | No | — | Supporting copy |
17
+ | `primaryCtaLabel` | `string` | Yes | — | Primary action label |
18
+ | `primaryCtaHref` | `string` | Yes | — | Primary action destination |
19
+ | `secondaryCtaLabel` | `string` | No | — | Secondary/dismiss action label |
20
+ | `secondaryCtaHref` | `string` | No | — | Secondary action destination (if omitted, acts as dismiss) |
21
+ | `background` | `'brand' \| 'dark' \| 'light'` | No | `'brand'` | Block background treatment |
22
+ | `className` | `string` | No | — | Additional CSS class |
23
+
24
+ ## Usage
25
+
26
+ ```tsx
27
+ import { SpeedBump } from 'lion-make'
28
+
29
+ <SpeedBump
30
+ heading="Not sure which plan is right for you?"
31
+ subtext="Talk to an agent — no sales pressure, just answers."
32
+ primaryCtaLabel="Chat with an agent"
33
+ primaryCtaHref="/contact/chat"
34
+ secondaryCtaLabel="Continue browsing"
35
+ background="brand"
36
+ />
37
+ ```
38
+
39
+ ## Design Tokens
40
+
41
+ - Background `brand`: `var(--color-brand)`, all text `var(--color-white)`
42
+ - Background `dark`: `var(--color-gray-darkest)`, all text `var(--color-white)`
43
+ - Background `light`: `var(--color-gray-lightest)`, text `var(--color-text)`
44
+ - Heading: `var(--h2-font-size)`, `var(--font-weight-700)`
45
+ - Padding: `var(--padding-large-v)` vertical, `var(--edge-padding)` horizontal
@@ -0,0 +1,55 @@
1
+ # Table Block
2
+
3
+ **Zone:** General — Primary Column, Outro only. Not valid in Sideburn (column too narrow).
4
+
5
+ ## Description
6
+
7
+ A structured data table for comparing products, coverage levels, or feature matrices. Supports column highlighting, sticky header, and optional footnote row. Renders as a semantic `<table>` with accessible markup.
8
+
9
+ ## Props
10
+
11
+ | Prop | Type | Required | Default | Description |
12
+ |---|---|---|---|---|
13
+ | `headers` | `string[]` | Yes | — | Column header labels |
14
+ | `rows` | `TableRow[]` | Yes | — | Data rows |
15
+ | `caption` | `string` | No | — | Accessible `<caption>` (also used as visible heading if `showCaption` is true) |
16
+ | `showCaption` | `boolean` | No | `false` | Render caption visibly above the table |
17
+ | `highlightColumn` | `number` | No | — | Zero-based index of a column to visually highlight |
18
+ | `stickyHeader` | `boolean` | No | `false` | Fix the header row on scroll |
19
+ | `footnote` | `string` | No | — | Legal or explanatory note below the table |
20
+ | `className` | `string` | No | — | Additional CSS class |
21
+
22
+ ### TableRow
23
+
24
+ | Prop | Type | Description |
25
+ |---|---|---|
26
+ | `label` | `string` | Row header (first column) |
27
+ | `cells` | `(string \| React.ReactNode)[]` | Values for remaining columns |
28
+
29
+ ## Usage
30
+
31
+ ```tsx
32
+ import { TableBlock } from 'lion-make'
33
+
34
+ <TableBlock
35
+ caption="Term life coverage comparison"
36
+ showCaption
37
+ headers={['Feature', '10-Year Term', '20-Year Term', '30-Year Term']}
38
+ highlightColumn={2}
39
+ rows={[
40
+ { label: 'Starting premium', cells: ['$12/mo', '$18/mo', '$26/mo'] },
41
+ { label: 'Coverage amount', cells: ['$250k–$1M', '$250k–$1M', '$250k–$1M'] },
42
+ { label: 'Premium changes', cells: ['Never', 'Never', 'Never'] },
43
+ { label: 'Medical exam required', cells: ['No', 'No', 'Varies'] },
44
+ ]}
45
+ footnote="Premiums shown are illustrative. Actual rates depend on age, health, and coverage selected."
46
+ />
47
+ ```
48
+
49
+ ## Design Tokens
50
+
51
+ - Header row: `var(--color-brand)` background, `var(--color-white)` text, `var(--font-weight-600)`
52
+ - Highlighted column header: `var(--color-teal)` background
53
+ - Row border: `var(--border-width-thin)` solid `var(--color-line)`
54
+ - Alternating rows: `var(--color-gray-lightest)` on odd rows
55
+ - Footnote: `var(--h6-font-size)`, `var(--color-gray)`
@@ -0,0 +1,66 @@
1
+ # WAHFU (We Are Here For You)
2
+
3
+ **Zone:** General — Primary Column, Outro only. Not valid in Sideburn.
4
+
5
+ ## Description
6
+
7
+ An empathy and support block for sensitive pages (claims, bereavement, illness). Acknowledges the user's situation and surfaces human support options (phone, chat, agent finder). The tone is warm and non-transactional.
8
+
9
+ "WAHFU" is the internal shorthand — do not expose this acronym in UI copy.
10
+
11
+ ## Props
12
+
13
+ | Prop | Type | Required | Default | Description |
14
+ |---|---|---|---|---|
15
+ | `heading` | `string` | No | `'We're here for you'` | Block headline |
16
+ | `body` | `string` | No | — | Empathy statement (1–2 sentences) |
17
+ | `channels` | `WAHFUChannel[]` | Yes | — | List of support contact options |
18
+ | `background` | `'white' \| 'teal' \| 'brand'` | No | `'teal'` | Block background |
19
+ | `className` | `string` | No | — | Additional CSS class |
20
+
21
+ ### WAHFUChannel
22
+
23
+ | Prop | Type | Required | Description |
24
+ |---|---|---|---|
25
+ | `type` | `'phone' \| 'chat' \| 'agent' \| 'email'` | Yes | Channel category (controls icon) |
26
+ | `label` | `string` | Yes | Display label |
27
+ | `href` | `string` | Yes | Link destination |
28
+ | `detail` | `string` | No | Hours of availability or context (e.g., "Mon–Fri 8am–8pm CT") |
29
+
30
+ ## Usage
31
+
32
+ ```tsx
33
+ import { WAHFU } from 'lion-make'
34
+
35
+ <WAHFU
36
+ heading="We're here when you need us most"
37
+ body="Filing a claim during a difficult time shouldn't add stress. Our team is ready to help."
38
+ background="teal"
39
+ channels={[
40
+ {
41
+ type: 'phone',
42
+ label: 'Call us',
43
+ href: 'tel:18006952654',
44
+ detail: 'Mon–Fri 7am–7pm CT',
45
+ },
46
+ {
47
+ type: 'chat',
48
+ label: 'Chat with us',
49
+ href: '/chat',
50
+ },
51
+ {
52
+ type: 'agent',
53
+ label: 'Find a local agent',
54
+ href: '/agent-finder',
55
+ },
56
+ ]}
57
+ />
58
+ ```
59
+
60
+ ## Design Tokens
61
+
62
+ - Background `teal`: `var(--color-teal)`, text `var(--color-white)`
63
+ - Background `brand`: `var(--color-brand)`, text `var(--color-white)`
64
+ - Heading: `var(--h2-font-size)`, `var(--font-weight-700)`
65
+ - Channel label: `var(--h5-font-size)`, `var(--font-weight-600)`
66
+ - Detail: `var(--h6-font-size)`, `var(--font-weight-400)`
@@ -0,0 +1,41 @@
1
+ # Header — Call to Action
2
+
3
+ **Zone:** Header only.
4
+
5
+ ## Description
6
+
7
+ A CTA element placed within the header bar — typically "Get a Quote", "Log In", or "Chat with us". Distinct from the general zone `CTA` and `SimpleCTABlock` components, which live in the page body.
8
+
9
+ The header CTA renders as a styled anchor. Use `variant="button"` for primary conversion actions and `variant="link"` for secondary utility links (e.g., log in).
10
+
11
+ ## Props
12
+
13
+ | Prop | Type | Required | Default | Description |
14
+ |---|---|---|---|---|
15
+ | `label` | `string` | Yes | — | Button or link text |
16
+ | `href` | `string` | Yes | — | Destination URL |
17
+ | `variant` | `'button' \| 'link' \| 'phone'` | No | `'button'` | Visual treatment |
18
+ | `className` | `string` | No | — | Additional CSS class |
19
+
20
+ ## Usage
21
+
22
+ ```tsx
23
+ import { Section, HeaderCTA } from 'lion-make'
24
+
25
+ <Section zone="header">
26
+ <HeaderCTA label="Get a quote" href="/quote" variant="button" />
27
+ <HeaderCTA label="Log in" href="/login" variant="link" />
28
+ </Section>
29
+ ```
30
+
31
+ ## Placement Rules
32
+
33
+ - Header zone only. Never place in Hero, General, or Footer zones.
34
+ - Typically placed inside a `GlobalHeaderBar` alongside `TopLevelNavigation`.
35
+ - Limit to 1–2 CTAs per header to avoid visual clutter.
36
+
37
+ ## Design Tokens
38
+
39
+ - Button variant: `var(--color-brand)` background, `var(--color-white)` text
40
+ - Link variant: `var(--color-white)` text, underline on hover
41
+ - Font: `var(--h5-font-size)`, `var(--font-weight-600)`
@@ -0,0 +1,45 @@
1
+ # Header — Logo
2
+
3
+ **Zone:** Header only.
4
+
5
+ ## Description
6
+
7
+ The brand or product logo displayed in the header bar. Renders as a linked image that navigates to the homepage (or a specified destination). Every page must have exactly one `HeaderLogo`.
8
+
9
+ ## Props
10
+
11
+ | Prop | Type | Required | Default | Description |
12
+ |---|---|---|---|---|
13
+ | `src` | `string` | Yes | — | Image URL |
14
+ | `alt` | `string` | Yes | — | Alt text (use the brand name, e.g., "Mutual of Omaha") |
15
+ | `href` | `string` | No | `'/'` | Link destination |
16
+ | `width` | `number` | No | — | Explicit image width (px) |
17
+ | `height` | `number` | No | — | Explicit image height (px) |
18
+ | `className` | `string` | No | — | Additional CSS class |
19
+
20
+ ## Usage
21
+
22
+ ```tsx
23
+ import { Section, HeaderLogo } from 'lion-make'
24
+
25
+ <Section zone="header">
26
+ <HeaderLogo
27
+ src="/img/logo-mutual.svg"
28
+ alt="Mutual of Omaha"
29
+ href="/"
30
+ width={180}
31
+ height={40}
32
+ />
33
+ </Section>
34
+ ```
35
+
36
+ ## Placement Rules
37
+
38
+ - Header zone only.
39
+ - One per page — do not render multiple `HeaderLogo` instances.
40
+ - Typically the leftmost element inside `CorporateUniversalHeader` or `GlobalHeaderBar`.
41
+
42
+ ## Design Tokens
43
+
44
+ - No background — logo file must include sufficient padding or transparent background.
45
+ - Wrapper link outline: `var(--color-brand)` on focus (keyboard navigation).
@@ -0,0 +1,45 @@
1
+ # Header — Product
2
+
3
+ **Zone:** Header only.
4
+
5
+ ## Description
6
+
7
+ Displays the name (and optionally the logo and tagline) of the specific product line being featured on the page. Used on product DLPs (detail landing pages) where the header needs to identify which product the user is exploring.
8
+
9
+ Distinct from `HeaderLogo` (which is always the master brand) — `HeaderProduct` is the product-level identity layer within the same header.
10
+
11
+ ## Props
12
+
13
+ | Prop | Type | Required | Default | Description |
14
+ |---|---|---|---|---|
15
+ | `name` | `string` | Yes | — | Product name (e.g., "Term Life Insurance") |
16
+ | `logoSrc` | `string` | No | — | Product-specific logo or lockup |
17
+ | `logoAlt` | `string` | No | `''` | Logo alt text |
18
+ | `href` | `string` | No | — | Link destination (e.g., product overview page) |
19
+ | `tagline` | `string` | No | — | Short descriptor below the product name |
20
+ | `className` | `string` | No | — | Additional CSS class |
21
+
22
+ ## Usage
23
+
24
+ ```tsx
25
+ import { Section, HeaderProduct } from 'lion-make'
26
+
27
+ <Section zone="header">
28
+ <HeaderProduct
29
+ name="Term Life Insurance"
30
+ tagline="Affordable coverage, guaranteed premiums"
31
+ href="/term-life"
32
+ />
33
+ </Section>
34
+ ```
35
+
36
+ ## Placement Rules
37
+
38
+ - Header zone only.
39
+ - Use on product DLPs. Not required on general marketing or homepage.
40
+ - Appears inside `GlobalHeaderBar`, typically between `HeaderLogo` and `TopLevelNavigation`.
41
+
42
+ ## Design Tokens
43
+
44
+ - Name: `var(--h4-font-size)`, `var(--font-weight-700)`, `var(--color-white)`
45
+ - Tagline: `var(--h6-font-size)`, `var(--font-weight-400)`, `var(--color-white-opaque)`
@@ -0,0 +1,55 @@
1
+ # Header — Section Navigation
2
+
3
+ **Zone:** Header only.
4
+
5
+ ## Description
6
+
7
+ A secondary navigation bar that lists the sub-sections of the current page or product area. Renders as a horizontal link list with an active state indicator for the current page. Used on section hubs and multi-page product areas to give users a persistent orientation layer.
8
+
9
+ Distinct from `TopLevelNavigation` (global, across all products) — Section Navigation is scoped to the current section or product.
10
+
11
+ ## Props
12
+
13
+ | Prop | Type | Required | Default | Description |
14
+ |---|---|---|---|---|
15
+ | `items` | `SectionNavItem[]` | Yes | — | Navigation links |
16
+ | `ariaLabel` | `string` | No | `'Section navigation'` | Accessible label for the `<nav>` element |
17
+ | `className` | `string` | No | — | Additional CSS class |
18
+
19
+ ### SectionNavItem
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 current page link |
26
+
27
+ ## Usage
28
+
29
+ ```tsx
30
+ import { Section, HeaderSectionNavigation } from 'lion-make'
31
+
32
+ <Section zone="header">
33
+ <HeaderSectionNavigation
34
+ ariaLabel="Life insurance navigation"
35
+ items={[
36
+ { label: 'Term Life', href: '/life/term', isActive: true },
37
+ { label: 'Whole Life', href: '/life/whole' },
38
+ { label: 'Universal Life', href: '/life/universal' },
39
+ { label: 'Compare plans', href: '/life/compare' },
40
+ ]}
41
+ />
42
+ </Section>
43
+ ```
44
+
45
+ ## Placement Rules
46
+
47
+ - Header zone only. Renders below `GlobalHeaderBar` when used.
48
+ - Optional — only include when the page belongs to a multi-page section.
49
+ - Active link should match the current page URL exactly.
50
+
51
+ ## Design Tokens
52
+
53
+ - Background: `var(--color-gray-lightest)` or transparent over header background
54
+ - Link: `var(--h5-font-size)`, `var(--font-weight-400)`, `var(--color-text)`
55
+ - Active link: `var(--font-weight-600)`, bottom border `var(--border-width-thick)` solid `var(--color-brand)`
@@ -0,0 +1,43 @@
1
+ # Header — Section Title
2
+
3
+ **Zone:** Header only.
4
+
5
+ ## Description
6
+
7
+ Displays the title of the current section or page within the header area. Used on section index pages or campaign pages where the header itself needs to carry a clear identity heading (separate from the Hero).
8
+
9
+ Not a substitute for a `Hero` — `HeaderSectionTitle` is a compact, inline header element; the Hero is the full-width content zone below the header.
10
+
11
+ ## Props
12
+
13
+ | Prop | Type | Required | Default | Description |
14
+ |---|---|---|---|---|
15
+ | `title` | `string` | Yes | — | Section or page title |
16
+ | `subtitle` | `string` | No | — | Short supporting line |
17
+ | `as` | `'h1' \| 'h2' \| 'p'` | No | `'h1'` | Semantic heading level |
18
+ | `className` | `string` | No | — | Additional CSS class |
19
+
20
+ ## Usage
21
+
22
+ ```tsx
23
+ import { Section, HeaderSectionTitle } from 'lion-make'
24
+
25
+ <Section zone="header">
26
+ <HeaderSectionTitle
27
+ title="Life Insurance"
28
+ subtitle="Coverage that protects what matters most"
29
+ as="h1"
30
+ />
31
+ </Section>
32
+ ```
33
+
34
+ ## Placement Rules
35
+
36
+ - Header zone only.
37
+ - Use `as="h1"` when no other `<h1>` exists on the page (no Hero with an `<h1>`).
38
+ - If a Hero is present and carries the `<h1>`, use `as="h2"` or `as="p"` here.
39
+
40
+ ## Design Tokens
41
+
42
+ - Title: `var(--h3-font-size)`, `var(--font-weight-700)`, `var(--color-white)`
43
+ - Subtitle: `var(--h5-font-size)`, `var(--font-weight-400)`, `var(--color-white-opaque)`