@npm_leadtech/legal-contracts-ui 0.53.4 → 0.53.6

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.
@@ -1,25 +1,27 @@
1
1
  import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
2
  import "react";
3
- import { FooterNav as o } from "./FooterNav.js";
4
- const N = ({
5
- nav: x,
3
+ import { PhoneButton as o } from "./PhoneButton.js";
4
+ import { FooterNav as h } from "./FooterNav.js";
5
+ const v = ({
6
+ nav: r,
6
7
  contactInfo: t,
7
- logoGray: m,
8
- socialLinks: c,
9
- legalLinks: i,
10
- disclaimerText: d,
8
+ logoGray: i,
9
+ socialLinks: d,
10
+ legalLinks: c,
11
+ disclaimerText: x,
11
12
  copyrightText: n,
12
13
  trustPilotWidget: s,
13
- languageSelector: r
14
+ languageSelector: m
14
15
  }) => /* @__PURE__ */ l("footer", { className: "text-neutral-25", children: [
15
16
  /* @__PURE__ */ e("div", { className: "bg-primary-900", children: /* @__PURE__ */ l("div", { className: "mx-auto flex w-full max-w-300 flex-col items-start gap-8 px-6 py-10 md:grid md:grid-cols-3 lg:flex lg:flex-row lg:justify-between", children: [
16
- x.map((a) => /* @__PURE__ */ e(o, { ...a }, a.title)),
17
+ r.map((a) => /* @__PURE__ */ e(h, { ...a }, a.title)),
17
18
  /* @__PURE__ */ l("div", { className: "flex flex-col gap-6 max-sm:w-full md:contents lg:flex", children: [
18
19
  /* @__PURE__ */ l("div", { className: "", children: [
19
- /* @__PURE__ */ e("div", { className: "mb-4 xl:hidden", children: !!r && /* @__PURE__ */ e("div", { className: "language-selector-mobile-container", children: r }) }),
20
+ /* @__PURE__ */ e("div", { className: "mb-4 xl:hidden", children: !!m && /* @__PURE__ */ e("div", { className: "language-selector-mobile-container", children: m }) }),
20
21
  /* @__PURE__ */ l("div", { children: [
21
- /* @__PURE__ */ e("p", { className: "text-small font-bold text-white", children: t.phoneNumber }),
22
- /* @__PURE__ */ l("p", { className: "text-neutral-25 text-center text-[16px] md:text-left md:text-[12px]", children: [
22
+ /* @__PURE__ */ e("p", { className: "text-small hidden font-bold text-white sm:block", children: t.phoneNumber }),
23
+ /* @__PURE__ */ e("div", { className: "mb-2 w-full text-center sm:hidden", children: /* @__PURE__ */ e(o, { phoneNumber: t.phoneNumber }) }),
24
+ /* @__PURE__ */ l("p", { className: "text-neutral-25 text-medium md:text-small text-center md:text-left", children: [
23
25
  t.contactHoursText,
24
26
  " ",
25
27
  t.contactHours
@@ -31,15 +33,15 @@ const N = ({
31
33
  ] }) }),
32
34
  /* @__PURE__ */ e("div", { className: "bg-neutral-900 px-6 py-8 text-neutral-400", children: /* @__PURE__ */ l("div", { className: "mx-auto flex w-full max-w-300 flex-col gap-6", children: [
33
35
  /* @__PURE__ */ l("div", { className: "flex flex-col items-start gap-6 md:flex-row md:justify-between", children: [
34
- m,
35
- /* @__PURE__ */ e("div", { className: "flex gap-4", children: c?.map((a) => a) })
36
+ i,
37
+ /* @__PURE__ */ e("div", { className: "flex gap-4", children: d?.map((a) => a) })
36
38
  ] }),
37
39
  /* @__PURE__ */ e("div", { className: "h-px w-full bg-neutral-600" }),
38
- /* @__PURE__ */ e("div", { className: "text-extra-small flex flex-wrap gap-4", children: i?.map((a) => a) }),
39
- /* @__PURE__ */ e("p", { className: "text-extra-small text-neutral-400", children: d }),
40
+ /* @__PURE__ */ e("div", { className: "text-extra-small flex flex-wrap gap-4", children: c?.map((a) => a) }),
41
+ /* @__PURE__ */ e("p", { className: "text-extra-small text-neutral-400", children: x }),
40
42
  /* @__PURE__ */ e("p", { className: "text-extra-small text-neutral-400", children: n })
41
43
  ] }) })
42
44
  ] });
43
45
  export {
44
- N as Footer
46
+ v as Footer
45
47
  };
@@ -56,7 +56,6 @@ export interface MobileMenuSection {
56
56
  items?: {
57
57
  id: string;
58
58
  link: ReactNode;
59
- tag?: string;
60
59
  }[];
61
60
  seeAll?: ReactNode | null;
62
61
  content?: ReactNode | null;
@@ -68,9 +67,6 @@ export type NavMenuItemProps = {
68
67
  dropdownItems: (NavMenuItemProps | NavMenuLink)[];
69
68
  hasDropdown: true;
70
69
  isNested?: boolean;
71
- onItemClick?: () => void;
72
- isOpen?: boolean;
73
- onToggle?: (open: boolean) => void;
74
70
  };
75
71
 
76
72
  export type NavMenuLink = {
@@ -80,9 +76,6 @@ export type NavMenuLink = {
80
76
  hasDropdown: false;
81
77
  isNested?: boolean;
82
78
  bold?: boolean;
83
- onItemClick?: () => void;
84
- isOpen?: boolean;
85
- onToggle?: (open: boolean) => void;
86
79
  };
87
80
 
88
81
  export interface NavMenuProps {
@@ -30,7 +30,6 @@ export declare interface MobileMenuSection {
30
30
  items?: {
31
31
  id: string;
32
32
  link: ReactNode;
33
- tag?: string;
34
33
  }[];
35
34
  seeAll?: ReactNode | null;
36
35
  content?: ReactNode | null;
@@ -1,28 +1,28 @@
1
1
  import { jsxs as l, jsx as r } from "react/jsx-runtime";
2
2
  import "react";
3
- import { SearchBar as u } from "./SearchBar.js";
3
+ import { SearchBar as x } from "./SearchBar.js";
4
4
  import { PhoneTalkIcon as f } from "./PhoneTalkIcon.js";
5
5
  import { CloseIcon as h } from "./CloseIcon.js";
6
6
  const j = ({
7
- isOpen: n,
8
- onClose: m,
9
- logo: d,
10
- userActions: c,
11
- searchBarProps: o,
12
- sections: p = [],
7
+ isOpen: m,
8
+ onClose: n,
9
+ logo: c,
10
+ userActions: d,
11
+ searchBarProps: p,
12
+ sections: o = [],
13
13
  contactInfo: t,
14
- closeText: x
15
- }) => n ? /* @__PURE__ */ l("div", { className: "fixed inset-0 z-50 flex flex-col overflow-y-auto bg-white text-neutral-800 lg:hidden", children: [
14
+ closeText: u
15
+ }) => m ? /* @__PURE__ */ l("div", { className: "fixed inset-0 z-50 flex flex-col overflow-y-auto bg-white text-neutral-800 lg:hidden", children: [
16
16
  /* @__PURE__ */ l("div", { className: "flex items-center justify-between px-6 py-4", children: [
17
- d,
17
+ c,
18
18
  /* @__PURE__ */ l(
19
19
  "button",
20
20
  {
21
21
  className: "text-small text-primary-500 flex cursor-pointer items-center justify-center gap-1 rounded border border-neutral-400 px-2 py-1",
22
- onClick: m,
22
+ onClick: n,
23
23
  "aria-label": "Close menu",
24
24
  children: [
25
- x,
25
+ u,
26
26
  /* @__PURE__ */ r(h, { fill: "var(--primary-500)" })
27
27
  ]
28
28
  }
@@ -30,31 +30,27 @@ const j = ({
30
30
  ] }),
31
31
  /* @__PURE__ */ l("div", { className: "flex flex-1 flex-col pb-6", children: [
32
32
  /* @__PURE__ */ l("div", { className: "flex flex-col gap-6 px-6", children: [
33
- /* @__PURE__ */ r("div", { className: "flex items-center gap-4", children: c }),
34
- /* @__PURE__ */ r(u, { ...o })
33
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-4", children: d }),
34
+ /* @__PURE__ */ r(x, { ...p })
35
35
  ] }),
36
- /* @__PURE__ */ r("nav", { className: "flex flex-col gap-0", children: p.map((e, s) => {
37
- const i = e.icon != null;
38
- return e.content != null ? /* @__PURE__ */ r("div", { className: "flex items-center px-6 pb-8", children: e.content }, e.id ?? `custom-${s.toString()}`) : /* @__PURE__ */ l(
36
+ /* @__PURE__ */ r("nav", { className: "flex flex-col gap-0", children: o.map((e, i) => {
37
+ const a = e.icon != null;
38
+ return e.content != null ? /* @__PURE__ */ r("div", { className: "flex items-center px-6 pb-8", children: e.content }, e.id ?? `custom-${i.toString()}`) : /* @__PURE__ */ l(
39
39
  "div",
40
40
  {
41
- className: e.title !== "" && !i ? "border-t border-b border-neutral-200 pt-4" : "",
41
+ className: e.title !== "" && !a ? "border-t border-b border-neutral-200 pt-4" : "",
42
42
  children: [
43
- e.title && /* @__PURE__ */ l("div", { className: `flex items-center gap-2 px-6 ${i ? "bg-neutral-50 py-4" : ""}`, children: [
43
+ e.title && /* @__PURE__ */ l("div", { className: `flex items-center gap-2 px-6 ${a ? "bg-neutral-50 py-4" : ""}`, children: [
44
44
  e.icon != null && /* @__PURE__ */ r("span", { className: "text-primary-700", children: e.icon }),
45
45
  /* @__PURE__ */ r("h4", { className: "text-medium font-semibold", children: e.title })
46
46
  ] }),
47
- e.items != null && /* @__PURE__ */ l("ul", { className: `flex flex-col gap-4 ${i ? "p-6" : "px-6 py-4"}`, children: [
48
- e.items.map((a) => /* @__PURE__ */ l("li", { className: "text-medium flex items-center gap-1", children: [
49
- a.link,
50
- " ",
51
- a.tag && /* @__PURE__ */ r("span", { className: "bg-secondary-200 text-extra-small flex h-4.5 w-5.25 items-center justify-center rounded align-middle font-bold", children: a.tag })
52
- ] }, a.id)),
47
+ e.items != null && /* @__PURE__ */ l("ul", { className: `flex flex-col gap-4 ${a ? "p-6" : "px-6 py-4"}`, children: [
48
+ e.items.map((s) => /* @__PURE__ */ r("li", { className: "text-medium", children: s.link }, s.id)),
53
49
  e.seeAll != null && /* @__PURE__ */ r("li", { className: "font-semibold", children: e.seeAll })
54
50
  ] })
55
51
  ]
56
52
  },
57
- e.id ?? e.title ?? s.toString()
53
+ e.id ?? e.title ?? i.toString()
58
54
  );
59
55
  }) }),
60
56
  t && /* @__PURE__ */ l("div", { className: "mt-auto flex flex-col items-center justify-center border-t border-neutral-100 p-6", children: [
@@ -9,9 +9,6 @@ export type NavMenuItemProps = {
9
9
  dropdownItems: (NavMenuItemProps | NavMenuLink)[];
10
10
  hasDropdown: true;
11
11
  isNested?: boolean;
12
- onItemClick?: () => void;
13
- isOpen?: boolean;
14
- onToggle?: (open: boolean) => void;
15
12
  };
16
13
 
17
14
  export type NavMenuLink = {
@@ -21,9 +18,6 @@ export type NavMenuLink = {
21
18
  hasDropdown: false;
22
19
  isNested?: boolean;
23
20
  bold?: boolean;
24
- onItemClick?: () => void;
25
- isOpen?: boolean;
26
- onToggle?: (open: boolean) => void;
27
21
  };
28
22
 
29
23
  export declare interface NavMenuProps {
@@ -1,21 +1,7 @@
1
- "use client";
2
- import { jsx as r } from "react/jsx-runtime";
3
- import { useState as m } from "react";
4
- import { NavMenuItem as n } from "./NavMenuItem.js";
5
- const c = ({ navItems: l, className: o = "" }) => {
6
- const [t, i] = m(null);
7
- return /* @__PURE__ */ r("nav", { className: o, children: /* @__PURE__ */ r("ul", { className: "text-medium flex flex-wrap items-center gap-4 xl:gap-8", children: l.map((e) => /* @__PURE__ */ r(
8
- n,
9
- {
10
- ...e,
11
- isOpen: t === e.id,
12
- onToggle: (p) => {
13
- i(p ? e.id : null);
14
- }
15
- },
16
- e.id
17
- )) }) });
18
- };
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import "react";
3
+ import { NavMenuItem as a } from "./NavMenuItem.js";
4
+ const o = ({ navItems: m, className: t = "" }) => /* @__PURE__ */ e("nav", { className: t, children: /* @__PURE__ */ e("ul", { className: "text-medium flex flex-wrap items-center gap-4 xl:gap-8", children: m.map((r) => /* @__PURE__ */ e(a, { ...r }, r.id)) }) });
19
5
  export {
20
- c as NavMenu
6
+ o as NavMenu
21
7
  };
@@ -9,9 +9,6 @@ export declare type NavMenuItemProps = {
9
9
  dropdownItems: (NavMenuItemProps | NavMenuLink)[];
10
10
  hasDropdown: true;
11
11
  isNested?: boolean;
12
- onItemClick?: () => void;
13
- isOpen?: boolean;
14
- onToggle?: (open: boolean) => void;
15
12
  };
16
13
 
17
14
  export declare type NavMenuLink = {
@@ -21,8 +18,5 @@ export declare type NavMenuLink = {
21
18
  hasDropdown: false;
22
19
  isNested?: boolean;
23
20
  bold?: boolean;
24
- onItemClick?: () => void;
25
- isOpen?: boolean;
26
- onToggle?: (open: boolean) => void;
27
21
  };
28
22
 
@@ -1,104 +1,61 @@
1
- "use client";
2
- import { jsxs as d, jsx as t } from "react/jsx-runtime";
3
- import { useState as p, useCallback as E, useRef as T, useEffect as $ } from "react";
4
- import { ChevronDownIcon as j } from "./ChevronDownIcon.js";
5
- import { ChevronRightIcon as P } from "./ChevronRightIcon.js";
6
- const R = (l) => {
7
- const { hasDropdown: g, isNested: w, isOpen: v, onToggle: i } = l, [x, C] = p(!1), [I, u] = p(null), s = v ?? x, n = E(
8
- (e) => {
9
- e || u(null), i ? i(e) : C(e);
10
- },
11
- [i]
12
- ), r = T(null);
13
- $(() => {
14
- if (!s) return;
15
- const e = (c) => {
16
- r.current && !r.current.contains(c.target) && n(!1);
17
- };
18
- return document.addEventListener("mousedown", e), () => {
19
- document.removeEventListener("mousedown", e);
20
- };
21
- }, [s, n]);
22
- const m = {
1
+ import { jsxs as r, jsx as e } from "react/jsx-runtime";
2
+ import "react";
3
+ import { ChevronDownIcon as g } from "./ChevronDownIcon.js";
4
+ import { ChevronRightIcon as f } from "./ChevronRightIcon.js";
5
+ const h = (o) => {
6
+ const { hasDropdown: a, isNested: i } = o, n = {
23
7
  topLevel: {
24
- liClass: "relative py-2",
8
+ liClass: "group relative py-2",
25
9
  triggerClass: "hover:text-neutral-600",
26
10
  dropdownPosition: "top-full left-0",
27
- Icon: j
11
+ dropdownTrigger: "group-hover:pointer-events-auto group-hover:opacity-100",
12
+ Icon: g,
13
+ iconClass: "transition-transform duration-200 group-hover:rotate-180"
28
14
  },
29
15
  nested: {
30
- liClass: "relative",
16
+ liClass: "group/nested relative",
31
17
  triggerClass: "p-1 hover:bg-primary-100 w-full rounded min-w-48.5",
32
18
  dropdownPosition: "top-0 left-full -mt-4 pl-6",
33
- Icon: P
19
+ dropdownTrigger: "group-hover/nested:pointer-events-auto group-hover/nested:opacity-100",
20
+ Icon: f,
21
+ iconClass: ""
34
22
  }
35
- }, o = w ? m.nested : m.topLevel, b = o.Icon, f = () => {
36
- n(!1), l.onItemClick && l.onItemClick();
37
- }, N = (e) => {
38
- e.stopPropagation(), n(!s);
39
- }, k = () => {
40
- globalThis.window.matchMedia("(hover: hover)").matches && n(!0);
41
- }, O = () => {
42
- globalThis.window.matchMedia("(hover: hover)").matches && n(!1);
43
- };
44
- if (g) {
45
- const { dropdownItems: e, label: c } = l;
46
- return /* @__PURE__ */ d(
47
- "li",
48
- {
49
- ref: r,
50
- className: o.liClass,
51
- onMouseEnter: k,
52
- onMouseLeave: O,
53
- children: [
54
- /* @__PURE__ */ d(
55
- "button",
56
- {
57
- className: `text-small flex w-full cursor-pointer items-center justify-between gap-1 font-medium text-nowrap text-neutral-800 transition-colors ${o.triggerClass}`,
58
- "aria-haspopup": "menu",
59
- "aria-expanded": s,
60
- onClick: N,
61
- children: [
62
- /* @__PURE__ */ t("span", { className: "text-medium", children: c }),
63
- /* @__PURE__ */ t(b, { fill: "#000", width: 20, height: 20 })
64
- ]
65
- }
66
- ),
67
- /* @__PURE__ */ t(
68
- "div",
69
- {
70
- className: `absolute z-50 min-w-48 transition-all duration-200 ${o.dropdownPosition} ${s ? "pointer-events-auto opacity-100" : "pointer-events-none opacity-0"}`,
71
- children: /* @__PURE__ */ t("div", { className: "rounded-md border border-neutral-200 bg-white p-4 shadow-lg", children: /* @__PURE__ */ t("ul", { className: "flex flex-col gap-2", children: e.map((a) => /* @__PURE__ */ t(
72
- R,
73
- {
74
- ...a,
75
- isNested: !0,
76
- onItemClick: f,
77
- isOpen: I === a.id,
78
- onToggle: (M) => {
79
- u(M ? a.id : null);
80
- }
81
- },
82
- a.id
83
- )) }) })
84
- }
85
- )
86
- ]
87
- }
88
- );
23
+ }, t = i ? n.nested : n.topLevel, d = t.Icon;
24
+ if (a) {
25
+ const { dropdownItems: u, label: m } = o;
26
+ return /* @__PURE__ */ r("li", { className: t.liClass, children: [
27
+ /* @__PURE__ */ r(
28
+ "button",
29
+ {
30
+ className: `text-small flex w-full cursor-pointer items-center justify-between gap-1 font-medium text-nowrap text-neutral-800 transition-colors ${t.triggerClass} `,
31
+ "aria-haspopup": "menu",
32
+ children: [
33
+ /* @__PURE__ */ e("span", { className: "text-medium", children: m }),
34
+ /* @__PURE__ */ e(d, { className: t.iconClass, fill: "#000", width: 20, height: 20 })
35
+ ]
36
+ }
37
+ ),
38
+ /* @__PURE__ */ e(
39
+ "div",
40
+ {
41
+ className: `pointer-events-none absolute z-50 min-w-48 opacity-0 transition-opacity duration-200 ${t.dropdownPosition} ${t.dropdownTrigger} `,
42
+ children: /* @__PURE__ */ e("div", { className: "rounded-md border border-neutral-200 bg-white p-4 shadow-lg", children: /* @__PURE__ */ e("ul", { className: "flex flex-col gap-2", children: u.map((l) => /* @__PURE__ */ e(h, { ...l, isNested: !0 }, l.id)) }) })
43
+ }
44
+ )
45
+ ] });
89
46
  }
90
- const { link: y, tag: h, bold: L } = l;
91
- return /* @__PURE__ */ t("li", { className: o.liClass, onClick: f, children: /* @__PURE__ */ d(
47
+ const { link: c, tag: s, bold: p } = o;
48
+ return /* @__PURE__ */ e("li", { className: t.liClass, children: /* @__PURE__ */ r(
92
49
  "span",
93
50
  {
94
- className: `text-small relative flex w-full items-center gap-1 font-medium text-nowrap text-neutral-800 transition-colors ${o.triggerClass} `,
51
+ className: `text-small relative flex w-full items-center justify-between gap-1 font-medium text-nowrap text-neutral-800 transition-colors ${t.triggerClass} `,
95
52
  children: [
96
- /* @__PURE__ */ t("span", { className: `text-medium flex-1 ${L ? "font-bold" : ""} [&_a]:after:absolute [&_a]:after:inset-0`, children: y }),
97
- h && /* @__PURE__ */ t("span", { className: "bg-secondary-200 text-extra-small flex h-4.5 w-5.25 items-center justify-center rounded align-middle font-bold", children: h })
53
+ /* @__PURE__ */ e("span", { className: `text-medium flex-1 ${p ? "font-bold" : ""} [&_a]:after:absolute [&_a]:after:inset-0`, children: c }),
54
+ s && /* @__PURE__ */ e("span", { className: "bg-secondary-200 text-extra-small rounded px-1 font-bold", children: s })
98
55
  ]
99
56
  }
100
57
  ) });
101
58
  };
102
59
  export {
103
- R as NavMenuItem
60
+ h as NavMenuItem
104
61
  };
@@ -0,0 +1,9 @@
1
+ import { JSX } from 'react/jsx-runtime';
2
+
3
+ export declare const PhoneButton: ({ phoneNumber, className }: PhoneButtonProps) => JSX.Element;
4
+
5
+ export interface PhoneButtonProps {
6
+ phoneNumber: string;
7
+ className?: string;
8
+ }
9
+
@@ -0,0 +1,16 @@
1
+ import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
+ import { PhoneIcon as r } from "./PhoneIcon.js";
3
+ const h = ({ phoneNumber: t, className: i = "" }) => /* @__PURE__ */ n(
4
+ "a",
5
+ {
6
+ href: `tel:${t}`,
7
+ className: `bg-primary-700 inline-flex w-full items-center justify-center gap-2 rounded py-2.75 text-[16px] font-bold text-white ${i}`,
8
+ children: [
9
+ /* @__PURE__ */ e(r, { fill: "white", width: 20, height: 20 }),
10
+ /* @__PURE__ */ e("span", { children: t })
11
+ ]
12
+ }
13
+ );
14
+ export {
15
+ h as PhoneButton
16
+ };
@@ -0,0 +1,8 @@
1
+ import { default as default_2 } from 'react';
2
+
3
+ export declare const PhoneIcon: default_2.FC<{
4
+ width?: number;
5
+ height?: number;
6
+ fill?: string;
7
+ }>;
8
+
@@ -0,0 +1,16 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import "react";
3
+ const p = ({
4
+ width: n = 24,
5
+ height: C = 24,
6
+ fill: r = "none"
7
+ }) => /* @__PURE__ */ o("svg", { viewBox: "0 0 24 24", width: n, height: C, fill: r, xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ o("g", { id: "Icon/Symbol/phone_24px", children: /* @__PURE__ */ o(
8
+ "path",
9
+ {
10
+ id: "path",
11
+ d: "M20.01 15.38C18.78 15.38 17.59 15.18 16.48 14.82C16.13 14.7 15.74 14.79 15.47 15.06L13.9 17.03C11.07 15.68 8.42 13.13 7.01 10.2L8.96 8.54C9.23 8.26 9.31 7.87 9.2 7.52C8.83 6.41 8.64 5.22 8.64 3.99C8.64 3.45 8.19 3 7.65 3H4.19C3.65 3 3 3.24 3 3.99C3 13.28 10.73 21 20.01 21C20.72 21 21 20.37 21 19.82V16.37C21 15.83 20.55 15.38 20.01 15.38Z"
12
+ }
13
+ ) }) });
14
+ export {
15
+ p as PhoneIcon
16
+ };