@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.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/Scrollytelling/Scrollytelling.tsx
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
- var SCROLLYTELLING_DATA = [
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, import_jsx_runtime21.jsx)(
1969
+ var ChevronRight2 = () => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1902
1970
  "svg",
1903
1971
  {
1904
- className: "scrolly__item-link-icon",
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, import_jsx_runtime21.jsx)(
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, import_jsx_runtime21.jsx)(
1929
- import_dotlottie_react.DotLottieReact,
1996
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1997
+ DotLottieInView,
1930
1998
  {
1931
1999
  src: item.mediaUrl,
1932
- loop: true,
1933
- autoplay: active
2000
+ enabled: active
1934
2001
  }
1935
2002
  );
1936
2003
  }
1937
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
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 Scrollytelling = ({
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, import_react10.useState)(0);
1954
- const itemRefs = (0, import_react10.useRef)([]);
1955
- (0, import_react10.useEffect)(() => {
1956
- const elements = itemRefs.current.filter(Boolean);
1957
- if (!elements.length) return;
1958
- const observer = new IntersectionObserver(
1959
- (entries) => {
1960
- entries.forEach((entry) => {
1961
- if (entry.isIntersecting) {
1962
- const idx = itemRefs.current.indexOf(
1963
- entry.target
1964
- );
1965
- if (idx !== -1) setActiveIndex(idx);
1966
- }
1967
- });
1968
- },
1969
- {
1970
- /* Fire when 50 % of the text block is visible.
1971
- rootMargin trims the effective viewport to its
1972
- middle third, preventing accidental fires when
1973
- items are only just entering / leaving the screen. */
1974
- threshold: 0.5,
1975
- rootMargin: "-15% 0px -15% 0px"
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
- elements.forEach((el) => observer.observe(el));
1979
- return () => observer.disconnect();
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
- "scrolly",
1983
- `scrolly--${variant}`,
2070
+ "fs",
2071
+ `fs--${variant}`,
1984
2072
  className
1985
2073
  ].filter(Boolean).join(" ");
1986
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("section", { className: rootClass, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "scrolly__inner", children: [
1987
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("h2", { className: "scrolly__header", children: header }),
1988
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "scrolly__layout", children: [
1989
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "scrolly__media-col", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "scrolly__media-wrap", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
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
- className: [
1993
- "scrolly__media-item",
1994
- i === activeIndex ? "scrolly__media-item--active" : ""
1995
- ].filter(Boolean).join(" "),
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
- item,
2000
- active: i === activeIndex
2001
- }
2002
- )
2003
- },
2004
- i
2005
- )) }) }),
2006
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "scrolly__content-col", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
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
- ref: (el) => {
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, import_jsx_runtime21.jsx)("h3", { className: "scrolly__item-title", children: item.title }),
2018
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { className: "scrolly__item-desc", children: item.description }),
2019
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
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: "scrolly__item-link",
2124
+ className: "fs__item-link",
2024
2125
  children: [
2025
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { children: item.linkLabel }),
2026
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ChevronRight2, {})
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, import_jsx_runtime21.jsx)("div", { className: "scrolly__mobile-list", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "scrolly__mobile-item", children: [
2036
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("h3", { className: "scrolly__item-title", children: item.title }),
2037
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { className: "scrolly__item-desc", children: item.description }),
2038
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
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: "scrolly__item-link",
2144
+ className: "fs__item-link",
2043
2145
  children: [
2044
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { children: "Learn more" }),
2045
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ChevronRight2, {})
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 import_react11 = require("react");
2056
- var import_jsx_runtime22 = require("react/jsx-runtime");
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, import_react11.useRef)([]);
2086
- (0, import_react11.useEffect)(() => {
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, import_jsx_runtime22.jsx)(
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, import_jsx_runtime22.jsxs)("div", { className: "ssc__inner", children: [
2126
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("h2", { className: "ssc__header", children: header }),
2127
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "ssc__track", children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
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, import_jsx_runtime22.jsxs)("div", { className: "ssc__card-content", children: [
2154
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("h3", { className: "ssc__card-title", children: item.title }),
2155
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("p", { className: "ssc__card-desc", children: item.description })
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, import_jsx_runtime22.jsx)("div", { className: "ssc__card-image", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
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 import_react12 = require("react");
2276
+ var import_react13 = require("react");
2176
2277
  var import_framer_motion = require("framer-motion");
2177
- var import_jsx_runtime23 = require("react/jsx-runtime");
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, import_react12.useRef)(null);
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, import_jsx_runtime23.jsxs)(
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, import_jsx_runtime23.jsx)(
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, import_jsx_runtime23.jsx)("div", { className: "ctab__inner", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "ctab__stage", children: [
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, import_jsx_runtime23.jsx)(
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, import_jsx_runtime23.jsx)(
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, import_jsx_runtime23.jsxs)(
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, import_jsx_runtime23.jsx)("h2", { className: "ctab__headline", children: headline }),
2499
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("a", { href: ctaHref, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Button, { colorScheme: "black", variant: "primary", label: ctaLabel }) })
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 import_react13 = require("react");
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 import_jsx_runtime24 = require("react/jsx-runtime");
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)("img", { src: icon_globe_default, alt: "", "aria-hidden": "true", width: "20", height: "20", className });
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsxs)("div", { className: "navbar__dropdown-inner", children: [
2627
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "navbar__dropdown-left", children: dropdown.columns.map((col, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "navbar__dropdown-col", children: col.sections.map((section) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "navbar__dropdown-col-list", children: [
2628
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "navbar__dropdown-col-title", children: section.title }),
2629
- section.items.map((link) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsx)(ArrowUpRightIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(ArrowRightIcon, {})
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, import_jsx_runtime24.jsx)("div", { className: "navbar__dropdown-right", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(FeatureCard, { feature: dropdown.feature }) })
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, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)("div", { className: mobile ? "navbar__drawer-feature-overlay" : "navbar__dropdown-feature-overlay", "aria-hidden": "true" }),
2665
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: mobile ? "navbar__drawer-feature-content" : "navbar__dropdown-feature-content", children: [
2666
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { children: [
2667
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: mobile ? "navbar__drawer-feature-title" : "navbar__dropdown-feature-title", children: feature.title }),
2668
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: mobile ? "navbar__drawer-feature-desc" : "navbar__dropdown-feature-desc", children: feature.description })
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, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsx)(ArrowRightIcon, {})
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, import_jsx_runtime24.jsxs)("div", { className: "navbar__drawer-item", children: [
2688
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsx)(ChevronDownIcon3, { className: "navbar__drawer-trigger__chevron" })
2797
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ChevronDownIcon3, { className: "navbar__drawer-trigger__chevron" })
2697
2798
  ]
2698
2799
  }
2699
2800
  ),
2700
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_framer_motion2.AnimatePresence, { initial: false, children: isOpen && dropdown && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsxs)("div", { className: "navbar__drawer-panel-inner", children: [
2710
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "navbar__drawer-panel-cols", children: dropdown.columns.map((col, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "navbar__drawer-panel-col", children: col.sections.map((section) => /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "navbar__drawer-col-section", children: [
2711
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("p", { className: "navbar__drawer-col-title", children: section.title }),
2712
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "navbar__drawer-col-links", children: section.items.map((link) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(FeatureCard, { feature: dropdown.feature, mobile: true })
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, import_react13.useState)(null);
2749
- const [mobileOpen, setMobileOpen] = (0, import_react13.useState)(false);
2750
- const [mobileExpanded, setMobileExpanded] = (0, import_react13.useState)(null);
2751
- const [scrolled, setScrolled] = (0, import_react13.useState)(false);
2752
- const [langDropdownOpen, setLangDropdownOpen] = (0, import_react13.useState)(false);
2753
- const [mobileLangOpen, setMobileLangOpen] = (0, import_react13.useState)(false);
2754
- const hoverTimeoutRef = (0, import_react13.useRef)(null);
2755
- const langHoverTimeoutRef = (0, import_react13.useRef)(null);
2756
- const pillAreaRef = (0, import_react13.useRef)(null);
2757
- const langBtnRef = (0, import_react13.useRef)(null);
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, import_react13.useEffect)(() => {
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, import_react13.useEffect)(() => {
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, import_react13.useEffect)(() => {
2877
+ (0, import_react14.useEffect)(() => {
2777
2878
  if (!mobileOpen) setMobileLangOpen(false);
2778
2879
  }, [mobileOpen]);
2779
- (0, import_react13.useEffect)(() => {
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, import_react13.useEffect)(() => {
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, import_react13.useCallback)(() => {
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, import_react13.useCallback)(() => {
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, import_react13.useCallback)(() => {
2908
+ const handleLangEnter = (0, import_react14.useCallback)(() => {
2808
2909
  clearLangHoverTimeout();
2809
2910
  setLangDropdownOpen(true);
2810
2911
  }, [clearLangHoverTimeout]);
2811
- const handleLangLeave = (0, import_react13.useCallback)(() => {
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, import_react13.useCallback)((code) => {
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, import_react13.useCallback)((label) => {
2921
+ const handleNavEnter = (0, import_react14.useCallback)((label) => {
2821
2922
  clearHoverTimeout();
2822
2923
  setOpenDropdown(label);
2823
2924
  }, [clearHoverTimeout]);
2824
- const handleNavLeave = (0, import_react13.useCallback)(() => {
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, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsxs)("div", { className: "navbar__bar", children: [
2836
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("a", { href: logoHref, className: "navbar__logo", "aria-label": "Home", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("img", { src: resolvedLogo, alt: "Logo" }) }),
2837
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "navbar__nav-center", ref: pillAreaRef, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "navbar__pill", children: [
2838
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("a", { href: logoHref, className: "navbar__pill-logo", "aria-label": "Home", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("img", { src: logoSrcDark ?? logoSrc, alt: "Logo" }) }),
2839
- /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "navbar__nav-group", children: [
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, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsx)(ArrowUpRightIcon, {})
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, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsx)(ChevronDownIcon3, { className: "navbar__nav-item__chevron" })
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, import_jsx_runtime24.jsx)("a", { href: item.href, className: "navbar__nav-item", children: item.label }, item.label);
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsxs)(
2986
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
2886
2987
  "button",
2887
2988
  {
2888
2989
  ref: langBtnRef,
2889
- className: "navbar__nav-item navbar__lang-btn",
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, import_jsx_runtime24.jsx)(GlobeIcon, { className: "navbar__lang-globe" }),
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, import_jsx_runtime24.jsxs)("div", { className: "navbar__pill-actions", children: [
2903
- loginHref && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("a", { href: loginHref, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Button, { colorScheme: "black", variant: "secondary", label: loginLabel }) }),
2904
- ctaHref && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("a", { href: ctaHref, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Button, { colorScheme: "coral", variant: "primary", label: ctaLabel }) })
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, import_jsx_runtime24.jsx)(import_framer_motion2.AnimatePresence, { children: openDropdown && activeDropdownItem?.dropdown && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(import_framer_motion2.AnimatePresence, { children: hasLangDropdown && langDropdownOpen && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsxs)("div", { className: "navbar__actions", children: [
2949
- loginHref && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("a", { href: loginHref, className: "navbar__actions-login", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)("a", { href: ctaHref, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Button, { colorScheme: "coral", variant: "primary", label: ctaLabel }) })
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, import_jsx_runtime24.jsxs)("div", { className: "navbar__mobile-actions", children: [
2960
- loginHref && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("a", { href: loginHref, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(XMarkIcon2, {}) : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(BarsIcon, {})
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, import_jsx_runtime24.jsx)("div", { className: "navbar__drawer-clip", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_framer_motion2.AnimatePresence, { children: mobileOpen && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsxs)("nav", { className: "navbar__drawer-nav", children: [
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsx)(ArrowUpRightIcon, {})
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, import_jsx_runtime24.jsxs)("button", { className: "navbar__drawer-lang", onClick: onLanguageClick, children: [
3023
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(GlobeIcon, { className: "navbar__lang-globe" }),
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, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsx)(GlobeIcon, { className: "navbar__lang-globe" }),
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, import_jsx_runtime24.jsxs)("div", { className: "navbar__drawer-footer", children: [
3039
- loginHref && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("a", { href: loginHref, style: { display: "block" }, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)("a", { href: ctaHref, style: { display: "block" }, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(import_framer_motion2.AnimatePresence, { children: hasLangDropdown && mobileLangOpen && /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
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, import_jsx_runtime24.jsx)(
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, import_jsx_runtime24.jsx)(ChevronLeftIcon, {})
3178
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(ChevronLeftIcon, {})
3074
3179
  }
3075
3180
  ),
3076
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "navbar__drawer-lang-grid", children: languageItems.map((lang) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
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 import_react14 = require("react");
3205
+ var import_react15 = require("react");
3101
3206
  var import_framer_motion3 = require("framer-motion");
3102
- var import_jsx_runtime25 = require("react/jsx-runtime");
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 WORD_START = 0.4;
3107
- var WORD_END = 0.6;
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 = "Trade all day",
3114
- nightHeadline = "Trade all night",
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, import_react14.useRef)(null);
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 nightOpacity = (0, import_framer_motion3.useTransform)(smooth, [FADE_START, FADE_END], [0, 1]);
3129
- const channel = (0, import_framer_motion3.useTransform)(smooth, [FADE_START, FADE_END], [TEXT_CHANNEL_DAY, TEXT_CHANNEL_NIGHT]);
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)(smooth, [WORD_START, WORD_END], [1, 0]);
3132
- const nightOpacity2 = (0, import_framer_motion3.useTransform)(smooth, [WORD_START, WORD_END], [0, 1]);
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
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
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: ["dnt", className].filter(Boolean).join(" "),
3423
+ className: rootClass,
3139
3424
  ...props,
3140
- children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "dnt__sticky", children: [
3141
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3142
- "img",
3143
- {
3144
- className: "dnt__bg dnt__bg--day",
3145
- src: dayImageUrl,
3146
- alt: "",
3147
- loading: "eager",
3148
- draggable: false
3149
- }
3150
- ),
3151
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3152
- import_framer_motion3.motion.img,
3153
- {
3154
- className: "dnt__bg dnt__bg--night",
3155
- src: nightImageUrl,
3156
- alt: "",
3157
- loading: "eager",
3158
- draggable: false,
3159
- style: { opacity: nightOpacity }
3160
- }
3161
- ),
3162
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "dnt__content", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
3163
- import_framer_motion3.motion.div,
3164
- {
3165
- className: "dnt__text-wrap",
3166
- style: { color: textColor },
3167
- children: [
3168
- /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "dnt__crossfade-wrap", children: [
3169
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3170
- import_framer_motion3.motion.h2,
3171
- {
3172
- className: "dnt__headline",
3173
- style: { opacity: dayOpacity },
3174
- children: dayHeadline
3175
- }
3176
- ),
3177
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3178
- import_framer_motion3.motion.h2,
3179
- {
3180
- className: "dnt__headline",
3181
- "aria-hidden": "true",
3182
- style: { opacity: nightOpacity2 },
3183
- children: nightHeadline
3184
- }
3185
- )
3186
- ] }),
3187
- hasDescription && /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "dnt__crossfade-wrap", children: [
3188
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3189
- import_framer_motion3.motion.p,
3190
- {
3191
- className: "dnt__description",
3192
- style: { opacity: dayOpacity },
3193
- children: dayDescription ?? ""
3194
- }
3195
- ),
3196
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3197
- import_framer_motion3.motion.p,
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: "dnt__description",
3200
- "aria-hidden": "true",
3201
- style: { opacity: nightOpacity2 },
3202
- children: nightDescription ?? ""
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
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("a", { href: ctaHref, className: "dnt__btn", children: ctaLabel })
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 import_react15 = require("react");
3649
+ var import_react16 = require("react");
3217
3650
  var import_framer_motion4 = require("framer-motion");
3218
- var import_jsx_runtime26 = require("react/jsx-runtime");
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, import_react15.useRef)(null);
3276
- const col2Ref = (0, import_react15.useRef)(null);
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, import_jsx_runtime26.jsx)(
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, import_jsx_runtime26.jsxs)("div", { className: "lm__inner", children: [
3295
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "lm__media", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "lm__carousel", children: [
3296
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "lm__fade lm__fade--top", "aria-hidden": "true" }),
3297
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
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, import_jsx_runtime26.jsx)("div", { className: "lm__card", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "lm__card-img-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
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, import_jsx_runtime26.jsx)(
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, import_jsx_runtime26.jsx)("div", { className: "lm__card", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "lm__card-img-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
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, import_jsx_runtime26.jsx)("div", { className: "lm__fade lm__fade--bottom", "aria-hidden": "true" })
3764
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "lm__fade lm__fade--bottom", "aria-hidden": "true" })
3332
3765
  ] }) }),
3333
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "lm__content", children: [
3334
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("h2", { className: "lm__headline", children: headline }),
3335
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "lm__text-group", children: [
3336
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "lm__body", children: body }),
3337
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: "lm__disclaimer", children: disclaimer })
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, import_jsx_runtime26.jsxs)("a", { href: ctaHref, className: "lm__link", children: [
3772
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("a", { href: ctaHref, className: "lm__link", children: [
3340
3773
  ctaLabel,
3341
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "lm__link-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime26.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_runtime26.jsx)("path", { d: "M3 8H13M13 8L9 4M13 8L9 12", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) }) })
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 import_jsx_runtime27 = require("react/jsx-runtime");
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, import_jsx_runtime27.jsx)(
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, import_jsx_runtime27.jsx)("img", { className: "download-badge__img", src, alt })
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 import_jsx_runtime28 = require("react/jsx-runtime");
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, import_jsx_runtime28.jsx)("section", { className: "steps", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: containerClass, children: [
3453
- image && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "steps__image-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
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, import_jsx_runtime28.jsxs)("div", { className: "steps__content", children: [
3462
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("h2", { className: "steps__title", children: title }),
3463
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("ol", { className: "steps__list", children: steps.map((step, index) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("li", { className: "steps__item", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "steps__item-inner", children: [
3464
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "steps__number", "aria-hidden": "true", children: index + 1 }),
3465
- /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "steps__item-body", children: [
3466
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("h3", { className: "steps__item-title", children: step.title }),
3467
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "steps__item-description", children: step.description })
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 import_jsx_runtime29 = require("react/jsx-runtime");
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, import_jsx_runtime29.jsx)("section", { className: `db-section db-section--${style}`, children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "db-container", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "db-card", children: [
3501
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "db-qr-block", children: [
3502
- qrCodeImage && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
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, import_jsx_runtime29.jsxs)("div", { className: "db-qr-text", children: [
3511
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "db-qr-text__title db-qr-text__title--desktop", children: qrTitle }),
3512
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("h2", { className: "db-qr-text__subtitle db-qr-text__subtitle--desktop", children: qrSubtitle }),
3513
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "db-qr-text__title db-qr-text__title--mobile", children: mobileTitle }),
3514
- disclaimer && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "db-disclaimer", children: disclaimer })
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, import_jsx_runtime29.jsxs)("div", { className: "db-badges", children: [
3518
- showGooglePlay && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DownloadBadge, { platform: "googleplay", colorScheme, href: googlePlayHref }),
3519
- showAppGallery && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DownloadBadge, { platform: "appgallery", colorScheme, href: appGalleryHref }),
3520
- showMacOS && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DownloadBadge, { platform: "macos", colorScheme, href: macOSHref }),
3521
- showWindows && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DownloadBadge, { platform: "windows", colorScheme, href: windowsHref }),
3522
- showLinux && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DownloadBadge, { platform: "linux", colorScheme, href: linuxHref }),
3523
- showAppStore && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DownloadBadge, { platform: "appstore", colorScheme, href: appStoreHref }),
3524
- showWeb && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DownloadBadge, { platform: "web", colorScheme, href: webHref })
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