@npm_leadtech/legal-contracts-ui 0.74.1 → 0.74.2

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.
@@ -77,6 +77,7 @@ export interface IntroSectionProps {
77
77
  children: ReactNode;
78
78
  cta: ButtonProps;
79
79
  className?: string;
80
+ containerClassName?: string;
80
81
  }
81
82
 
82
83
  export interface Jumbotron2Props {
@@ -4,15 +4,14 @@ import { ReactNode } from 'react';
4
4
  export declare const BlogSection: FC<BlogSectionProps>;
5
5
 
6
6
  export declare interface BlogSectionProps {
7
- header: SectionHeadingProps | null;
7
+ header: SectionHeadingProps;
8
8
  articles: {
9
9
  title: string;
10
10
  image: ReactNode;
11
11
  description: string;
12
12
  cta: ReactNode;
13
13
  }[];
14
- cta: ReactNode | null;
15
- className?: string;
14
+ cta: ReactNode;
16
15
  }
17
16
 
18
17
  export interface SectionHeadingProps {
@@ -1,20 +1,19 @@
1
1
  import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
2
  import "react";
3
- import s from "clsx";
4
- import { SectionHeading as n } from "./SectionHeading.js";
5
- import { LinkWrapper as o } from "./LinkWrapper.js";
6
- const h = ({ header: r, articles: a, cta: m, className: t = "" }) => a.length === 0 ? null : /* @__PURE__ */ e("section", { className: s("mx-auto px-8 lg:px-12 xl:max-w-300 xl:px-0", t), children: /* @__PURE__ */ i("div", { className: "mx-auto flex flex-col items-center gap-8", children: [
7
- r && /* @__PURE__ */ e(n, { ...r }),
8
- /* @__PURE__ */ e("div", { className: "grid gap-6 lg:grid-cols-2", children: a.map((l) => /* @__PURE__ */ i("article", { className: "flex flex-col rounded-sm bg-white shadow md:flex-row", children: [
9
- /* @__PURE__ */ e("div", { className: "relative h-42 shrink-0 overflow-hidden rounded-l-sm md:h-50 lg:h-auto lg:max-w-51 [&_img]:h-full [&_img]:w-full [&_img]:object-cover", children: l.image }),
3
+ import { SectionHeading as a } from "./SectionHeading.js";
4
+ import { LinkWrapper as d } from "./LinkWrapper.js";
5
+ const x = ({ header: m, articles: r, cta: t }) => r.length === 0 ? null : /* @__PURE__ */ e("section", { className: "mx-auto px-8 pt-10 pb-12 lg:px-12 lg:pb-14 xl:max-w-300 xl:px-0", children: /* @__PURE__ */ i("div", { className: "mx-auto flex flex-col items-center gap-8", children: [
6
+ /* @__PURE__ */ e(a, { ...m }),
7
+ /* @__PURE__ */ e("div", { className: "grid gap-6 lg:grid-cols-2", children: r.map((l) => /* @__PURE__ */ i("article", { className: "flex flex-col rounded-sm bg-white shadow md:flex-row", children: [
8
+ /* @__PURE__ */ e("div", { className: "relative h-42 shrink-0 overflow-hidden rounded-t-sm md:h-full md:max-w-51 md:rounded-t-none md:rounded-l-sm [&_img]:h-full [&_img]:w-full [&_img]:object-cover", children: l.image }),
10
9
  /* @__PURE__ */ i("div", { className: "flex flex-col gap-4 p-6 text-neutral-800", children: [
11
10
  /* @__PURE__ */ e("h3", { className: "text-big font-semibold", children: l.title }),
12
11
  /* @__PURE__ */ e("p", { className: "text-medium", children: l.description }),
13
- /* @__PURE__ */ e(o, { className: "w-fit", variant: "tertiary-bold", children: l.cta })
12
+ /* @__PURE__ */ e(d, { className: "w-fit", variant: "tertiary-bold", children: l.cta })
14
13
  ] })
15
14
  ] }, l.title)) }),
16
- !!m && /* @__PURE__ */ e(o, { className: "w-full md:w-fit", variant: "secondary-green", children: m })
15
+ /* @__PURE__ */ e(d, { className: "w-full md:w-fit", variant: "secondary-green", children: t })
17
16
  ] }) });
18
17
  export {
19
- h as BlogSection
18
+ x as BlogSection
20
19
  };
@@ -1,16 +1,27 @@
1
1
  import { FC } from 'react';
2
2
  import { ReactNode } from 'react';
3
3
 
4
+ export interface AlternativeSubtypeDocumentProps extends BaseSubtypeDocumentProps {
5
+ format: 'Alternative';
6
+ }
7
+
8
+ export interface BaseSubtypeDocumentProps {
9
+ id: string;
10
+ link: ReactNode;
11
+ sampleImage: ReactNode;
12
+ pdfDownload: ReactNode;
13
+ wordDownload: ReactNode;
14
+ }
15
+
4
16
  export interface BlogSectionProps {
5
- header: SectionHeadingProps | null;
17
+ header: SectionHeadingProps;
6
18
  articles: {
7
19
  title: string;
8
20
  image: ReactNode;
9
21
  description: string;
10
22
  cta: ReactNode;
11
23
  }[];
12
- cta: ReactNode | null;
13
- className?: string;
24
+ cta: ReactNode;
14
25
  }
15
26
 
16
27
  export interface BreadcrumbProps {
@@ -28,10 +39,31 @@ export declare interface CategoryProductTemplateProps {
28
39
  breadcrumb: BreadcrumbProps;
29
40
  categories: DocumentCategoriesProps;
30
41
  documentSections: DocumentSectionProps[];
42
+ contentItems: ContentItemProps[];
31
43
  faqSection: FaqSectionProps;
32
44
  articles: BlogSectionProps;
33
45
  }
34
46
 
47
+ export interface ContentItemProps {
48
+ id: string;
49
+ title: string | null;
50
+ content: string | null;
51
+ linkedProducts: LinkedProductProps[];
52
+ sampleImage: ImageWithPreviewProps | null;
53
+ cta: ReactNode | null;
54
+ docsModules: {
55
+ pdfDownload: ReactNode;
56
+ wordDownload: ReactNode;
57
+ } | null;
58
+ subtypeDocs: SubtypeDocumentProps[];
59
+ }
60
+
61
+ export interface DefaultSubtypeDocumentProps extends BaseSubtypeDocumentProps {
62
+ format: 'Default';
63
+ createDocButton: ReactNode;
64
+ description: string;
65
+ }
66
+
35
67
  export interface DocumentCategoriesProps {
36
68
  title: string;
37
69
  categories: {
@@ -71,6 +103,11 @@ export interface FaqSectionProps {
71
103
  className?: string;
72
104
  }
73
105
 
106
+ export interface ImageWithPreviewProps {
107
+ small: ReactNode;
108
+ large: ReactNode;
109
+ }
110
+
74
111
  export interface JumboCardProps {
75
112
  title: string;
76
113
  description: string;
@@ -79,6 +116,11 @@ export interface JumboCardProps {
79
116
  lastUpdate?: string;
80
117
  }
81
118
 
119
+ export interface LinkedProductProps {
120
+ slug: string;
121
+ children: ReactNode;
122
+ }
123
+
82
124
  export interface SectionHeadingProps {
83
125
  title: string;
84
126
  description?: string;
@@ -86,4 +128,6 @@ export interface SectionHeadingProps {
86
128
  titleClass?: string;
87
129
  className?: string;
88
130
  }
131
+
132
+ export type SubtypeDocumentProps = DefaultSubtypeDocumentProps | AlternativeSubtypeDocumentProps;
89
133
 
@@ -1,41 +1,33 @@
1
- import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
- import { JumboCard as i } from "./JumboCard.js";
3
- import { DocumentCategories as c } from "./DocumentCategories.js";
4
- import { DocumentSection as n } from "./DocumentSection.js";
5
- import { Breadcrumb as x } from "./Breadcrumb.js";
6
- import { FaqSection as f } from "./FaqSection.js";
7
- import { BlogSection as d } from "./BlogSection.js";
8
- const w = ({
9
- jumbo: r,
10
- breadcrumb: o,
11
- categories: m,
12
- documentSections: s,
13
- faqSection: p,
14
- articles: a
15
- }) => /* @__PURE__ */ l("main", { className: "mx-auto flex flex-1 flex-col gap-4 px-6 pt-8 pb-16 lg:px-8 xl:max-w-300 xl:px-0", children: [
16
- /* @__PURE__ */ e(i, { ...r }),
17
- /* @__PURE__ */ e(x, { ...o, className: "pt-2" }),
18
- /* @__PURE__ */ l("div", { className: "mx-auto flex justify-center gap-4 text-neutral-800 lg:gap-26.5 xl:gap-31.5", children: [
19
- /* @__PURE__ */ e("aside", { className: "sticky top-24 hidden self-start md:block", children: /* @__PURE__ */ e(c, { ...m }) }),
20
- /* @__PURE__ */ l("div", { className: "flex flex-col gap-10", children: [
21
- s.map((t) => /* @__PURE__ */ e(n, { ...t }, t.id)),
22
- /* @__PURE__ */ e("span", { className: "h-px w-full bg-neutral-200" }),
23
- /* @__PURE__ */ e(f, { ...p }),
24
- /* @__PURE__ */ e(
25
- d,
26
- {
27
- ...a,
28
- header: a.header ? {
29
- ...a.header,
30
- align: "start",
31
- titleClass: "font-bold font-inter text-super-large",
32
- className: "w-full"
33
- } : null
34
- }
35
- )
1
+ import { jsxs as o, jsx as r } from "react/jsx-runtime";
2
+ import { JumboCard as s } from "./JumboCard.js";
3
+ import { DocumentCategories as p } from "./DocumentCategories.js";
4
+ import { DocumentSection as f } from "./DocumentSection.js";
5
+ import { Breadcrumb as d } from "./Breadcrumb.js";
6
+ import { ContentItem as u } from "./ContentItem.js";
7
+ import { FaqSection as x } from "./FaqSection.js";
8
+ import { BlogSection as g } from "./BlogSection.js";
9
+ const y = ({
10
+ jumbo: e,
11
+ breadcrumb: a,
12
+ categories: t,
13
+ documentSections: i,
14
+ contentItems: l,
15
+ faqSection: c,
16
+ articles: n
17
+ }) => /* @__PURE__ */ o("main", { className: "mx-auto max-w-6xl flex-1", children: [
18
+ /* @__PURE__ */ r(s, { ...e }),
19
+ /* @__PURE__ */ r(d, { ...a, className: "pb-4" }),
20
+ /* @__PURE__ */ o("div", { className: "container mx-auto flex flex-col justify-center gap-30 lg:flex-row", children: [
21
+ /* @__PURE__ */ r(p, { ...t }),
22
+ /* @__PURE__ */ o("div", { className: "", children: [
23
+ i.map((m) => /* @__PURE__ */ r(f, { ...m }, m.id)),
24
+ /* @__PURE__ */ r("div", { className: "h-px w-full bg-neutral-200", "aria-hidden": !0 }),
25
+ l.map((m) => /* @__PURE__ */ r(u, { ...m }, m.id)),
26
+ /* @__PURE__ */ r(x, { ...c, className: "pb-6" }),
27
+ /* @__PURE__ */ r(g, { ...n })
36
28
  ] })
37
29
  ] })
38
30
  ] });
39
31
  export {
40
- w as CategoryProductTemplate
32
+ y as CategoryProductTemplate
41
33
  };
@@ -1,16 +1,15 @@
1
1
  import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
- import { DocumentItem as i } from "./DocumentItem.js";
3
- import { Markdown as o } from "./Markdown.js";
4
- const x = ({ id: r, title: t, description: s, icon: c, documents: m }) => /* @__PURE__ */ l("article", { id: r, className: "flex scroll-mt-24 flex-col gap-6", children: [
2
+ import { DocumentItem as m } from "./DocumentItem.js";
3
+ const n = ({ id: r, title: s, description: c, icon: t, documents: i }) => /* @__PURE__ */ l("article", { id: r, className: "flex scroll-mt-24 flex-col gap-6", children: [
5
4
  /* @__PURE__ */ l("div", { className: "flex items-start gap-4 rounded bg-neutral-50 p-6", children: [
6
- c,
5
+ t,
7
6
  /* @__PURE__ */ l("div", { className: "flex flex-1 flex-col gap-2 text-neutral-800", children: [
8
- /* @__PURE__ */ e("p", { className: "font-lora text-super-large", children: t }),
9
- /* @__PURE__ */ e(o, { className: "text-medium [&_p:last-child]:mb-0", content: s })
7
+ /* @__PURE__ */ e("p", { className: "font-lora text-super-large", children: s }),
8
+ /* @__PURE__ */ e("p", { className: "text-medium", children: c })
10
9
  ] })
11
10
  ] }),
12
- /* @__PURE__ */ e("div", { className: "grid grid-cols-1 gap-6 lg:grid-cols-2", children: m.map((a) => /* @__PURE__ */ e(i, { ...a, className: "w-full" }, a.id)) })
11
+ /* @__PURE__ */ e("div", { className: "grid grid-cols-1 gap-6 lg:grid-cols-2", children: i.map((a) => /* @__PURE__ */ e(m, { ...a, className: "w-full" }, a.id)) })
13
12
  ] });
14
13
  export {
15
- x as DocumentSection
14
+ n as DocumentSection
16
15
  };
@@ -6,10 +6,10 @@ export declare const HeroSection: FC<HeroSectionProps>;
6
6
  export declare interface HeroSectionProps {
7
7
  title: string;
8
8
  description?: string;
9
+ bgImage: ReactNode | null;
9
10
  cta?: ReactNode;
10
11
  heroDocuments: ItemProps[];
11
12
  listTitle?: string;
12
- backgroundImage?: string;
13
13
  }
14
14
 
15
15
  export interface ItemProps {
@@ -17,10 +17,8 @@ export interface ItemProps {
17
17
  image: ReactNode;
18
18
  title?: string;
19
19
  description?: string;
20
- documentUrl?: string;
21
- actions?: ReactNode;
20
+ documentUrl?: ReactNode;
22
21
  variant?: 'default' | 'card';
23
22
  className?: string;
24
- titleClassName?: string;
25
23
  }
26
24
 
@@ -1,32 +1,21 @@
1
- import { jsx as e, jsxs as t } from "react/jsx-runtime";
1
+ import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
2
  import "react";
3
- import { Item as c } from "./Item.js";
3
+ import { Item as n } from "./Item.js";
4
4
  import { LinkWrapper as x } from "./LinkWrapper.js";
5
- const g = ({
6
- title: i,
7
- description: s,
8
- cta: l,
9
- heroDocuments: m,
10
- listTitle: n,
11
- backgroundImage: r
12
- }) => /* @__PURE__ */ e("section", { className: "bg-primary-50", children: /* @__PURE__ */ e(
13
- "div",
14
- {
15
- className: "bg-none bg-size-[420px_442px] bg-bottom-right bg-no-repeat xl:bg-(image:--hero-bg)",
16
- style: { "--hero-bg": r ? `url(${r})` : "none" },
17
- children: /* @__PURE__ */ t("div", { className: "flex flex-col items-center gap-6 px-6 py-10 md:px-20 lg:flex-row lg:gap-14 lg:px-8 lg:py-12 xl:justify-center xl:gap-20", children: [
18
- /* @__PURE__ */ t("div", { className: "flex flex-col items-center gap-6 pb-6 text-center lg:items-start lg:text-left xl:max-w-115", children: [
19
- /* @__PURE__ */ e("h1", { className: "font-lora text-hero md:text-super-hero text-neutral-900", children: i }),
20
- /* @__PURE__ */ e("p", { className: "text-big text-neutral-800", children: s }),
21
- !!l && /* @__PURE__ */ e(x, { variant: "primary-darkgreen", className: "w-full md:w-fit", children: l })
22
- ] }),
23
- /* @__PURE__ */ t("div", { className: "flex flex-col items-center justify-center gap-4 md:w-full md:items-start md:justify-start xl:max-w-115", children: [
24
- /* @__PURE__ */ e("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ e("p", { className: "text-big text-primary-800 font-semibold", children: n }) }),
25
- /* @__PURE__ */ e("div", { className: "flex w-full flex-col gap-2", children: m.map((a) => /* @__PURE__ */ e(c, { ...a, variant: "card" }, a.title)) })
26
- ] })
5
+ const g = ({ title: i, description: s, cta: l, heroDocuments: m, listTitle: c, bgImage: r }) => /* @__PURE__ */ t("section", { className: "bg-primary-50 relative", children: [
6
+ !!r && r,
7
+ /* @__PURE__ */ t("div", { className: "flex flex-col items-center gap-6 px-6 py-10 md:px-20 lg:flex-row lg:gap-14 lg:px-8 lg:py-12 xl:justify-center xl:gap-20", children: [
8
+ /* @__PURE__ */ t("div", { className: "flex flex-col items-center gap-6 pb-6 text-center lg:items-start lg:text-left xl:max-w-115", children: [
9
+ /* @__PURE__ */ e("h1", { className: "font-lora text-hero md:text-super-hero text-neutral-900", children: i }),
10
+ /* @__PURE__ */ e("p", { className: "text-big text-neutral-800", children: s }),
11
+ !!l && /* @__PURE__ */ e(x, { variant: "primary-darkgreen", className: "w-full md:w-fit", children: l })
12
+ ] }),
13
+ /* @__PURE__ */ t("div", { className: "flex flex-col items-center justify-center gap-4 md:w-full md:items-start md:justify-start xl:max-w-115", children: [
14
+ /* @__PURE__ */ e("div", { className: "flex items-center justify-between", children: /* @__PURE__ */ e("p", { className: "text-big text-primary-800 font-semibold", children: c }) }),
15
+ /* @__PURE__ */ e("div", { className: "flex w-full flex-col gap-2", children: m.map((a) => /* @__PURE__ */ e(n, { ...a, variant: "card" }, a.title)) })
27
16
  ] })
28
- }
29
- ) });
17
+ ] })
18
+ ] });
30
19
  export {
31
20
  g as HeroSection
32
21
  };
@@ -2,15 +2,14 @@ import { FC } from 'react';
2
2
  import { ReactNode } from 'react';
3
3
 
4
4
  export interface BlogSectionProps {
5
- header: SectionHeadingProps | null;
5
+ header: SectionHeadingProps;
6
6
  articles: {
7
7
  title: string;
8
8
  image: ReactNode;
9
9
  description: string;
10
10
  cta: ReactNode;
11
11
  }[];
12
- cta: ReactNode | null;
13
- className?: string;
12
+ cta: ReactNode;
14
13
  }
15
14
 
16
15
  export interface CategoriesSectionProps {
@@ -37,10 +36,10 @@ export interface FaqTeaserSectionProps {
37
36
  export interface HeroSectionProps {
38
37
  title: string;
39
38
  description?: string;
39
+ bgImage: ReactNode | null;
40
40
  cta?: ReactNode;
41
41
  heroDocuments: ItemProps[];
42
42
  listTitle?: string;
43
- backgroundImage?: string;
44
43
  }
45
44
 
46
45
  export interface HomeStepsProps {
@@ -72,23 +71,29 @@ export interface ItemProps {
72
71
  image: ReactNode;
73
72
  title?: string;
74
73
  description?: string;
75
- documentUrl?: string;
76
- actions?: ReactNode;
74
+ documentUrl?: ReactNode;
77
75
  variant?: 'default' | 'card';
78
76
  className?: string;
79
- titleClassName?: string;
80
77
  }
81
78
 
82
79
  export interface LawGeniusSectionProps {
83
80
  title: string;
84
81
  content: string;
85
- benefits: {
82
+ benefits?: {
86
83
  id: string;
87
84
  label: string;
88
85
  icon: ReactNode;
89
86
  }[];
87
+ /** When set, renders below the markdown instead of benefit chips (e.g. stacked AI step cards). */
88
+ stepsSlot?: ReactNode;
89
+ /** Optional copy between steps and CTA (centered + steps layout only). */
90
+ belowStepsSlot?: ReactNode;
90
91
  cta: ReactNode;
91
92
  image: ReactNode;
93
+ /** When true with `stepsSlot`, skips LinkWrapper around `cta` (e.g. plain Button). */
94
+ skipCtaWrapper?: boolean;
95
+ sectionClassName?: string;
96
+ innerClassName?: string;
92
97
  }
93
98
 
94
99
  export interface PopularDocumentsProps {
@@ -1,32 +1,32 @@
1
- import { jsxs as c, jsx as o } from "react/jsx-runtime";
1
+ import { jsxs as f, jsx as o } from "react/jsx-runtime";
2
2
  import "react";
3
- import { HeroSection as n } from "./HeroSection.js";
4
- import { MoreTemplatesSection as f } from "./MoreTemplatesSection.js";
5
- import { ProcessSection as l } from "./ProcessSection.js";
6
- import { CategoriesSection as S } from "./CategoriesSection.js";
3
+ import { HeroSection as s } from "./HeroSection.js";
4
+ import { MoreTemplatesSection as a } from "./MoreTemplatesSection.js";
5
+ import { ProcessSection as S } from "./ProcessSection.js";
6
+ import { CategoriesSection as l } from "./CategoriesSection.js";
7
7
  import { RatafiaSection as x } from "./RatafiaSection.js";
8
8
  import { TrustSection as T } from "./TrustSection.js";
9
- import { FaqTeaserSection as b } from "./FaqTeaserSection.js";
10
- import { BlogSection as g } from "./BlogSection.js";
11
- const M = ({
9
+ import { FaqTeaserSection as j } from "./FaqTeaserSection.js";
10
+ import { BlogSection as u } from "./BlogSection.js";
11
+ const P = ({
12
12
  hero: t,
13
13
  moreTemplates: m,
14
14
  process: e,
15
15
  categories: r,
16
16
  ratafia: i,
17
17
  trust: p,
18
- faqTeaser: s,
19
- articles: a
20
- }) => /* @__PURE__ */ c("main", { className: "flex-1", children: [
21
- /* @__PURE__ */ o(n, { ...t }),
22
- /* @__PURE__ */ o(f, { ...m }),
23
- /* @__PURE__ */ o(l, { ...e }),
24
- r && /* @__PURE__ */ o(S, { ...r }),
18
+ faqTeaser: n,
19
+ articles: c
20
+ }) => /* @__PURE__ */ f("main", { className: "flex-1", children: [
21
+ /* @__PURE__ */ o(s, { ...t }),
22
+ /* @__PURE__ */ o(a, { ...m }),
23
+ /* @__PURE__ */ o(S, { ...e }),
24
+ r && /* @__PURE__ */ o(l, { ...r }),
25
25
  /* @__PURE__ */ o(x, { ...i }),
26
26
  /* @__PURE__ */ o(T, { ...p }),
27
- /* @__PURE__ */ o(b, { ...s }),
28
- /* @__PURE__ */ o(g, { className: "pt-10 pb-12 lg:pb-14", ...a })
27
+ /* @__PURE__ */ o(j, { ...n }),
28
+ /* @__PURE__ */ o(u, { ...c })
29
29
  ] });
30
30
  export {
31
- M as HomeTemplate
31
+ P as HomeTemplate
32
32
  };
@@ -0,0 +1,88 @@
1
+ import { ComponentPropsWithRef } from 'react';
2
+ import { FC } from 'react';
3
+ import { ReactNode } from 'react';
4
+
5
+ export interface ButtonProps extends Omit<ComponentPropsWithRef<'button'>, 'children'> {
6
+ children: ReactNode;
7
+ size?: ButtonSize;
8
+ variant?: ResponsiveButtonVariant;
9
+ iconPosition?: IconPosition;
10
+ }
11
+
12
+ export type ButtonSize = 'small' | 'default' | 'large';
13
+
14
+ export type ButtonVariant = 'primary-green' | 'primary-darkgreen' | 'primary-yellow' | 'primary-white' | 'secondary-green' | 'secondary-yellow' | 'secondary-red' | 'secondary-black' | 'tertiary-bold' | 'tertiary-thin' | 'tertiary-icon' | 'tertiary-link' | 'icon-black' | 'icon-grey' | 'icon-mobile';
15
+
16
+ export declare type HowItWorksExamplesProps = {
17
+ eyebrow: string;
18
+ title: string;
19
+ rows: {
20
+ label: string;
21
+ value: string;
22
+ }[];
23
+ footer: string;
24
+ };
25
+
26
+ export declare type HowItWorksHeroBullet = {
27
+ id: string;
28
+ strong: string;
29
+ text: string;
30
+ };
31
+
32
+ export declare type HowItWorksLawGeniusStep = {
33
+ id: string;
34
+ title: string;
35
+ description: string;
36
+ icon: ReactNode;
37
+ };
38
+
39
+ export declare type HowItWorksProcessStep = {
40
+ id: string;
41
+ title: string;
42
+ /** Column with text when not reversed; swap with image when `reverse` is true. */
43
+ body: ReactNode;
44
+ image: ReactNode;
45
+ background: 'bg-white' | 'bg-neutral-25';
46
+ reverse?: boolean;
47
+ };
48
+
49
+ export declare const HowItWorksTemplate: FC<HowItWorksTemplateProps>;
50
+
51
+ export declare interface HowItWorksTemplateProps {
52
+ hero: {
53
+ eyebrow: string;
54
+ title: string;
55
+ image: ReactNode;
56
+ intro: ReactNode;
57
+ bullets: HowItWorksHeroBullet[];
58
+ closing: ReactNode;
59
+ cta: ButtonProps;
60
+ };
61
+ processSteps: HowItWorksProcessStep[];
62
+ lawGenius: {
63
+ title: string;
64
+ content: string;
65
+ steps: HowItWorksLawGeniusStep[];
66
+ belowStepsSlot: ReactNode;
67
+ cta: ButtonProps;
68
+ image: ReactNode;
69
+ sectionClassName?: string;
70
+ };
71
+ resources: {
72
+ examples: HowItWorksExamplesProps;
73
+ image: ReactNode;
74
+ supportBody: ReactNode;
75
+ cta: ButtonProps;
76
+ };
77
+ }
78
+
79
+ export type IconPosition = 'left' | 'right' | 'top';
80
+
81
+ export type ResponsiveButtonVariant = ButtonVariant | {
82
+ initial?: ButtonVariant;
83
+ sm?: ButtonVariant;
84
+ md?: ButtonVariant;
85
+ lg?: ButtonVariant;
86
+ xl?: ButtonVariant;
87
+ };
88
+
@@ -0,0 +1,128 @@
1
+ import { jsxs as a, jsx as e, Fragment as x } from "react/jsx-runtime";
2
+ import { Button as c } from "./Button.js";
3
+ import { IntroSection as u } from "./IntroSection.js";
4
+ import { RatafiaSection as f } from "./RatafiaSection.js";
5
+ import { TwoColumnSection as m } from "./TwoColumnSection.js";
6
+ const g = ({ title: l, description: r, icon: s }) => /* @__PURE__ */ a("div", { className: "rounded-2xl bg-white/10 p-5", children: [
7
+ /* @__PURE__ */ a("div", { className: "flex items-center gap-3", children: [
8
+ /* @__PURE__ */ e("span", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-white/20", children: s }),
9
+ /* @__PURE__ */ e("p", { className: "text-lg font-semibold", children: l })
10
+ ] }),
11
+ /* @__PURE__ */ e("p", { className: "text-small mt-3 text-white/85", children: r })
12
+ ] }), h = (l) => {
13
+ const r = /* @__PURE__ */ a("div", { className: "space-y-5 text-neutral-800 lg:w-1/2", children: [
14
+ /* @__PURE__ */ e("h2", { className: "font-lora text-3xl font-bold text-neutral-800", children: l.title }),
15
+ /* @__PURE__ */ e("div", { className: "text-medium space-y-4 text-neutral-800", children: l.body })
16
+ ] }), s = /* @__PURE__ */ e("div", { className: "relative aspect-560/408 w-full overflow-hidden rounded-2xl shadow-[0_25px_60px_rgba(3,42,56,0.15)] lg:w-1/2", children: l.image });
17
+ return l.reverse ? { firstColumn: s, secondColumn: r } : { firstColumn: r, secondColumn: s };
18
+ }, C = ({ hero: l, processSteps: r, lawGenius: s, resources: n }) => {
19
+ const o = {
20
+ size: "large",
21
+ variant: "primary-white",
22
+ className: "text-medium w-full justify-center font-bold text-primary-900 lg:w-auto",
23
+ ...s.cta
24
+ }, { examples: i } = n;
25
+ return /* @__PURE__ */ a("main", { className: "flex flex-1 flex-col", children: [
26
+ /* @__PURE__ */ e("section", { className: "bg-primary-50 px-6 py-16 sm:px-10 lg:px-24", children: /* @__PURE__ */ a("div", { className: "mx-auto flex max-w-6xl flex-col gap-12", children: [
27
+ /* @__PURE__ */ a("div", { className: "text-center", children: [
28
+ /* @__PURE__ */ e("p", { className: "text-small font-semibold tracking-[0.3em] text-neutral-600 uppercase", children: l.eyebrow }),
29
+ /* @__PURE__ */ e("h1", { className: "font-lora mt-3 text-4xl text-neutral-800 sm:text-5xl", children: l.title })
30
+ ] }),
31
+ /* @__PURE__ */ e(
32
+ u,
33
+ {
34
+ className: "bg-transparent",
35
+ containerClassName: "w-full !max-w-none flex-col gap-10 !px-0 !py-0 lg:flex-row lg:items-center",
36
+ image: l.image,
37
+ cta: {
38
+ size: "large",
39
+ variant: "primary-darkgreen",
40
+ className: "text-medium mt-8 w-full justify-center font-bold",
41
+ ...l.cta
42
+ },
43
+ children: /* @__PURE__ */ a("div", { className: "text-medium space-y-4", children: [
44
+ l.intro,
45
+ /* @__PURE__ */ e("ul", { className: "text-medium space-y-3", children: l.bullets.map((t) => /* @__PURE__ */ a("li", { className: "flex items-start gap-2", children: [
46
+ /* @__PURE__ */ e("span", { className: "bg-primary-600 mt-1 h-2.5 w-2.5 rounded-full", "aria-hidden": !0 }),
47
+ /* @__PURE__ */ a("span", { children: [
48
+ /* @__PURE__ */ a("strong", { children: [
49
+ t.strong,
50
+ " "
51
+ ] }),
52
+ t.text
53
+ ] })
54
+ ] }, t.id)) }),
55
+ l.closing
56
+ ] })
57
+ }
58
+ )
59
+ ] }) }),
60
+ r.map((t) => {
61
+ const { firstColumn: d, secondColumn: p } = h(t);
62
+ return /* @__PURE__ */ e(
63
+ m,
64
+ {
65
+ className: `${t.background} px-6 py-16 sm:px-10 lg:px-24`,
66
+ containerClassName: "w-full !max-w-6xl flex-col gap-10 !px-0 !py-0 lg:flex-row lg:items-center",
67
+ firstColumn: d,
68
+ secondColumn: p
69
+ },
70
+ t.id
71
+ );
72
+ }),
73
+ /* @__PURE__ */ e(
74
+ f,
75
+ {
76
+ title: s.title,
77
+ content: s.content,
78
+ stepsSlot: /* @__PURE__ */ e(x, { children: s.steps.map((t) => /* @__PURE__ */ e(g, { ...t }, t.id)) }),
79
+ belowStepsSlot: s.belowStepsSlot,
80
+ cta: /* @__PURE__ */ e(c, { ...o }),
81
+ skipCtaWrapper: !0,
82
+ image: s.image,
83
+ sectionClassName: s.sectionClassName ?? "bg-primary-50 px-6 py-16 sm:px-10 lg:px-24 xl:px-0"
84
+ }
85
+ ),
86
+ /* @__PURE__ */ e("section", { className: "bg-white px-6 py-16 sm:px-10 lg:px-24", children: /* @__PURE__ */ e(
87
+ m,
88
+ {
89
+ className: "bg-transparent",
90
+ containerClassName: "w-full !max-w-6xl flex-col gap-10 !px-0 !py-0 lg:flex-row lg:items-stretch",
91
+ firstColumn: /* @__PURE__ */ a("div", { className: "space-y-6 rounded-3xl border border-neutral-100 p-8 shadow-[0_20px_60px_rgba(3,42,56,0.12)] lg:w-1/2", children: [
92
+ /* @__PURE__ */ a("div", { children: [
93
+ /* @__PURE__ */ e("p", { className: "text-sm font-semibold tracking-[0.2em] text-neutral-500 uppercase", children: i.eyebrow }),
94
+ /* @__PURE__ */ e("h3", { className: "mt-2 text-3xl font-bold text-neutral-800", children: i.title })
95
+ ] }),
96
+ /* @__PURE__ */ e("div", { className: "space-y-4", children: i.rows.map((t) => /* @__PURE__ */ a(
97
+ "div",
98
+ {
99
+ className: "text-medium flex items-center justify-between border-b border-neutral-100 pb-3",
100
+ children: [
101
+ /* @__PURE__ */ e("span", { className: "text-neutral-500", children: t.label }),
102
+ /* @__PURE__ */ e("span", { className: "font-semibold text-neutral-900", children: t.value })
103
+ ]
104
+ },
105
+ t.label
106
+ )) }),
107
+ /* @__PURE__ */ e("div", { className: "bg-neutral-25 rounded-2xl p-4 text-neutral-700", children: i.footer })
108
+ ] }),
109
+ secondColumn: /* @__PURE__ */ a("div", { className: "bg-neutral-25 space-y-6 rounded-3xl p-8 shadow-[0_25px_70px_rgba(3,42,56,0.15)] lg:w-1/2", children: [
110
+ /* @__PURE__ */ e("div", { className: "relative aspect-420/306 w-full overflow-hidden rounded-2xl", children: n.image }),
111
+ /* @__PURE__ */ e("div", { className: "space-y-4 text-neutral-800", children: n.supportBody }),
112
+ /* @__PURE__ */ e(
113
+ c,
114
+ {
115
+ size: "large",
116
+ variant: "primary-darkgreen",
117
+ className: "text-medium w-full justify-center font-bold",
118
+ ...n.cta
119
+ }
120
+ )
121
+ ] })
122
+ }
123
+ ) })
124
+ ] });
125
+ };
126
+ export {
127
+ C as HowItWorksTemplate
128
+ };