@deriv-web-design/ui 0.0.24 → 0.0.25

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
@@ -1094,18 +1094,25 @@ var Tabs = ({
1094
1094
  };
1095
1095
 
1096
1096
  // templates/FaqAccordion/FaqAccordion.tsx
1097
+ var import_react7 = require("react");
1097
1098
  var import_jsx_runtime17 = require("react/jsx-runtime");
1098
1099
  var FaqAccordion = ({
1099
1100
  title,
1100
1101
  items,
1101
1102
  colorScheme = "white"
1102
1103
  }) => {
1104
+ const [openIndex, setOpenIndex] = (0, import_react7.useState)(null);
1105
+ const handleToggle = (index) => (isOpen) => {
1106
+ setOpenIndex(isOpen ? index : null);
1107
+ };
1103
1108
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("section", { className: ["faq-accordion", `faq-accordion--${colorScheme}`].join(" "), children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "faq-accordion__container", children: [
1104
1109
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "faq-accordion__header", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h2", { className: "faq-accordion__title", children: title }) }),
1105
1110
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "faq-accordion__list", children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1106
1111
  Accordion,
1107
1112
  {
1108
1113
  title: item.question,
1114
+ open: openIndex === index,
1115
+ onToggle: handleToggle(index),
1109
1116
  showTopDivider: index === 0,
1110
1117
  showBottomDivider: true,
1111
1118
  children: item.answer
@@ -1371,7 +1378,7 @@ var FeatureBullets = ({
1371
1378
  };
1372
1379
 
1373
1380
  // components/Footer/Footer.tsx
1374
- var import_react7 = require("react");
1381
+ var import_react8 = require("react");
1375
1382
  var import_jsx_runtime21 = require("react/jsx-runtime");
1376
1383
  var ExternalLinkIcon = () => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1377
1384
  "svg",
@@ -1486,7 +1493,7 @@ var Footer = ({
1486
1493
  ...props
1487
1494
  }) => {
1488
1495
  const allSections = navColumns.flat();
1489
- const [openSections, setOpenSections] = (0, import_react7.useState)(/* @__PURE__ */ new Set());
1496
+ const [openSections, setOpenSections] = (0, import_react8.useState)(/* @__PURE__ */ new Set());
1490
1497
  const toggleSection = (index) => {
1491
1498
  setOpenSections((prev) => {
1492
1499
  const next = new Set(prev);
@@ -1851,7 +1858,7 @@ var Hero = ({
1851
1858
  };
1852
1859
 
1853
1860
  // templates/Header/Header.tsx
1854
- var import_react8 = require("react");
1861
+ var import_react9 = require("react");
1855
1862
  var import_jsx_runtime23 = require("react/jsx-runtime");
1856
1863
  var ButtonBlock2 = ({
1857
1864
  primaryButton,
@@ -1908,10 +1915,10 @@ var Header = ({
1908
1915
  ...props
1909
1916
  }) => {
1910
1917
  const variantClass = `header--${variant}`;
1911
- const sectionRef = (0, import_react8.useRef)(null);
1912
- const leftRef = (0, import_react8.useRef)(null);
1913
- const rightRef = (0, import_react8.useRef)(null);
1914
- (0, import_react8.useEffect)(() => {
1918
+ const sectionRef = (0, import_react9.useRef)(null);
1919
+ const leftRef = (0, import_react9.useRef)(null);
1920
+ const rightRef = (0, import_react9.useRef)(null);
1921
+ (0, import_react9.useEffect)(() => {
1915
1922
  if (variant !== "visuals") return;
1916
1923
  if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
1917
1924
  const section = sectionRef.current;
@@ -1973,7 +1980,7 @@ var Header = ({
1973
1980
  };
1974
1981
 
1975
1982
  // templates/Stats/Stats.tsx
1976
- var import_react9 = require("react");
1983
+ var import_react10 = require("react");
1977
1984
  var import_jsx_runtime24 = require("react/jsx-runtime");
1978
1985
  var INTERVAL_MS = 2e3;
1979
1986
  var TRANSITION = "transform 0.8s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1)";
@@ -2011,16 +2018,16 @@ var Stats = ({
2011
2018
  className,
2012
2019
  ...props
2013
2020
  }) => {
2014
- const [activeIndex, setActiveIndex] = (0, import_react9.useState)(0);
2015
- const intervalRef = (0, import_react9.useRef)(null);
2016
- const sectionRef = (0, import_react9.useRef)(null);
2017
- const leftColRef = (0, import_react9.useRef)(null);
2018
- const rightColRef = (0, import_react9.useRef)(null);
2019
- const rafRef = (0, import_react9.useRef)(null);
2021
+ const [activeIndex, setActiveIndex] = (0, import_react10.useState)(0);
2022
+ const intervalRef = (0, import_react10.useRef)(null);
2023
+ const sectionRef = (0, import_react10.useRef)(null);
2024
+ const leftColRef = (0, import_react10.useRef)(null);
2025
+ const rightColRef = (0, import_react10.useRef)(null);
2026
+ const rafRef = (0, import_react10.useRef)(null);
2020
2027
  const hasAwards = leftAwards.length > 0 || rightAwards.length > 0;
2021
2028
  const allAwards = [...leftAwards, ...rightAwards];
2022
2029
  const total = stats.length;
2023
- (0, import_react9.useEffect)(() => {
2030
+ (0, import_react10.useEffect)(() => {
2024
2031
  if (total <= 1) return;
2025
2032
  intervalRef.current = setInterval(() => {
2026
2033
  setActiveIndex((prev) => (prev + 1) % total);
@@ -2029,7 +2036,7 @@ var Stats = ({
2029
2036
  if (intervalRef.current) clearInterval(intervalRef.current);
2030
2037
  };
2031
2038
  }, [total]);
2032
- (0, import_react9.useEffect)(() => {
2039
+ (0, import_react10.useEffect)(() => {
2033
2040
  const applyParallax = () => {
2034
2041
  const section = sectionRef.current;
2035
2042
  if (!section || window.innerWidth < PARALLAX_BP) {
@@ -2104,10 +2111,10 @@ var Stats = ({
2104
2111
  };
2105
2112
 
2106
2113
  // templates/FeatureScroll/FeatureScroll.tsx
2107
- var import_react11 = require("react");
2114
+ var import_react12 = require("react");
2108
2115
 
2109
2116
  // components/DotLottieInView/DotLottieInView.tsx
2110
- var import_react10 = require("react");
2117
+ var import_react11 = require("react");
2111
2118
  var import_dotlottie_react = require("@lottiefiles/dotlottie-react");
2112
2119
  var import_jsx_runtime25 = require("react/jsx-runtime");
2113
2120
  function DotLottieInView({
@@ -2118,10 +2125,10 @@ function DotLottieInView({
2118
2125
  style,
2119
2126
  ...dotProps
2120
2127
  }) {
2121
- const wrapRef = (0, import_react10.useRef)(null);
2122
- const [inView, setInView] = (0, import_react10.useState)(false);
2123
- const [dotLottie, setDotLottie] = (0, import_react10.useState)(null);
2124
- (0, import_react10.useEffect)(() => {
2128
+ const wrapRef = (0, import_react11.useRef)(null);
2129
+ const [inView, setInView] = (0, import_react11.useState)(false);
2130
+ const [dotLottie, setDotLottie] = (0, import_react11.useState)(null);
2131
+ (0, import_react11.useEffect)(() => {
2125
2132
  const el = wrapRef.current;
2126
2133
  if (!el) return;
2127
2134
  const observer = new IntersectionObserver(
@@ -2133,7 +2140,7 @@ function DotLottieInView({
2133
2140
  observer.observe(el);
2134
2141
  return () => observer.disconnect();
2135
2142
  }, [rootMargin, threshold]);
2136
- (0, import_react10.useEffect)(() => {
2143
+ (0, import_react11.useEffect)(() => {
2137
2144
  if (!dotLottie) return;
2138
2145
  if (!enabled || !inView) {
2139
2146
  dotLottie.stop();
@@ -2267,10 +2274,10 @@ var FeatureScroll = ({
2267
2274
  className,
2268
2275
  ...props
2269
2276
  }) => {
2270
- const [activeIndex, setActiveIndex] = (0, import_react11.useState)(0);
2271
- const titleRefs = (0, import_react11.useRef)([]);
2272
- const mediaColRef = (0, import_react11.useRef)(null);
2273
- (0, import_react11.useLayoutEffect)(() => {
2277
+ const [activeIndex, setActiveIndex] = (0, import_react12.useState)(0);
2278
+ const titleRefs = (0, import_react12.useRef)([]);
2279
+ const mediaColRef = (0, import_react12.useRef)(null);
2280
+ (0, import_react12.useLayoutEffect)(() => {
2274
2281
  if (items.length === 0) return;
2275
2282
  const readThresholdPx = () => {
2276
2283
  const col = mediaColRef.current;
@@ -2403,7 +2410,7 @@ var FeatureScroll = ({
2403
2410
  };
2404
2411
 
2405
2412
  // templates/StickyStackedCards/StickyStackedCards.tsx
2406
- var import_react12 = require("react");
2413
+ var import_react13 = require("react");
2407
2414
  var import_jsx_runtime27 = require("react/jsx-runtime");
2408
2415
  var PLACEHOLDER_IMAGE = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69b9309379ac08e59ca8210a_1f3f555da9a5cbb13a6fe1bf0d5fe1b6_placeholder-image.webp";
2409
2416
  var STEPS_DATA = [
@@ -2433,8 +2440,8 @@ var StickyStackedCards = ({
2433
2440
  className,
2434
2441
  ...props
2435
2442
  }) => {
2436
- const cardRefs = (0, import_react12.useRef)([]);
2437
- (0, import_react12.useEffect)(() => {
2443
+ const cardRefs = (0, import_react13.useRef)([]);
2444
+ (0, import_react13.useEffect)(() => {
2438
2445
  if (typeof window === "undefined") return;
2439
2446
  let rafId = 0;
2440
2447
  const update = () => {
@@ -2523,7 +2530,7 @@ var StickyStackedCards = ({
2523
2530
  };
2524
2531
 
2525
2532
  // templates/CTABanner/CTABanner.tsx
2526
- var import_react13 = require("react");
2533
+ var import_react14 = require("react");
2527
2534
  var import_framer_motion = require("framer-motion");
2528
2535
  var import_jsx_runtime28 = require("react/jsx-runtime");
2529
2536
  var ENTRANCE = {
@@ -2771,7 +2778,7 @@ var CTABanner = ({
2771
2778
  ...props
2772
2779
  }) => {
2773
2780
  const resolvedAvatars = avatars ?? (variant === "compact" ? COMPACT_AVATAR_DATA : AVATAR_DATA);
2774
- const sectionRef = (0, import_react13.useRef)(null);
2781
+ const sectionRef = (0, import_react14.useRef)(null);
2775
2782
  const { scrollYProgress } = (0, import_framer_motion.useScroll)({
2776
2783
  target: sectionRef,
2777
2784
  offset: ["start end", "end start"]
@@ -2858,7 +2865,7 @@ var CTABanner = ({
2858
2865
  };
2859
2866
 
2860
2867
  // components/Navbar/Navbar.tsx
2861
- var import_react14 = require("react");
2868
+ var import_react15 = require("react");
2862
2869
  var import_framer_motion2 = require("framer-motion");
2863
2870
 
2864
2871
  // assets/icon-globe.svg
@@ -3096,24 +3103,24 @@ var Navbar = ({
3096
3103
  className,
3097
3104
  ...props
3098
3105
  }) => {
3099
- const [openDropdown, setOpenDropdown] = (0, import_react14.useState)(null);
3100
- const [mobileOpen, setMobileOpen] = (0, import_react14.useState)(false);
3101
- const [mobileExpanded, setMobileExpanded] = (0, import_react14.useState)(null);
3102
- const [scrolled, setScrolled] = (0, import_react14.useState)(false);
3103
- const [langDropdownOpen, setLangDropdownOpen] = (0, import_react14.useState)(false);
3104
- const [mobileLangOpen, setMobileLangOpen] = (0, import_react14.useState)(false);
3105
- const hoverTimeoutRef = (0, import_react14.useRef)(null);
3106
- const langHoverTimeoutRef = (0, import_react14.useRef)(null);
3107
- const pillAreaRef = (0, import_react14.useRef)(null);
3108
- const langBtnRef = (0, import_react14.useRef)(null);
3106
+ const [openDropdown, setOpenDropdown] = (0, import_react15.useState)(null);
3107
+ const [mobileOpen, setMobileOpen] = (0, import_react15.useState)(false);
3108
+ const [mobileExpanded, setMobileExpanded] = (0, import_react15.useState)(null);
3109
+ const [scrolled, setScrolled] = (0, import_react15.useState)(false);
3110
+ const [langDropdownOpen, setLangDropdownOpen] = (0, import_react15.useState)(false);
3111
+ const [mobileLangOpen, setMobileLangOpen] = (0, import_react15.useState)(false);
3112
+ const hoverTimeoutRef = (0, import_react15.useRef)(null);
3113
+ const langHoverTimeoutRef = (0, import_react15.useRef)(null);
3114
+ const pillAreaRef = (0, import_react15.useRef)(null);
3115
+ const langBtnRef = (0, import_react15.useRef)(null);
3109
3116
  const hasLangDropdown = Boolean(languageItems && languageItems.length > 0);
3110
3117
  const resolvedLogo = theme === "light" ? logoSrcDark ?? logoSrc : logoSrc;
3111
- (0, import_react14.useEffect)(() => {
3118
+ (0, import_react15.useEffect)(() => {
3112
3119
  const onScroll = () => setScrolled(window.scrollY > 0);
3113
3120
  window.addEventListener("scroll", onScroll, { passive: true });
3114
3121
  return () => window.removeEventListener("scroll", onScroll);
3115
3122
  }, []);
3116
- (0, import_react14.useEffect)(() => {
3123
+ (0, import_react15.useEffect)(() => {
3117
3124
  const onKey = (e) => {
3118
3125
  if (e.key === "Escape") {
3119
3126
  setOpenDropdown(null);
@@ -3124,16 +3131,16 @@ var Navbar = ({
3124
3131
  document.addEventListener("keydown", onKey);
3125
3132
  return () => document.removeEventListener("keydown", onKey);
3126
3133
  }, []);
3127
- (0, import_react14.useEffect)(() => {
3134
+ (0, import_react15.useEffect)(() => {
3128
3135
  if (!mobileOpen) setMobileLangOpen(false);
3129
3136
  }, [mobileOpen]);
3130
- (0, import_react14.useEffect)(() => {
3137
+ (0, import_react15.useEffect)(() => {
3131
3138
  document.body.style.overflow = mobileOpen ? "hidden" : "";
3132
3139
  return () => {
3133
3140
  document.body.style.overflow = "";
3134
3141
  };
3135
3142
  }, [mobileOpen]);
3136
- (0, import_react14.useEffect)(() => {
3143
+ (0, import_react15.useEffect)(() => {
3137
3144
  if (!openDropdown) return;
3138
3145
  const onPointerDown = (e) => {
3139
3146
  if (pillAreaRef.current && !pillAreaRef.current.contains(e.target)) {
@@ -3143,36 +3150,36 @@ var Navbar = ({
3143
3150
  document.addEventListener("pointerdown", onPointerDown);
3144
3151
  return () => document.removeEventListener("pointerdown", onPointerDown);
3145
3152
  }, [openDropdown]);
3146
- const clearHoverTimeout = (0, import_react14.useCallback)(() => {
3153
+ const clearHoverTimeout = (0, import_react15.useCallback)(() => {
3147
3154
  if (hoverTimeoutRef.current) {
3148
3155
  clearTimeout(hoverTimeoutRef.current);
3149
3156
  hoverTimeoutRef.current = null;
3150
3157
  }
3151
3158
  }, []);
3152
- const clearLangHoverTimeout = (0, import_react14.useCallback)(() => {
3159
+ const clearLangHoverTimeout = (0, import_react15.useCallback)(() => {
3153
3160
  if (langHoverTimeoutRef.current) {
3154
3161
  clearTimeout(langHoverTimeoutRef.current);
3155
3162
  langHoverTimeoutRef.current = null;
3156
3163
  }
3157
3164
  }, []);
3158
- const handleLangEnter = (0, import_react14.useCallback)(() => {
3165
+ const handleLangEnter = (0, import_react15.useCallback)(() => {
3159
3166
  clearLangHoverTimeout();
3160
3167
  setLangDropdownOpen(true);
3161
3168
  }, [clearLangHoverTimeout]);
3162
- const handleLangLeave = (0, import_react14.useCallback)(() => {
3169
+ const handleLangLeave = (0, import_react15.useCallback)(() => {
3163
3170
  clearLangHoverTimeout();
3164
3171
  langHoverTimeoutRef.current = setTimeout(() => setLangDropdownOpen(false), 150);
3165
3172
  }, [clearLangHoverTimeout]);
3166
- const handleLangSelect = (0, import_react14.useCallback)((code) => {
3173
+ const handleLangSelect = (0, import_react15.useCallback)((code) => {
3167
3174
  setLangDropdownOpen(false);
3168
3175
  setMobileLangOpen(false);
3169
3176
  onLanguageSelect?.(code);
3170
3177
  }, [onLanguageSelect]);
3171
- const handleNavEnter = (0, import_react14.useCallback)((label) => {
3178
+ const handleNavEnter = (0, import_react15.useCallback)((label) => {
3172
3179
  clearHoverTimeout();
3173
3180
  setOpenDropdown(label);
3174
3181
  }, [clearHoverTimeout]);
3175
- const handleNavLeave = (0, import_react14.useCallback)(() => {
3182
+ const handleNavLeave = (0, import_react15.useCallback)(() => {
3176
3183
  clearHoverTimeout();
3177
3184
  hoverTimeoutRef.current = setTimeout(() => setOpenDropdown(null), 120);
3178
3185
  }, [clearHoverTimeout]);
@@ -3452,7 +3459,7 @@ var Navbar = ({
3452
3459
  };
3453
3460
 
3454
3461
  // templates/DayNightTransition/DayNightTransition.tsx
3455
- var import_react15 = require("react");
3462
+ var import_react16 = require("react");
3456
3463
  var import_framer_motion3 = require("framer-motion");
3457
3464
 
3458
3465
  // templates/DayNightTransition/webflowDayNightV2Ix.ts
@@ -3561,13 +3568,13 @@ var DayNightTransition = ({
3561
3568
  className,
3562
3569
  ...props
3563
3570
  }) => {
3564
- const wrapperRef = (0, import_react15.useRef)(null);
3565
- const dayWordRef = (0, import_react15.useRef)(null);
3566
- const [nightMarginStart, setNightMarginStart] = (0, import_react15.useState)("0px");
3567
- const [nightMarginEnd, setNightMarginEnd] = (0, import_react15.useState)("0px");
3568
- const [ixMedia, setIxMedia] = (0, import_react15.useState)("desktop");
3571
+ const wrapperRef = (0, import_react16.useRef)(null);
3572
+ const dayWordRef = (0, import_react16.useRef)(null);
3573
+ const [nightMarginStart, setNightMarginStart] = (0, import_react16.useState)("0px");
3574
+ const [nightMarginEnd, setNightMarginEnd] = (0, import_react16.useState)("0px");
3575
+ const [ixMedia, setIxMedia] = (0, import_react16.useState)("desktop");
3569
3576
  const webflowV2 = scrollPreset === "webflow-day-night-v2";
3570
- (0, import_react15.useEffect)(() => {
3577
+ (0, import_react16.useEffect)(() => {
3571
3578
  const mq = window.matchMedia("(max-width: 991px)");
3572
3579
  const sync = () => setIxMedia(mq.matches ? "mobile" : "desktop");
3573
3580
  sync();
@@ -3575,7 +3582,7 @@ var DayNightTransition = ({
3575
3582
  return () => mq.removeEventListener("change", sync);
3576
3583
  }, []);
3577
3584
  const MotionHeadline = headlineLevel === "h1" ? import_framer_motion3.motion.h1 : import_framer_motion3.motion.h2;
3578
- (0, import_react15.useLayoutEffect)(() => {
3585
+ (0, import_react16.useLayoutEffect)(() => {
3579
3586
  if (!inlineDayNightHeadline) return;
3580
3587
  const syncNightPull = () => {
3581
3588
  const dayEl = dayWordRef.current;
@@ -3896,7 +3903,7 @@ var dayNightTransitionV2Preset = {
3896
3903
  };
3897
3904
 
3898
3905
  // templates/LogoMarquee/LogoMarquee.tsx
3899
- var import_react16 = require("react");
3906
+ var import_react17 = require("react");
3900
3907
  var import_framer_motion4 = require("framer-motion");
3901
3908
  var import_jsx_runtime31 = require("react/jsx-runtime");
3902
3909
  function modWrap(min, max, v) {
@@ -3955,8 +3962,8 @@ var LogoMarquee = ({
3955
3962
  const scrollVelocity = (0, import_framer_motion4.useVelocity)(scrollY);
3956
3963
  const col1Y = (0, import_framer_motion4.useMotionValue)(0);
3957
3964
  const col2Y = (0, import_framer_motion4.useMotionValue)(0);
3958
- const col1Ref = (0, import_react16.useRef)(null);
3959
- const col2Ref = (0, import_react16.useRef)(null);
3965
+ const col1Ref = (0, import_react17.useRef)(null);
3966
+ const col2Ref = (0, import_react17.useRef)(null);
3960
3967
  (0, import_framer_motion4.useAnimationFrame)((_, delta) => {
3961
3968
  const raw = scrollVelocity.get();
3962
3969
  if (Math.abs(raw) < DEADZONE) return;
@@ -4210,16 +4217,16 @@ var DownloadBanner = ({
4210
4217
  };
4211
4218
 
4212
4219
  // templates/TextScroll/TextScroll.tsx
4213
- var import_react17 = require("react");
4220
+ var import_react18 = require("react");
4214
4221
  var import_gsap = require("gsap");
4215
4222
  var import_ScrollTrigger = require("gsap/ScrollTrigger");
4216
4223
  var import_jsx_runtime35 = require("react/jsx-runtime");
4217
4224
  import_gsap.gsap.registerPlugin(import_ScrollTrigger.ScrollTrigger);
4218
4225
  var TextScroll = ({ text, className }) => {
4219
- const sectionRef = (0, import_react17.useRef)(null);
4220
- const wordsRef = (0, import_react17.useRef)([]);
4226
+ const sectionRef = (0, import_react18.useRef)(null);
4227
+ const wordsRef = (0, import_react18.useRef)([]);
4221
4228
  const words = text.split(/\s+/).filter(Boolean);
4222
- (0, import_react17.useEffect)(() => {
4229
+ (0, import_react18.useEffect)(() => {
4223
4230
  const section = sectionRef.current;
4224
4231
  const wordEls = wordsRef.current.filter(Boolean);
4225
4232
  if (!section || wordEls.length === 0) return;
@@ -4278,7 +4285,7 @@ var TextScroll = ({ text, className }) => {
4278
4285
  };
4279
4286
 
4280
4287
  // templates/StickyMarketCards/StickyMarketCards.tsx
4281
- var import_react18 = require("react");
4288
+ var import_react19 = require("react");
4282
4289
  var import_jsx_runtime36 = require("react/jsx-runtime");
4283
4290
  var PLACEHOLDER_IMAGE3 = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69b9309379ac08e59ca8210a_1f3f555da9a5cbb13a6fe1bf0d5fe1b6_placeholder-image.webp";
4284
4291
  var StickyMarketCards = ({
@@ -4288,9 +4295,9 @@ var StickyMarketCards = ({
4288
4295
  className,
4289
4296
  ...props
4290
4297
  }) => {
4291
- const cardRefs = (0, import_react18.useRef)([]);
4292
- const cardInnerRefs = (0, import_react18.useRef)([]);
4293
- (0, import_react18.useEffect)(() => {
4298
+ const cardRefs = (0, import_react19.useRef)([]);
4299
+ const cardInnerRefs = (0, import_react19.useRef)([]);
4300
+ (0, import_react19.useEffect)(() => {
4294
4301
  if (typeof window === "undefined") return;
4295
4302
  let rafId = 0;
4296
4303
  const update = () => {
@@ -4331,7 +4338,7 @@ var StickyMarketCards = ({
4331
4338
  cancelAnimationFrame(rafId);
4332
4339
  };
4333
4340
  }, [items.length]);
4334
- (0, import_react18.useEffect)(() => {
4341
+ (0, import_react19.useEffect)(() => {
4335
4342
  if (typeof window === "undefined") return;
4336
4343
  const syncHeights = () => {
4337
4344
  const inners = cardInnerRefs.current.filter(Boolean);
@@ -4432,7 +4439,7 @@ var StickyMarketCards = ({
4432
4439
  };
4433
4440
 
4434
4441
  // templates/Table/Table.tsx
4435
- var import_react19 = require("react");
4442
+ var import_react20 = require("react");
4436
4443
  var import_jsx_runtime37 = require("react/jsx-runtime");
4437
4444
  var InfoIcon = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", className, children: [
4438
4445
  /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "1.5" }),
@@ -4450,11 +4457,11 @@ var Table = ({
4450
4457
  className,
4451
4458
  ...props
4452
4459
  }) => {
4453
- const [search, setSearch] = (0, import_react19.useState)("");
4454
- const [page, setPage] = (0, import_react19.useState)(1);
4455
- const [tooltip, setTooltip] = (0, import_react19.useState)({ visible: false, heading: "", description: "", x: 0, y: 0, arrowOffset: 0 });
4460
+ const [search, setSearch] = (0, import_react20.useState)("");
4461
+ const [page, setPage] = (0, import_react20.useState)(1);
4462
+ const [tooltip, setTooltip] = (0, import_react20.useState)({ visible: false, heading: "", description: "", x: 0, y: 0, arrowOffset: 0 });
4456
4463
  const mainKey = mainColumnKey ?? columns.find((c) => c.width === "main")?.key ?? columns[0]?.key;
4457
- const filtered = (0, import_react19.useMemo)(() => {
4464
+ const filtered = (0, import_react20.useMemo)(() => {
4458
4465
  const q = search.trim().toLowerCase();
4459
4466
  if (!q) return rows;
4460
4467
  return rows.filter(
@@ -4622,7 +4629,7 @@ var Table = ({
4622
4629
  };
4623
4630
 
4624
4631
  // templates/Leaders/Leaders.tsx
4625
- var import_react20 = require("react");
4632
+ var import_react21 = require("react");
4626
4633
  var import_jsx_runtime38 = require("react/jsx-runtime");
4627
4634
  var LinkedInIcon = () => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { d: "M14.816 0H1.18C0.528 0 0 0.516 0 1.153V14.846C0 15.484 0.528 16 1.18 16H14.816C15.468 16 16 15.484 16 14.846V1.153C16 0.516 15.468 0 14.816 0ZM4.744 13.642H2.368V5.996H4.744V13.642ZM3.556 4.952C2.796 4.952 2.18 4.336 2.18 3.576C2.18 2.816 2.796 2.2 3.556 2.2C4.316 2.2 4.932 2.816 4.932 3.576C4.932 4.336 4.316 4.952 3.556 4.952ZM13.642 13.642H11.266V9.924C11.266 9.038 11.25 7.896 10.032 7.896C8.814 7.896 8.626 8.846 8.626 9.86V13.642H6.25V5.996H8.53V7.04H8.562C8.88 6.44 9.534 5.806 10.686 5.806C12.958 5.806 13.642 7.3 13.642 9.386V13.642Z", fill: "currentColor" }) });
4628
4635
  var ChevronDownIcon4 = () => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { d: "M4 6L8 10L12 6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
@@ -4664,7 +4671,7 @@ var Leaders = ({
4664
4671
  className,
4665
4672
  ...props
4666
4673
  }) => {
4667
- const [isExpanded, setIsExpanded] = (0, import_react20.useState)(false);
4674
+ const [isExpanded, setIsExpanded] = (0, import_react21.useState)(false);
4668
4675
  const hasMore = items.length > initialVisibleCount;
4669
4676
  const visibleItems = items.slice(0, initialVisibleCount);
4670
4677
  const extraItems = items.slice(initialVisibleCount);