@npm_leadtech/legal-contracts-ui 0.76.0 → 0.79.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 (42) hide show
  1. package/dist/components/AiLegalDocumentInsightsMockTabs.d.ts +18 -0
  2. package/dist/components/AiLegalDocumentInsightsMockTabs.js +50 -0
  3. package/dist/components/AiLegalDocumentInsightsSection.d.ts +32 -0
  4. package/dist/components/AiLegalDocumentInsightsSection.js +43 -0
  5. package/dist/components/AiLegalDocumentReviewerTemplate.d.ts +190 -0
  6. package/dist/components/AiLegalDocumentReviewerTemplate.js +50 -0
  7. package/dist/components/DocumentReviewUploadCard.d.ts +19 -0
  8. package/dist/components/DocumentReviewUploadCard.js +37 -0
  9. package/dist/components/ElectronicSignatureTemplate.d.ts +36 -13
  10. package/dist/components/FastAndSimpleSection.d.ts +6 -2
  11. package/dist/components/FastAndSimpleSection.js +25 -9
  12. package/dist/components/Hero2Section.d.ts +20 -8
  13. package/dist/components/Hero2Section.js +131 -82
  14. package/dist/components/HowItWorksSection.d.ts +4 -1
  15. package/dist/components/HowItWorksSection.js +20 -19
  16. package/dist/components/LawgeniusAskQuestionsSection.d.ts +15 -0
  17. package/dist/components/LawgeniusAskQuestionsSection.js +32 -0
  18. package/dist/components/LawgeniusFloatingTagsIllustration.d.ts +18 -0
  19. package/dist/components/LawgeniusFloatingTagsIllustration.js +20 -0
  20. package/dist/components/PlusIcon.d.ts +4 -0
  21. package/dist/components/PlusIcon.js +6 -0
  22. package/dist/components/PricingContactChannelsSection.d.ts +18 -0
  23. package/dist/components/PricingContactChannelsSection.js +19 -0
  24. package/dist/components/PricingHeroSection.d.ts +13 -0
  25. package/dist/components/PricingHeroSection.js +21 -0
  26. package/dist/components/PricingOfferingsSection.d.ts +17 -0
  27. package/dist/components/PricingOfferingsSection.js +15 -0
  28. package/dist/components/PricingPlanCard.d.ts +25 -0
  29. package/dist/components/PricingPlanCard.js +61 -0
  30. package/dist/components/PricingPlansSection.d.ts +31 -0
  31. package/dist/components/PricingPlansSection.js +12 -0
  32. package/dist/components/PricingSupportTeaserSection.d.ts +15 -0
  33. package/dist/components/PricingSupportTeaserSection.js +8 -0
  34. package/dist/components/PricingTemplate.d.ts +102 -0
  35. package/dist/components/PricingTemplate.js +21 -0
  36. package/dist/components/SignAndSendSection.d.ts +9 -2
  37. package/dist/components/SignAndSendSection.js +56 -40
  38. package/dist/components/SparkIcon.d.ts +4 -0
  39. package/dist/components/SparkIcon.js +6 -0
  40. package/dist/components/index.d.ts +204 -13
  41. package/dist/globals.css +1 -1
  42. package/package.json +61 -1
