@npm_leadtech/legal-contracts-ui 0.103.1 → 0.103.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.
@@ -89,6 +89,7 @@ export interface Jumbotron2Props {
89
89
  subtitle?: string;
90
90
  className?: string;
91
91
  children?: React.ReactNode;
92
+ variant?: 'default' | 'contact';
92
93
  }
93
94
 
94
95
  export interface MissionSectionProps {
@@ -0,0 +1,4 @@
1
+ import { FC } from 'react';
2
+
3
+ export declare const CheckIcon: FC<React.SVGProps<SVGSVGElement>>;
4
+
@@ -0,0 +1,12 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import "react";
3
+ const l = (i) => /* @__PURE__ */ o("svg", { width: "16", height: "16", viewBox: "0 0 16 16", xmlns: "http://www.w3.org/2000/svg", ...i, children: /* @__PURE__ */ o(
4
+ "path",
5
+ {
6
+ fill: i.fill ?? "var(--color-primary-800)",
7
+ d: "M5.867 10.6 3.533 8.267A.66.66 0 1 0 2.6 9.2l3.089 3.089a.25.25 0 0 0 .355 0L13.4 4.933A.66.66 0 0 0 12.467 4z"
8
+ }
9
+ ) });
10
+ export {
11
+ l as CheckIcon
12
+ };
@@ -8,5 +8,7 @@ export declare interface CheckboxProps extends React.InputHTMLAttributes<HTMLInp
8
8
  name: string;
9
9
  required?: boolean;
10
10
  children: ReactNode;
11
+ error?: boolean;
12
+ errorMessage?: string;
11
13
  }
12
14
 
