lion-make 0.2.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 (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 +46 -50
  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 +1 -1
@@ -7,13 +7,38 @@ Hard rules that apply across the entire design system. These are non-negotiable.
7
7
  - **Template choice is permanent.** Once a page is created with the Forehead or Sideburn template, it cannot be changed without reimporting all components.
8
8
  - **The Sideburn and Outro zones do not exist in the Forehead template.** Do not design Sideburn or Outro content for a Forehead page.
9
9
  - **Platform cannot be changed after page creation.** Set the platform correctly at the start.
10
+ - If in doubt between templates, choose Forehead — it is easier to migrate Forehead → Sideburn than the reverse.
10
11
 
11
12
  ## Zone Constraints
12
13
 
13
- - Content types are zone-locked. A Hero content type placed outside the Hero zone is invalid — do not do it.
14
- - The Anklet zone has a fixed structure (quick-links list). It does not accept arbitrary content types.
15
- - Header subsections (Corporate Universal Header, Global Header Bar, Navigation) each accept only their designated component. Do not mix subsection types.
16
- - Footer subsections (Disclaimer, Disclosure, Compliance) are for legal content only. Do not place marketing content in the Footer zone.
14
+ - Content types are zone-locked. A Hero content type placed outside the Hero zone is invalid.
15
+ - **The Anklet zone is structurally fixed** it only accepts the `Anklet` component (quick-links list). No other content types can be placed there.
16
+ - **Header structural bars are not content types.** `CorporateUniversalHeader` and `GlobalHeaderBar` are containers. The 7 header content types (`HeaderCTA`, `HeaderLogo`, `HeaderProduct`, `HeaderSectionNavigation`, `HeaderSectionTitle`, `TopLevelNavigation`, `HeaderUnderwriter`) go inside them.
17
+ - **One hero per page.** Do not stack multiple hero types (`CTAHeroBlock`, `HeroBlock`, `MultiHero`, `NotAvailableHeroBlock`) on the same page. When a product is state-unavailable, `NotAvailableHeroBlock` replaces the standard hero entirely.
18
+ - Footer content types must follow the mandatory render order: Links & Social → Disclaimers → Disclosures → Compliance → Legal Links. Do not reorder them.
19
+ - **Anklet is not in the footer zone.** It sits between General Content and `<Section zone="footer">` — outside any Section wrapper.
20
+
21
+ ## Header-Specific Constraints
22
+
23
+ - `HeaderLogo` — one per page, mandatory.
24
+ - `TopLevelNavigation` — one per page, mandatory.
25
+ - `HeaderUnderwriter` — required on all product DLPs where a specific underwriting entity applies. Exact text is set by compliance team.
26
+ - `HeaderProduct` — use only on product DLPs, not on general or hub pages.
27
+ - `HeaderSectionNavigation` — only include when the current page belongs to a multi-page section.
28
+
29
+ ## Hero-Specific Constraints
30
+
31
+ - `CTAHeroBlock` — use when the hero's primary goal is a conversion action.
32
+ - `HeroBlock` — use for informational pages with no CTA in the hero.
33
+ - `MultiHero` — hub/home pages only. Limit to 2–5 panels. Avoid on product DLPs.
34
+ - `NotAvailableHeroBlock` — must be rendered conditionally from facet/state data; never hardcode unavailability.
35
+
36
+ ## Footer-Specific Constraints
37
+
38
+ - `Disclosure` starts collapsed; `DisclosureToggleOpen` starts expanded. Use Toggle Open only when regulation mandates the disclosure is visible on page load.
39
+ - `ComplianceBlock` — required on all regulated product pages. Item Numbers and Material IDs come from the compliance team.
40
+ - `LegalLinks` — required on every page. Must be the last element in the footer.
41
+ - Do not place marketing content in the Footer zone.
17
42
 
18
43
  ## Container Constraints
19
44
 
@@ -35,12 +60,19 @@ Hard rules that apply across the entire design system. These are non-negotiable.
35
60
  - Facets are targeting triggers (e.g., state, county). Only one facet value per variation.
36
61
  - The most common facet is `state`. Other facets like `county` are supported but less common.
37
62
  - When no facet matches, no variation displays from that Component. Plan a default (untagged) variation where needed.
63
+ - `NotAvailableHeroBlock` is a common facet-triggered type — show it when the state facet matches an unavailable state.
64
+
65
+ ## Platform-Specific Content Types
66
+
67
+ Three general content types are restricted by platform:
38
68
 
39
- ## Content Type Constraints
69
+ | Content type | Component | Platform restriction |
70
+ |---|---|---|
71
+ | All Blog Posts Block | `AllBlogsPostBlock` | Blog platform only (`data-platform="blog"`) |
72
+ | Recent Blog Posts Block | `RecentBlogPostsBlock` | Blog platform only (`data-platform="blog"`) |
73
+ | Hot Jobs Block | `HotJobsBlock` | Careers platform only (`data-platform="careers"`) |
40
74
 
41
- - Content types are predefined. You cannot create ad-hoc content structures outside the defined types.
42
- - Some content types are platform-specific. Verify platform compatibility before using.
43
- - A content type placed in the wrong zone is a design error — the system will not render it correctly.
75
+ Do not use these on non-matching platforms.
44
76
 
45
77
  ## Cross-references
46
78
 
@@ -4,24 +4,62 @@ This is the authoritative placement table for the lion-make design system. Every
4
4
 
5
5
  ## Zone Placement Table
6
6
 
7
- | Zone | Template | Subsections | Allowed Content Types |
7
+ | Zone | Template | Allowed Content Types | Components |
8
8
  |---|---|---|---|
9
- | **Header** | Both | Corporate Universal Header, Global Header Bar, Navigation (Underwriter, Product, Top Nav) | Header content types only |
10
- | **Hero** | Both | | Hero content types only |
11
- | **Primary Column** | Both | | General content types |
12
- | **Sideburn** | Sideburn only | | General content types (subset) |
13
- | **Outro** | Sideburn only | | General content types (subset) |
14
- | **Anklet** | Both | — | Quick links only (fixed structure) |
15
- | **Footer** | Both | Disclaimer, Disclosure, Compliance | Footer content types only |
9
+ | **Header** | Both | Call to Action, Logo, Product, Section Navigation, Section Title, Top Level Navigation, Underwriter | `HeaderCTA`, `HeaderLogo`, `HeaderProduct`, `HeaderSectionNavigation`, `HeaderSectionTitle`, `TopLevelNavigation`, `HeaderUnderwriter` |
10
+ | **Hero** | Both | CTA Hero Block, Hero Block, Multi Hero, Not Available Hero Block | `CTAHeroBlock`, `HeroBlock`, `MultiHero`, `NotAvailableHeroBlock` |
11
+ | **Primary Column** | Both | All 37 general content types | see [general/overview.md](../content-types/general/overview.md) |
12
+ | **Sideburn** | Sideburn only | Subset of general content types | see [general/overview.md](../content-types/general/overview.md) |
13
+ | **Outro** | Sideburn only | Subset of general content types | see [general/overview.md](../content-types/general/overview.md) |
14
+ | **Anklet** | Both | Quick links only | `Anklet` |
15
+ | **Footer** | Both | Links & Social, Disclaimers, Disclosures, Disclosure Toggle Open, Compliance, Legal Links | `LinksAndSocial`, `Disclaimer`, `Disclosure`, `DisclosureToggleOpen`, `ComplianceBlock`, `LegalLinks` |
16
+
17
+ ## Header Zone Detail
18
+
19
+ The Header zone uses two structural bars as containers. Content types are placed inside them:
20
+
21
+ | Structural bar | Accepts |
22
+ |---|---|
23
+ | `CorporateUniversalHeader` | `HeaderLogo`, `HeaderUnderwriter` |
24
+ | `GlobalHeaderBar` | `TopLevelNavigation`, `HeaderCTA`, `HeaderProduct`, `HeaderSectionTitle` |
25
+ | Below `GlobalHeaderBar` | `HeaderSectionNavigation` |
26
+
27
+ Structural bars (`CorporateUniversalHeader`, `GlobalHeaderBar`) are not content types — they are layout containers for the Header zone.
28
+
29
+ ## Hero Zone Detail
30
+
31
+ | Content type | Component | When to use |
32
+ |---|---|---|
33
+ | CTA Hero Block | `CTAHeroBlock` | Primary conversion goal (product DLPs, campaigns) |
34
+ | Hero Block | `HeroBlock` | Informational (section hubs, About, resource pages) |
35
+ | Multi Hero | `MultiHero` | Multiple products/messages (home page, category hubs) |
36
+ | Not Available Hero Block | `NotAvailableHeroBlock` | Product unavailable in user's state (facet-triggered) |
37
+
38
+ Only one hero content type per page. Do not stack multiple hero types.
39
+
40
+ ## Footer Zone Detail
41
+
42
+ Footer content types have a mandatory render order:
43
+
44
+ | Order | Content type | Component | Notes |
45
+ |---|---|---|---|
46
+ | 1 | Links & Social | `LinksAndSocial` | Nav columns + social icons; first in footer |
47
+ | 2 | Disclaimers | `Disclaimer` | Static legal copy; always visible |
48
+ | 3 | Disclosures | `Disclosure` | Toggle starts collapsed |
49
+ | 3 | Disclosure Toggle Open | `DisclosureToggleOpen` | Toggle starts expanded (required-visible) |
50
+ | 4 | Compliance | `ComplianceBlock` | Item Number / Material ID |
51
+ | 5 | Legal Links | `LegalLinks` | Privacy, Terms, Copyright; last in footer |
52
+
53
+ **Anklet** sits in its own zone between General Content and Footer — it is not inside `<Section zone="footer">`.
16
54
 
17
55
  ## Zone Rules
18
56
 
19
57
  - A **header content type** can only be placed in the Header zone.
20
- - A **hero content type** can only be placed in the Hero zone.
58
+ - A **hero content type** can only be placed in the Hero zone. Only one hero per page.
21
59
  - A **general content type** can only be placed in the Primary Column, Sideburn, or Outro zones.
22
- - The **Anklet** zone accepts only the Anklet quick-links structure — no other content types.
60
+ - The **Anklet** zone accepts only the `Anklet` component — no other content types.
23
61
  - A **footer content type** can only be placed in the Footer zone.
24
- - The **Sideburn** and **Outro** zones only exist in the Sideburn template. They are not available in the Forehead template.
62
+ - The **Sideburn** and **Outro** zones only exist in the Sideburn template.
25
63
 
26
64
  ## Template-to-Zone Availability
27
65
 
@@ -0,0 +1,62 @@
1
+ # Anklet
2
+
3
+ **Zone:** Anklet — its own dedicated zone directly above the Footer zone. Not part of the Footer zone itself.
4
+
5
+ > **Note on placement:** Mondrian documents the Anklet under the "Footer" section of the guide, but architecturally it occupies its own zone (`data-zone="anklet"`) between General Content and the Footer. It is not nested inside a `Section zone="footer"`.
6
+
7
+ ## Description
8
+
9
+ A full-width quick-links bar anchored between the General Content zone and the Footer. Provides fast access to high-priority destinations — typically product lines, service links, or audience entry points — without requiring the user to navigate through the footer columns.
10
+
11
+ The Anklet structure is fixed: a horizontal list of text links. No headings, no columns, no icons.
12
+
13
+ ## Component
14
+
15
+ `Anklet` — located in `src/components/layout/` (not footer), exported from `lion-make`.
16
+
17
+ ## Props
18
+
19
+ | Prop | Type | Required | Description |
20
+ |---|---|---|---|
21
+ | `links` | `AnkletLink[]` | Yes | Quick link items |
22
+ | `className` | `string` | No | Additional CSS class |
23
+
24
+ ### AnkletLink
25
+
26
+ | Prop | Type | Description |
27
+ |---|---|---|
28
+ | `label` | `string` | Link text |
29
+ | `href` | `string` | Destination URL |
30
+
31
+ ## Usage
32
+
33
+ ```tsx
34
+ import { Anklet } from 'lion-make'
35
+
36
+ <Anklet
37
+ links={[
38
+ { label: 'Life Insurance', href: '/life' },
39
+ { label: 'Medicare', href: '/medicare' },
40
+ { label: 'Supplemental Health', href: '/supplemental' },
41
+ { label: 'Dental & Vision', href: '/dental-vision' },
42
+ { label: 'Find an Agent', href: '/agent-finder' },
43
+ ]}
44
+ />
45
+ ```
46
+
47
+ ## Page Structure Position
48
+
49
+ ```
50
+ <Section zone="header"> … </Section>
51
+ <Section zone="hero"> … </Section>
52
+ [General Content zone]
53
+ <Anklet links={…} /> ← here, outside any Section
54
+ <Section zone="footer"> … </Section>
55
+ ```
56
+
57
+ ## Design Tokens
58
+
59
+ - Background: `var(--color-gray-lightest)` or `var(--color-brand)`
60
+ - Link: `var(--h5-font-size)`, `var(--font-weight-400)`, `var(--color-text)` or `var(--color-white)`
61
+ - Border top: `var(--border-width-thin)` solid `var(--color-line)`
62
+ - Padding: `var(--padding-base-vertical)` vertical, `var(--edge-padding)` horizontal
@@ -0,0 +1,49 @@
1
+ # Compliance
2
+
3
+ **Zone:** Footer only — Compliance subsection.
4
+
5
+ ## Description
6
+
7
+ Displays required compliance identifiers and associated legal copy. This is distinct from the `Disclaimers` content type (which contains free-text legal statements) — `Compliance` is specifically for structured identifiers: Item Numbers and Material IDs as mandated by regulatory and compliance teams.
8
+
9
+ Required on all regulated product pages (life, Medicare, supplemental health). The exact identifiers and surrounding copy are determined by the compliance team and the product's filing jurisdiction.
10
+
11
+ ## Component
12
+
13
+ `ComplianceBlock`
14
+
15
+ ## Props
16
+
17
+ | Prop | Type | Required | Description |
18
+ |---|---|---|---|
19
+ | `itemNumber` | `string` | No | Compliance Item Number (e.g., `'M37594_XXXXXX'`) |
20
+ | `materialId` | `string` | No | Material ID (primarily used for Medicare Advantage / PDP) |
21
+ | `text` | `string` | No | Required legal copy accompanying the identifiers |
22
+ | `className` | `string` | No | Additional CSS class |
23
+
24
+ At least one of `itemNumber`, `materialId`, or `text` must be present.
25
+
26
+ ## Usage
27
+
28
+ ```tsx
29
+ import { Section, ComplianceBlock } from 'lion-make'
30
+
31
+ <Section zone="footer">
32
+ <ComplianceBlock
33
+ itemNumber="M37594_0524"
34
+ text="For more information about Mutual of Omaha's privacy practices, visit mutualofomaha.com/privacy."
35
+ />
36
+ </Section>
37
+ ```
38
+
39
+ ## Placement Rules
40
+
41
+ - Footer zone only, always last in the footer — below `Disclaimers` and `Disclosures`.
42
+ - Consult compliance team for required identifiers per product and per state.
43
+ - Do not place on pages without a regulated product.
44
+
45
+ ## Design Tokens
46
+
47
+ - Text: `var(--h6-font-size)`, `var(--color-gray-dark)`, `var(--h6-line-height)`
48
+ - Label (`dt`): `var(--font-weight-600)`
49
+ - Value (`dd`): `var(--font-weight-400)`
@@ -0,0 +1,48 @@
1
+ # Disclaimers
2
+
3
+ **Zone:** Footer only — Disclaimers subsection.
4
+
5
+ ## Description
6
+
7
+ Static legal statements displayed in the footer. Unlike `Disclosures` (which are toggled open/closed by the user), Disclaimers are always visible — no toggle, no expand/collapse. Use for brief legal copy that must be persistently visible: asterisk footnotes, rate qualifications, "not available in all states" statements, and similar.
8
+
9
+ One `Disclaimer` per legal statement. Stack multiple instances for multiple statements — do not concatenate them into a single prop.
10
+
11
+ ## Component
12
+
13
+ `Disclaimer`
14
+
15
+ ## Props
16
+
17
+ | Prop | Type | Required | Description |
18
+ |---|---|---|---|
19
+ | `text` | `string` | Yes | The disclaimer copy |
20
+ | `itemNumber` | `string` | No | Compliance Item Number displayed alongside the text |
21
+ | `className` | `string` | No | Additional CSS class |
22
+
23
+ ## Usage
24
+
25
+ ```tsx
26
+ import { Section, Disclaimer } from 'lion-make'
27
+
28
+ <Section zone="footer">
29
+ <Disclaimer
30
+ text="*Rates based on a 35-year-old non-smoker in excellent health. Individual rates may vary."
31
+ itemNumber="M37594_0524"
32
+ />
33
+ <Disclaimer
34
+ text="Products and availability may vary by state. Not available in all states."
35
+ />
36
+ </Section>
37
+ ```
38
+
39
+ ## Placement Rules
40
+
41
+ - Footer zone only, in the Disclaimers subsection.
42
+ - Place above `Disclosures` and `Compliance`.
43
+ - Always visible — do not use when a toggle is desired (use `Disclosures` instead).
44
+
45
+ ## Design Tokens
46
+
47
+ - Text: `var(--h6-font-size)`, `var(--color-gray-dark)`, `var(--h6-line-height)`
48
+ - Item number: same size, `var(--font-weight-400)`, rendered inline after the text
@@ -0,0 +1,51 @@
1
+ # Disclosure Toggle Open
2
+
3
+ **Zone:** Footer only — Disclosures subsection.
4
+
5
+ ## Description
6
+
7
+ A toggleable legal disclosure that **starts in the expanded (open) state**. The user can collapse it. Use when regulatory requirements mandate that the disclosure text is visible on page load without requiring user interaction.
8
+
9
+ Functionally identical to `Disclosures` except for the initial state. Both use the same `Disclosure` component under the hood — the distinction is the `defaultOpen` prop.
10
+
11
+ ## Component
12
+
13
+ `DisclosureToggleOpen` (thin wrapper around `Disclosure` with `defaultOpen={true}`)
14
+
15
+ ## Props
16
+
17
+ | Prop | Type | Required | Description |
18
+ |---|---|---|---|
19
+ | `triggerLabel` | `string` | Yes | Toggle button label (e.g., "Product Disclosure Statement") |
20
+ | `content` | `string` | Yes | Full legal disclosure text, shown on load |
21
+ | `materialId` | `string` | No | Material ID displayed inline with the content |
22
+ | `className` | `string` | No | Additional CSS class |
23
+
24
+ ## Usage
25
+
26
+ ```tsx
27
+ import { Section, DisclosureToggleOpen } from 'lion-make'
28
+
29
+ <Section zone="footer">
30
+ <DisclosureToggleOpen
31
+ triggerLabel="Medicare Supplement Insurance Disclosure"
32
+ content="Medicare Supplement insurance plans are not connected with or endorsed by the U.S. Government or the federal Medicare program. This is a solicitation of insurance."
33
+ materialId="MSO-DISC-001"
34
+ />
35
+ </Section>
36
+ ```
37
+
38
+ ## When to use vs Disclosures
39
+
40
+ | | Disclosures | Disclosure Toggle Open |
41
+ |---|---|---|
42
+ | Initial state | Collapsed | **Expanded** |
43
+ | User can toggle | Yes | Yes |
44
+ | Regulatory use | Standard product disclosures | Required-visible disclosures |
45
+
46
+ ## Design Tokens
47
+
48
+ Same as `Disclosures`:
49
+ - Trigger: `var(--color-link)`, `var(--h6-font-size)`, no border
50
+ - Content: `var(--h6-font-size)`, `var(--color-gray-dark)`
51
+ - Material ID: inline, same size
@@ -0,0 +1,50 @@
1
+ # Disclosures
2
+
3
+ **Zone:** Footer only — Disclosures subsection.
4
+
5
+ ## Description
6
+
7
+ A toggleable legal disclosure that **starts collapsed**. The user clicks a trigger link to expand and read the full content. Use for standard product disclosures, fine print, and supplementary legal text that doesn't need to be immediately visible.
8
+
9
+ When the disclosure must be visible on page load, use `Disclosure Toggle Open` instead.
10
+
11
+ ## Component
12
+
13
+ `Disclosure`
14
+
15
+ ## Props
16
+
17
+ | Prop | Type | Required | Default | Description |
18
+ |---|---|---|---|---|
19
+ | `triggerLabel` | `string` | Yes | — | Toggle button label |
20
+ | `content` | `string` | Yes | — | Full disclosure text, revealed on expand |
21
+ | `materialId` | `string` | No | — | Material ID shown inline within the content |
22
+ | `defaultOpen` | `boolean` | No | `false` | Set `true` to start expanded (equivalent to `DisclosureToggleOpen`) |
23
+ | `className` | `string` | No | — | Additional CSS class |
24
+
25
+ ## Usage
26
+
27
+ ```tsx
28
+ import { Section, Disclosure } from 'lion-make'
29
+
30
+ <Section zone="footer">
31
+ <Disclosure
32
+ triggerLabel="Term Life Insurance — Product Disclosure"
33
+ content="Term life insurance coverage is issued by Mutual of Omaha Insurance Company, Omaha, NE. Policy Form ICC22L-TERM. Not available in all states."
34
+ materialId="L-TERM-DISC-0524"
35
+ />
36
+ </Section>
37
+ ```
38
+
39
+ ## Placement Rules
40
+
41
+ - Footer zone only.
42
+ - Place below `Disclaimers` and above `Compliance`.
43
+ - Stack multiple `Disclosure` instances for multiple product disclosures — do not merge into one.
44
+ - If the disclosure must be pre-expanded, use `DisclosureToggleOpen` instead.
45
+
46
+ ## Design Tokens
47
+
48
+ - Trigger: `var(--color-link)`, `var(--h6-font-size)`, no border, cursor pointer
49
+ - Content: `var(--h6-font-size)`, `var(--color-gray-dark)`
50
+ - Material ID: inline, appended after the content text
@@ -0,0 +1,59 @@
1
+ # Legal Links
2
+
3
+ **Zone:** Footer only — Legal Links subsection.
4
+
5
+ ## Description
6
+
7
+ A horizontal bar of links to legal and policy pages — Privacy Policy, Terms of Use, Accessibility Statement, Cookie Preferences, Site Map, and similar. Optionally includes a copyright notice. Typically the bottommost element in the footer, below all disclosures and compliance blocks.
8
+
9
+ Separate from `Links & Social` (which handles the main footer nav columns) — Legal Links is a dedicated subsection for purely legal/regulatory destinations.
10
+
11
+ ## Component
12
+
13
+ `LegalLinks`
14
+
15
+ ## Props
16
+
17
+ | Prop | Type | Required | Description |
18
+ |---|---|---|---|
19
+ | `links` | `LegalLink[]` | Yes | Legal page links |
20
+ | `copyrightText` | `string` | No | Copyright line (e.g., `'© 2025 Mutual of Omaha Insurance Company'`) |
21
+ | `className` | `string` | No | Additional CSS class |
22
+
23
+ ### LegalLink
24
+
25
+ | Prop | Type | Description |
26
+ |---|---|---|
27
+ | `label` | `string` | Link text |
28
+ | `href` | `string` | Destination URL |
29
+
30
+ ## Usage
31
+
32
+ ```tsx
33
+ import { Section, LegalLinks } from 'lion-make'
34
+
35
+ <Section zone="footer">
36
+ <LegalLinks
37
+ copyrightText="© 2025 Mutual of Omaha Insurance Company. All rights reserved."
38
+ links={[
39
+ { label: 'Privacy Policy', href: '/privacy' },
40
+ { label: 'Terms of Use', href: '/terms' },
41
+ { label: 'Accessibility', href: '/accessibility' },
42
+ { label: 'Cookie Preferences', href: '/cookies' },
43
+ { label: 'Site Map', href: '/sitemap' },
44
+ ]}
45
+ />
46
+ </Section>
47
+ ```
48
+
49
+ ## Placement Rules
50
+
51
+ - Footer zone only. Always the last element in the footer.
52
+ - Must be below `Compliance` block.
53
+ - Render on every page — legal links are sitewide requirements.
54
+
55
+ ## Design Tokens
56
+
57
+ - Copyright: `var(--h6-font-size)`, `var(--color-gray-dark)`
58
+ - Links: `var(--h6-font-size)`, `var(--color-link)`, pipe separator between items
59
+ - Background inherits from footer: `var(--color-gray-darkest)`
@@ -0,0 +1,94 @@
1
+ # Links & Social
2
+
3
+ **Zone:** Footer only — Links & Social subsection.
4
+
5
+ ## Description
6
+
7
+ The primary footer navigation block. Renders multiple columns of site links (product lines, services, company info, etc.) alongside social media icon links. Always the first content type in the footer, immediately below the Anklet zone.
8
+
9
+ Footer nav columns help users discover content they didn't find in the main navigation. Social links build brand presence. Both are optional individually but the component requires at least one column.
10
+
11
+ ## Component
12
+
13
+ `LinksAndSocial`
14
+
15
+ ## Props
16
+
17
+ | Prop | Type | Required | Description |
18
+ |---|---|---|---|
19
+ | `columns` | `FooterNavColumn[]` | Yes | Navigation columns (min 1, typically 3–5) |
20
+ | `socialLinks` | `SocialLink[]` | No | Social media links (rendered as icon links) |
21
+ | `className` | `string` | No | Additional CSS class |
22
+
23
+ ### FooterNavColumn
24
+
25
+ | Prop | Type | Description |
26
+ |---|---|---|
27
+ | `heading` | `string` | Column heading |
28
+ | `links` | `Array<{ label: string; href: string }>` | Column links |
29
+
30
+ ### SocialLink
31
+
32
+ | Prop | Type | Description |
33
+ |---|---|---|
34
+ | `platform` | `'facebook' \| 'twitter' \| 'linkedin' \| 'youtube' \| 'instagram' \| 'x'` | Platform identifier (controls icon class) |
35
+ | `href` | `string` | Profile URL |
36
+ | `label` | `string` (optional) | Accessible label (defaults to platform name) |
37
+
38
+ ## Usage
39
+
40
+ ```tsx
41
+ import { Section, LinksAndSocial } from 'lion-make'
42
+
43
+ <Section zone="footer">
44
+ <LinksAndSocial
45
+ columns={[
46
+ {
47
+ heading: 'Insurance',
48
+ links: [
49
+ { label: 'Life Insurance', href: '/life' },
50
+ { label: 'Medicare', href: '/medicare' },
51
+ { label: 'Supplemental Health', href: '/supplemental' },
52
+ { label: 'Dental & Vision', href: '/dental-vision' },
53
+ ],
54
+ },
55
+ {
56
+ heading: 'Company',
57
+ links: [
58
+ { label: 'About Us', href: '/about' },
59
+ { label: 'Careers', href: '/careers' },
60
+ { label: 'Newsroom', href: '/news' },
61
+ { label: 'Community', href: '/community' },
62
+ ],
63
+ },
64
+ {
65
+ heading: 'Support',
66
+ links: [
67
+ { label: 'Contact Us', href: '/contact' },
68
+ { label: 'Find an Agent', href: '/agent-finder' },
69
+ { label: 'File a Claim', href: '/claims' },
70
+ { label: 'Customer Login', href: '/login' },
71
+ ],
72
+ },
73
+ ]}
74
+ socialLinks={[
75
+ { platform: 'facebook', href: 'https://facebook.com/mutualofomaha' },
76
+ { platform: 'linkedin', href: 'https://linkedin.com/company/mutual-of-omaha' },
77
+ { platform: 'youtube', href: 'https://youtube.com/mutualofomaha' },
78
+ ]}
79
+ />
80
+ </Section>
81
+ ```
82
+
83
+ ## Placement Rules
84
+
85
+ - Footer zone only. Always the first content type in the footer.
86
+ - Social link targets must use `rel="noopener noreferrer"` and `target="_blank"`.
87
+ - Column headings use `<h3>` — do not skip heading levels.
88
+
89
+ ## Design Tokens
90
+
91
+ - Background: `var(--color-gray-darkest)` (dark footer)
92
+ - Column heading: `var(--h5-font-size)`, `var(--font-weight-600)`, `var(--color-white)`
93
+ - Column links: `var(--h6-font-size)`, `var(--color-white-opaque)`, no underline
94
+ - Social icons: 24×24px, `var(--color-white-opaque)`, hover `var(--color-white)`