@@ -0,0 +1,18 @@
1
+ import { FC } from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ export declare const AiLegalDocumentInsightsMockTabs: FC<AiLegalDocumentInsightsMockTabsProps>;
5
+
6
+ export declare interface AiLegalDocumentInsightsMockTabsProps {
7
+ tabs: AiLegalDocumentInsightsTab[];
8
+ /** Initial tab id; defaults to first tab */
9
+ defaultTabId?: string;
10
+ className?: string;
11
+ }
12
+
13
+ export declare interface AiLegalDocumentInsightsTab {
14
+ id: string;
15
+ label: string;
16
+ content: ReactNode;
17
+ }
18
+
@@ -0,0 +1,50 @@
1
+ "use client";
2
+ import { jsxs as m, jsx as n } from "react/jsx-runtime";
3
+ import { useId as p, useState as u } from "react";
4
+ import { Button as x } from "./Button.js";
5
+ const g = ({
6
+ tabs: t,
7
+ defaultTabId: r,
8
+ className: d = ""
9
+ }) => {
10
+ const i = p(), o = t[0]?.id ?? "", [s, c] = u(r ?? o);
11
+ if (t.length === 0) return null;
12
+ const l = t.find((e) => e.id === s) ?? t[0];
13
+ return /* @__PURE__ */ m("div", { className: `flex flex-col gap-4 ${d}`.trim(), children: [
14
+ /* @__PURE__ */ n("div", { className: "inline-flex gap-1 rounded-xl bg-neutral-100 p-1", role: "tablist", "aria-label": "Insight preview", children: t.map((e) => {
15
+ const a = l.id === e.id;
16
+ return /* @__PURE__ */ n(
17
+ x,
18
+ {
19
+ type: "button",
20
+ role: "tab",
21
+ id: `${i}-${e.id}-tab`,
22
+ "aria-selected": a,
23
+ "aria-controls": `${i}-${e.id}-panel`,
24
+ tabIndex: a ? 0 : -1,
25
+ variant: a ? "primary-white" : "tertiary-thin",
26
+ size: "small",
27
+ className: `text-small rounded-lg px-4 py-2 font-bold shadow-none ${a ? "text-primary-900 shadow-sm" : "text-neutral-600"}`,
28
+ onClick: () => {
29
+ c(e.id);
30
+ },
31
+ children: e.label
32
+ },
33
+ e.id
34
+ );
35
+ }) }),
36
+ /* @__PURE__ */ n(
37
+ "div",
38
+ {
39
+ role: "tabpanel",
40
+ id: `${i}-${l.id}-panel`,
41
+ "aria-labelledby": `${i}-${l.id}-tab`,
42
+ className: "text-medium text-neutral-800",
43
+ children: l.content
44
+ }
45
+ )
46
+ ] });
47
+ };
48
+ export {
49
+ g as AiLegalDocumentInsightsMockTabs
50
+ };
@@ -0,0 +1,32 @@
1
+ import { FC } from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ export declare interface AiLegalDocumentInsightCard {
5
+ id: string;
6
+ title: string;
7
+ description: string;
8
+ state?: 'soon' | 'default';
9
+ }
10
+
11
+ export declare const AiLegalDocumentInsightsSection: FC<AiLegalDocumentInsightsSectionProps>;
12
+
13
+ export declare interface AiLegalDocumentInsightsSectionProps {
14
+ heading: {
15
+ title: string;
16
+ description: string;
17
+ };
18
+ insightCards: AiLegalDocumentInsightCard[];
19
+ tabs: AiLegalDocumentInsightsTab[];
20
+ defaultTabId?: string;
21
+ /** Optional screenshot behind / beside the mock */
22
+ mockImageSrc?: string;
23
+ mockImageAlt?: string;
24
+ className?: string;
25
+ }
26
+
27
+ export interface AiLegalDocumentInsightsTab {
28
+ id: string;
29
+ label: string;
30
+ content: ReactNode;
31
+ }
32
+
@@ -0,0 +1,43 @@
1
+ import { jsx as e, jsxs as l } from "react/jsx-runtime";
2
+ import { AiLegalDocumentInsightsMockTabs as m } from "./AiLegalDocumentInsightsMockTabs.js";
3
+ import { SectionHeading as c } from "./SectionHeading.js";
4
+ const g = ({
5
+ heading: a,
6
+ insightCards: i,
7
+ tabs: n,
8
+ defaultTabId: r,
9
+ mockImageSrc: s,
10
+ mockImageAlt: o = "",
11
+ className: d = ""
12
+ }) => /* @__PURE__ */ e("section", { className: `bg-neutral-25 px-6 py-16 sm:px-10 lg:px-24 ${d}`.trim(), children: /* @__PURE__ */ l("div", { className: "mx-auto grid max-w-6xl gap-10 lg:grid-cols-2", children: [
13
+ /* @__PURE__ */ l("div", { className: "space-y-8", children: [
14
+ /* @__PURE__ */ e(c, { title: a.title, description: a.description, align: "start" }),
15
+ /* @__PURE__ */ e("div", { className: "space-y-5", children: i.map((t) => /* @__PURE__ */ l(
16
+ "div",
17
+ {
18
+ className: `rounded-2xl border p-5 ${t.state === "soon" ? "border-neutral-200 bg-neutral-50 text-neutral-500" : "border-transparent bg-white shadow-sm"}`,
19
+ children: [
20
+ /* @__PURE__ */ l("div", { className: "flex items-center gap-3", children: [
21
+ /* @__PURE__ */ e(
22
+ "span",
23
+ {
24
+ className: `text-small inline-flex items-center rounded-md px-3 py-1 font-bold ${t.state === "soon" ? "bg-neutral-200 text-neutral-700" : "bg-primary-100 text-primary-800"}`,
25
+ children: t.title
26
+ }
27
+ ),
28
+ t.state === "soon" && /* @__PURE__ */ e("span", { className: "text-extra-small font-semibold text-neutral-500 uppercase", children: "Coming soon" })
29
+ ] }),
30
+ /* @__PURE__ */ e("p", { className: "text-medium mt-3 text-neutral-800", children: t.description })
31
+ ]
32
+ },
33
+ t.id
34
+ )) })
35
+ ] }),
36
+ /* @__PURE__ */ l("div", { className: "relative overflow-hidden rounded-[32px] bg-neutral-200 shadow-[0_30px_80px_rgba(3,42,56,0.2)]", children: [
37
+ s != null && s !== "" && /* @__PURE__ */ e("img", { src: s, alt: o, width: 572, height: 622, className: "h-full w-full object-cover" }),
38
+ /* @__PURE__ */ e("div", { className: "absolute inset-0 flex flex-col justify-end bg-gradient-to-t from-neutral-900/80 via-neutral-900/20 to-transparent p-6 lg:p-8", children: /* @__PURE__ */ e("div", { className: "rounded-2xl bg-white/95 p-5 shadow-lg backdrop-blur-sm", children: /* @__PURE__ */ e(m, { tabs: n, defaultTabId: r }) }) })
39
+ ] })
40
+ ] }) });
41
+ export {
42
+ g as AiLegalDocumentInsightsSection
43
+ };
@@ -0,0 +1,190 @@
1
+ import { FC } from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ export interface AiLegalDocumentInsightCard {
5
+ id: string;
6
+ title: string;
7
+ description: string;
8
+ state?: 'soon' | 'default';
9
+ }
10
+
11
+ export interface AiLegalDocumentInsightsSectionProps {
12
+ heading: {
13
+ title: string;
14
+ description: string;
15
+ };
16
+ insightCards: AiLegalDocumentInsightCard[];
17
+ tabs: AiLegalDocumentInsightsTab[];
18
+ defaultTabId?: string;
19
+ /** Optional screenshot behind / beside the mock */
20
+ mockImageSrc?: string;
21
+ mockImageAlt?: string;
22
+ className?: string;
23
+ }
24
+
25
+ export interface AiLegalDocumentInsightsTab {
26
+ id: string;
27
+ label: string;
28
+ content: ReactNode;
29
+ }
30
+
31
+ export declare const AiLegalDocumentReviewerTemplate: FC<AiLegalDocumentReviewerTemplateProps>;
32
+
33
+ export declare type AiLegalDocumentReviewerTemplateProps = {
34
+ hero: Omit<Hero2SectionProps, 'uploadSlot' | 'theme'> & {
35
+ theme: 'dark';
36
+ upload: DocumentReviewUploadCardProps;
37
+ };
38
+ howItWorks: HowItWorksSectionProps;
39
+ /** Same shape as e-sign `fastAndSimple`; template forces `variant="lawgeniusDark"`. */
40
+ fastAndSimple: Omit<FastAndSimpleSectionProps, 'variant'>;
41
+ insights: AiLegalDocumentInsightsSectionProps;
42
+ signAndSend: Omit<SignAndSendSectionProps, 'rightColumn' | 'variant' | 'leadingIcon'> & {
43
+ leadingIcon: ReactNode;
44
+ upload: DocumentReviewUploadCardProps;
45
+ };
46
+ trustpilot: TrustpilotSectionProps;
47
+ askQuestions: Omit<LawgeniusAskQuestionsSectionProps, 'illustration'> & {
48
+ illustration: LawgeniusFloatingTagsIllustrationProps;
49
+ };
50
+ faq: FaqSectionProps;
51
+ };
52
+
53
+ export interface DocumentReviewUploadCardProps {
54
+ uploadPromptText: string;
55
+ addDocumentLabel: string;
56
+ fileSizeText: string;
57
+ disclaimer: ReactNode;
58
+ onAddDocument?: () => void;
59
+ /** Default shows PlusIcon; override for custom icon */
60
+ addDocumentIcon?: ReactNode;
61
+ variant?: DocumentReviewUploadCardVariant;
62
+ className?: string;
63
+ }
64
+
65
+ export type DocumentReviewUploadCardVariant = 'glassOnDark' | 'embeddedOnDark';
66
+
67
+ export interface FaqItemProps {
68
+ question: string;
69
+ answer: string;
70
+ showMoreText?: string;
71
+ collapsedButtonText?: string;
72
+ expandedButtonText?: string;
73
+ }
74
+
75
+ export interface FaqSectionProps {
76
+ title: string;
77
+ description: string;
78
+ faqItems: FaqItemProps[];
79
+ className?: string;
80
+ }
81
+
82
+ export interface FastAndSimpleSectionProps {
83
+ /** Decorative graphic (hidden for `variant: 'lawgeniusDark'`) */
84
+ graphicSrc?: string;
85
+ title: string;
86
+ description: string;
87
+ benefits: QuickBenefit[];
88
+ /** `default`: e-sign style card. `lawgeniusDark`: gradient container + light benefit tiles */
89
+ variant?: 'default' | 'lawgeniusDark';
90
+ }
91
+
92
+ export type Hero2Highlight = string | {
93
+ id: string;
94
+ label: string;
95
+ icon: ReactNode;
96
+ };
97
+
98
+ export interface Hero2SectionProps {
99
+ backgroundRight?: string;
100
+ backgroundLeft?: string;
101
+ subtitle?: string;
102
+ title: string;
103
+ description: string;
104
+ highlights: Hero2Highlight[];
105
+ /** Light (e-sign): default pills with chevron. Dark (Lawgenius): gradient hero, optional icon pills */
106
+ theme?: 'light' | 'dark';
107
+ /** Shown under highlight pills (e.g. Lawgenius) */
108
+ footnote?: string;
109
+ addDocumentIcon?: string;
110
+ uploadPromptText?: string;
111
+ addDocumentLabel?: string;
112
+ fileSizeText?: string;
113
+ disclaimer?: ReactNode;
114
+ onAddDocument?: () => void;
115
+ /** Replaces the default upload card (e.g. wrap `DocumentReviewUploadCard`) */
116
+ uploadSlot?: ReactNode;
117
+ }
118
+
119
+ export interface HowItWorksSectionProps {
120
+ imageSrc: string;
121
+ imageAlt: string;
122
+ title: string;
123
+ description: string;
124
+ steps: HowItWorksStep[];
125
+ /** Optional overlays (badges, labels) absolutely positioned on the media */
126
+ imageOverlay?: ReactNode;
127
+ }
128
+
129
+ export interface HowItWorksStep {
130
+ title: string;
131
+ description: string;
132
+ icon: string | ReactNode;
133
+ }
134
+
135
+ export interface LawgeniusAskQuestionsSectionProps {
136
+ title: string;
137
+ description: string;
138
+ paragraphs: string[];
139
+ ctaLabel: string;
140
+ onCtaClick?: () => void;
141
+ illustration: ReactNode;
142
+ className?: string;
143
+ }
144
+
145
+ export interface LawgeniusFloatingTag {
146
+ id: string;
147
+ className: string;
148
+ children: ReactNode;
149
+ }
150
+
151
+ export interface LawgeniusFloatingTagsIllustrationProps {
152
+ imageSrc: string;
153
+ imageAlt: string;
154
+ tags: LawgeniusFloatingTag[];
155
+ className?: string;
156
+ }
157
+
158
+ export interface QuickBenefit {
159
+ title: string;
160
+ description: string;
161
+ icon: string | ReactNode;
162
+ }
163
+
164
+ export interface SectionHeadingProps {
165
+ title: string;
166
+ description?: string;
167
+ align?: 'start' | 'center';
168
+ titleClass?: string;
169
+ className?: string;
170
+ }
171
+
172
+ export interface SignAndSendSectionProps {
173
+ title: string;
174
+ description: string;
175
+ ctaLabel: string;
176
+ imageSrc?: string;
177
+ imageAlt?: string;
178
+ /** When set, replaces the image column (e.g. upload card for Lawgenius) */
179
+ rightColumn?: ReactNode;
180
+ leadingIcon?: ReactNode;
181
+ onCtaClick?: () => void;
182
+ /** `default`: neutral card (e-sign). `lawgeniusDark`: primary-900 rounded panel + light text */
183
+ variant?: 'default' | 'lawgeniusDark';
184
+ }
185
+
186
+ export interface TrustpilotSectionProps {
187
+ header: SectionHeadingProps;
188
+ children: ReactNode;
189
+ }
190
+
@@ -0,0 +1,50 @@
1
+ import { jsxs as x, jsx as o } from "react/jsx-runtime";
2
+ import { AiLegalDocumentInsightsSection as w } from "./AiLegalDocumentInsightsSection.js";
3
+ import { DocumentReviewUploadCard as t } from "./DocumentReviewUploadCard.js";
4
+ import { FaqSection as h } from "./FaqSection.js";
5
+ import { FastAndSimpleSection as k } from "./FastAndSimpleSection.js";
6
+ import { Hero2Section as D } from "./Hero2Section.js";
7
+ import { HowItWorksSection as v } from "./HowItWorksSection.js";
8
+ import { LawgeniusAskQuestionsSection as A } from "./LawgeniusAskQuestionsSection.js";
9
+ import { LawgeniusFloatingTagsIllustration as R } from "./LawgeniusFloatingTagsIllustration.js";
10
+ import { SignAndSendSection as I } from "./SignAndSendSection.js";
11
+ import { TrustpilotSection as L } from "./TrustpilotSection.js";
12
+ const P = ({
13
+ hero: i,
14
+ howItWorks: e,
15
+ fastAndSimple: r,
16
+ insights: n,
17
+ signAndSend: a,
18
+ trustpilot: s,
19
+ askQuestions: l,
20
+ faq: m
21
+ }) => {
22
+ const { upload: p, ...c } = i, { upload: u, leadingIcon: d, ...g } = a, { illustration: f, ...S } = l;
23
+ return /* @__PURE__ */ x("main", { className: "flex w-full flex-col", children: [
24
+ /* @__PURE__ */ o(D, { ...c, uploadSlot: /* @__PURE__ */ o(t, { ...p }) }),
25
+ /* @__PURE__ */ o(v, { ...e }),
26
+ /* @__PURE__ */ o(k, { ...r, variant: "lawgeniusDark" }),
27
+ /* @__PURE__ */ o(w, { ...n }),
28
+ /* @__PURE__ */ o(
29
+ I,
30
+ {
31
+ ...g,
32
+ variant: "lawgeniusDark",
33
+ leadingIcon: d,
34
+ rightColumn: /* @__PURE__ */ o(t, { ...u, variant: "embeddedOnDark" })
35
+ }
36
+ ),
37
+ /* @__PURE__ */ o(L, { ...s }),
38
+ /* @__PURE__ */ o(
39
+ A,
40
+ {
41
+ ...S,
42
+ illustration: /* @__PURE__ */ o(R, { ...f })
43
+ }
44
+ ),
45
+ /* @__PURE__ */ o("section", { className: "bg-neutral-25 px-6 py-16 sm:px-10 lg:px-32", children: /* @__PURE__ */ o(h, { ...m, className: "mx-auto max-w-6xl space-y-6" }) })
46
+ ] });
47
+ };
48
+ export {
49
+ P as AiLegalDocumentReviewerTemplate
50
+ };
@@ -0,0 +1,19 @@
1
+ import { FC } from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ export declare const DocumentReviewUploadCard: FC<DocumentReviewUploadCardProps>;
5
+
6
+ export declare interface DocumentReviewUploadCardProps {
7
+ uploadPromptText: string;
8
+ addDocumentLabel: string;
9
+ fileSizeText: string;
10
+ disclaimer: ReactNode;
11
+ onAddDocument?: () => void;
12
+ /** Default shows PlusIcon; override for custom icon */
13
+ addDocumentIcon?: ReactNode;
14
+ variant?: DocumentReviewUploadCardVariant;
15
+ className?: string;
16
+ }
17
+
18
+ export declare type DocumentReviewUploadCardVariant = 'glassOnDark' | 'embeddedOnDark';
19
+
@@ -0,0 +1,37 @@
1
+ import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
+ import { Button as u } from "./Button.js";
3
+ import { PlusIcon as p } from "./PlusIcon.js";
4
+ const b = ({
5
+ uploadPromptText: r,
6
+ addDocumentLabel: a,
7
+ fileSizeText: n,
8
+ disclaimer: l,
9
+ onAddDocument: i,
10
+ addDocumentIcon: s,
11
+ variant: d = "glassOnDark",
12
+ className: o = ""
13
+ }) => {
14
+ const c = d === "glassOnDark" ? "relative rounded-[32px] bg-white/20 p-4 text-neutral-800 shadow-[0_20px_50px_rgba(3,42,56,0.35)] ring-1 ring-white/30 backdrop-blur" : "relative w-full rounded-[32px] bg-white/20 p-4 text-neutral-800 shadow-[0_20px_50px_rgba(3,42,56,0.35)] ring-1 ring-white/30 backdrop-blur", m = s ?? /* @__PURE__ */ e(p, { className: "h-5 w-5", "aria-hidden": !0 });
15
+ return /* @__PURE__ */ e("div", { className: `${c} ${o}`.trim(), children: /* @__PURE__ */ t("div", { className: "bg-neutral-25 rounded-2xl p-8 text-center", children: [
16
+ /* @__PURE__ */ e("p", { className: "text-medium text-neutral-500", children: r }),
17
+ /* @__PURE__ */ t(
18
+ u,
19
+ {
20
+ size: "large",
21
+ variant: "primary-darkgreen",
22
+ className: "text-medium mt-6 inline-flex w-full items-center justify-center gap-2 font-bold",
23
+ onClick: i,
24
+ type: "button",
25
+ children: [
26
+ m,
27
+ /* @__PURE__ */ e("span", { children: a })
28
+ ]
29
+ }
30
+ ),
31
+ /* @__PURE__ */ e("p", { className: "text-small mt-6 text-neutral-500", children: n }),
32
+ /* @__PURE__ */ e("div", { className: "text-tiny mt-4 text-neutral-500", children: l })
33
+ ] }) });
34
+ };
35
+ export {
36
+ b as DocumentReviewUploadCard
37
+ };
@@ -43,25 +43,40 @@ export interface FaqSectionProps {
43
43
  }
