@deriv-web-design/ui 0.0.14 → 0.0.17
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/index.css +384 -161
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +65 -11
- package/dist/index.d.ts +65 -11
- package/dist/index.js +849 -345
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +793 -292
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -4
- package/tokens.css +67 -19
package/dist/index.js
CHANGED
|
@@ -32,26 +32,29 @@ __export(index_exports, {
|
|
|
32
32
|
Chip: () => Chip,
|
|
33
33
|
ChipDropdown: () => ChipDropdown,
|
|
34
34
|
DayNightTransition: () => DayNightTransition,
|
|
35
|
+
DotLottieInView: () => DotLottieInView,
|
|
35
36
|
DownloadBadge: () => DownloadBadge,
|
|
36
37
|
DownloadBanner: () => DownloadBanner,
|
|
38
|
+
FEATURE_SCROLL_DATA: () => FEATURE_SCROLL_DATA,
|
|
37
39
|
FeatureCards: () => FeatureCards,
|
|
38
40
|
FeatureCardsSecondary: () => FeatureCardsSecondary,
|
|
41
|
+
FeatureScroll: () => FeatureScroll,
|
|
39
42
|
Footer: () => Footer,
|
|
40
43
|
Hero: () => Hero,
|
|
41
44
|
Link: () => Link,
|
|
42
45
|
LogoMarquee: () => LogoMarquee,
|
|
43
46
|
Navbar: () => Navbar,
|
|
44
47
|
Pagination: () => Pagination,
|
|
45
|
-
SCROLLYTELLING_DATA: () => SCROLLYTELLING_DATA,
|
|
46
48
|
STEPS_DATA: () => STEPS_DATA,
|
|
47
|
-
Scrollytelling: () => Scrollytelling,
|
|
48
49
|
SearchField: () => SearchField,
|
|
49
50
|
Stats: () => Stats,
|
|
50
51
|
Steps: () => Steps,
|
|
51
52
|
StickyStackedCards: () => StickyStackedCards,
|
|
52
53
|
TEXT_CONTENT: () => TEXT_CONTENT,
|
|
53
54
|
Tag: () => Tag,
|
|
54
|
-
TextField: () => TextField
|
|
55
|
+
TextField: () => TextField,
|
|
56
|
+
TextScroll: () => TextScroll,
|
|
57
|
+
dayNightTransitionV2Preset: () => dayNightTransitionV2Preset
|
|
55
58
|
});
|
|
56
59
|
module.exports = __toCommonJS(index_exports);
|
|
57
60
|
|
|
@@ -1850,11 +1853,76 @@ var Stats = ({
|
|
|
1850
1853
|
);
|
|
1851
1854
|
};
|
|
1852
1855
|
|
|
1853
|
-
// templates/
|
|
1856
|
+
// templates/FeatureScroll/FeatureScroll.tsx
|
|
1857
|
+
var import_react11 = require("react");
|
|
1858
|
+
|
|
1859
|
+
// components/DotLottieInView/DotLottieInView.tsx
|
|
1854
1860
|
var import_react10 = require("react");
|
|
1855
1861
|
var import_dotlottie_react = require("@lottiefiles/dotlottie-react");
|
|
1856
1862
|
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1857
|
-
|
|
1863
|
+
function DotLottieInView({
|
|
1864
|
+
enabled = true,
|
|
1865
|
+
rootMargin = "0px",
|
|
1866
|
+
threshold = 0.2,
|
|
1867
|
+
className,
|
|
1868
|
+
style,
|
|
1869
|
+
...dotProps
|
|
1870
|
+
}) {
|
|
1871
|
+
const wrapRef = (0, import_react10.useRef)(null);
|
|
1872
|
+
const [inView, setInView] = (0, import_react10.useState)(false);
|
|
1873
|
+
const [dotLottie, setDotLottie] = (0, import_react10.useState)(null);
|
|
1874
|
+
(0, import_react10.useEffect)(() => {
|
|
1875
|
+
const el = wrapRef.current;
|
|
1876
|
+
if (!el) return;
|
|
1877
|
+
const observer = new IntersectionObserver(
|
|
1878
|
+
([entry]) => {
|
|
1879
|
+
setInView(entry.isIntersecting);
|
|
1880
|
+
},
|
|
1881
|
+
{ root: null, rootMargin, threshold }
|
|
1882
|
+
);
|
|
1883
|
+
observer.observe(el);
|
|
1884
|
+
return () => observer.disconnect();
|
|
1885
|
+
}, [rootMargin, threshold]);
|
|
1886
|
+
(0, import_react10.useEffect)(() => {
|
|
1887
|
+
if (!dotLottie) return;
|
|
1888
|
+
if (!enabled || !inView) {
|
|
1889
|
+
dotLottie.stop();
|
|
1890
|
+
return;
|
|
1891
|
+
}
|
|
1892
|
+
dotLottie.stop();
|
|
1893
|
+
dotLottie.play();
|
|
1894
|
+
}, [dotLottie, enabled, inView]);
|
|
1895
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1896
|
+
"div",
|
|
1897
|
+
{
|
|
1898
|
+
ref: wrapRef,
|
|
1899
|
+
className,
|
|
1900
|
+
style: {
|
|
1901
|
+
width: "100%",
|
|
1902
|
+
height: "100%",
|
|
1903
|
+
minHeight: 0,
|
|
1904
|
+
display: "flex",
|
|
1905
|
+
alignItems: "center",
|
|
1906
|
+
justifyContent: "center",
|
|
1907
|
+
backgroundColor: "transparent",
|
|
1908
|
+
...style
|
|
1909
|
+
},
|
|
1910
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1911
|
+
import_dotlottie_react.DotLottieReact,
|
|
1912
|
+
{
|
|
1913
|
+
...dotProps,
|
|
1914
|
+
loop: false,
|
|
1915
|
+
autoplay: false,
|
|
1916
|
+
dotLottieRefCallback: setDotLottie
|
|
1917
|
+
}
|
|
1918
|
+
)
|
|
1919
|
+
}
|
|
1920
|
+
);
|
|
1921
|
+
}
|
|
1922
|
+
|
|
1923
|
+
// templates/FeatureScroll/FeatureScroll.tsx
|
|
1924
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1925
|
+
var FEATURE_SCROLL_DATA = [
|
|
1858
1926
|
{
|
|
1859
1927
|
title: "Forex",
|
|
1860
1928
|
description: "Trade the most popular currency pairs with high leverage, tight spreads, and fast execution.",
|
|
@@ -1898,16 +1966,16 @@ var SCROLLYTELLING_DATA = [
|
|
|
1898
1966
|
mediaUrl: "https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a9064f2c16e4e0732abfb_Stock%20Indices.lottie"
|
|
1899
1967
|
}
|
|
1900
1968
|
];
|
|
1901
|
-
var ChevronRight2 = () => /* @__PURE__ */ (0,
|
|
1969
|
+
var ChevronRight2 = () => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1902
1970
|
"svg",
|
|
1903
1971
|
{
|
|
1904
|
-
className: "
|
|
1972
|
+
className: "fs__item-link-icon",
|
|
1905
1973
|
width: "16",
|
|
1906
1974
|
height: "16",
|
|
1907
1975
|
viewBox: "0 0 16 16",
|
|
1908
1976
|
fill: "none",
|
|
1909
1977
|
"aria-hidden": "true",
|
|
1910
|
-
children: /* @__PURE__ */ (0,
|
|
1978
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1911
1979
|
"path",
|
|
1912
1980
|
{
|
|
1913
1981
|
d: "M6 3l5 5-5 5",
|
|
@@ -1925,16 +1993,15 @@ function resolveMediaType(item) {
|
|
|
1925
1993
|
}
|
|
1926
1994
|
var MediaRenderer = ({ item, active }) => {
|
|
1927
1995
|
if (resolveMediaType(item) === "lottie") {
|
|
1928
|
-
return /* @__PURE__ */ (0,
|
|
1929
|
-
|
|
1996
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1997
|
+
DotLottieInView,
|
|
1930
1998
|
{
|
|
1931
1999
|
src: item.mediaUrl,
|
|
1932
|
-
|
|
1933
|
-
autoplay: active
|
|
2000
|
+
enabled: active
|
|
1934
2001
|
}
|
|
1935
2002
|
);
|
|
1936
2003
|
}
|
|
1937
|
-
return /* @__PURE__ */ (0,
|
|
2004
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1938
2005
|
"img",
|
|
1939
2006
|
{
|
|
1940
2007
|
src: item.mediaUrl,
|
|
@@ -1943,87 +2010,121 @@ var MediaRenderer = ({ item, active }) => {
|
|
|
1943
2010
|
}
|
|
1944
2011
|
);
|
|
1945
2012
|
};
|
|
1946
|
-
var
|
|
2013
|
+
var FeatureScroll = ({
|
|
1947
2014
|
header,
|
|
1948
2015
|
items,
|
|
1949
2016
|
variant = "media-right",
|
|
1950
2017
|
className,
|
|
1951
2018
|
...props
|
|
1952
2019
|
}) => {
|
|
1953
|
-
const [activeIndex, setActiveIndex] = (0,
|
|
1954
|
-
const
|
|
1955
|
-
(0,
|
|
1956
|
-
|
|
1957
|
-
if (
|
|
1958
|
-
const
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
2020
|
+
const [activeIndex, setActiveIndex] = (0, import_react11.useState)(0);
|
|
2021
|
+
const titleRefs = (0, import_react11.useRef)([]);
|
|
2022
|
+
const mediaColRef = (0, import_react11.useRef)(null);
|
|
2023
|
+
(0, import_react11.useLayoutEffect)(() => {
|
|
2024
|
+
if (items.length === 0) return;
|
|
2025
|
+
const readThresholdPx = () => {
|
|
2026
|
+
const col = mediaColRef.current;
|
|
2027
|
+
if (!col) return 80;
|
|
2028
|
+
const top = getComputedStyle(col).top;
|
|
2029
|
+
const px = parseFloat(top);
|
|
2030
|
+
return Number.isFinite(px) ? px : 80;
|
|
2031
|
+
};
|
|
2032
|
+
let rafId = 0;
|
|
2033
|
+
const tick = () => {
|
|
2034
|
+
rafId = 0;
|
|
2035
|
+
if (typeof window === "undefined") return;
|
|
2036
|
+
if (!window.matchMedia("(min-width: 992px)").matches) return;
|
|
2037
|
+
const threshold = readThresholdPx();
|
|
2038
|
+
const refs = titleRefs.current;
|
|
2039
|
+
let pinned = -1;
|
|
2040
|
+
for (let i = 0; i < items.length; i++) {
|
|
2041
|
+
const el = refs[i];
|
|
2042
|
+
if (!el) continue;
|
|
2043
|
+
if (el.getBoundingClientRect().top <= threshold) pinned = i;
|
|
1976
2044
|
}
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
2045
|
+
const mediaIndex = Math.min(
|
|
2046
|
+
items.length - 1,
|
|
2047
|
+
pinned + 1
|
|
2048
|
+
);
|
|
2049
|
+
setActiveIndex(
|
|
2050
|
+
(prev) => prev === mediaIndex ? prev : mediaIndex
|
|
2051
|
+
);
|
|
2052
|
+
};
|
|
2053
|
+
const schedule = () => {
|
|
2054
|
+
if (rafId !== 0) return;
|
|
2055
|
+
rafId = window.requestAnimationFrame(tick);
|
|
2056
|
+
};
|
|
2057
|
+
tick();
|
|
2058
|
+
window.addEventListener("scroll", schedule, { passive: true });
|
|
2059
|
+
window.addEventListener("resize", schedule, { passive: true });
|
|
2060
|
+
const mq = window.matchMedia("(min-width: 992px)");
|
|
2061
|
+
mq.addEventListener("change", schedule);
|
|
2062
|
+
return () => {
|
|
2063
|
+
window.removeEventListener("scroll", schedule);
|
|
2064
|
+
window.removeEventListener("resize", schedule);
|
|
2065
|
+
mq.removeEventListener("change", schedule);
|
|
2066
|
+
if (rafId !== 0) window.cancelAnimationFrame(rafId);
|
|
2067
|
+
};
|
|
1980
2068
|
}, [items.length]);
|
|
1981
2069
|
const rootClass = [
|
|
1982
|
-
"
|
|
1983
|
-
`
|
|
2070
|
+
"fs",
|
|
2071
|
+
`fs--${variant}`,
|
|
1984
2072
|
className
|
|
1985
2073
|
].filter(Boolean).join(" ");
|
|
1986
|
-
|
|
1987
|
-
/* @__PURE__ */ (0,
|
|
1988
|
-
|
|
1989
|
-
|
|
2074
|
+
if (items.length === 0) {
|
|
2075
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("section", { className: rootClass, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "fs__inner", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("h2", { className: "fs__header", children: header }) }) });
|
|
2076
|
+
}
|
|
2077
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("section", { className: rootClass, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "fs__inner", children: [
|
|
2078
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("h2", { className: "fs__header", children: header }),
|
|
2079
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "fs__layout", children: [
|
|
2080
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "fs__media-col", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1990
2081
|
"div",
|
|
1991
2082
|
{
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1997
|
-
MediaRenderer,
|
|
2083
|
+
ref: mediaColRef,
|
|
2084
|
+
className: "fs__media-sticky",
|
|
2085
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "fs__media-wrap", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2086
|
+
"div",
|
|
1998
2087
|
{
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2088
|
+
className: [
|
|
2089
|
+
"fs__media-item",
|
|
2090
|
+
i === activeIndex ? "fs__media-item--active" : ""
|
|
2091
|
+
].filter(Boolean).join(" "),
|
|
2092
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2093
|
+
MediaRenderer,
|
|
2094
|
+
{
|
|
2095
|
+
item,
|
|
2096
|
+
active: i === activeIndex
|
|
2097
|
+
}
|
|
2098
|
+
)
|
|
2099
|
+
},
|
|
2100
|
+
i
|
|
2101
|
+
)) })
|
|
2102
|
+
}
|
|
2103
|
+
) }),
|
|
2104
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "fs__content-col", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
2007
2105
|
"div",
|
|
2008
2106
|
{
|
|
2009
|
-
|
|
2010
|
-
itemRefs.current[i] = el;
|
|
2011
|
-
},
|
|
2012
|
-
className: [
|
|
2013
|
-
"scrolly__item",
|
|
2014
|
-
i === activeIndex ? "scrolly__item--active" : "scrolly__item--inactive"
|
|
2015
|
-
].join(" "),
|
|
2107
|
+
className: "fs__item",
|
|
2016
2108
|
children: [
|
|
2017
|
-
/* @__PURE__ */ (0,
|
|
2018
|
-
|
|
2019
|
-
|
|
2109
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2110
|
+
"h3",
|
|
2111
|
+
{
|
|
2112
|
+
ref: (el) => {
|
|
2113
|
+
titleRefs.current[i] = el;
|
|
2114
|
+
},
|
|
2115
|
+
className: "fs__item-title",
|
|
2116
|
+
children: item.title
|
|
2117
|
+
}
|
|
2118
|
+
),
|
|
2119
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { className: "fs__item-desc", children: item.description }),
|
|
2120
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
2020
2121
|
"a",
|
|
2021
2122
|
{
|
|
2022
2123
|
href: item.link,
|
|
2023
|
-
className: "
|
|
2124
|
+
className: "fs__item-link",
|
|
2024
2125
|
children: [
|
|
2025
|
-
/* @__PURE__ */ (0,
|
|
2026
|
-
/* @__PURE__ */ (0,
|
|
2126
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { children: item.linkLabel }),
|
|
2127
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ChevronRight2, {})
|
|
2027
2128
|
]
|
|
2028
2129
|
}
|
|
2029
2130
|
)
|
|
@@ -2032,28 +2133,28 @@ var Scrollytelling = ({
|
|
|
2032
2133
|
i
|
|
2033
2134
|
)) })
|
|
2034
2135
|
] }),
|
|
2035
|
-
/* @__PURE__ */ (0,
|
|
2036
|
-
/* @__PURE__ */ (0,
|
|
2037
|
-
/* @__PURE__ */ (0,
|
|
2038
|
-
/* @__PURE__ */ (0,
|
|
2136
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "fs__mobile-list", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "fs__mobile-item", children: [
|
|
2137
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("h3", { className: "fs__item-title", children: item.title }),
|
|
2138
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "fs__mobile-media", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(MediaRenderer, { item, active: true }) }),
|
|
2139
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { className: "fs__item-desc", children: item.description }),
|
|
2140
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
|
|
2039
2141
|
"a",
|
|
2040
2142
|
{
|
|
2041
2143
|
href: item.link,
|
|
2042
|
-
className: "
|
|
2144
|
+
className: "fs__item-link",
|
|
2043
2145
|
children: [
|
|
2044
|
-
/* @__PURE__ */ (0,
|
|
2045
|
-
/* @__PURE__ */ (0,
|
|
2146
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { children: item.linkLabel }),
|
|
2147
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ChevronRight2, {})
|
|
2046
2148
|
]
|
|
2047
2149
|
}
|
|
2048
|
-
)
|
|
2049
|
-
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "scrolly__mobile-media", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(MediaRenderer, { item, active: true }) })
|
|
2150
|
+
)
|
|
2050
2151
|
] }, i)) })
|
|
2051
2152
|
] }) });
|
|
2052
2153
|
};
|
|
2053
2154
|
|
|
2054
2155
|
// templates/StickyStackedCards/StickyStackedCards.tsx
|
|
2055
|
-
var
|
|
2056
|
-
var
|
|
2156
|
+
var import_react12 = require("react");
|
|
2157
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2057
2158
|
var PLACEHOLDER_IMAGE = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69b9309379ac08e59ca8210a_1f3f555da9a5cbb13a6fe1bf0d5fe1b6_placeholder-image.webp";
|
|
2058
2159
|
var STEPS_DATA = [
|
|
2059
2160
|
{
|
|
@@ -2082,8 +2183,8 @@ var StickyStackedCards = ({
|
|
|
2082
2183
|
className,
|
|
2083
2184
|
...props
|
|
2084
2185
|
}) => {
|
|
2085
|
-
const cardRefs = (0,
|
|
2086
|
-
(0,
|
|
2186
|
+
const cardRefs = (0, import_react12.useRef)([]);
|
|
2187
|
+
(0, import_react12.useEffect)(() => {
|
|
2087
2188
|
if (typeof window === "undefined") return;
|
|
2088
2189
|
let rafId = 0;
|
|
2089
2190
|
const update = () => {
|
|
@@ -2117,14 +2218,14 @@ var StickyStackedCards = ({
|
|
|
2117
2218
|
cancelAnimationFrame(rafId);
|
|
2118
2219
|
};
|
|
2119
2220
|
}, [items.length]);
|
|
2120
|
-
return /* @__PURE__ */ (0,
|
|
2221
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2121
2222
|
"section",
|
|
2122
2223
|
{
|
|
2123
2224
|
className: ["ssc", className].filter(Boolean).join(" "),
|
|
2124
2225
|
...props,
|
|
2125
|
-
children: /* @__PURE__ */ (0,
|
|
2126
|
-
/* @__PURE__ */ (0,
|
|
2127
|
-
/* @__PURE__ */ (0,
|
|
2226
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "ssc__inner", children: [
|
|
2227
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("h2", { className: "ssc__header", children: header }),
|
|
2228
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "ssc__track", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
2128
2229
|
"div",
|
|
2129
2230
|
{
|
|
2130
2231
|
ref: (el) => {
|
|
@@ -2150,11 +2251,11 @@ var StickyStackedCards = ({
|
|
|
2150
2251
|
top: `calc(var(--ssc-sticky-top) + ${i} * var(--ssc-peek-offset))`
|
|
2151
2252
|
},
|
|
2152
2253
|
children: [
|
|
2153
|
-
/* @__PURE__ */ (0,
|
|
2154
|
-
/* @__PURE__ */ (0,
|
|
2155
|
-
/* @__PURE__ */ (0,
|
|
2254
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "ssc__card-content", children: [
|
|
2255
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("h3", { className: "ssc__card-title", children: item.title }),
|
|
2256
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("p", { className: "ssc__card-desc", children: item.description })
|
|
2156
2257
|
] }),
|
|
2157
|
-
/* @__PURE__ */ (0,
|
|
2258
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "ssc__card-image", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
2158
2259
|
"img",
|
|
2159
2260
|
{
|
|
2160
2261
|
src: item.imageUrl,
|
|
@@ -2172,9 +2273,9 @@ var StickyStackedCards = ({
|
|
|
2172
2273
|
};
|
|
2173
2274
|
|
|
2174
2275
|
// templates/CTABanner/CTABanner.tsx
|
|
2175
|
-
var
|
|
2276
|
+
var import_react13 = require("react");
|
|
2176
2277
|
var import_framer_motion = require("framer-motion");
|
|
2177
|
-
var
|
|
2278
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2178
2279
|
var ENTRANCE = {
|
|
2179
2280
|
near: 80,
|
|
2180
2281
|
mid: 130,
|
|
@@ -2420,7 +2521,7 @@ var CTABanner = ({
|
|
|
2420
2521
|
...props
|
|
2421
2522
|
}) => {
|
|
2422
2523
|
const resolvedAvatars = avatars ?? (variant === "compact" ? COMPACT_AVATAR_DATA : AVATAR_DATA);
|
|
2423
|
-
const sectionRef = (0,
|
|
2524
|
+
const sectionRef = (0, import_react13.useRef)(null);
|
|
2424
2525
|
const { scrollYProgress } = (0, import_framer_motion.useScroll)({
|
|
2425
2526
|
target: sectionRef,
|
|
2426
2527
|
offset: ["start end", "end start"]
|
|
@@ -2438,14 +2539,14 @@ var CTABanner = ({
|
|
|
2438
2539
|
const compactXValues = useCompactAvatarXValues(smooth);
|
|
2439
2540
|
const avatarYValues = variant === "compact" ? compactYValues : standardYValues;
|
|
2440
2541
|
const avatarXValues = variant === "compact" ? compactXValues : standardXValues;
|
|
2441
|
-
return /* @__PURE__ */ (0,
|
|
2542
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
2442
2543
|
"section",
|
|
2443
2544
|
{
|
|
2444
2545
|
ref: sectionRef,
|
|
2445
2546
|
className: ["ctab", variant === "compact" ? "ctab--compact" : "", className].filter(Boolean).join(" "),
|
|
2446
2547
|
...props,
|
|
2447
2548
|
children: [
|
|
2448
|
-
/* @__PURE__ */ (0,
|
|
2549
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2449
2550
|
import_framer_motion.motion.div,
|
|
2450
2551
|
{
|
|
2451
2552
|
className: "ctab__grid",
|
|
@@ -2453,7 +2554,7 @@ var CTABanner = ({
|
|
|
2453
2554
|
"aria-hidden": "true"
|
|
2454
2555
|
}
|
|
2455
2556
|
),
|
|
2456
|
-
/* @__PURE__ */ (0,
|
|
2557
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "ctab__inner", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "ctab__stage", children: [
|
|
2457
2558
|
resolvedAvatars.map((avatar, index) => {
|
|
2458
2559
|
const posStyle = {};
|
|
2459
2560
|
if (avatar.desktopPos.left) posStyle["--av-d-left"] = avatar.desktopPos.left;
|
|
@@ -2462,7 +2563,7 @@ var CTABanner = ({
|
|
|
2462
2563
|
if (avatar.mobilePos?.left) posStyle["--av-m-left"] = avatar.mobilePos.left;
|
|
2463
2564
|
if (avatar.mobilePos?.right) posStyle["--av-m-right"] = avatar.mobilePos.right;
|
|
2464
2565
|
if (avatar.mobilePos?.top) posStyle["--av-m-top"] = avatar.mobilePos.top;
|
|
2465
|
-
return /* @__PURE__ */ (0,
|
|
2566
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2466
2567
|
import_framer_motion.motion.div,
|
|
2467
2568
|
{
|
|
2468
2569
|
className: [
|
|
@@ -2476,7 +2577,7 @@ var CTABanner = ({
|
|
|
2476
2577
|
opacity: avatarOpacity,
|
|
2477
2578
|
filter: avatarFilter
|
|
2478
2579
|
},
|
|
2479
|
-
children: /* @__PURE__ */ (0,
|
|
2580
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
2480
2581
|
"img",
|
|
2481
2582
|
{
|
|
2482
2583
|
src: avatar.imageUrl,
|
|
@@ -2489,14 +2590,14 @@ var CTABanner = ({
|
|
|
2489
2590
|
avatar.id
|
|
2490
2591
|
);
|
|
2491
2592
|
}),
|
|
2492
|
-
/* @__PURE__ */ (0,
|
|
2593
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
2493
2594
|
import_framer_motion.motion.div,
|
|
2494
2595
|
{
|
|
2495
2596
|
className: "ctab__hero",
|
|
2496
2597
|
style: { y: heroY, opacity: heroOpacity },
|
|
2497
2598
|
children: [
|
|
2498
|
-
/* @__PURE__ */ (0,
|
|
2499
|
-
/* @__PURE__ */ (0,
|
|
2599
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("h2", { className: "ctab__headline", children: headline }),
|
|
2600
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)("a", { href: ctaHref, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Button, { colorScheme: "black", variant: "primary", label: ctaLabel }) })
|
|
2500
2601
|
]
|
|
2501
2602
|
}
|
|
2502
2603
|
)
|
|
@@ -2507,14 +2608,14 @@ var CTABanner = ({
|
|
|
2507
2608
|
};
|
|
2508
2609
|
|
|
2509
2610
|
// components/Navbar/Navbar.tsx
|
|
2510
|
-
var
|
|
2611
|
+
var import_react14 = require("react");
|
|
2511
2612
|
var import_framer_motion2 = require("framer-motion");
|
|
2512
2613
|
|
|
2513
2614
|
// assets/icon-globe.svg
|
|
2514
2615
|
var icon_globe_default = "./icon-globe-S54WYYEK.svg";
|
|
2515
2616
|
|
|
2516
2617
|
// components/Navbar/Navbar.tsx
|
|
2517
|
-
var
|
|
2618
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
2518
2619
|
var EASE_OUT_EXPO = [0.16, 1, 0.3, 1];
|
|
2519
2620
|
var dropdownVariants = {
|
|
2520
2621
|
hidden: { opacity: 0, scale: 0.96, y: -8 },
|
|
@@ -2528,7 +2629,7 @@ var accordionVariants = {
|
|
|
2528
2629
|
hidden: { height: 0, opacity: 0 },
|
|
2529
2630
|
visible: { height: "auto", opacity: 1 }
|
|
2530
2631
|
};
|
|
2531
|
-
var ChevronDownIcon3 = ({ className }) => /* @__PURE__ */ (0,
|
|
2632
|
+
var ChevronDownIcon3 = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2532
2633
|
"svg",
|
|
2533
2634
|
{
|
|
2534
2635
|
className,
|
|
@@ -2537,7 +2638,7 @@ var ChevronDownIcon3 = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime
|
|
|
2537
2638
|
viewBox: "0 0 14 14",
|
|
2538
2639
|
fill: "none",
|
|
2539
2640
|
"aria-hidden": "true",
|
|
2540
|
-
children: /* @__PURE__ */ (0,
|
|
2641
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2541
2642
|
"path",
|
|
2542
2643
|
{
|
|
2543
2644
|
d: "M2.625 4.8125L7 9.1875L11.375 4.8125",
|
|
@@ -2549,7 +2650,7 @@ var ChevronDownIcon3 = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime
|
|
|
2549
2650
|
)
|
|
2550
2651
|
}
|
|
2551
2652
|
);
|
|
2552
|
-
var ArrowRightIcon = () => /* @__PURE__ */ (0,
|
|
2653
|
+
var ArrowRightIcon = () => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2553
2654
|
"path",
|
|
2554
2655
|
{
|
|
2555
2656
|
d: "M2.625 7H11.375M11.375 7L7.875 3.5M11.375 7L7.875 10.5",
|
|
@@ -2559,7 +2660,7 @@ var ArrowRightIcon = () => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("svg",
|
|
|
2559
2660
|
strokeLinejoin: "round"
|
|
2560
2661
|
}
|
|
2561
2662
|
) });
|
|
2562
|
-
var ArrowUpRightIcon = () => /* @__PURE__ */ (0,
|
|
2663
|
+
var ArrowUpRightIcon = () => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2563
2664
|
"path",
|
|
2564
2665
|
{
|
|
2565
2666
|
d: "M4.5 11.5L11.5 4.5M11.5 4.5H5.5M11.5 4.5V10.5",
|
|
@@ -2569,7 +2670,7 @@ var ArrowUpRightIcon = () => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("svg"
|
|
|
2569
2670
|
strokeLinejoin: "round"
|
|
2570
2671
|
}
|
|
2571
2672
|
) });
|
|
2572
|
-
var BarsIcon = () => /* @__PURE__ */ (0,
|
|
2673
|
+
var BarsIcon = () => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2573
2674
|
"path",
|
|
2574
2675
|
{
|
|
2575
2676
|
d: "M2.5 5H17.5M2.5 10H17.5M2.5 15H17.5",
|
|
@@ -2578,7 +2679,7 @@ var BarsIcon = () => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("svg", { widt
|
|
|
2578
2679
|
strokeLinecap: "round"
|
|
2579
2680
|
}
|
|
2580
2681
|
) });
|
|
2581
|
-
var XMarkIcon2 = () => /* @__PURE__ */ (0,
|
|
2682
|
+
var XMarkIcon2 = () => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2582
2683
|
"path",
|
|
2583
2684
|
{
|
|
2584
2685
|
d: "M15 5L5 15M5 5L15 15",
|
|
@@ -2587,7 +2688,7 @@ var XMarkIcon2 = () => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("svg", { wi
|
|
|
2587
2688
|
strokeLinecap: "round"
|
|
2588
2689
|
}
|
|
2589
2690
|
) });
|
|
2590
|
-
var ChevronLeftIcon = ({ className }) => /* @__PURE__ */ (0,
|
|
2691
|
+
var ChevronLeftIcon = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2591
2692
|
"svg",
|
|
2592
2693
|
{
|
|
2593
2694
|
className,
|
|
@@ -2596,7 +2697,7 @@ var ChevronLeftIcon = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime2
|
|
|
2596
2697
|
viewBox: "0 0 24 24",
|
|
2597
2698
|
fill: "none",
|
|
2598
2699
|
"aria-hidden": "true",
|
|
2599
|
-
children: /* @__PURE__ */ (0,
|
|
2700
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2600
2701
|
"path",
|
|
2601
2702
|
{
|
|
2602
2703
|
d: "M15 18L9 12L15 6",
|
|
@@ -2608,11 +2709,11 @@ var ChevronLeftIcon = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime2
|
|
|
2608
2709
|
)
|
|
2609
2710
|
}
|
|
2610
2711
|
);
|
|
2611
|
-
var GlobeIcon = ({ className }) => /* @__PURE__ */ (0,
|
|
2712
|
+
var GlobeIcon = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("img", { src: icon_globe_default, alt: "", "aria-hidden": "true", width: "20", height: "20", className });
|
|
2612
2713
|
var DropdownPanel = ({ item, onMouseEnter, onMouseLeave }) => {
|
|
2613
2714
|
const { dropdown } = item;
|
|
2614
2715
|
if (!dropdown) return null;
|
|
2615
|
-
return /* @__PURE__ */ (0,
|
|
2716
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2616
2717
|
import_framer_motion2.motion.div,
|
|
2617
2718
|
{
|
|
2618
2719
|
className: "navbar__dropdown",
|
|
@@ -2623,10 +2724,10 @@ var DropdownPanel = ({ item, onMouseEnter, onMouseLeave }) => {
|
|
|
2623
2724
|
transition: { duration: 0.18, ease: EASE_OUT_EXPO },
|
|
2624
2725
|
onMouseEnter,
|
|
2625
2726
|
onMouseLeave,
|
|
2626
|
-
children: /* @__PURE__ */ (0,
|
|
2627
|
-
/* @__PURE__ */ (0,
|
|
2628
|
-
/* @__PURE__ */ (0,
|
|
2629
|
-
section.items.map((link) => /* @__PURE__ */ (0,
|
|
2727
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "navbar__dropdown-inner", children: [
|
|
2728
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "navbar__dropdown-left", children: dropdown.columns.map((col, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "navbar__dropdown-col", children: col.sections.map((section) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "navbar__dropdown-col-list", children: [
|
|
2729
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "navbar__dropdown-col-title", children: section.title }),
|
|
2730
|
+
section.items.map((link) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2630
2731
|
"a",
|
|
2631
2732
|
{
|
|
2632
2733
|
href: link.href,
|
|
@@ -2635,24 +2736,24 @@ var DropdownPanel = ({ item, onMouseEnter, onMouseLeave }) => {
|
|
|
2635
2736
|
rel: link.external ? "noopener noreferrer" : void 0,
|
|
2636
2737
|
children: [
|
|
2637
2738
|
link.label,
|
|
2638
|
-
link.external ? /* @__PURE__ */ (0,
|
|
2739
|
+
link.external ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ArrowUpRightIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ArrowRightIcon, {})
|
|
2639
2740
|
]
|
|
2640
2741
|
},
|
|
2641
2742
|
link.href
|
|
2642
2743
|
))
|
|
2643
2744
|
] }, section.title)) }, colIdx)) }),
|
|
2644
|
-
dropdown.feature && /* @__PURE__ */ (0,
|
|
2745
|
+
dropdown.feature && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "navbar__dropdown-right", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FeatureCard, { feature: dropdown.feature }) })
|
|
2645
2746
|
] })
|
|
2646
2747
|
}
|
|
2647
2748
|
);
|
|
2648
2749
|
};
|
|
2649
|
-
var FeatureCard = ({ feature, mobile }) => /* @__PURE__ */ (0,
|
|
2750
|
+
var FeatureCard = ({ feature, mobile }) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2650
2751
|
"div",
|
|
2651
2752
|
{
|
|
2652
2753
|
className: mobile ? "navbar__drawer-feature" : "navbar__dropdown-feature",
|
|
2653
2754
|
style: feature.backgroundImageUrl ? { backgroundImage: `url(${feature.backgroundImageUrl})` } : void 0,
|
|
2654
2755
|
children: [
|
|
2655
|
-
feature.backgroundImageUrl && /* @__PURE__ */ (0,
|
|
2756
|
+
feature.backgroundImageUrl && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2656
2757
|
"img",
|
|
2657
2758
|
{
|
|
2658
2759
|
src: feature.backgroundImageUrl,
|
|
@@ -2661,20 +2762,20 @@ var FeatureCard = ({ feature, mobile }) => /* @__PURE__ */ (0, import_jsx_runtim
|
|
|
2661
2762
|
"aria-hidden": "true"
|
|
2662
2763
|
}
|
|
2663
2764
|
),
|
|
2664
|
-
/* @__PURE__ */ (0,
|
|
2665
|
-
/* @__PURE__ */ (0,
|
|
2666
|
-
/* @__PURE__ */ (0,
|
|
2667
|
-
/* @__PURE__ */ (0,
|
|
2668
|
-
/* @__PURE__ */ (0,
|
|
2765
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: mobile ? "navbar__drawer-feature-overlay" : "navbar__dropdown-feature-overlay", "aria-hidden": "true" }),
|
|
2766
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: mobile ? "navbar__drawer-feature-content" : "navbar__dropdown-feature-content", children: [
|
|
2767
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { children: [
|
|
2768
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: mobile ? "navbar__drawer-feature-title" : "navbar__dropdown-feature-title", children: feature.title }),
|
|
2769
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: mobile ? "navbar__drawer-feature-desc" : "navbar__dropdown-feature-desc", children: feature.description })
|
|
2669
2770
|
] }),
|
|
2670
|
-
/* @__PURE__ */ (0,
|
|
2771
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2671
2772
|
"a",
|
|
2672
2773
|
{
|
|
2673
2774
|
href: feature.ctaHref,
|
|
2674
2775
|
className: mobile ? "navbar__drawer-feature-cta" : "navbar__dropdown-feature-cta",
|
|
2675
2776
|
children: [
|
|
2676
2777
|
feature.ctaLabel,
|
|
2677
|
-
/* @__PURE__ */ (0,
|
|
2778
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ArrowRightIcon, {})
|
|
2678
2779
|
]
|
|
2679
2780
|
}
|
|
2680
2781
|
)
|
|
@@ -2684,8 +2785,8 @@ var FeatureCard = ({ feature, mobile }) => /* @__PURE__ */ (0, import_jsx_runtim
|
|
|
2684
2785
|
);
|
|
2685
2786
|
var DrawerAccordion = ({ item, isOpen, onToggle }) => {
|
|
2686
2787
|
const { dropdown } = item;
|
|
2687
|
-
return /* @__PURE__ */ (0,
|
|
2688
|
-
/* @__PURE__ */ (0,
|
|
2788
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "navbar__drawer-item", children: [
|
|
2789
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2689
2790
|
"button",
|
|
2690
2791
|
{
|
|
2691
2792
|
className: `navbar__drawer-trigger ${isOpen ? "navbar__drawer-trigger--open" : ""}`,
|
|
@@ -2693,11 +2794,11 @@ var DrawerAccordion = ({ item, isOpen, onToggle }) => {
|
|
|
2693
2794
|
"aria-expanded": isOpen,
|
|
2694
2795
|
children: [
|
|
2695
2796
|
item.label,
|
|
2696
|
-
/* @__PURE__ */ (0,
|
|
2797
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ChevronDownIcon3, { className: "navbar__drawer-trigger__chevron" })
|
|
2697
2798
|
]
|
|
2698
2799
|
}
|
|
2699
2800
|
),
|
|
2700
|
-
/* @__PURE__ */ (0,
|
|
2801
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_framer_motion2.AnimatePresence, { initial: false, children: isOpen && dropdown && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2701
2802
|
import_framer_motion2.motion.div,
|
|
2702
2803
|
{
|
|
2703
2804
|
className: "navbar__drawer-panel",
|
|
@@ -2706,10 +2807,10 @@ var DrawerAccordion = ({ item, isOpen, onToggle }) => {
|
|
|
2706
2807
|
animate: "visible",
|
|
2707
2808
|
exit: "hidden",
|
|
2708
2809
|
transition: { duration: 0.22, ease: EASE_OUT_EXPO },
|
|
2709
|
-
children: /* @__PURE__ */ (0,
|
|
2710
|
-
/* @__PURE__ */ (0,
|
|
2711
|
-
/* @__PURE__ */ (0,
|
|
2712
|
-
/* @__PURE__ */ (0,
|
|
2810
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "navbar__drawer-panel-inner", children: [
|
|
2811
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "navbar__drawer-panel-cols", children: dropdown.columns.map((col, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "navbar__drawer-panel-col", children: col.sections.map((section) => /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "navbar__drawer-col-section", children: [
|
|
2812
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: "navbar__drawer-col-title", children: section.title }),
|
|
2813
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "navbar__drawer-col-links", children: section.items.map((link) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2713
2814
|
"a",
|
|
2714
2815
|
{
|
|
2715
2816
|
href: link.href,
|
|
@@ -2721,7 +2822,7 @@ var DrawerAccordion = ({ item, isOpen, onToggle }) => {
|
|
|
2721
2822
|
link.href
|
|
2722
2823
|
)) })
|
|
2723
2824
|
] }, section.title)) }, colIdx)) }),
|
|
2724
|
-
dropdown.feature && /* @__PURE__ */ (0,
|
|
2825
|
+
dropdown.feature && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FeatureCard, { feature: dropdown.feature, mobile: true })
|
|
2725
2826
|
] })
|
|
2726
2827
|
}
|
|
2727
2828
|
) })
|
|
@@ -2745,24 +2846,24 @@ var Navbar = ({
|
|
|
2745
2846
|
className,
|
|
2746
2847
|
...props
|
|
2747
2848
|
}) => {
|
|
2748
|
-
const [openDropdown, setOpenDropdown] = (0,
|
|
2749
|
-
const [mobileOpen, setMobileOpen] = (0,
|
|
2750
|
-
const [mobileExpanded, setMobileExpanded] = (0,
|
|
2751
|
-
const [scrolled, setScrolled] = (0,
|
|
2752
|
-
const [langDropdownOpen, setLangDropdownOpen] = (0,
|
|
2753
|
-
const [mobileLangOpen, setMobileLangOpen] = (0,
|
|
2754
|
-
const hoverTimeoutRef = (0,
|
|
2755
|
-
const langHoverTimeoutRef = (0,
|
|
2756
|
-
const pillAreaRef = (0,
|
|
2757
|
-
const langBtnRef = (0,
|
|
2849
|
+
const [openDropdown, setOpenDropdown] = (0, import_react14.useState)(null);
|
|
2850
|
+
const [mobileOpen, setMobileOpen] = (0, import_react14.useState)(false);
|
|
2851
|
+
const [mobileExpanded, setMobileExpanded] = (0, import_react14.useState)(null);
|
|
2852
|
+
const [scrolled, setScrolled] = (0, import_react14.useState)(false);
|
|
2853
|
+
const [langDropdownOpen, setLangDropdownOpen] = (0, import_react14.useState)(false);
|
|
2854
|
+
const [mobileLangOpen, setMobileLangOpen] = (0, import_react14.useState)(false);
|
|
2855
|
+
const hoverTimeoutRef = (0, import_react14.useRef)(null);
|
|
2856
|
+
const langHoverTimeoutRef = (0, import_react14.useRef)(null);
|
|
2857
|
+
const pillAreaRef = (0, import_react14.useRef)(null);
|
|
2858
|
+
const langBtnRef = (0, import_react14.useRef)(null);
|
|
2758
2859
|
const hasLangDropdown = Boolean(languageItems && languageItems.length > 0);
|
|
2759
2860
|
const resolvedLogo = theme === "light" ? logoSrcDark ?? logoSrc : logoSrc;
|
|
2760
|
-
(0,
|
|
2861
|
+
(0, import_react14.useEffect)(() => {
|
|
2761
2862
|
const onScroll = () => setScrolled(window.scrollY > 0);
|
|
2762
2863
|
window.addEventListener("scroll", onScroll, { passive: true });
|
|
2763
2864
|
return () => window.removeEventListener("scroll", onScroll);
|
|
2764
2865
|
}, []);
|
|
2765
|
-
(0,
|
|
2866
|
+
(0, import_react14.useEffect)(() => {
|
|
2766
2867
|
const onKey = (e) => {
|
|
2767
2868
|
if (e.key === "Escape") {
|
|
2768
2869
|
setOpenDropdown(null);
|
|
@@ -2773,16 +2874,16 @@ var Navbar = ({
|
|
|
2773
2874
|
document.addEventListener("keydown", onKey);
|
|
2774
2875
|
return () => document.removeEventListener("keydown", onKey);
|
|
2775
2876
|
}, []);
|
|
2776
|
-
(0,
|
|
2877
|
+
(0, import_react14.useEffect)(() => {
|
|
2777
2878
|
if (!mobileOpen) setMobileLangOpen(false);
|
|
2778
2879
|
}, [mobileOpen]);
|
|
2779
|
-
(0,
|
|
2880
|
+
(0, import_react14.useEffect)(() => {
|
|
2780
2881
|
document.body.style.overflow = mobileOpen ? "hidden" : "";
|
|
2781
2882
|
return () => {
|
|
2782
2883
|
document.body.style.overflow = "";
|
|
2783
2884
|
};
|
|
2784
2885
|
}, [mobileOpen]);
|
|
2785
|
-
(0,
|
|
2886
|
+
(0, import_react14.useEffect)(() => {
|
|
2786
2887
|
if (!openDropdown) return;
|
|
2787
2888
|
const onPointerDown = (e) => {
|
|
2788
2889
|
if (pillAreaRef.current && !pillAreaRef.current.contains(e.target)) {
|
|
@@ -2792,54 +2893,54 @@ var Navbar = ({
|
|
|
2792
2893
|
document.addEventListener("pointerdown", onPointerDown);
|
|
2793
2894
|
return () => document.removeEventListener("pointerdown", onPointerDown);
|
|
2794
2895
|
}, [openDropdown]);
|
|
2795
|
-
const clearHoverTimeout = (0,
|
|
2896
|
+
const clearHoverTimeout = (0, import_react14.useCallback)(() => {
|
|
2796
2897
|
if (hoverTimeoutRef.current) {
|
|
2797
2898
|
clearTimeout(hoverTimeoutRef.current);
|
|
2798
2899
|
hoverTimeoutRef.current = null;
|
|
2799
2900
|
}
|
|
2800
2901
|
}, []);
|
|
2801
|
-
const clearLangHoverTimeout = (0,
|
|
2902
|
+
const clearLangHoverTimeout = (0, import_react14.useCallback)(() => {
|
|
2802
2903
|
if (langHoverTimeoutRef.current) {
|
|
2803
2904
|
clearTimeout(langHoverTimeoutRef.current);
|
|
2804
2905
|
langHoverTimeoutRef.current = null;
|
|
2805
2906
|
}
|
|
2806
2907
|
}, []);
|
|
2807
|
-
const handleLangEnter = (0,
|
|
2908
|
+
const handleLangEnter = (0, import_react14.useCallback)(() => {
|
|
2808
2909
|
clearLangHoverTimeout();
|
|
2809
2910
|
setLangDropdownOpen(true);
|
|
2810
2911
|
}, [clearLangHoverTimeout]);
|
|
2811
|
-
const handleLangLeave = (0,
|
|
2912
|
+
const handleLangLeave = (0, import_react14.useCallback)(() => {
|
|
2812
2913
|
clearLangHoverTimeout();
|
|
2813
2914
|
langHoverTimeoutRef.current = setTimeout(() => setLangDropdownOpen(false), 150);
|
|
2814
2915
|
}, [clearLangHoverTimeout]);
|
|
2815
|
-
const handleLangSelect = (0,
|
|
2916
|
+
const handleLangSelect = (0, import_react14.useCallback)((code) => {
|
|
2816
2917
|
setLangDropdownOpen(false);
|
|
2817
2918
|
setMobileLangOpen(false);
|
|
2818
2919
|
onLanguageSelect?.(code);
|
|
2819
2920
|
}, [onLanguageSelect]);
|
|
2820
|
-
const handleNavEnter = (0,
|
|
2921
|
+
const handleNavEnter = (0, import_react14.useCallback)((label) => {
|
|
2821
2922
|
clearHoverTimeout();
|
|
2822
2923
|
setOpenDropdown(label);
|
|
2823
2924
|
}, [clearHoverTimeout]);
|
|
2824
|
-
const handleNavLeave = (0,
|
|
2925
|
+
const handleNavLeave = (0, import_react14.useCallback)(() => {
|
|
2825
2926
|
clearHoverTimeout();
|
|
2826
2927
|
hoverTimeoutRef.current = setTimeout(() => setOpenDropdown(null), 120);
|
|
2827
2928
|
}, [clearHoverTimeout]);
|
|
2828
2929
|
const activeDropdownItem = navItems.find((item) => item.label === openDropdown);
|
|
2829
|
-
return /* @__PURE__ */ (0,
|
|
2930
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2830
2931
|
"nav",
|
|
2831
2932
|
{
|
|
2832
2933
|
className: ["navbar", `navbar--${theme}`, scrolled && "navbar--scrolled", mobileOpen && "navbar--menu-open", className].filter(Boolean).join(" "),
|
|
2833
2934
|
...props,
|
|
2834
2935
|
children: [
|
|
2835
|
-
/* @__PURE__ */ (0,
|
|
2836
|
-
/* @__PURE__ */ (0,
|
|
2837
|
-
/* @__PURE__ */ (0,
|
|
2838
|
-
/* @__PURE__ */ (0,
|
|
2839
|
-
/* @__PURE__ */ (0,
|
|
2936
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "navbar__bar", children: [
|
|
2937
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("a", { href: logoHref, className: "navbar__logo", "aria-label": "Home", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("img", { src: resolvedLogo, alt: "Logo" }) }),
|
|
2938
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "navbar__nav-center", ref: pillAreaRef, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "navbar__pill", children: [
|
|
2939
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("a", { href: logoHref, className: "navbar__pill-logo", "aria-label": "Home", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("img", { src: logoSrcDark ?? logoSrc, alt: "Logo" }) }),
|
|
2940
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "navbar__nav-group", children: [
|
|
2840
2941
|
navItems.map((item) => {
|
|
2841
2942
|
if (item.external) {
|
|
2842
|
-
return /* @__PURE__ */ (0,
|
|
2943
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2843
2944
|
"a",
|
|
2844
2945
|
{
|
|
2845
2946
|
href: item.href,
|
|
@@ -2848,14 +2949,14 @@ var Navbar = ({
|
|
|
2848
2949
|
rel: "noopener noreferrer",
|
|
2849
2950
|
children: [
|
|
2850
2951
|
item.label,
|
|
2851
|
-
/* @__PURE__ */ (0,
|
|
2952
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ArrowUpRightIcon, {})
|
|
2852
2953
|
]
|
|
2853
2954
|
},
|
|
2854
2955
|
item.label
|
|
2855
2956
|
);
|
|
2856
2957
|
}
|
|
2857
2958
|
if (item.dropdown) {
|
|
2858
|
-
return /* @__PURE__ */ (0,
|
|
2959
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2859
2960
|
"button",
|
|
2860
2961
|
{
|
|
2861
2962
|
className: [
|
|
@@ -2868,30 +2969,34 @@ var Navbar = ({
|
|
|
2868
2969
|
"aria-haspopup": "true",
|
|
2869
2970
|
children: [
|
|
2870
2971
|
item.label,
|
|
2871
|
-
/* @__PURE__ */ (0,
|
|
2972
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ChevronDownIcon3, { className: "navbar__nav-item__chevron" })
|
|
2872
2973
|
]
|
|
2873
2974
|
},
|
|
2874
2975
|
item.label
|
|
2875
2976
|
);
|
|
2876
2977
|
}
|
|
2877
|
-
return /* @__PURE__ */ (0,
|
|
2978
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("a", { href: item.href, className: "navbar__nav-item", children: item.label }, item.label);
|
|
2878
2979
|
}),
|
|
2879
|
-
languageLabel && /* @__PURE__ */ (0,
|
|
2980
|
+
languageLabel && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2880
2981
|
"div",
|
|
2881
2982
|
{
|
|
2882
2983
|
className: "navbar__lang-wrapper",
|
|
2883
2984
|
onMouseEnter: hasLangDropdown ? handleLangEnter : void 0,
|
|
2884
2985
|
onMouseLeave: hasLangDropdown ? handleLangLeave : void 0,
|
|
2885
|
-
children: /* @__PURE__ */ (0,
|
|
2986
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2886
2987
|
"button",
|
|
2887
2988
|
{
|
|
2888
2989
|
ref: langBtnRef,
|
|
2889
|
-
className:
|
|
2990
|
+
className: [
|
|
2991
|
+
"navbar__nav-item",
|
|
2992
|
+
"navbar__lang-btn",
|
|
2993
|
+
hasLangDropdown && langDropdownOpen ? "navbar__nav-item--open" : ""
|
|
2994
|
+
].filter(Boolean).join(" "),
|
|
2890
2995
|
onClick: hasLangDropdown ? () => setLangDropdownOpen((o) => !o) : onLanguageClick,
|
|
2891
2996
|
"aria-haspopup": hasLangDropdown ? "true" : void 0,
|
|
2892
2997
|
"aria-expanded": hasLangDropdown ? langDropdownOpen : void 0,
|
|
2893
2998
|
children: [
|
|
2894
|
-
/* @__PURE__ */ (0,
|
|
2999
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GlobeIcon, { className: "navbar__lang-globe" }),
|
|
2895
3000
|
languageLabel
|
|
2896
3001
|
]
|
|
2897
3002
|
}
|
|
@@ -2899,12 +3004,12 @@ var Navbar = ({
|
|
|
2899
3004
|
}
|
|
2900
3005
|
)
|
|
2901
3006
|
] }),
|
|
2902
|
-
/* @__PURE__ */ (0,
|
|
2903
|
-
loginHref && /* @__PURE__ */ (0,
|
|
2904
|
-
ctaHref && /* @__PURE__ */ (0,
|
|
3007
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "navbar__pill-actions", children: [
|
|
3008
|
+
loginHref && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("a", { href: loginHref, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Button, { colorScheme: "black", variant: "secondary", label: loginLabel }) }),
|
|
3009
|
+
ctaHref && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("a", { href: ctaHref, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Button, { colorScheme: "coral", variant: "primary", label: ctaLabel }) })
|
|
2905
3010
|
] })
|
|
2906
3011
|
] }) }),
|
|
2907
|
-
/* @__PURE__ */ (0,
|
|
3012
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_framer_motion2.AnimatePresence, { children: openDropdown && activeDropdownItem?.dropdown && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2908
3013
|
DropdownPanel,
|
|
2909
3014
|
{
|
|
2910
3015
|
item: activeDropdownItem,
|
|
@@ -2913,7 +3018,7 @@ var Navbar = ({
|
|
|
2913
3018
|
},
|
|
2914
3019
|
"dropdown"
|
|
2915
3020
|
) }),
|
|
2916
|
-
/* @__PURE__ */ (0,
|
|
3021
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_framer_motion2.AnimatePresence, { children: hasLangDropdown && langDropdownOpen && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2917
3022
|
import_framer_motion2.motion.div,
|
|
2918
3023
|
{
|
|
2919
3024
|
className: "navbar__lang-dropdown",
|
|
@@ -2924,12 +3029,12 @@ var Navbar = ({
|
|
|
2924
3029
|
transition: { duration: 0.18, ease: EASE_OUT_EXPO },
|
|
2925
3030
|
onMouseEnter: clearLangHoverTimeout,
|
|
2926
3031
|
onMouseLeave: handleLangLeave,
|
|
2927
|
-
children: /* @__PURE__ */ (0,
|
|
3032
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2928
3033
|
"div",
|
|
2929
3034
|
{
|
|
2930
3035
|
className: "navbar__lang-dropdown-grid",
|
|
2931
3036
|
style: { "--lang-rows": Math.ceil(languageItems.length / 3) },
|
|
2932
|
-
children: languageItems.map((lang) => /* @__PURE__ */ (0,
|
|
3037
|
+
children: languageItems.map((lang) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2933
3038
|
"button",
|
|
2934
3039
|
{
|
|
2935
3040
|
className: [
|
|
@@ -2945,8 +3050,8 @@ var Navbar = ({
|
|
|
2945
3050
|
)
|
|
2946
3051
|
}
|
|
2947
3052
|
) }),
|
|
2948
|
-
/* @__PURE__ */ (0,
|
|
2949
|
-
loginHref && /* @__PURE__ */ (0,
|
|
3053
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "navbar__actions", children: [
|
|
3054
|
+
loginHref && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("a", { href: loginHref, className: "navbar__actions-login", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2950
3055
|
Button,
|
|
2951
3056
|
{
|
|
2952
3057
|
colorScheme: theme === "dark" ? "white" : "black",
|
|
@@ -2954,10 +3059,10 @@ var Navbar = ({
|
|
|
2954
3059
|
label: loginLabel
|
|
2955
3060
|
}
|
|
2956
3061
|
) }),
|
|
2957
|
-
ctaHref && /* @__PURE__ */ (0,
|
|
3062
|
+
ctaHref && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("a", { href: ctaHref, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Button, { colorScheme: "coral", variant: "primary", label: ctaLabel }) })
|
|
2958
3063
|
] }),
|
|
2959
|
-
/* @__PURE__ */ (0,
|
|
2960
|
-
loginHref && /* @__PURE__ */ (0,
|
|
3064
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "navbar__mobile-actions", children: [
|
|
3065
|
+
loginHref && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("a", { href: loginHref, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2961
3066
|
Button,
|
|
2962
3067
|
{
|
|
2963
3068
|
colorScheme: scrolled || theme === "light" ? "black" : "white",
|
|
@@ -2965,18 +3070,18 @@ var Navbar = ({
|
|
|
2965
3070
|
label: loginLabel
|
|
2966
3071
|
}
|
|
2967
3072
|
) }),
|
|
2968
|
-
/* @__PURE__ */ (0,
|
|
3073
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2969
3074
|
"button",
|
|
2970
3075
|
{
|
|
2971
3076
|
className: "navbar__mobile-trigger",
|
|
2972
3077
|
onClick: () => setMobileOpen((o) => !o),
|
|
2973
3078
|
"aria-label": mobileOpen ? "Close navigation menu" : "Open navigation menu",
|
|
2974
|
-
children: mobileOpen ? /* @__PURE__ */ (0,
|
|
3079
|
+
children: mobileOpen ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(XMarkIcon2, {}) : /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(BarsIcon, {})
|
|
2975
3080
|
}
|
|
2976
3081
|
)
|
|
2977
3082
|
] })
|
|
2978
3083
|
] }),
|
|
2979
|
-
/* @__PURE__ */ (0,
|
|
3084
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "navbar__drawer-clip", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_framer_motion2.AnimatePresence, { children: mobileOpen && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
2980
3085
|
import_framer_motion2.motion.div,
|
|
2981
3086
|
{
|
|
2982
3087
|
className: "navbar__drawer",
|
|
@@ -2989,10 +3094,10 @@ var Navbar = ({
|
|
|
2989
3094
|
role: "dialog",
|
|
2990
3095
|
"aria-label": "Navigation menu",
|
|
2991
3096
|
children: [
|
|
2992
|
-
/* @__PURE__ */ (0,
|
|
3097
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("nav", { className: "navbar__drawer-nav", children: [
|
|
2993
3098
|
navItems.map((item) => {
|
|
2994
3099
|
if (item.dropdown) {
|
|
2995
|
-
return /* @__PURE__ */ (0,
|
|
3100
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
2996
3101
|
DrawerAccordion,
|
|
2997
3102
|
{
|
|
2998
3103
|
item,
|
|
@@ -3004,7 +3109,7 @@ var Navbar = ({
|
|
|
3004
3109
|
item.label
|
|
3005
3110
|
);
|
|
3006
3111
|
}
|
|
3007
|
-
return /* @__PURE__ */ (0,
|
|
3112
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
3008
3113
|
"a",
|
|
3009
3114
|
{
|
|
3010
3115
|
href: item.href,
|
|
@@ -3013,30 +3118,30 @@ var Navbar = ({
|
|
|
3013
3118
|
rel: item.external ? "noopener noreferrer" : void 0,
|
|
3014
3119
|
children: [
|
|
3015
3120
|
item.label,
|
|
3016
|
-
item.external && /* @__PURE__ */ (0,
|
|
3121
|
+
item.external && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ArrowUpRightIcon, {})
|
|
3017
3122
|
]
|
|
3018
3123
|
},
|
|
3019
3124
|
item.label
|
|
3020
3125
|
);
|
|
3021
3126
|
}),
|
|
3022
|
-
languageLabel && !hasLangDropdown && /* @__PURE__ */ (0,
|
|
3023
|
-
/* @__PURE__ */ (0,
|
|
3127
|
+
languageLabel && !hasLangDropdown && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("button", { className: "navbar__drawer-lang", onClick: onLanguageClick, children: [
|
|
3128
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GlobeIcon, { className: "navbar__lang-globe" }),
|
|
3024
3129
|
languageLabel
|
|
3025
3130
|
] }),
|
|
3026
|
-
languageLabel && hasLangDropdown && /* @__PURE__ */ (0,
|
|
3131
|
+
languageLabel && hasLangDropdown && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
3027
3132
|
"button",
|
|
3028
3133
|
{
|
|
3029
3134
|
className: "navbar__drawer-lang",
|
|
3030
3135
|
onClick: () => setMobileLangOpen(true),
|
|
3031
3136
|
children: [
|
|
3032
|
-
/* @__PURE__ */ (0,
|
|
3137
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(GlobeIcon, { className: "navbar__lang-globe" }),
|
|
3033
3138
|
languageLabel
|
|
3034
3139
|
]
|
|
3035
3140
|
}
|
|
3036
3141
|
)
|
|
3037
3142
|
] }),
|
|
3038
|
-
!mobileLangOpen && /* @__PURE__ */ (0,
|
|
3039
|
-
loginHref && /* @__PURE__ */ (0,
|
|
3143
|
+
!mobileLangOpen && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "navbar__drawer-footer", children: [
|
|
3144
|
+
loginHref && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("a", { href: loginHref, style: { display: "block" }, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
3040
3145
|
Button,
|
|
3041
3146
|
{
|
|
3042
3147
|
colorScheme: "black",
|
|
@@ -3045,7 +3150,7 @@ var Navbar = ({
|
|
|
3045
3150
|
fullWidth: true
|
|
3046
3151
|
}
|
|
3047
3152
|
) }),
|
|
3048
|
-
ctaHref && /* @__PURE__ */ (0,
|
|
3153
|
+
ctaHref && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("a", { href: ctaHref, style: { display: "block" }, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
3049
3154
|
Button,
|
|
3050
3155
|
{
|
|
3051
3156
|
colorScheme: "coral",
|
|
@@ -3055,7 +3160,7 @@ var Navbar = ({
|
|
|
3055
3160
|
}
|
|
3056
3161
|
) })
|
|
3057
3162
|
] }),
|
|
3058
|
-
/* @__PURE__ */ (0,
|
|
3163
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_framer_motion2.AnimatePresence, { children: hasLangDropdown && mobileLangOpen && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
|
|
3059
3164
|
import_framer_motion2.motion.div,
|
|
3060
3165
|
{
|
|
3061
3166
|
className: "navbar__drawer-lang-panel",
|
|
@@ -3064,16 +3169,16 @@ var Navbar = ({
|
|
|
3064
3169
|
exit: { y: "100%" },
|
|
3065
3170
|
transition: { duration: 0.25, ease: EASE_OUT_EXPO },
|
|
3066
3171
|
children: [
|
|
3067
|
-
/* @__PURE__ */ (0,
|
|
3172
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
3068
3173
|
"button",
|
|
3069
3174
|
{
|
|
3070
3175
|
className: "navbar__drawer-lang-back",
|
|
3071
3176
|
onClick: () => setMobileLangOpen(false),
|
|
3072
3177
|
"aria-label": "Back to menu",
|
|
3073
|
-
children: /* @__PURE__ */ (0,
|
|
3178
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ChevronLeftIcon, {})
|
|
3074
3179
|
}
|
|
3075
3180
|
),
|
|
3076
|
-
/* @__PURE__ */ (0,
|
|
3181
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "navbar__drawer-lang-grid", children: languageItems.map((lang) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
3077
3182
|
"button",
|
|
3078
3183
|
{
|
|
3079
3184
|
className: [
|
|
@@ -3097,125 +3202,453 @@ var Navbar = ({
|
|
|
3097
3202
|
};
|
|
3098
3203
|
|
|
3099
3204
|
// templates/DayNightTransition/DayNightTransition.tsx
|
|
3100
|
-
var
|
|
3205
|
+
var import_react15 = require("react");
|
|
3101
3206
|
var import_framer_motion3 = require("framer-motion");
|
|
3102
|
-
|
|
3207
|
+
|
|
3208
|
+
// templates/DayNightTransition/webflowDayNightV2Ix.ts
|
|
3209
|
+
var DESC_SWATCH = { r: 24, g: 28, b: 37 };
|
|
3210
|
+
var BODY_TEXT = { r: 51, g: 51, b: 51 };
|
|
3211
|
+
var rgb = (r, g, b) => `rgb(${r},${g},${b})`;
|
|
3212
|
+
var lerp = (a, b, u) => a + (b - a) * u;
|
|
3213
|
+
var seg = (t, t0, t1, v0, v1) => {
|
|
3214
|
+
if (t <= t0) return v0;
|
|
3215
|
+
if (t >= t1) return v1;
|
|
3216
|
+
return lerp(v0, v1, (t - t0) / (t1 - t0));
|
|
3217
|
+
};
|
|
3218
|
+
function webflowV2DescriptionColor(t, media) {
|
|
3219
|
+
if (media === "desktop") {
|
|
3220
|
+
const body2 = rgb(BODY_TEXT.r, BODY_TEXT.g, BODY_TEXT.b);
|
|
3221
|
+
const dark2 = rgb(DESC_SWATCH.r, DESC_SWATCH.g, DESC_SWATCH.b);
|
|
3222
|
+
const white2 = rgb(255, 255, 255);
|
|
3223
|
+
if (t < 0.49) return body2;
|
|
3224
|
+
if (t < 0.5) return dark2;
|
|
3225
|
+
return white2;
|
|
3226
|
+
}
|
|
3227
|
+
const white = rgb(255, 255, 255);
|
|
3228
|
+
const dark = rgb(DESC_SWATCH.r, DESC_SWATCH.g, DESC_SWATCH.b);
|
|
3229
|
+
const body = rgb(BODY_TEXT.r, BODY_TEXT.g, BODY_TEXT.b);
|
|
3230
|
+
if (t < 0.58) return body;
|
|
3231
|
+
if (t < 0.59) return dark;
|
|
3232
|
+
return white;
|
|
3233
|
+
}
|
|
3234
|
+
function webflowV2TitleColor(t, media) {
|
|
3235
|
+
if (media === "desktop") {
|
|
3236
|
+
const body2 = rgb(BODY_TEXT.r, BODY_TEXT.g, BODY_TEXT.b);
|
|
3237
|
+
const black = rgb(0, 0, 0);
|
|
3238
|
+
const white2 = rgb(255, 255, 255);
|
|
3239
|
+
if (t < 0.51) return body2;
|
|
3240
|
+
if (t >= 0.52) return white2;
|
|
3241
|
+
return seg(t, 0.51, 0.52, black, white2);
|
|
3242
|
+
}
|
|
3243
|
+
const dark = rgb(DESC_SWATCH.r, DESC_SWATCH.g, DESC_SWATCH.b);
|
|
3244
|
+
const white = rgb(255, 255, 255);
|
|
3245
|
+
const body = rgb(BODY_TEXT.r, BODY_TEXT.g, BODY_TEXT.b);
|
|
3246
|
+
if (t < 0.6) return body;
|
|
3247
|
+
if (t >= 0.61) return white;
|
|
3248
|
+
const u = (t - 0.6) / 0.01;
|
|
3249
|
+
return rgb(
|
|
3250
|
+
lerp(DESC_SWATCH.r, 255, u),
|
|
3251
|
+
lerp(DESC_SWATCH.g, 255, u),
|
|
3252
|
+
lerp(DESC_SWATCH.b, 255, u)
|
|
3253
|
+
);
|
|
3254
|
+
}
|
|
3255
|
+
function webflowV2DayWordOpacity(t, media) {
|
|
3256
|
+
if (media === "desktop") {
|
|
3257
|
+
if (t < 0.51) return 1;
|
|
3258
|
+
if (t >= 0.52) return 0;
|
|
3259
|
+
return seg(t, 0.51, 0.52, 1, 0);
|
|
3260
|
+
}
|
|
3261
|
+
if (t < 0.6) return 1;
|
|
3262
|
+
if (t >= 0.61) return 0;
|
|
3263
|
+
return seg(t, 0.6, 0.61, 1, 0);
|
|
3264
|
+
}
|
|
3265
|
+
function webflowV2NightWordOpacity(t, media) {
|
|
3266
|
+
if (media === "desktop") {
|
|
3267
|
+
if (t < 0.51) return 0;
|
|
3268
|
+
if (t >= 0.52) return 1;
|
|
3269
|
+
return seg(t, 0.51, 0.52, 0, 1);
|
|
3270
|
+
}
|
|
3271
|
+
if (t < 0.6) return 0;
|
|
3272
|
+
if (t >= 0.61) return 1;
|
|
3273
|
+
return seg(t, 0.6, 0.61, 0, 1);
|
|
3274
|
+
}
|
|
3275
|
+
var WEBFLOW_V2_DAY_CLIP_SCROLL_END = 0.65;
|
|
3276
|
+
function webflowV2DayClipPercent(t, media) {
|
|
3277
|
+
if (media === "desktop") return 100;
|
|
3278
|
+
return seg(t, 0, WEBFLOW_V2_DAY_CLIP_SCROLL_END, 100, 0);
|
|
3279
|
+
}
|
|
3280
|
+
|
|
3281
|
+
// templates/DayNightTransition/DayNightTransition.tsx
|
|
3282
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
3103
3283
|
var SPRING2 = { stiffness: 80, damping: 30, restDelta: 1e-3 };
|
|
3104
3284
|
var FADE_START = 0.35;
|
|
3105
3285
|
var FADE_END = 0.65;
|
|
3106
|
-
var
|
|
3107
|
-
var
|
|
3286
|
+
var V2_TEXT_SCROLL_CROSSFADE_DESKTOP_START = 0.49;
|
|
3287
|
+
var V2_TEXT_SCROLL_CROSSFADE_DESKTOP_END = 0.52;
|
|
3288
|
+
var V2_TEXT_SCROLL_CROSSFADE_MOBILE_START = 0.58;
|
|
3289
|
+
var V2_TEXT_SCROLL_CROSSFADE_MOBILE_END = 0.61;
|
|
3108
3290
|
var TEXT_CHANNEL_DAY = 0;
|
|
3109
3291
|
var TEXT_CHANNEL_NIGHT = 255;
|
|
3292
|
+
var seg2 = (t, t0, t1, v0, v1) => {
|
|
3293
|
+
if (t <= t0) return v0;
|
|
3294
|
+
if (t >= t1) return v1;
|
|
3295
|
+
return v0 + (v1 - v0) * ((t - t0) / (t1 - t0));
|
|
3296
|
+
};
|
|
3110
3297
|
var DayNightTransition = ({
|
|
3111
3298
|
dayImageUrl,
|
|
3112
3299
|
nightImageUrl,
|
|
3113
|
-
dayHeadline = "
|
|
3114
|
-
nightHeadline = "
|
|
3115
|
-
dayDescription,
|
|
3116
|
-
nightDescription,
|
|
3300
|
+
dayHeadline = "Medium length section title goes here",
|
|
3301
|
+
nightHeadline = "Medium length section title goes here",
|
|
3302
|
+
dayDescription = "Description goes here. Description goes here. Description goes here.",
|
|
3303
|
+
nightDescription = "Description goes here. Description goes here. Description goes here.",
|
|
3117
3304
|
ctaLabel = "Get started",
|
|
3118
3305
|
ctaHref = "#",
|
|
3306
|
+
hideCta = false,
|
|
3307
|
+
headlineLevel = "h2",
|
|
3308
|
+
descriptionLevel = "body-md",
|
|
3309
|
+
inlineDayNightHeadline,
|
|
3310
|
+
scrollPreset = "default",
|
|
3119
3311
|
className,
|
|
3120
3312
|
...props
|
|
3121
3313
|
}) => {
|
|
3122
|
-
const wrapperRef = (0,
|
|
3314
|
+
const wrapperRef = (0, import_react15.useRef)(null);
|
|
3315
|
+
const dayWordRef = (0, import_react15.useRef)(null);
|
|
3316
|
+
const [nightMarginStart, setNightMarginStart] = (0, import_react15.useState)("0px");
|
|
3317
|
+
const [nightMarginEnd, setNightMarginEnd] = (0, import_react15.useState)("0px");
|
|
3318
|
+
const [ixMedia, setIxMedia] = (0, import_react15.useState)("desktop");
|
|
3319
|
+
const webflowV2 = scrollPreset === "webflow-day-night-v2";
|
|
3320
|
+
(0, import_react15.useEffect)(() => {
|
|
3321
|
+
const mq = window.matchMedia("(max-width: 991px)");
|
|
3322
|
+
const sync = () => setIxMedia(mq.matches ? "mobile" : "desktop");
|
|
3323
|
+
sync();
|
|
3324
|
+
mq.addEventListener("change", sync);
|
|
3325
|
+
return () => mq.removeEventListener("change", sync);
|
|
3326
|
+
}, []);
|
|
3327
|
+
const MotionHeadline = headlineLevel === "h1" ? import_framer_motion3.motion.h1 : import_framer_motion3.motion.h2;
|
|
3328
|
+
(0, import_react15.useLayoutEffect)(() => {
|
|
3329
|
+
if (!inlineDayNightHeadline) return;
|
|
3330
|
+
const syncNightPull = () => {
|
|
3331
|
+
const dayEl = dayWordRef.current;
|
|
3332
|
+
if (!dayEl) return;
|
|
3333
|
+
const w = dayEl.offsetWidth;
|
|
3334
|
+
const doc = document.documentElement;
|
|
3335
|
+
const rtl = doc.getAttribute("dir") === "rtl" || doc.lang.toLowerCase().startsWith("ar");
|
|
3336
|
+
if (rtl) {
|
|
3337
|
+
setNightMarginStart("0px");
|
|
3338
|
+
setNightMarginEnd(w ? `-${w}px` : "0px");
|
|
3339
|
+
} else {
|
|
3340
|
+
setNightMarginStart(w ? `-${w}px` : "0px");
|
|
3341
|
+
setNightMarginEnd("0px");
|
|
3342
|
+
}
|
|
3343
|
+
};
|
|
3344
|
+
syncNightPull();
|
|
3345
|
+
const ro = new ResizeObserver(syncNightPull);
|
|
3346
|
+
if (dayWordRef.current) ro.observe(dayWordRef.current);
|
|
3347
|
+
window.addEventListener("resize", syncNightPull);
|
|
3348
|
+
return () => {
|
|
3349
|
+
ro.disconnect();
|
|
3350
|
+
window.removeEventListener("resize", syncNightPull);
|
|
3351
|
+
};
|
|
3352
|
+
}, [
|
|
3353
|
+
inlineDayNightHeadline,
|
|
3354
|
+
inlineDayNightHeadline?.dayWord,
|
|
3355
|
+
inlineDayNightHeadline?.nightWord,
|
|
3356
|
+
inlineDayNightHeadline?.prefix
|
|
3357
|
+
]);
|
|
3123
3358
|
const { scrollYProgress } = (0, import_framer_motion3.useScroll)({
|
|
3124
3359
|
target: wrapperRef,
|
|
3125
3360
|
offset: ["start end", "end start"]
|
|
3126
3361
|
});
|
|
3127
3362
|
const smooth = (0, import_framer_motion3.useSpring)(scrollYProgress, SPRING2);
|
|
3128
|
-
const
|
|
3129
|
-
const
|
|
3363
|
+
const progress = webflowV2 ? scrollYProgress : smooth;
|
|
3364
|
+
const nightOpacity = (0, import_framer_motion3.useTransform)(progress, [FADE_START, FADE_END], [0, 1]);
|
|
3365
|
+
const channel = (0, import_framer_motion3.useTransform)(progress, [FADE_START, FADE_END], [TEXT_CHANNEL_DAY, TEXT_CHANNEL_NIGHT]);
|
|
3130
3366
|
const textColor = import_framer_motion3.useMotionTemplate`rgb(${channel}, ${channel}, ${channel})`;
|
|
3131
|
-
const dayOpacity = (0, import_framer_motion3.useTransform)(
|
|
3132
|
-
|
|
3367
|
+
const dayOpacity = (0, import_framer_motion3.useTransform)(progress, (t) => {
|
|
3368
|
+
if (webflowV2) {
|
|
3369
|
+
return ixMedia === "mobile" ? seg2(
|
|
3370
|
+
t,
|
|
3371
|
+
V2_TEXT_SCROLL_CROSSFADE_MOBILE_START,
|
|
3372
|
+
V2_TEXT_SCROLL_CROSSFADE_MOBILE_END,
|
|
3373
|
+
1,
|
|
3374
|
+
0
|
|
3375
|
+
) : seg2(
|
|
3376
|
+
t,
|
|
3377
|
+
V2_TEXT_SCROLL_CROSSFADE_DESKTOP_START,
|
|
3378
|
+
V2_TEXT_SCROLL_CROSSFADE_DESKTOP_END,
|
|
3379
|
+
1,
|
|
3380
|
+
0
|
|
3381
|
+
);
|
|
3382
|
+
}
|
|
3383
|
+
return seg2(t, FADE_START, FADE_END, 1, 0);
|
|
3384
|
+
});
|
|
3385
|
+
const nightOpacity2 = (0, import_framer_motion3.useTransform)(progress, (t) => {
|
|
3386
|
+
if (webflowV2) {
|
|
3387
|
+
return ixMedia === "mobile" ? seg2(
|
|
3388
|
+
t,
|
|
3389
|
+
V2_TEXT_SCROLL_CROSSFADE_MOBILE_START,
|
|
3390
|
+
V2_TEXT_SCROLL_CROSSFADE_MOBILE_END,
|
|
3391
|
+
0,
|
|
3392
|
+
1
|
|
3393
|
+
) : seg2(
|
|
3394
|
+
t,
|
|
3395
|
+
V2_TEXT_SCROLL_CROSSFADE_DESKTOP_START,
|
|
3396
|
+
V2_TEXT_SCROLL_CROSSFADE_DESKTOP_END,
|
|
3397
|
+
0,
|
|
3398
|
+
1
|
|
3399
|
+
);
|
|
3400
|
+
}
|
|
3401
|
+
return seg2(t, FADE_START, FADE_END, 0, 1);
|
|
3402
|
+
});
|
|
3403
|
+
const v2DescColor = (0, import_framer_motion3.useTransform)(progress, (t) => webflowV2DescriptionColor(t, ixMedia));
|
|
3404
|
+
const v2TitleColor = (0, import_framer_motion3.useTransform)(progress, (t) => webflowV2TitleColor(t, ixMedia));
|
|
3405
|
+
const v2DayWordOp = (0, import_framer_motion3.useTransform)(progress, (t) => webflowV2DayWordOpacity(t, ixMedia));
|
|
3406
|
+
const v2NightWordOp = (0, import_framer_motion3.useTransform)(progress, (t) => webflowV2NightWordOpacity(t, ixMedia));
|
|
3407
|
+
const v2DayHeight = (0, import_framer_motion3.useTransform)(
|
|
3408
|
+
progress,
|
|
3409
|
+
(t) => ixMedia === "mobile" ? `${webflowV2DayClipPercent(t, ixMedia)}%` : "100vh"
|
|
3410
|
+
);
|
|
3133
3411
|
const hasDescription = Boolean(dayDescription || nightDescription);
|
|
3134
|
-
|
|
3412
|
+
const useInlineHeadline = Boolean(inlineDayNightHeadline);
|
|
3413
|
+
const rootClass = [
|
|
3414
|
+
"dnt",
|
|
3415
|
+
headlineLevel === "h1" && "dnt--headline-h1",
|
|
3416
|
+
descriptionLevel === "body-lg" && "dnt--desc-body-lg",
|
|
3417
|
+
className
|
|
3418
|
+
].filter(Boolean).join(" ");
|
|
3419
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
3135
3420
|
"div",
|
|
3136
3421
|
{
|
|
3137
3422
|
ref: wrapperRef,
|
|
3138
|
-
className:
|
|
3423
|
+
className: rootClass,
|
|
3139
3424
|
...props,
|
|
3140
|
-
children:
|
|
3141
|
-
/* @__PURE__ */ (0,
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3425
|
+
children: [
|
|
3426
|
+
webflowV2 && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "dnt__v2-background-wrapper", "aria-hidden": "true", children: [
|
|
3427
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3428
|
+
import_framer_motion3.motion.div,
|
|
3429
|
+
{
|
|
3430
|
+
className: "dnt__v2-bg-day trade-day-night_background-day is-alternative",
|
|
3431
|
+
style: {
|
|
3432
|
+
backgroundImage: `url(${dayImageUrl})`,
|
|
3433
|
+
height: v2DayHeight
|
|
3434
|
+
}
|
|
3435
|
+
}
|
|
3436
|
+
),
|
|
3437
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3438
|
+
"div",
|
|
3439
|
+
{
|
|
3440
|
+
className: "dnt__v2-bg-night trade-day-night_background-night is-alternative",
|
|
3441
|
+
style: { backgroundImage: `url(${nightImageUrl})` }
|
|
3442
|
+
}
|
|
3443
|
+
)
|
|
3444
|
+
] }),
|
|
3445
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: webflowV2 ? "dnt__sticky dnt__sticky--webflow-v2" : "dnt__sticky", children: [
|
|
3446
|
+
!webflowV2 && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
|
|
3447
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3448
|
+
"img",
|
|
3449
|
+
{
|
|
3450
|
+
className: "dnt__bg dnt__bg--day",
|
|
3451
|
+
src: dayImageUrl,
|
|
3452
|
+
alt: "",
|
|
3453
|
+
loading: "eager",
|
|
3454
|
+
draggable: false
|
|
3455
|
+
}
|
|
3456
|
+
),
|
|
3457
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3458
|
+
import_framer_motion3.motion.img,
|
|
3459
|
+
{
|
|
3460
|
+
className: "dnt__bg dnt__bg--night",
|
|
3461
|
+
src: nightImageUrl,
|
|
3462
|
+
alt: "",
|
|
3463
|
+
loading: "eager",
|
|
3464
|
+
draggable: false,
|
|
3465
|
+
style: { opacity: nightOpacity }
|
|
3466
|
+
}
|
|
3467
|
+
)
|
|
3468
|
+
] }),
|
|
3469
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "dnt__content", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "dnt__inner", children: webflowV2 ? /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "dnt__text-wrap", children: [
|
|
3470
|
+
useInlineHeadline && inlineDayNightHeadline ? /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
3471
|
+
MotionHeadline,
|
|
3472
|
+
{
|
|
3473
|
+
className: "dnt__headline dnt__headline--inline-day-night",
|
|
3474
|
+
style: { color: v2TitleColor },
|
|
3475
|
+
"aria-label": `${inlineDayNightHeadline.prefix}${inlineDayNightHeadline.dayWord} / ${inlineDayNightHeadline.prefix}${inlineDayNightHeadline.nightWord}`,
|
|
3476
|
+
children: [
|
|
3477
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "dnt__headline-prefix", children: inlineDayNightHeadline.prefix }),
|
|
3478
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { className: "dnt__headline-pair", children: [
|
|
3479
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3480
|
+
import_framer_motion3.motion.span,
|
|
3481
|
+
{
|
|
3482
|
+
ref: dayWordRef,
|
|
3483
|
+
className: "dnt__headline-wday",
|
|
3484
|
+
style: { opacity: v2DayWordOp },
|
|
3485
|
+
children: inlineDayNightHeadline.dayWord
|
|
3486
|
+
}
|
|
3487
|
+
),
|
|
3488
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3489
|
+
import_framer_motion3.motion.span,
|
|
3490
|
+
{
|
|
3491
|
+
className: "dnt__headline-wnight",
|
|
3492
|
+
style: {
|
|
3493
|
+
opacity: v2NightWordOp,
|
|
3494
|
+
marginInlineStart: nightMarginStart,
|
|
3495
|
+
marginInlineEnd: nightMarginEnd
|
|
3496
|
+
},
|
|
3497
|
+
children: inlineDayNightHeadline.nightWord
|
|
3498
|
+
}
|
|
3499
|
+
)
|
|
3500
|
+
] })
|
|
3501
|
+
]
|
|
3502
|
+
}
|
|
3503
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "dnt__crossfade-wrap", children: [
|
|
3504
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3505
|
+
MotionHeadline,
|
|
3506
|
+
{
|
|
3507
|
+
className: "dnt__headline",
|
|
3508
|
+
style: { color: v2TitleColor, opacity: dayOpacity },
|
|
3509
|
+
children: dayHeadline
|
|
3510
|
+
}
|
|
3511
|
+
),
|
|
3512
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3513
|
+
MotionHeadline,
|
|
3514
|
+
{
|
|
3515
|
+
className: "dnt__headline",
|
|
3516
|
+
"aria-hidden": "true",
|
|
3517
|
+
style: { color: v2TitleColor, opacity: nightOpacity2 },
|
|
3518
|
+
children: nightHeadline
|
|
3519
|
+
}
|
|
3520
|
+
)
|
|
3521
|
+
] }),
|
|
3522
|
+
hasDescription && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "dnt__crossfade-wrap", children: [
|
|
3523
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3524
|
+
import_framer_motion3.motion.p,
|
|
3525
|
+
{
|
|
3526
|
+
className: "dnt__description",
|
|
3527
|
+
style: {
|
|
3528
|
+
color: v2DescColor,
|
|
3529
|
+
opacity: dayOpacity
|
|
3530
|
+
},
|
|
3531
|
+
children: dayDescription ?? ""
|
|
3532
|
+
}
|
|
3533
|
+
),
|
|
3534
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3535
|
+
import_framer_motion3.motion.p,
|
|
3536
|
+
{
|
|
3537
|
+
className: "dnt__description",
|
|
3538
|
+
"aria-hidden": "true",
|
|
3539
|
+
style: {
|
|
3540
|
+
color: v2DescColor,
|
|
3541
|
+
opacity: nightOpacity2
|
|
3542
|
+
},
|
|
3543
|
+
children: nightDescription ?? ""
|
|
3544
|
+
}
|
|
3545
|
+
)
|
|
3546
|
+
] }),
|
|
3547
|
+
!hideCta && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("a", { href: ctaHref, className: "dnt__btn", children: ctaLabel })
|
|
3548
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
3549
|
+
import_framer_motion3.motion.div,
|
|
3550
|
+
{
|
|
3551
|
+
className: "dnt__text-wrap",
|
|
3552
|
+
style: { color: textColor },
|
|
3553
|
+
children: [
|
|
3554
|
+
useInlineHeadline && inlineDayNightHeadline ? /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
3555
|
+
MotionHeadline,
|
|
3198
3556
|
{
|
|
3199
|
-
className: "
|
|
3200
|
-
"aria-
|
|
3201
|
-
|
|
3202
|
-
|
|
3557
|
+
className: "dnt__headline dnt__headline--inline-day-night",
|
|
3558
|
+
"aria-label": `${inlineDayNightHeadline.prefix}${inlineDayNightHeadline.dayWord} / ${inlineDayNightHeadline.prefix}${inlineDayNightHeadline.nightWord}`,
|
|
3559
|
+
children: [
|
|
3560
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "dnt__headline-prefix", children: inlineDayNightHeadline.prefix }),
|
|
3561
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { className: "dnt__headline-pair", children: [
|
|
3562
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3563
|
+
import_framer_motion3.motion.span,
|
|
3564
|
+
{
|
|
3565
|
+
ref: dayWordRef,
|
|
3566
|
+
className: "dnt__headline-wday",
|
|
3567
|
+
style: { opacity: dayOpacity },
|
|
3568
|
+
children: inlineDayNightHeadline.dayWord
|
|
3569
|
+
}
|
|
3570
|
+
),
|
|
3571
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3572
|
+
import_framer_motion3.motion.span,
|
|
3573
|
+
{
|
|
3574
|
+
className: "dnt__headline-wnight",
|
|
3575
|
+
style: {
|
|
3576
|
+
opacity: nightOpacity2,
|
|
3577
|
+
marginInlineStart: nightMarginStart,
|
|
3578
|
+
marginInlineEnd: nightMarginEnd
|
|
3579
|
+
},
|
|
3580
|
+
children: inlineDayNightHeadline.nightWord
|
|
3581
|
+
}
|
|
3582
|
+
)
|
|
3583
|
+
] })
|
|
3584
|
+
]
|
|
3203
3585
|
}
|
|
3204
|
-
)
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3586
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "dnt__crossfade-wrap", children: [
|
|
3587
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3588
|
+
MotionHeadline,
|
|
3589
|
+
{
|
|
3590
|
+
className: "dnt__headline",
|
|
3591
|
+
style: { opacity: dayOpacity },
|
|
3592
|
+
children: dayHeadline
|
|
3593
|
+
}
|
|
3594
|
+
),
|
|
3595
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3596
|
+
MotionHeadline,
|
|
3597
|
+
{
|
|
3598
|
+
className: "dnt__headline",
|
|
3599
|
+
"aria-hidden": "true",
|
|
3600
|
+
style: { opacity: nightOpacity2 },
|
|
3601
|
+
children: nightHeadline
|
|
3602
|
+
}
|
|
3603
|
+
)
|
|
3604
|
+
] }),
|
|
3605
|
+
hasDescription && /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "dnt__crossfade-wrap", children: [
|
|
3606
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3607
|
+
import_framer_motion3.motion.p,
|
|
3608
|
+
{
|
|
3609
|
+
className: "dnt__description",
|
|
3610
|
+
style: { opacity: dayOpacity },
|
|
3611
|
+
children: dayDescription ?? ""
|
|
3612
|
+
}
|
|
3613
|
+
),
|
|
3614
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
3615
|
+
import_framer_motion3.motion.p,
|
|
3616
|
+
{
|
|
3617
|
+
className: "dnt__description",
|
|
3618
|
+
"aria-hidden": "true",
|
|
3619
|
+
style: { opacity: nightOpacity2 },
|
|
3620
|
+
children: nightDescription ?? ""
|
|
3621
|
+
}
|
|
3622
|
+
)
|
|
3623
|
+
] }),
|
|
3624
|
+
!hideCta && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("a", { href: ctaHref, className: "dnt__btn", children: ctaLabel })
|
|
3625
|
+
]
|
|
3626
|
+
}
|
|
3627
|
+
) }) })
|
|
3628
|
+
] })
|
|
3629
|
+
]
|
|
3211
3630
|
}
|
|
3212
3631
|
);
|
|
3213
3632
|
};
|
|
3214
3633
|
|
|
3634
|
+
// templates/DayNightTransition/dayNightTransitionPresets.ts
|
|
3635
|
+
var dayNightTransitionV2Preset = {
|
|
3636
|
+
className: "dnt--layout-v2 dnt--webflow-v2",
|
|
3637
|
+
scrollPreset: "webflow-day-night-v2",
|
|
3638
|
+
dayImageUrl: "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/68da5c86c91c54f39c86cd8f_trade_day.webp",
|
|
3639
|
+
nightImageUrl: "https://cdn.prod.website-files.com/66585fe0e1dc7e70cc75d440/6757df573bf331c84b6c69fe_trade_night.webp",
|
|
3640
|
+
dayHeadline: "Section title light\n",
|
|
3641
|
+
nightHeadline: "Section title dark\n",
|
|
3642
|
+
dayDescription: "This section is designed to give your visitors a quick overview of why your solution is the right choice. Use this space to provide high-level context.\n",
|
|
3643
|
+
nightDescription: "This section is designed to give your visitors a quick overview of why your solution is the right choice. Use this space to provide high-level context.",
|
|
3644
|
+
ctaLabel: "Open account",
|
|
3645
|
+
ctaHref: "#"
|
|
3646
|
+
};
|
|
3647
|
+
|
|
3215
3648
|
// templates/LogoMarquee/LogoMarquee.tsx
|
|
3216
|
-
var
|
|
3649
|
+
var import_react16 = require("react");
|
|
3217
3650
|
var import_framer_motion4 = require("framer-motion");
|
|
3218
|
-
var
|
|
3651
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
3219
3652
|
function modWrap(min, max, v) {
|
|
3220
3653
|
const range = max - min;
|
|
3221
3654
|
return ((v - min) % range + range) % range + min;
|
|
@@ -3272,8 +3705,8 @@ var LogoMarquee = ({
|
|
|
3272
3705
|
const scrollVelocity = (0, import_framer_motion4.useVelocity)(scrollY);
|
|
3273
3706
|
const col1Y = (0, import_framer_motion4.useMotionValue)(0);
|
|
3274
3707
|
const col2Y = (0, import_framer_motion4.useMotionValue)(0);
|
|
3275
|
-
const col1Ref = (0,
|
|
3276
|
-
const col2Ref = (0,
|
|
3708
|
+
const col1Ref = (0, import_react16.useRef)(null);
|
|
3709
|
+
const col2Ref = (0, import_react16.useRef)(null);
|
|
3277
3710
|
(0, import_framer_motion4.useAnimationFrame)((_, delta) => {
|
|
3278
3711
|
const raw = scrollVelocity.get();
|
|
3279
3712
|
if (Math.abs(raw) < DEADZONE) return;
|
|
@@ -3286,21 +3719,21 @@ var LogoMarquee = ({
|
|
|
3286
3719
|
});
|
|
3287
3720
|
const track1 = [...col1Logos, ...col1Logos];
|
|
3288
3721
|
const track2 = [...col2Logos, ...col2Logos];
|
|
3289
|
-
return /* @__PURE__ */ (0,
|
|
3722
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
3290
3723
|
"section",
|
|
3291
3724
|
{
|
|
3292
3725
|
className: ["lm", className].filter(Boolean).join(" "),
|
|
3293
3726
|
...props,
|
|
3294
|
-
children: /* @__PURE__ */ (0,
|
|
3295
|
-
/* @__PURE__ */ (0,
|
|
3296
|
-
/* @__PURE__ */ (0,
|
|
3297
|
-
/* @__PURE__ */ (0,
|
|
3727
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "lm__inner", children: [
|
|
3728
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "lm__media", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "lm__carousel", children: [
|
|
3729
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "lm__fade lm__fade--top", "aria-hidden": "true" }),
|
|
3730
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
3298
3731
|
import_framer_motion4.motion.div,
|
|
3299
3732
|
{
|
|
3300
3733
|
ref: col1Ref,
|
|
3301
3734
|
className: "lm__col",
|
|
3302
3735
|
style: { y: col1Y },
|
|
3303
|
-
children: track1.map((logo, i) => /* @__PURE__ */ (0,
|
|
3736
|
+
children: track1.map((logo, i) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "lm__card", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "lm__card-img-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
3304
3737
|
"img",
|
|
3305
3738
|
{
|
|
3306
3739
|
src: logo.url,
|
|
@@ -3311,13 +3744,13 @@ var LogoMarquee = ({
|
|
|
3311
3744
|
) }) }, `c1-${i}`))
|
|
3312
3745
|
}
|
|
3313
3746
|
),
|
|
3314
|
-
/* @__PURE__ */ (0,
|
|
3747
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
3315
3748
|
import_framer_motion4.motion.div,
|
|
3316
3749
|
{
|
|
3317
3750
|
ref: col2Ref,
|
|
3318
3751
|
className: "lm__col",
|
|
3319
3752
|
style: { y: col2Y },
|
|
3320
|
-
children: track2.map((logo, i) => /* @__PURE__ */ (0,
|
|
3753
|
+
children: track2.map((logo, i) => /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "lm__card", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "lm__card-img-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
3321
3754
|
"img",
|
|
3322
3755
|
{
|
|
3323
3756
|
src: logo.url,
|
|
@@ -3328,17 +3761,17 @@ var LogoMarquee = ({
|
|
|
3328
3761
|
) }) }, `c2-${i}`))
|
|
3329
3762
|
}
|
|
3330
3763
|
),
|
|
3331
|
-
/* @__PURE__ */ (0,
|
|
3764
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "lm__fade lm__fade--bottom", "aria-hidden": "true" })
|
|
3332
3765
|
] }) }),
|
|
3333
|
-
/* @__PURE__ */ (0,
|
|
3334
|
-
/* @__PURE__ */ (0,
|
|
3335
|
-
/* @__PURE__ */ (0,
|
|
3336
|
-
/* @__PURE__ */ (0,
|
|
3337
|
-
/* @__PURE__ */ (0,
|
|
3766
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "lm__content", children: [
|
|
3767
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("h2", { className: "lm__headline", children: headline }),
|
|
3768
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "lm__text-group", children: [
|
|
3769
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "lm__body", children: body }),
|
|
3770
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { className: "lm__disclaimer", children: disclaimer })
|
|
3338
3771
|
] }),
|
|
3339
|
-
/* @__PURE__ */ (0,
|
|
3772
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("a", { href: ctaHref, className: "lm__link", children: [
|
|
3340
3773
|
ctaLabel,
|
|
3341
|
-
/* @__PURE__ */ (0,
|
|
3774
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "lm__link-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("path", { d: "M3 8H13M13 8L9 4M13 8L9 12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }) })
|
|
3342
3775
|
] })
|
|
3343
3776
|
] })
|
|
3344
3777
|
] })
|
|
@@ -3389,7 +3822,7 @@ var appstore_linux_dark_default = "./appstore-linux-dark-RVH7CBM4.svg";
|
|
|
3389
3822
|
var appstore_browser_dark_default = "./appstore-browser-dark-2E6TK6JH.svg";
|
|
3390
3823
|
|
|
3391
3824
|
// primitives/DownloadBadge/DownloadBadge.tsx
|
|
3392
|
-
var
|
|
3825
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
3393
3826
|
var BADGE_ASSETS = {
|
|
3394
3827
|
light: {
|
|
3395
3828
|
googleplay: { src: appstore_googleplay_light_default, alt: "Get it on Google Play" },
|
|
@@ -3418,7 +3851,7 @@ var DownloadBadge = ({
|
|
|
3418
3851
|
...props
|
|
3419
3852
|
}) => {
|
|
3420
3853
|
const { src, alt } = BADGE_ASSETS[colorScheme][platform];
|
|
3421
|
-
return /* @__PURE__ */ (0,
|
|
3854
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
3422
3855
|
"a",
|
|
3423
3856
|
{
|
|
3424
3857
|
className: [
|
|
@@ -3431,13 +3864,13 @@ var DownloadBadge = ({
|
|
|
3431
3864
|
target: "_blank",
|
|
3432
3865
|
rel: "noopener noreferrer",
|
|
3433
3866
|
...props,
|
|
3434
|
-
children: /* @__PURE__ */ (0,
|
|
3867
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("img", { className: "download-badge__img", src, alt })
|
|
3435
3868
|
}
|
|
3436
3869
|
);
|
|
3437
3870
|
};
|
|
3438
3871
|
|
|
3439
3872
|
// templates/Steps/Steps.tsx
|
|
3440
|
-
var
|
|
3873
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
3441
3874
|
var Steps = ({
|
|
3442
3875
|
title,
|
|
3443
3876
|
steps,
|
|
@@ -3449,8 +3882,8 @@ var Steps = ({
|
|
|
3449
3882
|
"steps__container",
|
|
3450
3883
|
imagePosition === "right" ? "steps__container--image-right" : ""
|
|
3451
3884
|
].filter(Boolean).join(" ");
|
|
3452
|
-
return /* @__PURE__ */ (0,
|
|
3453
|
-
image && /* @__PURE__ */ (0,
|
|
3885
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("section", { className: "steps", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: containerClass, children: [
|
|
3886
|
+
image && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "steps__image-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
3454
3887
|
"img",
|
|
3455
3888
|
{
|
|
3456
3889
|
src: image,
|
|
@@ -3458,13 +3891,13 @@ var Steps = ({
|
|
|
3458
3891
|
className: "steps__image"
|
|
3459
3892
|
}
|
|
3460
3893
|
) }),
|
|
3461
|
-
/* @__PURE__ */ (0,
|
|
3462
|
-
/* @__PURE__ */ (0,
|
|
3463
|
-
/* @__PURE__ */ (0,
|
|
3464
|
-
/* @__PURE__ */ (0,
|
|
3465
|
-
/* @__PURE__ */ (0,
|
|
3466
|
-
/* @__PURE__ */ (0,
|
|
3467
|
-
/* @__PURE__ */ (0,
|
|
3894
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "steps__content", children: [
|
|
3895
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("h2", { className: "steps__title", children: title }),
|
|
3896
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("ol", { className: "steps__list", children: steps.map((step, index) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("li", { className: "steps__item", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "steps__item-inner", children: [
|
|
3897
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "steps__number", "aria-hidden": "true", children: index + 1 }),
|
|
3898
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "steps__item-body", children: [
|
|
3899
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("h3", { className: "steps__item-title", children: step.title }),
|
|
3900
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)("p", { className: "steps__item-description", children: step.description })
|
|
3468
3901
|
] })
|
|
3469
3902
|
] }) }, index)) })
|
|
3470
3903
|
] })
|
|
@@ -3472,7 +3905,7 @@ var Steps = ({
|
|
|
3472
3905
|
};
|
|
3473
3906
|
|
|
3474
3907
|
// templates/DownloadBanner/DownloadBanner.tsx
|
|
3475
|
-
var
|
|
3908
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
3476
3909
|
var DownloadBanner = ({
|
|
3477
3910
|
style = "light-2",
|
|
3478
3911
|
qrCodeImage,
|
|
@@ -3497,9 +3930,9 @@ var DownloadBanner = ({
|
|
|
3497
3930
|
disclaimer
|
|
3498
3931
|
}) => {
|
|
3499
3932
|
const colorScheme = style === "dark" ? "dark" : "light";
|
|
3500
|
-
return /* @__PURE__ */ (0,
|
|
3501
|
-
/* @__PURE__ */ (0,
|
|
3502
|
-
qrCodeImage && /* @__PURE__ */ (0,
|
|
3933
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("section", { className: `db-section db-section--${style}`, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "db-container", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "db-card", children: [
|
|
3934
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "db-qr-block", children: [
|
|
3935
|
+
qrCodeImage && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
3503
3936
|
"img",
|
|
3504
3937
|
{
|
|
3505
3938
|
className: "db-qr-image",
|
|
@@ -3507,24 +3940,92 @@ var DownloadBanner = ({
|
|
|
3507
3940
|
alt: qrCodeAlt
|
|
3508
3941
|
}
|
|
3509
3942
|
),
|
|
3510
|
-
/* @__PURE__ */ (0,
|
|
3511
|
-
/* @__PURE__ */ (0,
|
|
3512
|
-
/* @__PURE__ */ (0,
|
|
3513
|
-
/* @__PURE__ */ (0,
|
|
3514
|
-
disclaimer && /* @__PURE__ */ (0,
|
|
3943
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "db-qr-text", children: [
|
|
3944
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "db-qr-text__title db-qr-text__title--desktop", children: qrTitle }),
|
|
3945
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h2", { className: "db-qr-text__subtitle db-qr-text__subtitle--desktop", children: qrSubtitle }),
|
|
3946
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "db-qr-text__title db-qr-text__title--mobile", children: mobileTitle }),
|
|
3947
|
+
disclaimer && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "db-disclaimer", children: disclaimer })
|
|
3515
3948
|
] })
|
|
3516
3949
|
] }),
|
|
3517
|
-
/* @__PURE__ */ (0,
|
|
3518
|
-
showGooglePlay && /* @__PURE__ */ (0,
|
|
3519
|
-
showAppGallery && /* @__PURE__ */ (0,
|
|
3520
|
-
showMacOS && /* @__PURE__ */ (0,
|
|
3521
|
-
showWindows && /* @__PURE__ */ (0,
|
|
3522
|
-
showLinux && /* @__PURE__ */ (0,
|
|
3523
|
-
showAppStore && /* @__PURE__ */ (0,
|
|
3524
|
-
showWeb && /* @__PURE__ */ (0,
|
|
3950
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "db-badges", children: [
|
|
3951
|
+
showGooglePlay && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DownloadBadge, { platform: "googleplay", colorScheme, href: googlePlayHref }),
|
|
3952
|
+
showAppGallery && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DownloadBadge, { platform: "appgallery", colorScheme, href: appGalleryHref }),
|
|
3953
|
+
showMacOS && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DownloadBadge, { platform: "macos", colorScheme, href: macOSHref }),
|
|
3954
|
+
showWindows && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DownloadBadge, { platform: "windows", colorScheme, href: windowsHref }),
|
|
3955
|
+
showLinux && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DownloadBadge, { platform: "linux", colorScheme, href: linuxHref }),
|
|
3956
|
+
showAppStore && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DownloadBadge, { platform: "appstore", colorScheme, href: appStoreHref }),
|
|
3957
|
+
showWeb && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(DownloadBadge, { platform: "web", colorScheme, href: webHref })
|
|
3525
3958
|
] })
|
|
3526
3959
|
] }) }) });
|
|
3527
3960
|
};
|
|
3961
|
+
|
|
3962
|
+
// templates/TextScroll/TextScroll.tsx
|
|
3963
|
+
var import_react17 = require("react");
|
|
3964
|
+
var import_gsap = require("gsap");
|
|
3965
|
+
var import_ScrollTrigger = require("gsap/ScrollTrigger");
|
|
3966
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
3967
|
+
import_gsap.gsap.registerPlugin(import_ScrollTrigger.ScrollTrigger);
|
|
3968
|
+
var TextScroll = ({ text, className }) => {
|
|
3969
|
+
const sectionRef = (0, import_react17.useRef)(null);
|
|
3970
|
+
const wordsRef = (0, import_react17.useRef)([]);
|
|
3971
|
+
const words = text.split(/\s+/).filter(Boolean);
|
|
3972
|
+
(0, import_react17.useEffect)(() => {
|
|
3973
|
+
const section = sectionRef.current;
|
|
3974
|
+
const wordEls = wordsRef.current.filter(Boolean);
|
|
3975
|
+
if (!section || wordEls.length === 0) return;
|
|
3976
|
+
const isMobile = window.matchMedia("(max-width: 767px)").matches;
|
|
3977
|
+
const startValue = isMobile ? "top 35%" : "top center";
|
|
3978
|
+
const endValue = isMobile ? "bottom 90%" : "bottom center";
|
|
3979
|
+
const rafId = requestAnimationFrame(() => {
|
|
3980
|
+
import_gsap.gsap.set(wordEls, { opacity: 0.2 });
|
|
3981
|
+
const tl = import_gsap.gsap.timeline({
|
|
3982
|
+
scrollTrigger: {
|
|
3983
|
+
trigger: section,
|
|
3984
|
+
start: startValue,
|
|
3985
|
+
end: endValue,
|
|
3986
|
+
scrub: 2
|
|
3987
|
+
}
|
|
3988
|
+
});
|
|
3989
|
+
tl.to(wordEls, {
|
|
3990
|
+
opacity: 1,
|
|
3991
|
+
stagger: 0.1,
|
|
3992
|
+
ease: "none"
|
|
3993
|
+
});
|
|
3994
|
+
section._tl = tl;
|
|
3995
|
+
});
|
|
3996
|
+
return () => {
|
|
3997
|
+
cancelAnimationFrame(rafId);
|
|
3998
|
+
const tl = section._tl;
|
|
3999
|
+
if (tl) {
|
|
4000
|
+
tl.scrollTrigger?.kill();
|
|
4001
|
+
tl.kill();
|
|
4002
|
+
}
|
|
4003
|
+
import_gsap.gsap.set(wordEls, { clearProps: "opacity" });
|
|
4004
|
+
};
|
|
4005
|
+
}, [text]);
|
|
4006
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
4007
|
+
"section",
|
|
4008
|
+
{
|
|
4009
|
+
ref: sectionRef,
|
|
4010
|
+
className: ["ts", className].filter(Boolean).join(" "),
|
|
4011
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "ts__inner", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("p", { className: "ts__text", "aria-label": text, children: words.map((word, i) => /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
|
|
4012
|
+
"span",
|
|
4013
|
+
{
|
|
4014
|
+
ref: (el) => {
|
|
4015
|
+
if (el) wordsRef.current[i] = el;
|
|
4016
|
+
},
|
|
4017
|
+
className: "ts__word",
|
|
4018
|
+
"aria-hidden": "true",
|
|
4019
|
+
children: [
|
|
4020
|
+
word,
|
|
4021
|
+
i < words.length - 1 ? " " : ""
|
|
4022
|
+
]
|
|
4023
|
+
},
|
|
4024
|
+
i
|
|
4025
|
+
)) }) })
|
|
4026
|
+
}
|
|
4027
|
+
);
|
|
4028
|
+
};
|
|
3528
4029
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3529
4030
|
0 && (module.exports = {
|
|
3530
4031
|
AVATAR_DATA,
|
|
@@ -3539,25 +4040,28 @@ var DownloadBanner = ({
|
|
|
3539
4040
|
Chip,
|
|
3540
4041
|
ChipDropdown,
|
|
3541
4042
|
DayNightTransition,
|
|
4043
|
+
DotLottieInView,
|
|
3542
4044
|
DownloadBadge,
|
|
3543
4045
|
DownloadBanner,
|
|
4046
|
+
FEATURE_SCROLL_DATA,
|
|
3544
4047
|
FeatureCards,
|
|
3545
4048
|
FeatureCardsSecondary,
|
|
4049
|
+
FeatureScroll,
|
|
3546
4050
|
Footer,
|
|
3547
4051
|
Hero,
|
|
3548
4052
|
Link,
|
|
3549
4053
|
LogoMarquee,
|
|
3550
4054
|
Navbar,
|
|
3551
4055
|
Pagination,
|
|
3552
|
-
SCROLLYTELLING_DATA,
|
|
3553
4056
|
STEPS_DATA,
|
|
3554
|
-
Scrollytelling,
|
|
3555
4057
|
SearchField,
|
|
3556
4058
|
Stats,
|
|
3557
4059
|
Steps,
|
|
3558
4060
|
StickyStackedCards,
|
|
3559
4061
|
TEXT_CONTENT,
|
|
3560
4062
|
Tag,
|
|
3561
|
-
TextField
|
|
4063
|
+
TextField,
|
|
4064
|
+
TextScroll,
|
|
4065
|
+
dayNightTransitionV2Preset
|
|
3562
4066
|
});
|
|
3563
4067
|
//# sourceMappingURL=index.js.map
|