@courtneyring/components-library 1.0.36 → 1.0.37
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.
- package/dist/AccordionItem-DUGBw5pW.js +40 -0
- package/dist/ScrollTrigger-6HnikosL.js +1086 -0
- package/dist/animations/FadeIn.js +34 -0
- package/dist/animations/FadeInMotion.js +4805 -0
- package/dist/assets/Background.css +1 -0
- package/dist/assets/Banner.css +1 -0
- package/dist/assets/Button.css +1 -0
- package/dist/assets/ButtonGroup.css +1 -0
- package/dist/assets/Container.css +1 -0
- package/dist/assets/Countdown.css +1 -0
- package/dist/assets/Fifty.css +1 -0
- package/dist/assets/FloatingWordsHero.css +1 -0
- package/dist/assets/Footer.css +1 -0
- package/dist/assets/GridGallery.css +1 -0
- package/dist/assets/HorizontalScrollImages.css +1 -0
- package/dist/assets/IconDetail.css +1 -0
- package/dist/assets/ImageTextBlock.css +1 -0
- package/dist/assets/List.css +1 -0
- package/dist/assets/Map.css +1 -0
- package/dist/assets/MenuButton.css +1 -0
- package/dist/assets/Navbar.css +1 -0
- package/dist/assets/Note.css +1 -0
- package/dist/assets/Overlay.css +1 -0
- package/dist/assets/PageContainer.css +1 -0
- package/dist/assets/ParallaxImageGrid.css +1 -0
- package/dist/assets/PromoGroup.css +1 -0
- package/dist/assets/TextBlock.css +1 -0
- package/dist/assets/Timeline.css +1 -0
- package/dist/assets/Toolbar.css +1 -0
- package/dist/assets/icons/checkmark.svg +3 -0
- package/dist/components/Accordion/Accordion.js +33 -0
- package/dist/components/Accordion/AccordionItem.js +8 -0
- package/dist/components/Background/Background.js +59 -0
- package/dist/components/Banner/Banner.js +23 -0
- package/dist/components/Button/Button.js +44 -0
- package/dist/components/ButtonGroup/ButtonGroup.js +11 -0
- package/dist/components/Countdown/Countdown.js +41 -0
- package/dist/components/Fifty/Fifty.js +55 -0
- package/dist/components/Fifty/Fifty.stories.js +32 -0
- package/dist/components/FloatingWordsHero/FloatingWordsHero.js +60 -0
- package/dist/components/IconDetail/IconDetail.js +14 -0
- package/dist/components/ImageTextBlock/ImageTextBlock.js +36 -0
- package/dist/components/Navbar/Navbar.js +98 -0
- package/dist/components/Note/Note.js +30 -0
- package/dist/components/OverlayHero/OverlayHero.js +67 -0
- package/dist/components/PageContainer/PageContainer.js +39 -0
- package/dist/components/ParallaxImageGrid/ParallaxImageGrid.js +92 -0
- package/dist/components/PromoGroup/PromoGroup.js +107 -0
- package/dist/components/Schedule/Schedule.js +24 -0
- package/dist/components/Spacer/Spacer.js +6 -0
- package/dist/components/TextBlock/TextBlock.js +27 -0
- package/dist/components/Timeline/Timeline.js +54 -0
- package/dist/hooks/useActiveSection.js +27 -0
- package/dist/hooks/useFadeIn.js +52 -0
- package/dist/hooks/useImageReveal.js +55 -0
- package/dist/hooks/useNavColor.js +15 -0
- package/dist/hooks/useRepeatable.js +32 -0
- package/dist/hooks/useResize.js +23 -0
- package/dist/hooks/useResponsive.js +15 -0
- package/dist/hooks/useReveal.js +38 -0
- package/dist/hooks/useStagger.js +43 -0
- package/dist/index-B2JRaoNz.js +48 -0
- package/dist/index-BmTo-IS6.js +2018 -0
- package/dist/index-DyQs5aC7.js +388 -0
- package/dist/index-K0WrPJ_C.js +29 -0
- package/dist/index.js +50 -0
- package/dist/index.modern-DPbS1w7M.js +1443 -0
- package/dist/presets/animations.js +24 -0
- package/dist/utils/breakpoints.js +8 -0
- package/dist/utils/gsapSetup.js +8 -0
- package/dist/utils/parse.js +12 -0
- package/package.json +1 -1
- /package/dist/components/{GenericOverlay 6 → GenericOverlay}/GenericOverlay.js +0 -0
- /package/dist/components/{PinnedImage 8 → PinnedImage}/PinnedImage.js +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as u, jsx as n } from "react/jsx-runtime";
|
|
3
|
+
import { useRef as h, useState as l, useEffect as f, cloneElement as k } from "react";
|
|
4
|
+
import w from "../MenuButton/MenuButton.js";
|
|
5
|
+
import { r as N } from "../../index-DyQs5aC7.js";
|
|
6
|
+
import D from "../Overlay/Overlay.js";
|
|
7
|
+
import x from "../Container/Container.js";
|
|
8
|
+
import { c as E } from "../../index-B2JRaoNz.js";
|
|
9
|
+
import '../../assets/Navbar.css';const y = "_navbar_1ue9a_1", O = "_hide_1ue9a_19", Y = "_background_1ue9a_22", S = "_navbar__link_1ue9a_22", $ = "_navbar__logo_1ue9a_26", j = "_component_1ue9a_34", B = "_navbar__links_1ue9a_38", C = "_navbar__mobileDialog_1ue9a_95", F = "_open_1ue9a_107", L = "_navbar__toggle_1ue9a_118", e = {
|
|
10
|
+
navbar: y,
|
|
11
|
+
hide: O,
|
|
12
|
+
background: Y,
|
|
13
|
+
navbar__link: S,
|
|
14
|
+
navbar__logo: $,
|
|
15
|
+
component: j,
|
|
16
|
+
navbar__links: B,
|
|
17
|
+
navbar__mobileDialog: C,
|
|
18
|
+
open: F,
|
|
19
|
+
navbar__toggle: L
|
|
20
|
+
}, M = {}, Q = ({
|
|
21
|
+
links: c,
|
|
22
|
+
logoImage: s,
|
|
23
|
+
backgroundColor: I,
|
|
24
|
+
color: P,
|
|
25
|
+
logoComponent: t,
|
|
26
|
+
hidden: b,
|
|
27
|
+
position: d = "absolute"
|
|
28
|
+
}) => {
|
|
29
|
+
const o = h(0), [R, v] = l("up"), [r, _] = l(!1), [m, p] = l(!1);
|
|
30
|
+
f(() => (window.addEventListener("scroll", i), () => window.removeEventListener("scroll", i)), []);
|
|
31
|
+
const i = () => {
|
|
32
|
+
p(window.scrollY > 30);
|
|
33
|
+
const a = window.scrollY;
|
|
34
|
+
a - o.current !== 0 && v(a > o.current ? "down" : "up"), o.current = a > 0 ? a : 0;
|
|
35
|
+
};
|
|
36
|
+
return /* @__PURE__ */ u(
|
|
37
|
+
"nav",
|
|
38
|
+
{
|
|
39
|
+
className: E(
|
|
40
|
+
e.navbar,
|
|
41
|
+
m && e.background,
|
|
42
|
+
r && e.open,
|
|
43
|
+
// (direction === "down" || hidden) && styles.hide
|
|
44
|
+
b && e.hide
|
|
45
|
+
),
|
|
46
|
+
style: r ? {} : { position: d },
|
|
47
|
+
children: [
|
|
48
|
+
/* @__PURE__ */ u("a", { className: e.navbar__logo, href: "/", children: [
|
|
49
|
+
s && /* @__PURE__ */ n("img", { src: s }),
|
|
50
|
+
t && k(t, {
|
|
51
|
+
className: e.component
|
|
52
|
+
})
|
|
53
|
+
] }),
|
|
54
|
+
/* @__PURE__ */ n("div", { className: e.navbar__toggle, children: /* @__PURE__ */ n(
|
|
55
|
+
w,
|
|
56
|
+
{
|
|
57
|
+
clickFn: () => _(!r),
|
|
58
|
+
isOpen: r,
|
|
59
|
+
theme: "color-white"
|
|
60
|
+
}
|
|
61
|
+
) }),
|
|
62
|
+
/* @__PURE__ */ n("div", { className: e.navbar__links, children: c.map((a, g) => /* @__PURE__ */ n(
|
|
63
|
+
"a",
|
|
64
|
+
{
|
|
65
|
+
className: `${e.navbar__link}`,
|
|
66
|
+
href: a.value,
|
|
67
|
+
children: a.label
|
|
68
|
+
},
|
|
69
|
+
`navbar-d-${a.value}`
|
|
70
|
+
)) }),
|
|
71
|
+
r && N.createPortal(
|
|
72
|
+
/* @__PURE__ */ n(
|
|
73
|
+
D,
|
|
74
|
+
{
|
|
75
|
+
closeFn: () => _(!1),
|
|
76
|
+
hideClose: !0,
|
|
77
|
+
background: M.white,
|
|
78
|
+
fullscreen: !0,
|
|
79
|
+
children: /* @__PURE__ */ n(x, { color: "color-white", children: /* @__PURE__ */ n("div", { className: e.navbar__mobileDialog, children: c.map((a, g) => /* @__PURE__ */ n(
|
|
80
|
+
"a",
|
|
81
|
+
{
|
|
82
|
+
className: e.navbar__link,
|
|
83
|
+
href: a.value,
|
|
84
|
+
children: a.label
|
|
85
|
+
},
|
|
86
|
+
`m-${a.value}`
|
|
87
|
+
)) }) })
|
|
88
|
+
}
|
|
89
|
+
),
|
|
90
|
+
document.body
|
|
91
|
+
)
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
};
|
|
96
|
+
export {
|
|
97
|
+
Q as default
|
|
98
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as o, jsx as s } from "react/jsx-runtime";
|
|
3
|
+
import { useReveal as m } from "../../hooks/useReveal.js";
|
|
4
|
+
import { appleReveal as i } from "../../presets/animations.js";
|
|
5
|
+
import _ from "../../utils/parse.js";
|
|
6
|
+
import '../../assets/Note.css';const p = "_salutation_vtem0_2", d = "_opener_vtem0_48", u = "_from_vtem0_53", f = "_body_vtem0_100", v = "_close_vtem0_152", N = "_signature_vtem0_199", e = {
|
|
7
|
+
salutation: p,
|
|
8
|
+
opener: d,
|
|
9
|
+
from: u,
|
|
10
|
+
body: f,
|
|
11
|
+
close: v,
|
|
12
|
+
signature: N
|
|
13
|
+
}, x = ({ salutation: t, from: a, body: n, signature: r, close: c }) => {
|
|
14
|
+
const l = m(i);
|
|
15
|
+
return /* @__PURE__ */ o("div", { className: e.note, ref: l, children: [
|
|
16
|
+
/* @__PURE__ */ o("p", { className: e.salutation, children: [
|
|
17
|
+
/* @__PURE__ */ o("span", { className: e.opener, children: [
|
|
18
|
+
t,
|
|
19
|
+
" "
|
|
20
|
+
] }),
|
|
21
|
+
/* @__PURE__ */ s("span", { className: e.from, children: a })
|
|
22
|
+
] }),
|
|
23
|
+
/* @__PURE__ */ s("div", { className: e.body, children: _(n) }),
|
|
24
|
+
/* @__PURE__ */ s("p", { className: e.close, children: c }),
|
|
25
|
+
/* @__PURE__ */ s("p", { className: e.signature, children: r })
|
|
26
|
+
] });
|
|
27
|
+
};
|
|
28
|
+
export {
|
|
29
|
+
x as default
|
|
30
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as f, jsx as o } from "react/jsx-runtime";
|
|
3
|
+
import y from "../../utils/parse.js";
|
|
4
|
+
import { useRef as e, useEffect as N } from "react";
|
|
5
|
+
import { g as t } from "../../index-BmTo-IS6.js";
|
|
6
|
+
import { S as B } from "../../ScrollTrigger-6HnikosL.js";
|
|
7
|
+
import T from "../../hooks/useResize.js";
|
|
8
|
+
import '../../assets/OverlayHero.css';const S = "_hero_7ipms_5", j = "_heroBg_7ipms_34", k = "_overlay_7ipms_42", E = "_eyebrow_7ipms_69", P = "_title_7ipms_76", W = "_subtitle_7ipms_94", r = {
|
|
9
|
+
hero: S,
|
|
10
|
+
heroBg: j,
|
|
11
|
+
overlay: k,
|
|
12
|
+
eyebrow: E,
|
|
13
|
+
title: P,
|
|
14
|
+
subtitle: W
|
|
15
|
+
};
|
|
16
|
+
t.registerPlugin(B);
|
|
17
|
+
const q = ({ text: z, image: d, pos: g, eyebrow: c, title: h, subtitle: i }) => {
|
|
18
|
+
const { innerWidth: _ } = T(), s = e(null), n = e(), l = e(null), a = e(null), u = e(null), m = e(null);
|
|
19
|
+
return N(() => {
|
|
20
|
+
const b = s.current, v = l.current, w = window.matchMedia("(prefers-reduced-motion: reduce)").matches, p = n.current;
|
|
21
|
+
if (w || _ < 390) return;
|
|
22
|
+
const R = t.context(() => {
|
|
23
|
+
t.fromTo(
|
|
24
|
+
v,
|
|
25
|
+
{ opacity: 0 },
|
|
26
|
+
{ opacity: 1, duration: 1.2, ease: "power2.out" }
|
|
27
|
+
);
|
|
28
|
+
const x = [a.current, u.current, m.current].filter(Boolean);
|
|
29
|
+
t.fromTo(
|
|
30
|
+
x,
|
|
31
|
+
{ opacity: 0, y: 10 },
|
|
32
|
+
{
|
|
33
|
+
opacity: 1,
|
|
34
|
+
y: 0,
|
|
35
|
+
duration: 1,
|
|
36
|
+
ease: "power2.out",
|
|
37
|
+
stagger: 0.2,
|
|
38
|
+
delay: 1.2
|
|
39
|
+
}
|
|
40
|
+
), t.fromTo(
|
|
41
|
+
p,
|
|
42
|
+
{ scale: 1.1, opacity: 0 },
|
|
43
|
+
{ scale: 1, opacity: 1, duration: 2, ease: "power1.out" }
|
|
44
|
+
), t.to(p, {
|
|
45
|
+
y: "15%",
|
|
46
|
+
ease: "none",
|
|
47
|
+
scrollTrigger: {
|
|
48
|
+
trigger: b,
|
|
49
|
+
start: "top top",
|
|
50
|
+
end: "bottom top",
|
|
51
|
+
scrub: !0
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}, s);
|
|
55
|
+
return () => R.revert();
|
|
56
|
+
}, []), /* @__PURE__ */ f("div", { ref: s, className: r.hero, children: [
|
|
57
|
+
/* @__PURE__ */ o("div", { ref: n, className: r.heroBg, style: { backgroundImage: `url(${d})`, backgroundPosition: g, opacity: 0 } }),
|
|
58
|
+
/* @__PURE__ */ f("div", { ref: l, className: r.overlay, style: { opacity: 0 }, children: [
|
|
59
|
+
c && /* @__PURE__ */ o("p", { ref: a, className: r.eyebrow, children: c }),
|
|
60
|
+
/* @__PURE__ */ o("h1", { ref: u, className: r.title, children: y(h) }),
|
|
61
|
+
i && /* @__PURE__ */ o("div", { ref: m, className: r.subtitle, children: y(i) })
|
|
62
|
+
] })
|
|
63
|
+
] });
|
|
64
|
+
};
|
|
65
|
+
export {
|
|
66
|
+
q as default
|
|
67
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as i, jsx as o } from "react/jsx-runtime";
|
|
3
|
+
import '../../assets/PageContainer.css';const s = "_container__inner_1mlm4_2", m = "_removePadding_1mlm4_55", l = "_container__body_1mlm4_59", y = "_container__copy_1mlm4_74", n = {
|
|
4
|
+
container__inner: s,
|
|
5
|
+
removePadding: m,
|
|
6
|
+
container__body: l,
|
|
7
|
+
container__copy: y
|
|
8
|
+
}, P = ({
|
|
9
|
+
heroImage: g,
|
|
10
|
+
pageTitle: r,
|
|
11
|
+
children: t,
|
|
12
|
+
hero: h,
|
|
13
|
+
copy: e,
|
|
14
|
+
excludePadding: c = []
|
|
15
|
+
}) => {
|
|
16
|
+
const a = () => {
|
|
17
|
+
let _ = {};
|
|
18
|
+
for (let d of c)
|
|
19
|
+
_[`padding-${d}`] = 0;
|
|
20
|
+
return _;
|
|
21
|
+
};
|
|
22
|
+
return /* @__PURE__ */ i("main", { children: [
|
|
23
|
+
/* @__PURE__ */ o(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
className: `${n.container__inner} ${!r && !e && n.removePadding}`,
|
|
27
|
+
style: a(),
|
|
28
|
+
children: /* @__PURE__ */ i("div", { className: n.container__copy, children: [
|
|
29
|
+
/* @__PURE__ */ o("h1", { children: r }),
|
|
30
|
+
e && /* @__PURE__ */ o("div", { className: n.container__body, children: e })
|
|
31
|
+
] })
|
|
32
|
+
}
|
|
33
|
+
),
|
|
34
|
+
t
|
|
35
|
+
] });
|
|
36
|
+
};
|
|
37
|
+
export {
|
|
38
|
+
P as default
|
|
39
|
+
};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as a, jsxs as _ } from "react/jsx-runtime";
|
|
3
|
+
import { useRef as o, useEffect as b } from "react";
|
|
4
|
+
import { g as i } from "../../index-BmTo-IS6.js";
|
|
5
|
+
import { S as w } from "../../ScrollTrigger-6HnikosL.js";
|
|
6
|
+
import '../../assets/ParallaxImageGrid.css';const h = "_container_1tu23_1", R = "_center_1tu23_10", T = "_wrapper_1tu23_17", k = "_box_1tu23_29", n = {
|
|
7
|
+
container: h,
|
|
8
|
+
center: R,
|
|
9
|
+
wrapper: T,
|
|
10
|
+
box: k
|
|
11
|
+
};
|
|
12
|
+
i.registerPlugin(w);
|
|
13
|
+
const A = ({ images: y, center: l }) => {
|
|
14
|
+
const c = o(null), u = o([]), p = o(), g = o(), x = [
|
|
15
|
+
{ x: -500, y: -200 },
|
|
16
|
+
{ x: -75, y: -200 },
|
|
17
|
+
{ x: 200, y: 0 },
|
|
18
|
+
{ x: 500, y: -200 },
|
|
19
|
+
{ x: -500, y: 100 },
|
|
20
|
+
{ x: -200, y: 0 },
|
|
21
|
+
{ x: 75, y: 200 },
|
|
22
|
+
{ x: 500, y: 200 }
|
|
23
|
+
], f = (e) => {
|
|
24
|
+
const r = g.current.getBoundingClientRect(), t = r.width / 100 * x[e].x, s = r.height / 100 * x[e].y;
|
|
25
|
+
return { x: t, y: s };
|
|
26
|
+
};
|
|
27
|
+
return b(() => {
|
|
28
|
+
const e = i.context(() => {
|
|
29
|
+
const r = i.timeline({
|
|
30
|
+
scrollTrigger: {
|
|
31
|
+
trigger: c.current,
|
|
32
|
+
start: "top-=25% top",
|
|
33
|
+
toggleActions: "play none none none"
|
|
34
|
+
// end: "top-=10% top",
|
|
35
|
+
// end: "+=250%",
|
|
36
|
+
// scrub: true,
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
r.fromTo(
|
|
40
|
+
p.current,
|
|
41
|
+
{ scale: 2, y: -200 },
|
|
42
|
+
{ scale: 1, y: 0, ease: "power1.out", duration: 2 },
|
|
43
|
+
0.7
|
|
44
|
+
), u.current.forEach((t, s) => {
|
|
45
|
+
const { x: m, y: d } = f(s);
|
|
46
|
+
r.fromTo(
|
|
47
|
+
t,
|
|
48
|
+
{ x: m, y: d, opacity: 0 },
|
|
49
|
+
{
|
|
50
|
+
x: 0,
|
|
51
|
+
y: 0,
|
|
52
|
+
opacity: 1,
|
|
53
|
+
ease: "power1.out",
|
|
54
|
+
duration: 3
|
|
55
|
+
},
|
|
56
|
+
0
|
|
57
|
+
);
|
|
58
|
+
});
|
|
59
|
+
}, c);
|
|
60
|
+
return () => e.revert();
|
|
61
|
+
}, []), /* @__PURE__ */ a("div", { className: n.container, ref: c, children: /* @__PURE__ */ _("section", { className: n.wrapper, ref: g, children: [
|
|
62
|
+
y.map((e, r) => /* @__PURE__ */ a(
|
|
63
|
+
"div",
|
|
64
|
+
{
|
|
65
|
+
className: n.box,
|
|
66
|
+
ref: (t) => u.current[r] = t,
|
|
67
|
+
style: {
|
|
68
|
+
backgroundImage: `url(${e.src})`,
|
|
69
|
+
backgroundPosition: e.position,
|
|
70
|
+
backgroundSize: e.size,
|
|
71
|
+
gridArea: `area-${r + 1}`
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
r
|
|
75
|
+
)),
|
|
76
|
+
/* @__PURE__ */ a(
|
|
77
|
+
"div",
|
|
78
|
+
{
|
|
79
|
+
className: n.center,
|
|
80
|
+
ref: p,
|
|
81
|
+
style: {
|
|
82
|
+
backgroundImage: `url(${l.src})`,
|
|
83
|
+
backgroundPosition: l.position,
|
|
84
|
+
gridArea: "center"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
] }) });
|
|
89
|
+
};
|
|
90
|
+
export {
|
|
91
|
+
A as default
|
|
92
|
+
};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as n, Fragment as N, jsx as a } from "react/jsx-runtime";
|
|
3
|
+
import { useMemo as q } from "react";
|
|
4
|
+
import "../../index-K0WrPJ_C.js";
|
|
5
|
+
import "../../hooks/useFadeIn.js";
|
|
6
|
+
import f from "../Button/Button.js";
|
|
7
|
+
import { appleStagger as r } from "../../presets/animations.js";
|
|
8
|
+
import { c as m } from "../../index-B2JRaoNz.js";
|
|
9
|
+
import "../OverlayHero/OverlayHero.js";
|
|
10
|
+
import "../../index-DyQs5aC7.js";
|
|
11
|
+
import { useStagger as y } from "../../hooks/useStagger.js";
|
|
12
|
+
import "../FloatingWordsHero/FloatingWordsHero.js";
|
|
13
|
+
import "../../index.modern-DPbS1w7M.js";
|
|
14
|
+
import '../../assets/PromoGroup.css';const C = "_group_iq3ie_2", b = "_slider_iq3ie_27", x = "_header_iq3ie_33", v = "_promo_iq3ie_81", T = "_icon_iq3ie_131", $ = "_cta_iq3ie_141", j = "_imageContainer_iq3ie_149", F = "_image_iq3ie_149", k = "_promo__header_iq3ie_161", S = "_promo__body_iq3ie_253", z = "_stats_iq3ie_300", A = "_stat_iq3ie_300", B = "_statText_iq3ie_314", e = {
|
|
15
|
+
group: C,
|
|
16
|
+
slider: b,
|
|
17
|
+
header: x,
|
|
18
|
+
promo: v,
|
|
19
|
+
icon: T,
|
|
20
|
+
cta: $,
|
|
21
|
+
imageContainer: j,
|
|
22
|
+
image: F,
|
|
23
|
+
promo__header: k,
|
|
24
|
+
promo__body: S,
|
|
25
|
+
stats: z,
|
|
26
|
+
stat: A,
|
|
27
|
+
statText: B,
|
|
28
|
+
"count-4": "_count-4_iq3ie_381",
|
|
29
|
+
"count-2": "_count-2_iq3ie_381"
|
|
30
|
+
}, Q = ({ header: d, promos: i, direction: c = "vertical", slider: g }) => {
|
|
31
|
+
const h = ["icon", "header", "body", "cta", "stats", "image"], p = y(`.${e.promo}`, r.from, {
|
|
32
|
+
...r.to,
|
|
33
|
+
stagger: r.stagger,
|
|
34
|
+
scrollTrigger: { start: r.start }
|
|
35
|
+
}), l = q(() => {
|
|
36
|
+
let t = 0;
|
|
37
|
+
for (let s of h)
|
|
38
|
+
i.some((o) => !!o[s]) && (t += 1);
|
|
39
|
+
return t;
|
|
40
|
+
}, [i]);
|
|
41
|
+
return /* @__PURE__ */ n(N, { children: [
|
|
42
|
+
/* @__PURE__ */ a("h2", { className: e.header, children: d }),
|
|
43
|
+
/* @__PURE__ */ a(
|
|
44
|
+
"div",
|
|
45
|
+
{
|
|
46
|
+
ref: p,
|
|
47
|
+
className: m(
|
|
48
|
+
e.group,
|
|
49
|
+
e[`count-${i.length}`],
|
|
50
|
+
g && e.slider
|
|
51
|
+
),
|
|
52
|
+
style: {
|
|
53
|
+
"--promos": i.length,
|
|
54
|
+
"--propCount": c == "horizontal" ? l - 1 : l
|
|
55
|
+
},
|
|
56
|
+
children: i.map((t, s) => {
|
|
57
|
+
const o = t.containerCta ? "a" : "div";
|
|
58
|
+
return /* @__PURE__ */ n(
|
|
59
|
+
o,
|
|
60
|
+
{
|
|
61
|
+
onClick: t.containerCta?.onClick || null,
|
|
62
|
+
href: t.containerCta?.href || null,
|
|
63
|
+
target: t.containerCta?.target || null,
|
|
64
|
+
delay: 0.1 * s,
|
|
65
|
+
className: e.promo,
|
|
66
|
+
"data-color": t.color,
|
|
67
|
+
"data-text-align": t.textAlign,
|
|
68
|
+
"data-direction": c,
|
|
69
|
+
children: [
|
|
70
|
+
t.icon && /* @__PURE__ */ a(
|
|
71
|
+
"span",
|
|
72
|
+
{
|
|
73
|
+
className: m(
|
|
74
|
+
"material-symbols-outlined",
|
|
75
|
+
e.icon,
|
|
76
|
+
!t.icon && "hidden"
|
|
77
|
+
),
|
|
78
|
+
children: t.icon
|
|
79
|
+
}
|
|
80
|
+
),
|
|
81
|
+
t.image && /* @__PURE__ */ a("div", { className: e.imageContainer, children: /* @__PURE__ */ a(
|
|
82
|
+
"img",
|
|
83
|
+
{
|
|
84
|
+
style: { objectFit: t.imageFit },
|
|
85
|
+
className: e.image,
|
|
86
|
+
src: t.image
|
|
87
|
+
}
|
|
88
|
+
) }),
|
|
89
|
+
t.header && /* @__PURE__ */ a("h3", { className: e.promo__header, children: t.header }),
|
|
90
|
+
/* @__PURE__ */ a("p", { className: e.promo__body, children: t.body }),
|
|
91
|
+
t.cta && /* @__PURE__ */ a("div", { className: e.cta, children: /* @__PURE__ */ a(f, { ...t.cta }) }),
|
|
92
|
+
t.stats && /* @__PURE__ */ a("div", { className: e.stats, children: t.stats.map((_, u) => /* @__PURE__ */ n("div", { className: e.stat, children: [
|
|
93
|
+
/* @__PURE__ */ a("span", { className: "material-symbols-outlined", children: _.icon }),
|
|
94
|
+
/* @__PURE__ */ a("span", { className: e.statText, children: _.text })
|
|
95
|
+
] }, `stat-${u}`)) })
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
`promo-${s}`
|
|
99
|
+
);
|
|
100
|
+
})
|
|
101
|
+
}
|
|
102
|
+
)
|
|
103
|
+
] });
|
|
104
|
+
};
|
|
105
|
+
export {
|
|
106
|
+
Q as default
|
|
107
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as s, jsx as i } from "react/jsx-runtime";
|
|
3
|
+
import { Fragment as l } from "react";
|
|
4
|
+
import '../../assets/Schedule.css';const n = "_schedule_rm7y9_2", a = "_timeline_rm7y9_79", r = "_time_rm7y9_79", o = "_dot_rm7y9_92", _ = "_diagram_rm7y9_100", h = "_line_rm7y9_106", e = {
|
|
5
|
+
schedule: n,
|
|
6
|
+
timeline: a,
|
|
7
|
+
time: r,
|
|
8
|
+
dot: o,
|
|
9
|
+
diagram: _,
|
|
10
|
+
line: h
|
|
11
|
+
}, y = ({ slots: c, header: d }) => /* @__PURE__ */ s("div", { className: e.schedule, children: [
|
|
12
|
+
/* @__PURE__ */ i("h3", { children: d }),
|
|
13
|
+
/* @__PURE__ */ i("div", { className: e.timeline, children: c.map((m, t) => /* @__PURE__ */ s(l, { children: [
|
|
14
|
+
/* @__PURE__ */ i("div", { className: e.time, children: m.time }),
|
|
15
|
+
/* @__PURE__ */ s("div", { className: e.diagram, children: [
|
|
16
|
+
/* @__PURE__ */ i("span", { className: e.line }),
|
|
17
|
+
/* @__PURE__ */ i("div", { className: e.dot })
|
|
18
|
+
] }),
|
|
19
|
+
/* @__PURE__ */ i("div", { className: e.description, children: m.description })
|
|
20
|
+
] }, t)) })
|
|
21
|
+
] });
|
|
22
|
+
export {
|
|
23
|
+
y as default
|
|
24
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as i, jsx as s } from "react/jsx-runtime";
|
|
3
|
+
import { createElement as d } from "react";
|
|
4
|
+
import n from "../../utils/parse.js";
|
|
5
|
+
import m from "../IconDetail/IconDetail.js";
|
|
6
|
+
import '../../assets/TextBlock.css';const _ = "_title_1iuzs_1", p = "_blocks_1iuzs_52", k = "_block_1iuzs_52", h = "_blockHeader_1iuzs_63", b = "_description_1iuzs_92", e = {
|
|
7
|
+
title: _,
|
|
8
|
+
blocks: p,
|
|
9
|
+
block: k,
|
|
10
|
+
blockHeader: h,
|
|
11
|
+
description: b
|
|
12
|
+
}, z = ({ header: l, blocks: t }) => /* @__PURE__ */ i("div", { className: e.container, children: [
|
|
13
|
+
/* @__PURE__ */ s("h2", { className: e.title, children: l }),
|
|
14
|
+
/* @__PURE__ */ s("div", { className: e.blocks, children: t.map((c, o) => (
|
|
15
|
+
// <div className={styles.block} key={`block-${idx}`}>
|
|
16
|
+
/* @__PURE__ */ i("div", { className: e.block, children: [
|
|
17
|
+
/* @__PURE__ */ s("h3", { className: e.blockHeader, children: c.header }),
|
|
18
|
+
/* @__PURE__ */ i("div", { className: e.content, children: [
|
|
19
|
+
/* @__PURE__ */ s("div", { className: e.description, children: n(c.description) }),
|
|
20
|
+
/* @__PURE__ */ s("div", { className: e.details, children: c.details && c.details.map((a, r) => /* @__PURE__ */ d(m, { ...a, key: r })) })
|
|
21
|
+
] })
|
|
22
|
+
] }, `block-${o}`)
|
|
23
|
+
)) })
|
|
24
|
+
] });
|
|
25
|
+
export {
|
|
26
|
+
z as default
|
|
27
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as l, Fragment as g, jsx as t } from "react/jsx-runtime";
|
|
3
|
+
import { useRef as a, useEffect as f } from "react";
|
|
4
|
+
import { g as o } from "../../index-BmTo-IS6.js";
|
|
5
|
+
import { S as p } from "../../ScrollTrigger-6HnikosL.js";
|
|
6
|
+
import '../../assets/Timeline.css';const h = "_spacer_1g76i_1", u = "_timelineWrapper_1g76i_6", x = "_linePin_1g76i_12", v = "_timelineLine_1g76i_22", N = "_items_1g76i_33", y = "_item_1g76i_33", P = "_text_1g76i_49", i = {
|
|
7
|
+
spacer: h,
|
|
8
|
+
timelineWrapper: u,
|
|
9
|
+
linePin: x,
|
|
10
|
+
timelineLine: v,
|
|
11
|
+
items: N,
|
|
12
|
+
item: y,
|
|
13
|
+
text: P
|
|
14
|
+
};
|
|
15
|
+
o.registerPlugin(p);
|
|
16
|
+
const W = [
|
|
17
|
+
{ year: "2019", text: "Started the journey" },
|
|
18
|
+
{ year: "2021", text: "Major milestone" },
|
|
19
|
+
{ year: "2024", text: "Where we are today" }
|
|
20
|
+
];
|
|
21
|
+
function R() {
|
|
22
|
+
const s = a(null), d = a(null), m = a(null);
|
|
23
|
+
return f(() => {
|
|
24
|
+
const e = window.innerHeight, c = o.context(() => {
|
|
25
|
+
p.create({
|
|
26
|
+
trigger: s.current,
|
|
27
|
+
start: "top top",
|
|
28
|
+
end: `+=${e * 2}`,
|
|
29
|
+
// controls how long it stays pinned
|
|
30
|
+
pin: d.current,
|
|
31
|
+
scrub: !0,
|
|
32
|
+
onUpdate: (_) => {
|
|
33
|
+
const r = _.progress;
|
|
34
|
+
let n;
|
|
35
|
+
r < 0.25 ? n = r / 0.25 * 0.5 * e : r < 0.75 ? n = 0.5 * e : n = 0.5 * e + (r - 0.75) / 0.25 * 0.5 * e, o.set(m.current, { height: n });
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}, s);
|
|
39
|
+
return () => c.revert();
|
|
40
|
+
}, []), /* @__PURE__ */ l(g, { children: [
|
|
41
|
+
/* @__PURE__ */ t("div", { className: i.spacer }),
|
|
42
|
+
/* @__PURE__ */ l("section", { className: i.timelineWrapper, ref: s, children: [
|
|
43
|
+
/* @__PURE__ */ t("div", { className: i.linePin, children: /* @__PURE__ */ t("div", { className: i.timelineLine, ref: m }) }),
|
|
44
|
+
/* @__PURE__ */ t("div", { className: i.items, children: W.map((e, c) => /* @__PURE__ */ t("div", { className: i.item, children: /* @__PURE__ */ l("div", { className: i.text, children: [
|
|
45
|
+
/* @__PURE__ */ t("h3", { children: e.year }),
|
|
46
|
+
/* @__PURE__ */ t("p", { children: e.text })
|
|
47
|
+
] }) }, c)) })
|
|
48
|
+
] }),
|
|
49
|
+
/* @__PURE__ */ t("div", { className: i.spacer })
|
|
50
|
+
] });
|
|
51
|
+
}
|
|
52
|
+
export {
|
|
53
|
+
R as default
|
|
54
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useState as s, useEffect as l } from "react";
|
|
2
|
+
function a() {
|
|
3
|
+
const [o, r] = s < string | null > null;
|
|
4
|
+
return l(() => {
|
|
5
|
+
const c = Array.from(
|
|
6
|
+
document.querySelectorAll < HTMLElement > '[id^="section-"]'
|
|
7
|
+
), t = new IntersectionObserver(
|
|
8
|
+
(e) => {
|
|
9
|
+
e.forEach((n) => {
|
|
10
|
+
if (n.isIntersecting) {
|
|
11
|
+
const i = n.target.id.replace("section-", "");
|
|
12
|
+
r(i);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
root: null,
|
|
18
|
+
rootMargin: "-40% 0px -40% 0px",
|
|
19
|
+
threshold: 0
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
return c.forEach((e) => t.observe(e)), () => t.disconnect();
|
|
23
|
+
}, []), o;
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
a as useActiveSection
|
|
27
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { useRef as f } from "react";
|
|
2
|
+
import { g as s } from "../index-BmTo-IS6.js";
|
|
3
|
+
import { S as g } from "../ScrollTrigger-6HnikosL.js";
|
|
4
|
+
import { u as m } from "../index-K0WrPJ_C.js";
|
|
5
|
+
s.registerPlugin(g);
|
|
6
|
+
function b({
|
|
7
|
+
direction: u = "none",
|
|
8
|
+
// 'up' | 'down' | 'left' | 'right' | 'none'
|
|
9
|
+
distance: t = 40,
|
|
10
|
+
duration: c = 0.8,
|
|
11
|
+
delay: i = 0,
|
|
12
|
+
ease: n = "power2.out",
|
|
13
|
+
start: a = "top 85%",
|
|
14
|
+
once: p = !0
|
|
15
|
+
} = {}) {
|
|
16
|
+
const r = f(null);
|
|
17
|
+
return m(
|
|
18
|
+
() => {
|
|
19
|
+
if (!r.current) return;
|
|
20
|
+
const e = { opacity: 0 }, o = {
|
|
21
|
+
opacity: 1,
|
|
22
|
+
duration: c,
|
|
23
|
+
delay: i,
|
|
24
|
+
ease: n,
|
|
25
|
+
scrollTrigger: {
|
|
26
|
+
trigger: r.current,
|
|
27
|
+
start: a,
|
|
28
|
+
once: p
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
switch (u) {
|
|
32
|
+
case "up":
|
|
33
|
+
e.y = t, o.y = 0;
|
|
34
|
+
break;
|
|
35
|
+
case "down":
|
|
36
|
+
e.y = -t, o.y = 0;
|
|
37
|
+
break;
|
|
38
|
+
case "left":
|
|
39
|
+
e.x = t, o.x = 0;
|
|
40
|
+
break;
|
|
41
|
+
case "right":
|
|
42
|
+
e.x = -t, o.x = 0;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
s.fromTo(r.current, e, o);
|
|
46
|
+
},
|
|
47
|
+
{ scope: r }
|
|
48
|
+
), r;
|
|
49
|
+
}
|
|
50
|
+
export {
|
|
51
|
+
b as useFadeIn
|
|
52
|
+
};
|