44
44
 
45
45
  export interface FastAndSimpleSectionProps {
46
- graphicSrc: string;
46
+ /** Decorative graphic (hidden for `variant: 'lawgeniusDark'`) */
47
+ graphicSrc?: string;
47
48
  title: string;
48
49
  description: string;
49
50
  benefits: QuickBenefit[];
51
+ /** `default`: e-sign style card. `lawgeniusDark`: gradient container + light benefit tiles */
52
+ variant?: 'default' | 'lawgeniusDark';
50
53
  }
51
54
 
55
+ export type Hero2Highlight = string | {
56
+ id: string;
57
+ label: string;
58
+ icon: ReactNode;
59
+ };
60
+
52
61
  export interface Hero2SectionProps {
53
- backgroundRight: string;
54
- backgroundLeft: string;
62
+ backgroundRight?: string;
63
+ backgroundLeft?: string;
55
64
  subtitle?: string;
56
65
  title: string;
57
66
  description: string;
58
- highlights: string[];
59
- addDocumentIcon: string;
60
- uploadPromptText: string;
61
- addDocumentLabel: string;
62
- fileSizeText: string;
63
- disclaimer: ReactNode;
67
+ highlights: Hero2Highlight[];
68
+ /** Light (e-sign): default pills with chevron. Dark (Lawgenius): gradient hero, optional icon pills */
69
+ theme?: 'light' | 'dark';
70
+ /** Shown under highlight pills (e.g. Lawgenius) */
71
+ footnote?: string;
72
+ addDocumentIcon?: string;
73
+ uploadPromptText?: string;
74
+ addDocumentLabel?: string;
75
+ fileSizeText?: string;
76
+ disclaimer?: ReactNode;
64
77
  onAddDocument?: () => void;
78
+ /** Replaces the default upload card (e.g. wrap `DocumentReviewUploadCard`) */
79
+ uploadSlot?: ReactNode;
65
80
  }