@@ -1,18 +1,31 @@
1
- import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
- const n = ({ id: t, name: r, required: s = !1, children: i, ...l }) => /* @__PURE__ */ a("label", { className: "text-medium flex items-center gap-3 text-neutral-800", children: [
3
- /* @__PURE__ */ e(
4
- "input",
1
+ import { jsxs as a, jsx as r } from "react/jsx-runtime";
2
+ import m from "clsx";
3
+ import { CheckIcon as c } from "./CheckIcon.js";
4
+ const u = ({
5
+ id: o,
6
+ name: s,
7
+ required: i = !1,
8
+ children: l,
9
+ checked: e,
10
+ error: t = !1,
11
+ ...n
12
+ }) => /* @__PURE__ */ a("label", { htmlFor: o, className: "text-medium flex cursor-pointer items-center gap-2 text-neutral-800 select-none", children: [
13
+ /* @__PURE__ */ r("input", { id: o, name: s, type: "checkbox", required: i, className: "peer sr-only", ...n }),
14
+ /* @__PURE__ */ r(
15
+ "div",
5
16
  {
6
- id: t,
7
- type: "checkbox",
8
- name: r,
9
- required: s,
10
- className: "text-primary-700 focus-visible:outline-primary-500 h-5 w-5 rounded border-neutral-400 focus-visible:outline-2",
11
- ...l
17
+ className: m(
18
+ "flex h-5.5 w-5.5 items-center justify-center rounded transition-colors",
19
+ "peer-focus-visible:ring-primary-500 peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2",
20
+ !t && !e && "hover:bg-primary-200 border border-neutral-800 bg-white",
21
+ e && "border-primary-500 bg-primary-200 border-2",
22
+ t && "border-error-500 bg-error-20 border"
23
+ ),
24
+ children: e && /* @__PURE__ */ r(c, {})
12
25
  }
13
26
  ),
14
- /* @__PURE__ */ e("span", { children: i })
27
+ /* @__PURE__ */ r("span", { className: "leading-tight text-neutral-800", children: l })
15
28
  ] });
16
29
  export {
17
- n as Checkbox
30
+ u as Checkbox
18
31
  };
@@ -0,0 +1,4 @@
1
+ import * as React_2 from 'react';
2
+
3
+ export declare const ClearIcon: React_2.FC<React_2.SVGProps<SVGSVGElement>>;
4
+
@@ -0,0 +1,12 @@
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import "react";
3
+ const t = (r) => /* @__PURE__ */ i("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...r, children: /* @__PURE__ */ i(
4
+ "path",
5
+ {
6
+ d: "M18.295 7.115C18.6844 6.72564 18.6844 6.09436 18.295 5.705C17.9056 5.31564 17.2744 5.31564 16.885 5.705L12 10.59L7.115 5.705C6.72564 5.31564 6.09436 5.31564 5.705 5.705C5.31564 6.09436 5.31564 6.72564 5.705 7.115L10.59 12L5.705 16.885C5.31564 17.2744 5.31564 17.9056 5.705 18.295C6.09436 18.6844 6.72564 18.6844 7.115 18.295L12 13.41L16.885 18.295C17.2744 18.6844 17.9056 18.6844 18.295 18.295C18.6844 17.9056 18.6844 17.2744 18.295 16.885L13.41 12L18.295 7.115Z",
7
+ fill: r.fill ?? "var(--color-primary-800)"
8
+ }
9
+ ) });
10
+ export {
11
+ t as ClearIcon
12
+ };
@@ -1,3 +1,5 @@
1
+ import { ChangeEventHandler } from 'react';
2
+ import { ComponentProps } from 'react';
1
3
  import { ComponentPropsWithRef } from 'react';
2
4
  import { FC } from 'react';
3
5
  import { ReactNode } from 'react';
@@ -13,6 +15,17 @@ export type ButtonSize = 'small' | 'default' | 'large';
13
15
 
14
16
  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
17
 
18
+ export interface ContactFormCheckboxFieldProps extends Omit<ContactFormFieldProps, 'placeholder' | 'tooltip'> {
19
+ checked: boolean;
20
+ onChange: ChangeEventHandler<HTMLInputElement>;
21
+ }
22
+
23
+ export interface ContactFormFeedbackProps {
24
+ message: string;
25
+ title?: string;
26
+ cta: ReactNode | ButtonProps;
27
+ }
28
+
16
29
  export declare interface ContactFormFieldProps {
17
30
  label: string;
18
31
  id: string;
@@ -20,6 +33,7 @@ export declare interface ContactFormFieldProps {
20
33
  placeholder?: string;
21
34
  required?: boolean;
22
35
  tooltip?: string;
36
+ error?: boolean;
23
37
  errorMessage?: string;
24
38
  }
25
39
 
@@ -31,23 +45,36 @@ export declare interface ContactFormSectionProps {
31
45
  label: string;
32
46
  value: string;
33
47
  }[];
34
- fullNameField: Omit<ContactFormFieldProps, 'tooltip'>;
35
- emailField: Omit<ContactFormFieldProps, 'tooltip'>;
36
- referenceNumberField: ContactFormFieldProps;
37
- subjectField: Omit<ContactFormFieldProps, 'tooltip'>;
38
- messageField: Omit<ContactFormFieldProps, 'tooltip'>;
48
+ fullNameField: Omit<ContactFormTextFieldProps, 'tooltip'>;
49
+ emailField: Omit<ContactFormTextFieldProps, 'tooltip'>;
50
+ referenceNumberField: ContactFormTextFieldProps;
51
+ subjectField: ContactFormSelectFieldProps;
52
+ messageField: ContactFormTextareaFieldProps;
39
53
  requiredFieldsText: string;
40
- privacyField: Omit<ContactFormFieldProps, 'tooltip'>;
54
+ privacyField: ContactFormCheckboxFieldProps;
41
55
  securityHint: string;
42
- feedback?: {
43
- type: 'success' | 'error';
44
- message: string;
45
- title?: string;
46
- cta?: ReactNode;
47
- };
56
+ status?: 'default' | 'loading' | 'success' | 'error';
57
+ successFeedback: ContactFormFeedbackProps;
58
+ errorFeedback: ContactFormFeedbackProps;
59
+ onSubmit?: ComponentProps<'form'>['onSubmit'];
48
60
  button: ButtonProps;
49
61
  }
50
62
 
63
+ export interface ContactFormSelectFieldProps extends Omit<ContactFormFieldProps, 'tooltip'> {
64
+ value: string;
65
+ onChange: ChangeEventHandler<HTMLSelectElement>;
66
+ }
67
+
68
+ export interface ContactFormTextareaFieldProps extends Omit<ContactFormFieldProps, 'tooltip'> {
69
+ value: string;
70
+ onChange: ChangeEventHandler<HTMLTextAreaElement>;
71
+ }
72
+
73
+ export interface ContactFormTextFieldProps extends ContactFormFieldProps {
74
+ value: string;
75
+ onChange: ChangeEventHandler<HTMLInputElement>;
76
+ }
77
+
51
78
  export type IconPosition = 'left' | 'right' | 'top';
52
79
 
53
80
  export type ResponsiveButtonVariant = ButtonVariant | {
@@ -1,104 +1,74 @@
1
- import { jsxs as s, jsx as r } from "react/jsx-runtime";
2
- import { Textarea as g } from "./Textarea.js";
3
- import { Checkbox as y } from "./Checkbox.js";
4
- import { Input as m } from "./Input.js";
5
- import { Select as u } from "./Select.js";
6
- import { Markdown as M } from "./Markdown.js";
7
- import { Item as N } from "./Item.js";
8
- import { InfoIcon as v } from "./InfoIcon.js";
9
- import { Button as q } from "./Button.js";
10
- const V = ({
11
- title: n,
12
- subjectOptions: p,
13
- fullNameField: o,
14
- emailField: l,
15
- referenceNumberField: e,
16
- subjectField: a,
17
- messageField: t,
18
- privacyField: d,
19
- requiredFieldsText: c,
20
- securityHint: h,
21
- feedback: i,
22
- button: x
23
- }) => /* @__PURE__ */ s("section", { className: "rounded-sm bg-white p-8 shadow-sm", children: [
24
- /* @__PURE__ */ s("div", { className: "space-y-4", children: [
25
- /* @__PURE__ */ r("p", { className: "text-big font-bold text-neutral-600", children: n }),
26
- /* @__PURE__ */ r("div", { className: "h-px w-full bg-neutral-200", "aria-hidden": "true" })
1
+ import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
+ import { Textarea as b } from "./Textarea.js";
3
+ import { Checkbox as v } from "./Checkbox.js";
4
+ import { ClearIcon as y } from "./ClearIcon.js";
5
+ import { DoneIcon as w } from "./DoneIcon.js";
6
+ import { Input as n } from "./Input.js";
7
+ import { Select as j } from "./Select.js";
8
+ import { Markdown as I } from "./Markdown.js";
9
+ import { InfoIcon as S } from "./InfoIcon.js";
10
+ import { Button as o } from "./Button.js";
11
+ import { LinkWrapper as k } from "./LinkWrapper.js";
12
+ const C = () => /* @__PURE__ */ e("div", { role: "status", "aria-live": "polite", className: "mt-6 flex items-center justify-center rounded py-6", children: /* @__PURE__ */ e("div", { className: "border-primary-500 h-[25px] w-[25px] animate-spin rounded-full border-3 border-t-transparent" }) }), L = ({ title: r, message: l, cta: i }) => /* @__PURE__ */ t("div", { role: "status", "aria-live": "polite", className: "flex flex-col items-center justify-center gap-8 px-4 py-3", children: [
13
+ /* @__PURE__ */ t("div", { className: "flex flex-col items-center gap-2", children: [
14
+ /* @__PURE__ */ e("div", { className: "bg-error-20 w-fit rounded-full p-3", children: /* @__PURE__ */ e(y, { width: 48, height: 48, fill: "var(--error-500)" }) }),
15
+ /* @__PURE__ */ e("p", { className: "text-big font-bold text-neutral-800", children: r }),
16
+ /* @__PURE__ */ e("p", { className: "text-medium text-neutral-800", children: l })
27
17
  ] }),
28
- /* @__PURE__ */ s("form", { className: "mt-6 flex flex-col gap-6", noValidate: !0, children: [
29
- i && /* @__PURE__ */ r(
18
+ /* @__PURE__ */ e(o, { ...i, variant: "primary-green" })
19
+ ] }), B = ({ title: r, message: l, cta: i }) => /* @__PURE__ */ t("div", { role: "status", "aria-live": "polite", className: "flex flex-col items-center justify-center gap-8 px-4 py-3", children: [
20
+ /* @__PURE__ */ t("div", { className: "flex flex-col items-center gap-2", children: [
21
+ /* @__PURE__ */ e("div", { className: "bg-primary-100 w-fit rounded-full p-3", children: /* @__PURE__ */ e(w, { width: 48, height: 48, fill: "var(--primary-500)" }) }),
22
+ /* @__PURE__ */ e("p", { className: "text-big font-bold text-neutral-800", children: r }),
23
+ /* @__PURE__ */ e("p", { className: "text-medium text-neutral-800", children: l })
24
+ ] }),
25
+ /* @__PURE__ */ e(k, { className: "w-fit", children: i })
26
+ ] }), G = ({
27
+ title: r,
28
+ subjectOptions: l,
29
+ fullNameField: i,
30
+ emailField: m,
31
+ referenceNumberField: d,
32
+ subjectField: p,
33
+ messageField: f,
34
+ privacyField: s,
35
+ requiredFieldsText: h,
36
+ securityHint: x,
37
+ status: a = "default",
38
+ successFeedback: u,
39
+ errorFeedback: N,
40
+ onSubmit: g,
41
+ button: c
42
+ }) => /* @__PURE__ */ t("section", { className: "rounded-sm bg-white p-8 shadow-sm", children: [
43
+ /* @__PURE__ */ t("div", { className: "space-y-4", children: [
44
+ /* @__PURE__ */ e("p", { className: "text-big font-bold text-neutral-600", children: r }),
45
+ /* @__PURE__ */ e("div", { className: "h-px w-full bg-neutral-200", "aria-hidden": "true" })
46
+ ] }),
47
+ a === "loading" && /* @__PURE__ */ e(C, {}),
48
+ a === "error" && /* @__PURE__ */ e(L, { ...N }),
49
+ a === "success" && /* @__PURE__ */ e(B, { ...u }),
50
+ a === "default" && /* @__PURE__ */ t("form", { className: "mt-6 flex flex-col gap-6", noValidate: !0, onSubmit: g, children: [
51
+ /* @__PURE__ */ e(n, { ...i, type: "text" }),
52
+ /* @__PURE__ */ e(n, { ...m, type: "email" }),
53
+ /* @__PURE__ */ e(n, { ...d }),
54
+ /* @__PURE__ */ e(j, { ...p, options: l }),
55
+ /* @__PURE__ */ e(b, { ...f }),
56
+ /* @__PURE__ */ e("p", { className: "text-medium text-neutral-600", children: h }),
57
+ /* @__PURE__ */ e(v, { ...s, children: /* @__PURE__ */ e(I, { className: "text-medium [&_p:last-child]:mb-0", content: s.label }) }),
58
+ /* @__PURE__ */ t(
30
59
  "div",
31
- {
32
- role: "status",
33
- "aria-live": "polite",
34
- className: i.type === "success" ? "rounded border border-green-300 bg-green-50 px-4 py-3 text-green-900" : "rounded border border-red-300 bg-red-50 px-4 py-3 text-red-800",
35
- children: i.message
36
- }
37
- ),
38
- /* @__PURE__ */ s("div", { className: "space-y-1", children: [
39
- /* @__PURE__ */ r(m, { ...o, type: "text" }),
40
- o.errorMessage && /* @__PURE__ */ r("p", { id: `${o.id}-error-message`, className: "text-small text-red-700", children: o.errorMessage })
41
- ] }),
42
- /* @__PURE__ */ s("div", { className: "space-y-1", children: [
43
- /* @__PURE__ */ r(m, { ...l, type: "email" }),
44
- l.errorMessage && /* @__PURE__ */ r("p", { id: `${l.id}-error-message`, className: "text-small text-red-700", children: l.errorMessage })
45
- ] }),
46
- /* @__PURE__ */ s("div", { className: "space-y-1", children: [
47
- /* @__PURE__ */ r(
48
- m,
49
- {
50
- label: e.label,
51
- id: e.id,
52
- name: e.name,
53
- type: "text",
54
- placeholder: e.placeholder,
55
- tooltip: e.tooltip,
56
- required: e.required
57
- }
58
- ),
59
- e.errorMessage && /* @__PURE__ */ r("p", { id: `${e.id}-error-message`, className: "text-small text-red-700", children: e.errorMessage })
60
- ] }),
61
- /* @__PURE__ */ s("div", { className: "space-y-1", children: [
62
- /* @__PURE__ */ r(
63
- u,
64
- {
65
- label: a.label,
66
- id: a.id,
67
- name: a.name,
68
- placeholder: a.placeholder,
69
- options: p,
70
- required: a.required
71
- }
72
- ),
73
- a.errorMessage && /* @__PURE__ */ r("p", { id: `${a.id}-error-message`, className: "text-small text-red-700", children: a.errorMessage })
74
- ] }),
75
- /* @__PURE__ */ s("div", { className: "space-y-1", children: [
76
- /* @__PURE__ */ r(
77
- g,
78
- {
79
- label: t.label,
80
- id: t.id,
81
- name: t.name,
82
- placeholder: t.placeholder,
83
- required: t.required
84
- }
85
- ),
86
- t.errorMessage && /* @__PURE__ */ r("p", { id: `${t.id}-error-message`, className: "text-small text-red-700", children: t.errorMessage })
87
- ] }),
88
- /* @__PURE__ */ r("p", { className: "text-medium text-neutral-600", children: c }),
89
- /* @__PURE__ */ r("div", { className: "", children: /* @__PURE__ */ r(y, { id: d.id, name: d.name, required: !0, children: /* @__PURE__ */ r(M, { className: "text-medium [&_p:last-child]:mb-0", content: d.label }) }) }),
90
- /* @__PURE__ */ r(
91
- N,
92
60
  {
93
61
  id: "security-hint",
94
- image: /* @__PURE__ */ r(v, { width: 24, height: 24, "aria-hidden": "true" }),
95
- description: h,
96
- className: "text-small flex items-start gap-2 rounded bg-neutral-50 p-4 text-neutral-600"
62
+ className: "text-small flex items-start gap-2 rounded bg-neutral-50 p-4 text-neutral-600",
63
+ children: [
64
+ /* @__PURE__ */ e(S, { width: 24, height: 24, "aria-hidden": "true" }),
65
+ /* @__PURE__ */ e("p", { children: x })
66
+ ]
97
67
  }
98
68
  ),
99
- /* @__PURE__ */ r(q, { ...x, variant: "primary-green", className: "w-fit self-center" })
69
+ /* @__PURE__ */ e(o, { ...c, className: "w-fit self-center", type: "submit", children: c.children })
100
70
  ] })
101
71
  ] });
102
72
  export {
103
- V as ContactFormSection
73
+ G as ContactFormSection
104
74
  };
@@ -1,36 +1,37 @@
1
- import { jsxs as i, Fragment as r, jsx as a } from "react/jsx-runtime";
2
- import { PhoneTalkIcon as n } from "./PhoneTalkIcon.js";
3
- import { MailFillIcon as m } from "./MailFillIcon.js";
4
- import { LocationIcon as c } from "./LocationIcon.js";
5
- import { LinkWrapper as t } from "./LinkWrapper.js";
6
- const y = ({ label: e, helper: l, variant: s }) => /* @__PURE__ */ i("article", { className: "bg-neutral-25 flex flex-wrap gap-2 rounded-sm p-4 md:flex-col", children: [
7
- s === "phone" && /* @__PURE__ */ i(r, { children: [
8
- /* @__PURE__ */ i(t, { variant: "primary-green", className: "w-full md:hidden", children: [
9
- /* @__PURE__ */ a(n, { fill: "white" }),
1
+ import { jsxs as l, Fragment as r, jsx as a } from "react/jsx-runtime";
2
+ import { SinglePhoneIcon as s } from "./SinglePhoneIcon.js";
3
+ import { PhoneTalkIcon as m } from "./PhoneTalkIcon.js";
4
+ import { MailFillIcon as c } from "./MailFillIcon.js";
5
+ import { LocationIcon as o } from "./LocationIcon.js";
6
+ import { LinkWrapper as n } from "./LinkWrapper.js";
7
+ const v = ({ label: e, helper: i, variant: t }) => /* @__PURE__ */ l("article", { className: "bg-neutral-25 flex flex-wrap gap-2 rounded-sm p-4 md:flex-col", children: [
8
+ t === "phone" && /* @__PURE__ */ l(r, { children: [
9
+ /* @__PURE__ */ l(n, { variant: "primary-green", className: "w-full md:hidden", children: [
10
+ /* @__PURE__ */ a(s, { width: 22, height: 22, fill: "white" }),
10
11
  " ",
11
12
  e
12
13
  ] }),
13
- /* @__PURE__ */ i("div", { className: "hidden gap-2 md:flex", children: [
14
- /* @__PURE__ */ a("span", { className: "shrink-0", children: /* @__PURE__ */ a(n, { fill: "var(--primary-800)" }) }),
15
- /* @__PURE__ */ i("div", { className: "flex flex-col gap-1", children: [
16
- /* @__PURE__ */ a(t, { className: "justify-start! p-0! no-underline!", variant: "tertiary-link", children: /* @__PURE__ */ a("span", { className: "text-medium text-primary-800 font-bold", children: e }) }),
17
- l && /* @__PURE__ */ a("p", { className: "text-small mx-auto text-neutral-600 md:mx-0", children: l })
14
+ /* @__PURE__ */ l("div", { className: "hidden gap-2 md:flex", children: [
15
+ /* @__PURE__ */ a("span", { className: "shrink-0", children: /* @__PURE__ */ a(m, { fill: "var(--primary-800)" }) }),
16
+ /* @__PURE__ */ l("div", { className: "flex flex-col gap-1", children: [
17
+ /* @__PURE__ */ a(n, { className: "justify-start! p-0! no-underline!", variant: "tertiary-link", children: /* @__PURE__ */ a("span", { className: "text-medium text-primary-800 font-bold", children: e }) }),
18
+ i && /* @__PURE__ */ a("p", { className: "text-small mx-auto text-neutral-600 md:mx-0", children: i })
18
19
  ] })
19
20
  ] }),
20
- l && /* @__PURE__ */ a("p", { className: "text-small mx-auto text-neutral-600 md:mx-0 md:hidden", children: l })
21
+ i && /* @__PURE__ */ a("p", { className: "text-small mx-auto text-neutral-600 md:mx-0 md:hidden", children: i })
21
22
  ] }),
22
- s === "email" && /* @__PURE__ */ i("div", { className: "flex gap-2", children: [
23
- /* @__PURE__ */ a("span", { className: "shrink-0", children: /* @__PURE__ */ a(m, { fill: "var(--primary-800)" }) }),
24
- /* @__PURE__ */ i("div", { className: "flex flex-col gap-1", children: [
25
- /* @__PURE__ */ a(t, { className: "justify-start! p-0!", variant: "tertiary-link", children: /* @__PURE__ */ a("span", { className: "text-medium text-primary-800 font-bold", children: e }) }),
26
- l && /* @__PURE__ */ a("p", { className: "text-small text-neutral-600", children: l })
23
+ t === "email" && /* @__PURE__ */ l("div", { className: "flex gap-2", children: [
24
+ /* @__PURE__ */ a("span", { className: "shrink-0", children: /* @__PURE__ */ a(c, { fill: "var(--primary-800)" }) }),
25
+ /* @__PURE__ */ l("div", { className: "flex flex-col gap-1", children: [
26
+ /* @__PURE__ */ a(n, { className: "justify-start! p-0!", variant: "tertiary-link", children: /* @__PURE__ */ a("span", { className: "text-medium text-primary-800 font-bold", children: e }) }),
27
+ i && /* @__PURE__ */ a("p", { className: "text-small text-neutral-600", children: i })
27
28
  ] })
28
29
  ] }),
29
- s === "location" && /* @__PURE__ */ i("div", { className: "flex gap-2", children: [
30
- /* @__PURE__ */ a("span", { className: "shrink-0", children: /* @__PURE__ */ a(c, { fill: "var(--primary-800)" }) }),
31
- l && /* @__PURE__ */ a("p", { className: "text-small text-neutral-600", children: l })
30
+ t === "location" && /* @__PURE__ */ l("div", { className: "flex gap-2", children: [
31
+ /* @__PURE__ */ a("span", { className: "shrink-0", children: /* @__PURE__ */ a(o, { fill: "var(--primary-800)" }) }),
32
+ i && /* @__PURE__ */ a("p", { className: "text-small text-neutral-600", children: i })
32
33
  ] })
33
34
  ] });
34
35
  export {
35
- y as ContactMethodCard
36
+ v as ContactMethodCard
36
37
  };
@@ -1,3 +1,5 @@
1
+ import { ChangeEventHandler } from 'react';
2
+ import { ComponentProps } from 'react';
1
3
  import { ComponentPropsWithRef } from 'react';
2
4
  import { FC } from 'react';
3
5
  import { ReactNode } from 'react';
@@ -13,6 +15,17 @@ export type ButtonSize = 'small' | 'default' | 'large';
13
15
 
14
16
  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
17
 
18
+ export interface ContactFormCheckboxFieldProps extends Omit<ContactFormFieldProps, 'placeholder' | 'tooltip'> {
19
+ checked: boolean;
20
+ onChange: ChangeEventHandler<HTMLInputElement>;
21
+ }
22
+
23
+ export interface ContactFormFeedbackProps {
24
+ message: string;
25
+ title?: string;
26
+ cta: ReactNode | ButtonProps;
27
+ }
28
+
16
29
  export interface ContactFormFieldProps {
17
30
  label: string;
18
31
  id: string;
@@ -20,6 +33,7 @@ export interface ContactFormFieldProps {
20
33
  placeholder?: string;
21
34
  required?: boolean;
22
35
  tooltip?: string;
36
+ error?: boolean;
23
37
  errorMessage?: string;
24
38
  }
25
39
 
@@ -29,23 +43,36 @@ export interface ContactFormSectionProps {
29
43
  label: string;
30
44
  value: string;
31
45
  }[];
32
- fullNameField: Omit<ContactFormFieldProps, 'tooltip'>;
33
- emailField: Omit<ContactFormFieldProps, 'tooltip'>;
34
- referenceNumberField: ContactFormFieldProps;
35
- subjectField: Omit<ContactFormFieldProps, 'tooltip'>;
36
- messageField: Omit<ContactFormFieldProps, 'tooltip'>;
46
+ fullNameField: Omit<ContactFormTextFieldProps, 'tooltip'>;
47
+ emailField: Omit<ContactFormTextFieldProps, 'tooltip'>;
48
+ referenceNumberField: ContactFormTextFieldProps;
49
+ subjectField: ContactFormSelectFieldProps;
50
+ messageField: ContactFormTextareaFieldProps;
37
51
  requiredFieldsText: string;
38
- privacyField: Omit<ContactFormFieldProps, 'tooltip'>;
52
+ privacyField: ContactFormCheckboxFieldProps;
39
53
  securityHint: string;
40
- feedback?: {
41
- type: 'success' | 'error';
42
- message: string;
43
- title?: string;
44
- cta?: ReactNode;
45
- };
54
+ status?: 'default' | 'loading' | 'success' | 'error';
55
+ successFeedback: ContactFormFeedbackProps;
56
+ errorFeedback: ContactFormFeedbackProps;
57
+ onSubmit?: ComponentProps<'form'>['onSubmit'];
46
58
  button: ButtonProps;
47
59
  }
48
60
 
61
+ export interface ContactFormSelectFieldProps extends Omit<ContactFormFieldProps, 'tooltip'> {
62
+ value: string;
63
+ onChange: ChangeEventHandler<HTMLSelectElement>;
64
+ }
65
+
66
+ export interface ContactFormTextareaFieldProps extends Omit<ContactFormFieldProps, 'tooltip'> {
67
+ value: string;
68
+ onChange: ChangeEventHandler<HTMLTextAreaElement>;
69
+ }
70
+
71
+ export interface ContactFormTextFieldProps extends ContactFormFieldProps {
72
+ value: string;
73
+ onChange: ChangeEventHandler<HTMLInputElement>;
74
+ }
75
+
49
76
  export interface ContactMethod {
50
77
  id: string;
51
78
  label?: ReactNode;
@@ -68,6 +95,7 @@ export declare interface ContactUsTemplateProps {
68
95
  faqText: string;
69
96
  faqCta: ReactNode;
70
97
  };
98
+ bgImage: ReactNode | null;
71
99
  }
72
100
 
73
101
  export type IconPosition = 'left' | 'right' | 'top';
@@ -77,6 +105,7 @@ export interface Jumbotron2Props {
77
105
  subtitle?: string;
78
106
  className?: string;
79
107
  children?: React.ReactNode;
108
+ variant?: 'default' | 'contact';
80
109
  }
81
110
 
82
111
  export type ResponsiveButtonVariant = ButtonVariant | {
@@ -1,26 +1,36 @@
1
- import { jsx as a, jsxs as l } from "react/jsx-runtime";
2
- import { ContactFormSection as i } from "./ContactFormSection.js";
3
- import { Jumbotron2 as o } from "./Jumbotron2.js";
4
- import { ContactMethodsSection as s } from "./ContactMethodsSection.js";
5
- import { Markdown as c } from "./Markdown.js";
6
- import { LinkWrapper as d } from "./LinkWrapper.js";
7
- const N = ({
8
- jumbotron: r,
9
- contactMethods: m,
10
- contactForm: t,
11
- faqSection: e
12
- }) => /* @__PURE__ */ a("main", { className: "bg-primary-50 flex-1 py-10 md:px-6 md:pb-20 lg:px-8 xl:px-0", children: /* @__PURE__ */ l("div", { className: "relative mx-auto flex w-full max-w-300 flex-col gap-12", children: [
13
- /* @__PURE__ */ a(o, { ...r, className: "pb-0!" }),
14
- /* @__PURE__ */ l("div", { className: "relative flex flex-col gap-10 md:grid md:grid-cols-2 md:items-start md:gap-x-10 md:gap-y-8 lg:gap-x-16 xl:gap-x-20", children: [
15
- /* @__PURE__ */ a(s, { ...m }),
16
- /* @__PURE__ */ a("div", { className: "md:row-span-2", children: /* @__PURE__ */ a(i, { ...t }) }),
17
- /* @__PURE__ */ l("div", { className: "flex flex-col gap-8 px-6", children: [
18
- /* @__PURE__ */ a("h3", { className: "text-large text-primary-700 font-bold", children: e.faqTitle }),
19
- /* @__PURE__ */ a("div", { className: "flex flex-col gap-8", children: /* @__PURE__ */ a(c, { content: e.faqText, className: "text-medium text-neutral-800 [&_p:last-child]:mb-0" }) }),
20
- /* @__PURE__ */ a(d, { className: "w-fit", variant: "secondary-green", children: e.faqCta })
1
+ import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
+ import { ContactFormSection as o } from "./ContactFormSection.js";
3
+ import { Jumbotron2 as s } from "./Jumbotron2.js";
4
+ import { Markdown as m } from "./Markdown.js";
5
+ import { ContactMethodsSection as d } from "./ContactMethodsSection.js";
6
+ import { LinkWrapper as n } from "./LinkWrapper.js";
7
+ const v = ({
8
+ jumbotron: t,
9
+ contactMethods: i,
10
+ contactForm: c,
11
+ faqSection: l,
12
+ bgImage: r
13
+ }) => /* @__PURE__ */ a("main", { className: "bg-primary-50 relative flex-1 pt-10 pb-20 md:px-6 lg:px-8 xl:px-0", children: [
14
+ !!r && /* @__PURE__ */ e("div", { className: "absolute right-0 bottom-0 hidden md:block", children: r }),
15
+ /* @__PURE__ */ a("div", { className: "relative mx-auto flex w-full max-w-300 flex-col gap-12", children: [
16
+ /* @__PURE__ */ e(s, { ...t, className: "flex flex-col gap-4 pb-0!", variant: "contact", children: /* @__PURE__ */ e(
17
+ m,
18
+ {
19
+ content: t.children,
20
+ className: "text-medium text-neutral-600 [&_p:last-child]:mb-0"
21
+ }
22
+ ) }),
23
+ /* @__PURE__ */ a("div", { className: "relative flex flex-col gap-10 md:grid md:grid-cols-2 md:items-start md:gap-x-10 md:gap-y-8 lg:gap-x-16 xl:gap-x-20", children: [
24
+ /* @__PURE__ */ e(d, { ...i }),
25
+ /* @__PURE__ */ e("div", { className: "md:row-span-2", children: /* @__PURE__ */ e(o, { ...c }) }),
26
+ /* @__PURE__ */ a("div", { className: "flex flex-col gap-8 px-6", children: [
27
+ /* @__PURE__ */ e("h3", { className: "text-large text-primary-700 font-bold", children: l.faqTitle }),
28
+ /* @__PURE__ */ e("div", { className: "flex flex-col gap-8", children: /* @__PURE__ */ e(m, { content: l.faqText, className: "text-medium text-neutral-800 [&_p:last-child]:mb-0" }) }),
29
+ /* @__PURE__ */ e(n, { className: "w-fit", variant: "secondary-green", children: l.faqCta })
30
+ ] })
21
31
  ] })
22
32
  ] })
23
- ] }) });
33
+ ] });
24
34
  export {
25
- N as ContactUsTemplate
35
+ v as ContactUsTemplate
26
36
  };
@@ -0,0 +1,4 @@
1
+ import * as React_2 from 'react';
2
+
3
+ export declare const DoneIcon: React_2.FC<React_2.SVGProps<SVGSVGElement>>;
4
+
@@ -0,0 +1,12 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import "react";
3
+ const l = (o) => /* @__PURE__ */ r("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...o, children: /* @__PURE__ */ r(
4
+ "path",
5
+ {
6
+ d: "M8.79995 15.9L5.29995 12.4C4.91335 12.0134 4.28655 12.0134 3.89995 12.4C3.51335 12.7866 3.51335 13.4134 3.89995 13.8L8.53328 18.4333C8.68056 18.5806 8.91934 18.5806 9.06662 18.4333L20.1 7.39999C20.4866 7.01339 20.4866 6.38659 20.1 5.99999C19.7134 5.61339 19.0866 5.61339 18.7 5.99999L8.79995 15.9Z",
7
+ fill: o.fill ?? "var(--color-primary-800)"
8
+ }
9
+ ) });
10
+ export {
11
+ l as DoneIcon
12
+ };
@@ -35,5 +35,6 @@ export interface Jumbotron2Props {
35
35
  subtitle?: string;
36
36
  className?: string;
37
37
  children?: React.ReactNode;
38
+ variant?: 'default' | 'contact';
38
39
  }
39
40
 
@@ -13,5 +13,7 @@ export declare interface InputProps extends React.InputHTMLAttributes<HTMLInputE
13
13
  tooltip?: string;
14
14
  onInputChange?: (str: string) => void;
15
15
  containerClassName?: string;
16
+ error?: boolean;
17
+ errorMessage?: string;
16
18
  }
17
19