66
81
 
67
82
  export interface HowItWorksSectionProps {
@@ -70,12 +85,14 @@ export interface HowItWorksSectionProps {
70
85
  title: string;
71
86
  description: string;
72
87
  steps: HowItWorksStep[];
88
+ /** Optional overlays (badges, labels) absolutely positioned on the media */
89
+ imageOverlay?: ReactNode;
73
90
  }
74
91
 
75
92
  export interface HowItWorksStep {
76
93
  title: string;
77
94
  description: string;
78
- icon: string;
95
+ icon: string | ReactNode;
79
96
  }
80
97
 
81
98
  export interface OnlineBenefit {
@@ -86,7 +103,7 @@ export interface OnlineBenefit {
86
103
  export interface QuickBenefit {
87
104
  title: string;
88
105
  description: string;
89
- icon: string;
106
+ icon: string | ReactNode;
90
107
  }
91
108
 
92
109
  export interface SectionHeadingProps {
@@ -101,8 +118,14 @@ export interface SignAndSendSectionProps {
101
118
  title: string;
102
119
  description: string;
103
120
  ctaLabel: string;
104
- imageSrc: string;
105
- imageAlt: string;
121
+ imageSrc?: string;
122
+ imageAlt?: string;
123
+ /** When set, replaces the image column (e.g. upload card for Lawgenius) */
124
+ rightColumn?: ReactNode;
125
+ leadingIcon?: ReactNode;
126
+ onCtaClick?: () => void;
127
+ /** `default`: neutral card (e-sign). `lawgeniusDark`: primary-900 rounded panel + light text */
128
+ variant?: 'default' | 'lawgeniusDark';
106
129
  }
107
130
 
108
131
  export interface TrustpilotSectionProps {
@@ -1,17 +1,21 @@
1
1
  import { FC } from 'react';
2
+ import { ReactNode } from 'react';
2
3
 
3
4
  export declare const FastAndSimpleSection: FC<FastAndSimpleSectionProps>;
4
5
 
5
6
  export declare interface FastAndSimpleSectionProps {
6
- graphicSrc: string;
7
+ /** Decorative graphic (hidden for `variant: 'lawgeniusDark'`) */
8
+ graphicSrc?: string;
7
9
  title: string;
8
10
  description: string;
9
11
  benefits: QuickBenefit[];
12
+ /** `default`: e-sign style card. `lawgeniusDark`: gradient container + light benefit tiles */
13
+ variant?: 'default' | 'lawgeniusDark';
10
14
  }
11
15
 
12
16
  export declare interface QuickBenefit {
13
17
  title: string;
14
18
  description: string;
15
- icon: string;
19
+ icon: string | ReactNode;
16
20
  }
17
21
 
@@ -1,13 +1,29 @@
1
- import { jsx as e, jsxs as l, Fragment as s } from "react/jsx-runtime";
1
+ import { jsx as e, jsxs as l, Fragment as c } from "react/jsx-runtime";
2
2
  import { Card as n } from "./Card.js";
3
- import { SectionHeading as c } from "./SectionHeading.js";
4
- const p = ({ graphicSrc: i, title: a, description: r, benefits: d }) => /* @__PURE__ */ e("section", { className: "px-4 pb-16", children: /* @__PURE__ */ l(
3
+ import { SectionHeading as m } from "./SectionHeading.js";
4
+ const x = ({
5
+ graphicSrc: i = "",
6
+ title: a,
7
+ description: r,
8
+ benefits: s,
9
+ variant: d = "default"
10
+ }) => d === "lawgeniusDark" ? /* @__PURE__ */ e("section", { className: "px-6 py-16 sm:px-10 lg:px-24", children: /* @__PURE__ */ l("div", { className: "from-primary-900 to-primary-800 mx-auto max-w-6xl rounded-3xl bg-gradient-to-r p-10 text-white shadow-[0_25px_70px_rgba(3,42,56,0.35)]", children: [
11
+ /* @__PURE__ */ l("div", { className: "space-y-4", children: [
12
+ /* @__PURE__ */ e("p", { className: "text-super-large font-bold", children: a }),
13
+ /* @__PURE__ */ e("p", { className: "text-medium text-white/85", children: r })
14
+ ] }),
15
+ /* @__PURE__ */ e("div", { className: "mt-10 grid gap-6 md:grid-cols-3", children: s.map((t) => /* @__PURE__ */ l("div", { className: "rounded-2xl bg-white/15 p-5 text-white shadow-inner", children: [
16
+ /* @__PURE__ */ e("span", { className: "inline-flex h-10 w-10 items-center justify-center rounded-lg bg-white/20", children: typeof t.icon == "string" ? /* @__PURE__ */ e("img", { src: t.icon, alt: "", width: 32, height: 32 }) : t.icon }),
17
+ /* @__PURE__ */ e("p", { className: "text-big mt-4 font-bold", children: t.title }),
18
+ /* @__PURE__ */ e("p", { className: "text-small mt-2 text-white/80", children: t.description })
19
+ ] }, t.title)) })
20
+ ] }) }) : /* @__PURE__ */ e("section", { className: "px-4 pb-16", children: /* @__PURE__ */ l(
5
21
  "div",
6
22
  {
7
23
  className: "relative mx-auto flex w-full max-w-6xl flex-col gap-10 overflow-hidden rounded-2xl bg-neutral-50 px-6 py-10 lg:px-12",
8
24
  style: { boxShadow: "var(--shadow-medium)" },
9
25
  children: [
10
- /* @__PURE__ */ e(
26
+ i !== "" && /* @__PURE__ */ e(
11
27
  "img",
12
28
  {
13
29
  src: i,
@@ -18,12 +34,12 @@ const p = ({ graphicSrc: i, title: a, description: r, benefits: d }) => /* @__PU
18
34
  "aria-hidden": !0
19
35
  }
20
36
  ),
21
- /* @__PURE__ */ e("div", { className: "max-w-2xl space-y-4", children: /* @__PURE__ */ e(c, { title: a, description: r, align: "start" }) }),
22
- /* @__PURE__ */ e("div", { className: "grid gap-4 md:grid-cols-3", children: d.map((t) => /* @__PURE__ */ e(
37
+ /* @__PURE__ */ e("div", { className: "max-w-2xl space-y-4", children: /* @__PURE__ */ e(m, { title: a, description: r, align: "start" }) }),
38
+ /* @__PURE__ */ e("div", { className: "grid gap-4 md:grid-cols-3", children: s.map((t) => /* @__PURE__ */ e(
23
39
  n,
24
40
  {
25
- title: /* @__PURE__ */ l(s, { children: [
26
- /* @__PURE__ */ e("div", { className: "mb-4 inline-flex h-12 w-12 items-center justify-center rounded-md bg-neutral-50", children: /* @__PURE__ */ e("img", { src: t.icon, alt: "", width: 32, height: 32 }) }),
41
+ title: /* @__PURE__ */ l(c, { children: [
42
+ /* @__PURE__ */ e("div", { className: "mb-4 inline-flex h-12 w-12 items-center justify-center rounded-md bg-neutral-50", children: typeof t.icon == "string" ? /* @__PURE__ */ e("img", { src: t.icon, alt: "", width: 32, height: 32 }) : t.icon }),
27
43
  /* @__PURE__ */ e("p", { className: "text-big text-primary-900 font-bold", children: t.title })
28
44
  ] }),
29
45
  children: /* @__PURE__ */ e("p", { className: "text-small text-neutral-800", children: t.description })
@@ -34,5 +50,5 @@ const p = ({ graphicSrc: i, title: a, description: r, benefits: d }) => /* @__PU
34
50
  }
35
51
  ) });
36
52
  export {
37
- p as FastAndSimpleSection
53
+ x as FastAndSimpleSection
38
54
  };
@@ -1,20 +1,32 @@
1
1
  import { FC } from 'react';
2
2
  import { ReactNode } from 'react';
3
3
 
4
+ export declare type Hero2Highlight = string | {
5
+ id: string;
6
+ label: string;
7
+ icon: ReactNode;
8
+ };
9
+
4
10
  export declare const Hero2Section: FC<Hero2SectionProps>;
5
11
 
6
12
  export declare interface Hero2SectionProps {
7
- backgroundRight: string;
8
- backgroundLeft: string;
13
+ backgroundRight?: string;
14
+ backgroundLeft?: string;
9
15
  subtitle?: string;
10
16
  title: string;
11
17
  description: string;
12
- highlights: string[];
13
- addDocumentIcon: string;
14
- uploadPromptText: string;
15
- addDocumentLabel: string;
16
- fileSizeText: string;
17
- disclaimer: ReactNode;
18
+ highlights: Hero2Highlight[];
19
+ /** Light (e-sign): default pills with chevron. Dark (Lawgenius): gradient hero, optional icon pills */
20
+ theme?: 'light' | 'dark';
21
+ /** Shown under highlight pills (e.g. Lawgenius) */
22
+ footnote?: string;
23
+ addDocumentIcon?: string;
24
+ uploadPromptText?: string;
25
+ addDocumentLabel?: string;
26
+ fileSizeText?: string;
27
+ disclaimer?: ReactNode;
18
28
  onAddDocument?: () => void;
29
+ /** Replaces the default upload card (e.g. wrap `DocumentReviewUploadCard`) */
30
+ uploadSlot?: ReactNode;
19
31
  }
20
32