@deriv-web-design/ui 0.1.20 → 0.1.21

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,6 +32,7 @@ var index_exports = {};
32
32
  __export(index_exports, {
33
33
  AVATAR_DATA: () => AVATAR_DATA,
34
34
  Accordion: () => Accordion,
35
+ AffiliatesSlider: () => AffiliatesSlider,
35
36
  ArticleHero: () => ArticleHero,
36
37
  ArticleSection: () => ArticleSection,
37
38
  AvatarGrid: () => AvatarGrid,
@@ -46,15 +47,18 @@ __export(index_exports, {
46
47
  Chip: () => Chip,
47
48
  ChipDropdown: () => ChipDropdown,
48
49
  CoralBanner: () => CoralBanner,
50
+ CountryLinkGrid: () => CountryLinkGrid,
49
51
  DEFAULT_AWARDS: () => DEFAULT_AWARDS,
50
52
  DEFAULT_CULTURE_CARDS: () => DEFAULT_CULTURE_CARDS,
51
53
  DEFAULT_EXCHANGE_RATE_WS_URL: () => DEFAULT_EXCHANGE_RATE_WS_URL,
52
54
  DEFAULT_SYMBOLS_ENDPOINT: () => DEFAULT_SYMBOLS_ENDPOINT,
53
55
  DayNightTransition: () => DayNightTransition,
56
+ DocumentChips: () => DocumentChips,
54
57
  DotLottieInView: () => DotLottieInView,
55
58
  DownloadBadge: () => DownloadBadge,
56
59
  DownloadBanner: () => DownloadBanner,
57
60
  DynamicTable: () => DynamicTable,
61
+ EntityInfoSection: () => EntityInfoSection,
58
62
  FEATURE_AWARDS_TEXT_CONTENT: () => FEATURE_AWARDS_TEXT_CONTENT,
59
63
  FEATURE_BLOG_CATEGORIES_TEXT_CONTENT: () => FEATURE_BLOG_CATEGORIES_TEXT_CONTENT,
60
64
  FEATURE_BLOG_TEXT_CONTENT: () => FEATURE_BLOG_TEXT_CONTENT,
@@ -79,11 +83,20 @@ __export(index_exports, {
79
83
  Hero: () => Hero,
80
84
  IMAGE_BANNER_CHIPS_DEFAULT_IMAGE: () => IMAGE_BANNER_CHIPS_DEFAULT_IMAGE,
81
85
  ImageBanner: () => ImageBanner,
86
+ LanguageSelectModal: () => LanguageSelectModal,
82
87
  Leaders: () => Leaders,
83
88
  Link: () => Link,
89
+ LinkModal: () => LinkModal,
84
90
  LogoMarquee: () => LogoMarquee,
85
91
  MasterPartner: () => MasterPartner,
86
92
  Navbar: () => Navbar,
93
+ OPTIONS_TYPES_ACCUMULATOR_CONTENT: () => OPTIONS_TYPES_ACCUMULATOR_CONTENT,
94
+ OPTIONS_TYPES_DIGITAL_CONTENT: () => OPTIONS_TYPES_DIGITAL_CONTENT,
95
+ OPTIONS_TYPES_MULTIPLIERS_CONTENT: () => OPTIONS_TYPES_MULTIPLIERS_CONTENT,
96
+ OPTIONS_TYPES_PLACEHOLDER_ITEMS: () => OPTIONS_TYPES_PLACEHOLDER_ITEMS,
97
+ OPTIONS_TYPES_TURBO_CONTENT: () => OPTIONS_TYPES_TURBO_CONTENT,
98
+ OPTIONS_TYPES_VANILLA_CONTENT: () => OPTIONS_TYPES_VANILLA_CONTENT,
99
+ OptionsTypes: () => OptionsTypes,
87
100
  PARALLAX_BANNER_TEXT_CONTENT: () => PARALLAX_BANNER_TEXT_CONTENT,
88
101
  Pagination: () => Pagination,
89
102
  ParallaxBanner: () => ParallaxBanner,
@@ -1191,17 +1204,29 @@ var Pagination = ({
1191
1204
  };
1192
1205
 
1193
1206
  // components/Tabs/Tabs.tsx
1207
+ var import_react7 = require("react");
1194
1208
  var import_jsx_runtime17 = require("react/jsx-runtime");
1195
1209
  var Tabs = ({
1196
1210
  items,
1197
1211
  activeId,
1198
1212
  onChange,
1213
+ idPrefix,
1199
1214
  className,
1200
1215
  ...props
1201
1216
  }) => {
1217
+ const generatedId = (0, import_react7.useId)().replace(/:/g, "");
1218
+ const prefix = idPrefix ?? `tabs-${generatedId}`;
1219
+ const rootRef = (0, import_react7.useRef)(null);
1220
+ const selectAndFocus = (index) => {
1221
+ const item = items[index];
1222
+ if (!item) return;
1223
+ onChange(item.id);
1224
+ rootRef.current?.querySelectorAll('[role="tab"]')[index]?.focus();
1225
+ };
1202
1226
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1203
1227
  "div",
1204
1228
  {
1229
+ ref: rootRef,
1205
1230
  className: ["tabs-menu w-tab-menu", className].filter(Boolean).join(" "),
1206
1231
  role: "tablist",
1207
1232
  ...props,
@@ -1213,10 +1238,25 @@ var Tabs = ({
1213
1238
  label: item.label,
1214
1239
  selected: isActive,
1215
1240
  onClick: () => onChange(item.id),
1241
+ onKeyDown: (event) => {
1242
+ if (event.key === "ArrowRight" || event.key === "ArrowDown") {
1243
+ event.preventDefault();
1244
+ selectAndFocus((i + 1) % items.length);
1245
+ } else if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
1246
+ event.preventDefault();
1247
+ selectAndFocus((i - 1 + items.length) % items.length);
1248
+ } else if (event.key === "Home") {
1249
+ event.preventDefault();
1250
+ selectAndFocus(0);
1251
+ } else if (event.key === "End") {
1252
+ event.preventDefault();
1253
+ selectAndFocus(items.length - 1);
1254
+ }
1255
+ },
1216
1256
  className: isActive ? "tab-active" : "",
1217
1257
  "data-w-tab": item.label,
1218
- id: `w-tabs-0-data-w-tab-${i}`,
1219
- "aria-controls": `w-tabs-0-data-w-pane-${i}`,
1258
+ id: `${prefix}-tab-${i}`,
1259
+ "aria-controls": `${prefix}-panel-${i}`,
1220
1260
  "aria-selected": isActive,
1221
1261
  tabIndex: isActive ? 0 : -1,
1222
1262
  role: "tab"
@@ -1229,14 +1269,14 @@ var Tabs = ({
1229
1269
  };
1230
1270
 
1231
1271
  // templates/FaqAccordion/FaqAccordion.tsx
1232
- var import_react7 = require("react");
1272
+ var import_react8 = require("react");
1233
1273
  var import_jsx_runtime18 = require("react/jsx-runtime");
1234
1274
  var FaqAccordion = ({
1235
1275
  title,
1236
1276
  items,
1237
1277
  colorScheme = "white"
1238
1278
  }) => {
1239
- const [openIndex, setOpenIndex] = (0, import_react7.useState)(null);
1279
+ const [openIndex, setOpenIndex] = (0, import_react8.useState)(null);
1240
1280
  const handleToggle = (index) => (isOpen) => {
1241
1281
  setOpenIndex(isOpen ? index : null);
1242
1282
  };
@@ -1248,7 +1288,7 @@ var FaqAccordion = ({
1248
1288
  title: item.question,
1249
1289
  open: openIndex === index,
1250
1290
  onToggle: handleToggle(index),
1251
- showTopDivider: index === 0,
1291
+ showTopDivider: false,
1252
1292
  showBottomDivider: true,
1253
1293
  children: item.answer
1254
1294
  },
@@ -1260,6 +1300,19 @@ var FaqAccordion = ({
1260
1300
  // templates/FeatureCards/FeatureCards.tsx
1261
1301
  var import_jsx_runtime19 = require("react/jsx-runtime");
1262
1302
  var externalLinkRel = (href) => href && /^https?:\/\//i.test(href) ? "noopener noreferrer" : void 0;
1303
+ var PlatformIcon = ({ platform }) => {
1304
+ if (!platform.iconSrc) return null;
1305
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1306
+ "img",
1307
+ {
1308
+ alt: "",
1309
+ className: "fc-platformLink-icon",
1310
+ height: 32,
1311
+ src: platform.iconSrc,
1312
+ width: 32
1313
+ }
1314
+ );
1315
+ };
1263
1316
  var TwoCardsItem = ({ card, index }) => {
1264
1317
  const isDark = card.twoTone === "dark";
1265
1318
  const showCardLink = card.showLink !== false;
@@ -1298,16 +1351,7 @@ var TwoCardsItem = ({ card, index }) => {
1298
1351
  href: platform.href,
1299
1352
  rel: externalLinkRel(platform.href),
1300
1353
  children: [
1301
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1302
- "img",
1303
- {
1304
- alt: "",
1305
- className: "fc-platformLink-icon",
1306
- height: 32,
1307
- src: platform.iconSrc,
1308
- width: 32
1309
- }
1310
- ),
1354
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(PlatformIcon, { platform }),
1311
1355
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "fc-platformLink-label", children: platform.label })
1312
1356
  ]
1313
1357
  },
@@ -1356,16 +1400,7 @@ var OneCardPanel = ({ card }) => {
1356
1400
  href: platform.href,
1357
1401
  rel: externalLinkRel(platform.href),
1358
1402
  children: [
1359
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1360
- "img",
1361
- {
1362
- alt: "",
1363
- className: "fc-platformLink-icon",
1364
- height: 32,
1365
- src: platform.iconSrc,
1366
- width: 32
1367
- }
1368
- ),
1403
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(PlatformIcon, { platform }),
1369
1404
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "fc-platformLink-label", children: platform.label })
1370
1405
  ]
1371
1406
  },
@@ -1513,7 +1548,7 @@ var FeatureBullets = ({
1513
1548
  };
1514
1549
 
1515
1550
  // components/Footer/Footer.tsx
1516
- var import_react8 = require("react");
1551
+ var import_react9 = require("react");
1517
1552
  var import_jsx_runtime22 = require("react/jsx-runtime");
1518
1553
  var ExternalLinkIcon = () => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1519
1554
  "svg",
@@ -1641,7 +1676,7 @@ var Footer = ({
1641
1676
  ...props
1642
1677
  }) => {
1643
1678
  const allSections = navColumns.flat();
1644
- const [openSections, setOpenSections] = (0, import_react8.useState)(/* @__PURE__ */ new Set());
1679
+ const [openSections, setOpenSections] = (0, import_react9.useState)(/* @__PURE__ */ new Set());
1645
1680
  const toggleSection = (index) => {
1646
1681
  setOpenSections((prev) => {
1647
1682
  const next = new Set(prev);
@@ -2043,7 +2078,7 @@ var Hero = ({
2043
2078
  };
2044
2079
 
2045
2080
  // templates/Header/Header.tsx
2046
- var import_react9 = require("react");
2081
+ var import_react10 = require("react");
2047
2082
  var import_jsx_runtime24 = require("react/jsx-runtime");
2048
2083
  var ButtonBlock2 = ({
2049
2084
  primaryButton,
@@ -2120,10 +2155,10 @@ var Header = ({
2120
2155
  ...props
2121
2156
  }) => {
2122
2157
  const variantClass = `header--${variant}`;
2123
- const sectionRef = (0, import_react9.useRef)(null);
2124
- const leftRef = (0, import_react9.useRef)(null);
2125
- const rightRef = (0, import_react9.useRef)(null);
2126
- (0, import_react9.useEffect)(() => {
2158
+ const sectionRef = (0, import_react10.useRef)(null);
2159
+ const leftRef = (0, import_react10.useRef)(null);
2160
+ const rightRef = (0, import_react10.useRef)(null);
2161
+ (0, import_react10.useEffect)(() => {
2127
2162
  if (variant !== "visuals") return;
2128
2163
  if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
2129
2164
  const section = sectionRef.current;
@@ -2186,7 +2221,7 @@ var Header = ({
2186
2221
  };
2187
2222
 
2188
2223
  // templates/Stats/StatsV2.tsx
2189
- var import_react10 = require("react");
2224
+ var import_react11 = require("react");
2190
2225
  var import_jsx_runtime25 = require("react/jsx-runtime");
2191
2226
  var HOLD_MS = 1e3;
2192
2227
  var STEP_DURATION_MS = 700;
@@ -2370,22 +2405,22 @@ var Stats = ({
2370
2405
  className,
2371
2406
  ...props
2372
2407
  }) => {
2373
- const sectionRef = (0, import_react10.useRef)(null);
2374
- const leftColRef = (0, import_react10.useRef)(null);
2375
- const rightColRef = (0, import_react10.useRef)(null);
2376
- const rafRef = (0, import_react10.useRef)(null);
2408
+ const sectionRef = (0, import_react11.useRef)(null);
2409
+ const leftColRef = (0, import_react11.useRef)(null);
2410
+ const rightColRef = (0, import_react11.useRef)(null);
2411
+ const rafRef = (0, import_react11.useRef)(null);
2377
2412
  const N = stats.length;
2378
2413
  const hasAwards = leftAwards.length > 0 || rightAwards.length > 0;
2379
2414
  const allAwards = [...leftAwards, ...rightAwards];
2380
- const strip = (0, import_react10.useMemo)(() => {
2415
+ const strip = (0, import_react11.useMemo)(() => {
2381
2416
  if (N === 0) return [];
2382
2417
  const target = Math.max(2 * N, N + 3);
2383
2418
  return Array.from({ length: target }, (_, i) => stats[i % N]);
2384
2419
  }, [stats, N]);
2385
- const [step, setStep] = (0, import_react10.useState)(0);
2386
- const [phase, setPhase] = (0, import_react10.useState)("idle");
2387
- const scheduleRef = (0, import_react10.useRef)(null);
2388
- (0, import_react10.useEffect)(() => {
2420
+ const [step, setStep] = (0, import_react11.useState)(0);
2421
+ const [phase, setPhase] = (0, import_react11.useState)("idle");
2422
+ const scheduleRef = (0, import_react11.useRef)(null);
2423
+ (0, import_react11.useEffect)(() => {
2389
2424
  if (N <= 1) return;
2390
2425
  let timerId = null;
2391
2426
  let cancelled = false;
@@ -2416,7 +2451,7 @@ var Stats = ({
2416
2451
  if (timerId !== null) window.clearTimeout(timerId);
2417
2452
  };
2418
2453
  }, [N]);
2419
- (0, import_react10.useEffect)(() => {
2454
+ (0, import_react11.useEffect)(() => {
2420
2455
  if (phase === "snap-disable") {
2421
2456
  const raf = requestAnimationFrame(() => {
2422
2457
  setStep(0);
@@ -2434,11 +2469,11 @@ var Stats = ({
2434
2469
  return () => cancelAnimationFrame(raf);
2435
2470
  }
2436
2471
  }, [phase]);
2437
- (0, import_react10.useEffect)(() => {
2472
+ (0, import_react11.useEffect)(() => {
2438
2473
  setStep(0);
2439
2474
  setPhase("idle");
2440
2475
  }, [N]);
2441
- (0, import_react10.useEffect)(() => {
2476
+ (0, import_react11.useEffect)(() => {
2442
2477
  const apply = () => {
2443
2478
  const section = sectionRef.current;
2444
2479
  if (!section || window.innerWidth < PARALLAX_BREAKPOINT) {
@@ -2554,7 +2589,7 @@ var Stats = ({
2554
2589
  };
2555
2590
 
2556
2591
  // templates/Stats/StatsSimple.tsx
2557
- var import_react11 = require("react");
2592
+ var import_react12 = require("react");
2558
2593
  var import_jsx_runtime26 = require("react/jsx-runtime");
2559
2594
  function parseValue(raw) {
2560
2595
  const match = raw.match(/^([^0-9]*)([0-9]+(?:\.[0-9]+)?)(.*)$/);
@@ -2568,10 +2603,10 @@ function parseValue(raw) {
2568
2603
  var DURATION_MS = 1800;
2569
2604
  var EASING2 = (t) => 1 - Math.pow(1 - t, 3);
2570
2605
  function useCountUp(target, active) {
2571
- const [display, setDisplay] = (0, import_react11.useState)(0);
2572
- const rafRef = (0, import_react11.useRef)(null);
2573
- const startRef = (0, import_react11.useRef)(null);
2574
- (0, import_react11.useEffect)(() => {
2606
+ const [display, setDisplay] = (0, import_react12.useState)(0);
2607
+ const rafRef = (0, import_react12.useRef)(null);
2608
+ const startRef = (0, import_react12.useRef)(null);
2609
+ (0, import_react12.useEffect)(() => {
2575
2610
  if (!active) return;
2576
2611
  startRef.current = null;
2577
2612
  const tick = (now) => {
@@ -2609,9 +2644,9 @@ var StatsSimple = ({
2609
2644
  className,
2610
2645
  ...props
2611
2646
  }) => {
2612
- const sectionRef = (0, import_react11.useRef)(null);
2613
- const [animated, setAnimated] = (0, import_react11.useState)(false);
2614
- (0, import_react11.useEffect)(() => {
2647
+ const sectionRef = (0, import_react12.useRef)(null);
2648
+ const [animated, setAnimated] = (0, import_react12.useState)(false);
2649
+ (0, import_react12.useEffect)(() => {
2615
2650
  const el = sectionRef.current;
2616
2651
  if (!el) return;
2617
2652
  const observer = new IntersectionObserver(
@@ -2641,28 +2676,29 @@ var StatsSimple = ({
2641
2676
  };
2642
2677
 
2643
2678
  // templates/FeatureScroll/FeatureScroll.tsx
2644
- var import_react13 = require("react");
2679
+ var import_react14 = require("react");
2645
2680
 
2646
2681
  // components/DotLottieInView/DotLottieInView.tsx
2647
- var import_react12 = require("react");
2682
+ var import_react13 = require("react");
2648
2683
  var import_jsx_runtime27 = require("react/jsx-runtime");
2649
- var DotLottiePlayer = (0, import_react12.lazy)(
2684
+ var DotLottiePlayer = (0, import_react13.lazy)(
2650
2685
  () => import("@lottiefiles/dotlottie-react").then((m) => ({ default: m.DotLottieReact }))
2651
2686
  );
2652
2687
  function DotLottieInView({
2653
2688
  enabled = true,
2654
2689
  rootMargin = "0px",
2655
2690
  threshold = 0.2,
2691
+ loop = false,
2656
2692
  className,
2657
2693
  style,
2658
2694
  poster,
2659
2695
  ...dotProps
2660
2696
  }) {
2661
- const wrapRef = (0, import_react12.useRef)(null);
2662
- const [inView, setInView] = (0, import_react12.useState)(false);
2663
- const [mounted, setMounted] = (0, import_react12.useState)(false);
2664
- const [dotLottie, setDotLottie] = (0, import_react12.useState)(null);
2665
- (0, import_react12.useEffect)(() => {
2697
+ const wrapRef = (0, import_react13.useRef)(null);
2698
+ const [inView, setInView] = (0, import_react13.useState)(false);
2699
+ const [mounted, setMounted] = (0, import_react13.useState)(false);
2700
+ const [dotLottie, setDotLottie] = (0, import_react13.useState)(null);
2701
+ (0, import_react13.useEffect)(() => {
2666
2702
  const el = wrapRef.current;
2667
2703
  if (!el) return;
2668
2704
  const observer = new IntersectionObserver(
@@ -2674,7 +2710,7 @@ function DotLottieInView({
2674
2710
  observer.observe(el);
2675
2711
  return () => observer.disconnect();
2676
2712
  }, [rootMargin, threshold]);
2677
- (0, import_react12.useEffect)(() => {
2713
+ (0, import_react13.useEffect)(() => {
2678
2714
  if (mounted) return;
2679
2715
  if (!inView) return;
2680
2716
  if (typeof window === "undefined") return;
@@ -2692,7 +2728,7 @@ function DotLottieInView({
2692
2728
  if (timerId !== null) window.clearTimeout(timerId);
2693
2729
  };
2694
2730
  }, [inView, mounted]);
2695
- (0, import_react12.useEffect)(() => {
2731
+ (0, import_react13.useEffect)(() => {
2696
2732
  if (!dotLottie) return;
2697
2733
  if (!enabled || !inView) {
2698
2734
  dotLottie.stop();
@@ -2724,11 +2760,11 @@ function DotLottieInView({
2724
2760
  backgroundColor: "transparent",
2725
2761
  ...style
2726
2762
  },
2727
- children: mounted ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_react12.Suspense, { fallback: poster ?? null, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2763
+ children: mounted ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_react13.Suspense, { fallback: poster ?? null, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2728
2764
  DotLottiePlayer,
2729
2765
  {
2730
2766
  ...dotProps,
2731
- loop: false,
2767
+ loop,
2732
2768
  autoplay: false,
2733
2769
  dotLottieRefCallback: setDotLottie
2734
2770
  }
@@ -2863,12 +2899,12 @@ var FeatureScroll = ({
2863
2899
  mediaThreshold,
2864
2900
  ...props
2865
2901
  }) => {
2866
- const [activeIndex, setActiveIndex] = (0, import_react13.useState)(0);
2867
- const [mobileActiveIndex, setMobileActiveIndex] = (0, import_react13.useState)(0);
2868
- const titleRefs = (0, import_react13.useRef)([]);
2869
- const mobileItemRefs = (0, import_react13.useRef)([]);
2870
- const mediaColRef = (0, import_react13.useRef)(null);
2871
- (0, import_react13.useLayoutEffect)(() => {
2902
+ const [activeIndex, setActiveIndex] = (0, import_react14.useState)(0);
2903
+ const [mobileActiveIndex, setMobileActiveIndex] = (0, import_react14.useState)(0);
2904
+ const titleRefs = (0, import_react14.useRef)([]);
2905
+ const mobileItemRefs = (0, import_react14.useRef)([]);
2906
+ const mediaColRef = (0, import_react14.useRef)(null);
2907
+ (0, import_react14.useLayoutEffect)(() => {
2872
2908
  if (items.length === 0) return;
2873
2909
  const readThresholdPx = () => {
2874
2910
  const col = mediaColRef.current;
@@ -2914,7 +2950,7 @@ var FeatureScroll = ({
2914
2950
  if (rafId !== 0) window.cancelAnimationFrame(rafId);
2915
2951
  };
2916
2952
  }, [items.length]);
2917
- (0, import_react13.useEffect)(() => {
2953
+ (0, import_react14.useEffect)(() => {
2918
2954
  if (items.length === 0) return;
2919
2955
  if (typeof window === "undefined") return;
2920
2956
  const ratios = /* @__PURE__ */ new Map();
@@ -3102,7 +3138,7 @@ var FeatureSplit = ({
3102
3138
  };
3103
3139
 
3104
3140
  // templates/StickyStackedCards/StickyStackedCards.tsx
3105
- var import_react14 = require("react");
3141
+ var import_react15 = require("react");
3106
3142
  var import_jsx_runtime30 = require("react/jsx-runtime");
3107
3143
  var PLACEHOLDER_IMAGE = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69b9309379ac08e59ca8210a_1f3f555da9a5cbb13a6fe1bf0d5fe1b6_placeholder-image.webp";
3108
3144
  var STEPS_DATA = [
@@ -3132,8 +3168,8 @@ var StickyStackedCards = ({
3132
3168
  className,
3133
3169
  ...props
3134
3170
  }) => {
3135
- const cardRefs = (0, import_react14.useRef)([]);
3136
- (0, import_react14.useEffect)(() => {
3171
+ const cardRefs = (0, import_react15.useRef)([]);
3172
+ (0, import_react15.useEffect)(() => {
3137
3173
  if (typeof window === "undefined") return;
3138
3174
  let rafId = 0;
3139
3175
  const update = () => {
@@ -3222,7 +3258,7 @@ var StickyStackedCards = ({
3222
3258
  };
3223
3259
 
3224
3260
  // templates/CTABanner/CTABanner.tsx
3225
- var import_react15 = require("react");
3261
+ var import_react16 = require("react");
3226
3262
  var import_framer_motion = require("framer-motion");
3227
3263
  var import_jsx_runtime31 = require("react/jsx-runtime");
3228
3264
  var ENTRANCE = {
@@ -3470,7 +3506,7 @@ var CTABanner = ({
3470
3506
  ...props
3471
3507
  }) => {
3472
3508
  const resolvedAvatars = avatars ?? (variant === "compact" ? COMPACT_AVATAR_DATA : AVATAR_DATA);
3473
- const sectionRef = (0, import_react15.useRef)(null);
3509
+ const sectionRef = (0, import_react16.useRef)(null);
3474
3510
  const { scrollYProgress } = (0, import_framer_motion.useScroll)({
3475
3511
  target: sectionRef,
3476
3512
  offset: ["start end", "end start"]
@@ -3557,7 +3593,7 @@ var CTABanner = ({
3557
3593
  };
3558
3594
 
3559
3595
  // components/Navbar/Navbar.tsx
3560
- var import_react16 = require("react");
3596
+ var import_react17 = require("react");
3561
3597
  var import_framer_motion2 = require("framer-motion");
3562
3598
 
3563
3599
  // assets/icon-globe.svg
@@ -3795,32 +3831,32 @@ var Navbar = ({
3795
3831
  className,
3796
3832
  ...props
3797
3833
  }) => {
3798
- const [openDropdown, setOpenDropdown] = (0, import_react16.useState)(null);
3799
- const [mobileOpen, setMobileOpen] = (0, import_react16.useState)(false);
3800
- const [mobileExpanded, setMobileExpanded] = (0, import_react16.useState)(null);
3801
- const [scrolled, setScrolled] = (0, import_react16.useState)(false);
3802
- const [langDropdownOpen, setLangDropdownOpen] = (0, import_react16.useState)(false);
3803
- const [mobileLangOpen, setMobileLangOpen] = (0, import_react16.useState)(false);
3804
- const hoverTimeoutRef = (0, import_react16.useRef)(null);
3805
- const langHoverTimeoutRef = (0, import_react16.useRef)(null);
3806
- const pillAreaRef = (0, import_react16.useRef)(null);
3807
- const langBtnRef = (0, import_react16.useRef)(null);
3834
+ const [openDropdown, setOpenDropdown] = (0, import_react17.useState)(null);
3835
+ const [mobileOpen, setMobileOpen] = (0, import_react17.useState)(false);
3836
+ const [mobileExpanded, setMobileExpanded] = (0, import_react17.useState)(null);
3837
+ const [scrolled, setScrolled] = (0, import_react17.useState)(false);
3838
+ const [langDropdownOpen, setLangDropdownOpen] = (0, import_react17.useState)(false);
3839
+ const [mobileLangOpen, setMobileLangOpen] = (0, import_react17.useState)(false);
3840
+ const hoverTimeoutRef = (0, import_react17.useRef)(null);
3841
+ const langHoverTimeoutRef = (0, import_react17.useRef)(null);
3842
+ const pillAreaRef = (0, import_react17.useRef)(null);
3843
+ const langBtnRef = (0, import_react17.useRef)(null);
3808
3844
  const hasLangDropdown = Boolean(languageItems && languageItems.length > 0);
3809
3845
  const resolvedLogo = theme === "light" ? logoSrcDark ?? logoSrc : logoSrc;
3810
- (0, import_react16.useEffect)(() => {
3846
+ (0, import_react17.useEffect)(() => {
3811
3847
  if (process.env.NODE_ENV !== "production" && !logoSrcDark) {
3812
3848
  console.warn(
3813
3849
  "[Navbar] `logoSrcDark` was not provided. The condensed pill logo (shown once the page is scrolled) falls back to `logoSrc`, which is typically the light-coloured logo \u2014 it will be invisible against the pill's white/near-white scrolled background. Pass `logoSrcDark` to fix this."
3814
3850
  );
3815
3851
  }
3816
3852
  }, [logoSrcDark]);
3817
- (0, import_react16.useEffect)(() => {
3853
+ (0, import_react17.useEffect)(() => {
3818
3854
  const onScroll = () => setScrolled(window.scrollY > 0);
3819
3855
  onScroll();
3820
3856
  window.addEventListener("scroll", onScroll, { passive: true });
3821
3857
  return () => window.removeEventListener("scroll", onScroll);
3822
3858
  }, []);
3823
- (0, import_react16.useEffect)(() => {
3859
+ (0, import_react17.useEffect)(() => {
3824
3860
  const onKey = (e) => {
3825
3861
  if (e.key === "Escape") {
3826
3862
  setOpenDropdown(null);
@@ -3831,16 +3867,16 @@ var Navbar = ({
3831
3867
  document.addEventListener("keydown", onKey);
3832
3868
  return () => document.removeEventListener("keydown", onKey);
3833
3869
  }, []);
3834
- (0, import_react16.useEffect)(() => {
3870
+ (0, import_react17.useEffect)(() => {
3835
3871
  if (!mobileOpen) setMobileLangOpen(false);
3836
3872
  }, [mobileOpen]);
3837
- (0, import_react16.useEffect)(() => {
3873
+ (0, import_react17.useEffect)(() => {
3838
3874
  document.body.style.overflow = mobileOpen ? "hidden" : "";
3839
3875
  return () => {
3840
3876
  document.body.style.overflow = "";
3841
3877
  };
3842
3878
  }, [mobileOpen]);
3843
- (0, import_react16.useEffect)(() => {
3879
+ (0, import_react17.useEffect)(() => {
3844
3880
  if (!openDropdown) return;
3845
3881
  const onPointerDown = (e) => {
3846
3882
  if (pillAreaRef.current && !pillAreaRef.current.contains(e.target)) {
@@ -3850,36 +3886,36 @@ var Navbar = ({
3850
3886
  document.addEventListener("pointerdown", onPointerDown);
3851
3887
  return () => document.removeEventListener("pointerdown", onPointerDown);
3852
3888
  }, [openDropdown]);
3853
- const clearHoverTimeout = (0, import_react16.useCallback)(() => {
3889
+ const clearHoverTimeout = (0, import_react17.useCallback)(() => {
3854
3890
  if (hoverTimeoutRef.current) {
3855
3891
  clearTimeout(hoverTimeoutRef.current);
3856
3892
  hoverTimeoutRef.current = null;
3857
3893
  }
3858
3894
  }, []);
3859
- const clearLangHoverTimeout = (0, import_react16.useCallback)(() => {
3895
+ const clearLangHoverTimeout = (0, import_react17.useCallback)(() => {
3860
3896
  if (langHoverTimeoutRef.current) {
3861
3897
  clearTimeout(langHoverTimeoutRef.current);
3862
3898
  langHoverTimeoutRef.current = null;
3863
3899
  }
3864
3900
  }, []);
3865
- const handleLangEnter = (0, import_react16.useCallback)(() => {
3901
+ const handleLangEnter = (0, import_react17.useCallback)(() => {
3866
3902
  clearLangHoverTimeout();
3867
3903
  setLangDropdownOpen(true);
3868
3904
  }, [clearLangHoverTimeout]);
3869
- const handleLangLeave = (0, import_react16.useCallback)(() => {
3905
+ const handleLangLeave = (0, import_react17.useCallback)(() => {
3870
3906
  clearLangHoverTimeout();
3871
3907
  langHoverTimeoutRef.current = setTimeout(() => setLangDropdownOpen(false), 150);
3872
3908
  }, [clearLangHoverTimeout]);
3873
- const handleLangSelect = (0, import_react16.useCallback)((code) => {
3909
+ const handleLangSelect = (0, import_react17.useCallback)((code) => {
3874
3910
  setLangDropdownOpen(false);
3875
3911
  setMobileLangOpen(false);
3876
3912
  onLanguageSelect?.(code);
3877
3913
  }, [onLanguageSelect]);
3878
- const handleNavEnter = (0, import_react16.useCallback)((label) => {
3914
+ const handleNavEnter = (0, import_react17.useCallback)((label) => {
3879
3915
  clearHoverTimeout();
3880
3916
  setOpenDropdown(label);
3881
3917
  }, [clearHoverTimeout]);
3882
- const handleNavLeave = (0, import_react16.useCallback)(() => {
3918
+ const handleNavLeave = (0, import_react17.useCallback)(() => {
3883
3919
  clearHoverTimeout();
3884
3920
  hoverTimeoutRef.current = setTimeout(() => setOpenDropdown(null), 120);
3885
3921
  }, [clearHoverTimeout]);
@@ -4159,7 +4195,7 @@ var Navbar = ({
4159
4195
  };
4160
4196
 
4161
4197
  // templates/DayNightTransition/DayNightTransition.tsx
4162
- var import_react17 = require("react");
4198
+ var import_react18 = require("react");
4163
4199
  var import_framer_motion3 = require("framer-motion");
4164
4200
 
4165
4201
  // templates/DayNightTransition/webflowDayNightV2Ix.ts
@@ -4268,13 +4304,13 @@ var DayNightTransition = ({
4268
4304
  className,
4269
4305
  ...props
4270
4306
  }) => {
4271
- const wrapperRef = (0, import_react17.useRef)(null);
4272
- const dayWordRef = (0, import_react17.useRef)(null);
4273
- const [nightMarginStart, setNightMarginStart] = (0, import_react17.useState)("0px");
4274
- const [nightMarginEnd, setNightMarginEnd] = (0, import_react17.useState)("0px");
4275
- const [ixMedia, setIxMedia] = (0, import_react17.useState)("desktop");
4307
+ const wrapperRef = (0, import_react18.useRef)(null);
4308
+ const dayWordRef = (0, import_react18.useRef)(null);
4309
+ const [nightMarginStart, setNightMarginStart] = (0, import_react18.useState)("0px");
4310
+ const [nightMarginEnd, setNightMarginEnd] = (0, import_react18.useState)("0px");
4311
+ const [ixMedia, setIxMedia] = (0, import_react18.useState)("desktop");
4276
4312
  const webflowV2 = scrollPreset === "webflow-day-night-v2";
4277
- (0, import_react17.useEffect)(() => {
4313
+ (0, import_react18.useEffect)(() => {
4278
4314
  const mq = window.matchMedia("(max-width: 991px)");
4279
4315
  const sync = () => setIxMedia(mq.matches ? "mobile" : "desktop");
4280
4316
  sync();
@@ -4282,7 +4318,7 @@ var DayNightTransition = ({
4282
4318
  return () => mq.removeEventListener("change", sync);
4283
4319
  }, []);
4284
4320
  const MotionHeadline = headlineLevel === "h1" ? import_framer_motion3.motion.h1 : import_framer_motion3.motion.h2;
4285
- (0, import_react17.useLayoutEffect)(() => {
4321
+ (0, import_react18.useLayoutEffect)(() => {
4286
4322
  if (!inlineDayNightHeadline) return;
4287
4323
  const syncNightPull = () => {
4288
4324
  const dayEl = dayWordRef.current;
@@ -4603,7 +4639,7 @@ var dayNightTransitionV2Preset = {
4603
4639
  };
4604
4640
 
4605
4641
  // templates/LogoMarquee/LogoMarquee.tsx
4606
- var import_react18 = require("react");
4642
+ var import_react19 = require("react");
4607
4643
  var import_framer_motion4 = require("framer-motion");
4608
4644
  var import_jsx_runtime34 = require("react/jsx-runtime");
4609
4645
  function modWrap(min, max, v) {
@@ -4662,8 +4698,8 @@ var LogoMarquee = ({
4662
4698
  const scrollVelocity = (0, import_framer_motion4.useVelocity)(scrollY);
4663
4699
  const col1Y = (0, import_framer_motion4.useMotionValue)(0);
4664
4700
  const col2Y = (0, import_framer_motion4.useMotionValue)(0);
4665
- const col1Ref = (0, import_react18.useRef)(null);
4666
- const col2Ref = (0, import_react18.useRef)(null);
4701
+ const col1Ref = (0, import_react19.useRef)(null);
4702
+ const col2Ref = (0, import_react19.useRef)(null);
4667
4703
  (0, import_framer_motion4.useAnimationFrame)((_, delta) => {
4668
4704
  const raw = scrollVelocity.get();
4669
4705
  if (Math.abs(raw) < DEADZONE) return;
@@ -4921,16 +4957,16 @@ var DownloadBanner = ({
4921
4957
  };
4922
4958
 
4923
4959
  // templates/TextScroll/TextScroll.tsx
4924
- var import_react19 = require("react");
4960
+ var import_react20 = require("react");
4925
4961
  var import_gsap = require("gsap");
4926
4962
  var import_ScrollTrigger = require("gsap/ScrollTrigger");
4927
4963
  var import_jsx_runtime38 = require("react/jsx-runtime");
4928
4964
  import_gsap.gsap.registerPlugin(import_ScrollTrigger.ScrollTrigger);
4929
4965
  var TextScroll = ({ text, className }) => {
4930
- const sectionRef = (0, import_react19.useRef)(null);
4931
- const wordsRef = (0, import_react19.useRef)([]);
4966
+ const sectionRef = (0, import_react20.useRef)(null);
4967
+ const wordsRef = (0, import_react20.useRef)([]);
4932
4968
  const words = text.split(/\s+/).filter(Boolean);
4933
- (0, import_react19.useEffect)(() => {
4969
+ (0, import_react20.useEffect)(() => {
4934
4970
  const section = sectionRef.current;
4935
4971
  const wordEls = wordsRef.current.filter(Boolean);
4936
4972
  if (!section || wordEls.length === 0) return;
@@ -4989,7 +5025,7 @@ var TextScroll = ({ text, className }) => {
4989
5025
  };
4990
5026
 
4991
5027
  // templates/StickyMarketCards/StickyMarketCards.tsx
4992
- var import_react20 = require("react");
5028
+ var import_react21 = require("react");
4993
5029
  var import_jsx_runtime39 = require("react/jsx-runtime");
4994
5030
  var PLACEHOLDER_IMAGE3 = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69b9309379ac08e59ca8210a_1f3f555da9a5cbb13a6fe1bf0d5fe1b6_placeholder-image.webp";
4995
5031
  var StickyMarketCards = ({
@@ -4999,9 +5035,9 @@ var StickyMarketCards = ({
4999
5035
  className,
5000
5036
  ...props
5001
5037
  }) => {
5002
- const cardRefs = (0, import_react20.useRef)([]);
5003
- const cardInnerRefs = (0, import_react20.useRef)([]);
5004
- (0, import_react20.useEffect)(() => {
5038
+ const cardRefs = (0, import_react21.useRef)([]);
5039
+ const cardInnerRefs = (0, import_react21.useRef)([]);
5040
+ (0, import_react21.useEffect)(() => {
5005
5041
  if (typeof window === "undefined") return;
5006
5042
  let rafId = 0;
5007
5043
  const update = () => {
@@ -5042,7 +5078,7 @@ var StickyMarketCards = ({
5042
5078
  cancelAnimationFrame(rafId);
5043
5079
  };
5044
5080
  }, [items.length]);
5045
- (0, import_react20.useEffect)(() => {
5081
+ (0, import_react21.useEffect)(() => {
5046
5082
  if (typeof window === "undefined") return;
5047
5083
  const syncHeights = () => {
5048
5084
  const inners = cardInnerRefs.current.filter(Boolean);
@@ -5143,7 +5179,7 @@ var StickyMarketCards = ({
5143
5179
  };
5144
5180
 
5145
5181
  // templates/Table/Table.tsx
5146
- var import_react21 = require("react");
5182
+ var import_react22 = require("react");
5147
5183
  var import_jsx_runtime40 = require("react/jsx-runtime");
5148
5184
  var InfoIcon = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", className, children: [
5149
5185
  /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "1.5" }),
@@ -5161,11 +5197,11 @@ var Table = ({
5161
5197
  className,
5162
5198
  ...props
5163
5199
  }) => {
5164
- const [search, setSearch] = (0, import_react21.useState)("");
5165
- const [page, setPage] = (0, import_react21.useState)(1);
5166
- const [tooltip, setTooltip] = (0, import_react21.useState)({ visible: false, heading: "", description: "", x: 0, y: 0, arrowOffset: 0 });
5200
+ const [search, setSearch] = (0, import_react22.useState)("");
5201
+ const [page, setPage] = (0, import_react22.useState)(1);
5202
+ const [tooltip, setTooltip] = (0, import_react22.useState)({ visible: false, heading: "", description: "", x: 0, y: 0, arrowOffset: 0 });
5167
5203
  const mainKey = mainColumnKey ?? columns.find((c) => c.width === "main")?.key ?? columns[0]?.key;
5168
- const filtered = (0, import_react21.useMemo)(() => {
5204
+ const filtered = (0, import_react22.useMemo)(() => {
5169
5205
  const q = search.trim().toLowerCase();
5170
5206
  if (!q) return rows;
5171
5207
  return rows.filter(
@@ -5394,7 +5430,7 @@ var DynamicTable = ({
5394
5430
  };
5395
5431
 
5396
5432
  // templates/Leaders/Leaders.tsx
5397
- var import_react22 = require("react");
5433
+ var import_react23 = require("react");
5398
5434
  var import_jsx_runtime42 = require("react/jsx-runtime");
5399
5435
  var ChevronDownIcon4 = () => /* @__PURE__ */ (0, import_jsx_runtime42.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_runtime42.jsx)("path", { d: "M4 6L8 10L12 6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
5400
5436
  var ChevronUpIcon = () => /* @__PURE__ */ (0, import_jsx_runtime42.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_runtime42.jsx)("path", { d: "M12 10L8 6L4 10", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
@@ -5436,7 +5472,7 @@ var AvatarGrid = ({
5436
5472
  className,
5437
5473
  ...props
5438
5474
  }) => {
5439
- const [isExpanded, setIsExpanded] = (0, import_react22.useState)(false);
5475
+ const [isExpanded, setIsExpanded] = (0, import_react23.useState)(false);
5440
5476
  const hasMore = items.length > initialVisibleCount;
5441
5477
  const visibleItems = items.slice(0, initialVisibleCount);
5442
5478
  const extraItems = items.slice(initialVisibleCount);
@@ -5612,7 +5648,7 @@ var ImageBanner = ({
5612
5648
  };
5613
5649
 
5614
5650
  // templates/Testimonial/Testimonial.tsx
5615
- var import_react23 = require("react");
5651
+ var import_react24 = require("react");
5616
5652
 
5617
5653
  // assets/quote-left.webp
5618
5654
  var quote_left_default = "data:image/webp;base64,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";
@@ -5626,7 +5662,7 @@ var trustpilot_rating_badge_default = "data:image/png;base64,iVBORw0KGgoAAAANSUh
5626
5662
  // templates/Testimonial/Testimonial.tsx
5627
5663
  var import_jsx_runtime44 = require("react/jsx-runtime");
5628
5664
  var StarCell = ({ fill }) => {
5629
- const clipId = (0, import_react23.useId)();
5665
+ const clipId = (0, import_react24.useId)();
5630
5666
  const clamped = Math.max(0, Math.min(1, fill));
5631
5667
  return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
5632
5668
  "svg",
@@ -5690,15 +5726,15 @@ var TrustpilotTestimonial = ({
5690
5726
  trustpilotScore = 4.5,
5691
5727
  ...props
5692
5728
  }) => {
5693
- const trackRef = (0, import_react23.useRef)(null);
5694
- const [canPrev, setCanPrev] = (0, import_react23.useState)(false);
5695
- const [canNext, setCanNext] = (0, import_react23.useState)(true);
5696
- const syncScrollState = (0, import_react23.useCallback)(() => {
5729
+ const trackRef = (0, import_react24.useRef)(null);
5730
+ const [canPrev, setCanPrev] = (0, import_react24.useState)(false);
5731
+ const [canNext, setCanNext] = (0, import_react24.useState)(true);
5732
+ const syncScrollState = (0, import_react24.useCallback)(() => {
5697
5733
  const next = readScrollState(trackRef.current);
5698
5734
  setCanPrev(next.canPrev);
5699
5735
  setCanNext(next.canNext);
5700
5736
  }, []);
5701
- (0, import_react23.useEffect)(() => {
5737
+ (0, import_react24.useEffect)(() => {
5702
5738
  const el = trackRef.current;
5703
5739
  if (!el) return;
5704
5740
  syncScrollState();
@@ -5802,16 +5838,16 @@ var DefaultTestimonial = ({
5802
5838
  className,
5803
5839
  ...props
5804
5840
  }) => {
5805
- const [activeIndex, setActiveIndex] = (0, import_react23.useState)(0);
5806
- const [phase, setPhase] = (0, import_react23.useState)("idle");
5807
- const pendingIndex = (0, import_react23.useRef)(null);
5808
- const autoRef = (0, import_react23.useRef)(null);
5841
+ const [activeIndex, setActiveIndex] = (0, import_react24.useState)(0);
5842
+ const [phase, setPhase] = (0, import_react24.useState)("idle");
5843
+ const pendingIndex = (0, import_react24.useRef)(null);
5844
+ const autoRef = (0, import_react24.useRef)(null);
5809
5845
  const goTo = (next) => {
5810
5846
  if (next === activeIndex || phase !== "idle") return;
5811
5847
  pendingIndex.current = next;
5812
5848
  setPhase("exiting");
5813
5849
  };
5814
- (0, import_react23.useEffect)(() => {
5850
+ (0, import_react24.useEffect)(() => {
5815
5851
  if (phase === "exiting") {
5816
5852
  const t = setTimeout(() => {
5817
5853
  setActiveIndex(pendingIndex.current ?? activeIndex);
@@ -5820,7 +5856,7 @@ var DefaultTestimonial = ({
5820
5856
  return () => clearTimeout(t);
5821
5857
  }
5822
5858
  }, [phase, activeIndex]);
5823
- (0, import_react23.useEffect)(() => {
5859
+ (0, import_react24.useEffect)(() => {
5824
5860
  if (items.length <= 1) return;
5825
5861
  autoRef.current = setTimeout(() => {
5826
5862
  const next = (activeIndex + 1) % items.length;
@@ -6195,7 +6231,7 @@ var ArticleSection = ({
6195
6231
  };
6196
6232
 
6197
6233
  // templates/CoralBanner/CoralBanner.tsx
6198
- var import_react24 = require("react");
6234
+ var import_react25 = require("react");
6199
6235
  var import_jsx_runtime47 = require("react/jsx-runtime");
6200
6236
  var DEFAULT_SLIDES = [
6201
6237
  {
@@ -6309,10 +6345,10 @@ var CoralBanner = ({
6309
6345
  const resolvedSlides = slides && slides.length > 0 ? slides : DEFAULT_SLIDES;
6310
6346
  const count = resolvedSlides.length;
6311
6347
  const isCarousel = variant === "carousel" && count > 1;
6312
- const [activeIndex, setActiveIndex] = (0, import_react24.useState)(0);
6313
- const autoplayTimer = (0, import_react24.useRef)(null);
6314
- const dragState = (0, import_react24.useRef)(null);
6315
- const goTo = (0, import_react24.useCallback)(
6348
+ const [activeIndex, setActiveIndex] = (0, import_react25.useState)(0);
6349
+ const autoplayTimer = (0, import_react25.useRef)(null);
6350
+ const dragState = (0, import_react25.useRef)(null);
6351
+ const goTo = (0, import_react25.useCallback)(
6316
6352
  (index) => {
6317
6353
  if (count <= 1) return;
6318
6354
  const next = infinite ? (index % count + count) % count : Math.max(0, Math.min(index, count - 1));
@@ -6320,12 +6356,12 @@ var CoralBanner = ({
6320
6356
  },
6321
6357
  [count, infinite]
6322
6358
  );
6323
- const goNext = (0, import_react24.useCallback)(() => goTo(activeIndex + 1), [activeIndex, goTo]);
6324
- const goPrev = (0, import_react24.useCallback)(() => goTo(activeIndex - 1), [activeIndex, goTo]);
6359
+ const goNext = (0, import_react25.useCallback)(() => goTo(activeIndex + 1), [activeIndex, goTo]);
6360
+ const goPrev = (0, import_react25.useCallback)(() => goTo(activeIndex - 1), [activeIndex, goTo]);
6325
6361
  const resetAutoplay = () => {
6326
6362
  if (autoplayTimer.current) clearTimeout(autoplayTimer.current);
6327
6363
  };
6328
- (0, import_react24.useEffect)(() => {
6364
+ (0, import_react25.useEffect)(() => {
6329
6365
  if (!isCarousel || !autoplay) return;
6330
6366
  autoplayTimer.current = setTimeout(() => {
6331
6367
  goTo(activeIndex + 1);
@@ -6600,7 +6636,7 @@ var FeatureBlog = ({
6600
6636
  };
6601
6637
 
6602
6638
  // templates/FeatureBlogCategories/FeatureBlogCategories.tsx
6603
- var import_react25 = require("react");
6639
+ var import_react26 = require("react");
6604
6640
  var import_jsx_runtime50 = require("react/jsx-runtime");
6605
6641
  var isExternalUrl = (href) => Boolean(href && /^https?:\/\//i.test(href));
6606
6642
  var FEATURE_BLOG_CATEGORIES_TEXT_CONTENT = {
@@ -6664,20 +6700,20 @@ var FeatureBlogCategories = ({
6664
6700
  className,
6665
6701
  ...props
6666
6702
  }) => {
6667
- const [search, setSearch] = (0, import_react25.useState)("");
6668
- const [internalActiveId, setInternalActiveId] = (0, import_react25.useState)(defaultActiveCategoryId ?? allCategoryId);
6703
+ const [search, setSearch] = (0, import_react26.useState)("");
6704
+ const [internalActiveId, setInternalActiveId] = (0, import_react26.useState)(defaultActiveCategoryId ?? allCategoryId);
6669
6705
  const isControlled = activeCategoryId !== void 0;
6670
6706
  const activeId = isControlled ? activeCategoryId : internalActiveId;
6671
- const tabs = (0, import_react25.useMemo)(
6707
+ const tabs = (0, import_react26.useMemo)(
6672
6708
  () => [{ id: allCategoryId, label: allCategoryLabel }, ...categories],
6673
6709
  [allCategoryId, allCategoryLabel, categories]
6674
6710
  );
6675
- const categoryLabelById = (0, import_react25.useMemo)(() => {
6711
+ const categoryLabelById = (0, import_react26.useMemo)(() => {
6676
6712
  const map = /* @__PURE__ */ new Map();
6677
6713
  categories.forEach((category) => map.set(category.id, category.label));
6678
6714
  return map;
6679
6715
  }, [categories]);
6680
- const filteredPosts = (0, import_react25.useMemo)(() => {
6716
+ const filteredPosts = (0, import_react26.useMemo)(() => {
6681
6717
  const query = search.trim().toLowerCase();
6682
6718
  return posts.filter((post) => {
6683
6719
  const matchesCategory = activeId === allCategoryId || post.category === activeId;
@@ -6773,7 +6809,7 @@ var HelpCentreCategories = ({
6773
6809
  };
6774
6810
 
6775
6811
  // templates/HelpCentreSubCategories/HelpCentreSubCategories.tsx
6776
- var import_react26 = require("react");
6812
+ var import_react27 = require("react");
6777
6813
  var import_jsx_runtime52 = require("react/jsx-runtime");
6778
6814
  var externalLinkRel4 = (href) => href && /^https?:\/\//i.test(href) ? "noopener noreferrer" : void 0;
6779
6815
  var QuestionCard = ({ item }) => {
@@ -6790,8 +6826,8 @@ var HelpCentreSubCategories = ({
6790
6826
  noResultsText = 'No results found for "{query}"',
6791
6827
  onSearchChange
6792
6828
  }) => {
6793
- const [search, setSearch] = (0, import_react26.useState)("");
6794
- const filtered = (0, import_react26.useMemo)(() => {
6829
+ const [search, setSearch] = (0, import_react27.useState)("");
6830
+ const filtered = (0, import_react27.useMemo)(() => {
6795
6831
  const q = search.trim().toLowerCase();
6796
6832
  if (!q) return items;
6797
6833
  return items.filter((item) => item.question.toLowerCase().includes(q));
@@ -6822,7 +6858,7 @@ var HelpCentreSubCategories = ({
6822
6858
  };
6823
6859
 
6824
6860
  // templates/HelpCenterPage/HelpCenterPage.tsx
6825
- var import_react27 = require("react");
6861
+ var import_react28 = require("react");
6826
6862
  var import_jsx_runtime53 = require("react/jsx-runtime");
6827
6863
  var externalLinkRel5 = (href) => href && /^https?:\/\//i.test(href) ? "noopener noreferrer" : void 0;
6828
6864
  var ChevronDownIcon5 = () => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("svg", { "aria-hidden": "true", fill: "none", height: "16", viewBox: "0 0 16 16", width: "16", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("path", { d: "M4 6l4 4 4-4", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5" }) });
@@ -6888,13 +6924,13 @@ var HelpCenterPage = ({
6888
6924
  articlesSheetTitle = "Articles in this section",
6889
6925
  className
6890
6926
  }) => {
6891
- const [search, setSearch] = (0, import_react27.useState)("");
6892
- const [internalActiveId, setInternalActiveId] = (0, import_react27.useState)(defaultActiveQuestionId ?? questions[0]?.id);
6893
- const [sheetOpen, setSheetOpen] = (0, import_react27.useState)(false);
6927
+ const [search, setSearch] = (0, import_react28.useState)("");
6928
+ const [internalActiveId, setInternalActiveId] = (0, import_react28.useState)(defaultActiveQuestionId ?? questions[0]?.id);
6929
+ const [sheetOpen, setSheetOpen] = (0, import_react28.useState)(false);
6894
6930
  const isControlled = activeQuestionId !== void 0;
6895
6931
  const activeId = isControlled ? activeQuestionId : internalActiveId;
6896
6932
  const activeItem = questions.find((item) => item.id === activeId);
6897
- const filtered = (0, import_react27.useMemo)(() => {
6933
+ const filtered = (0, import_react28.useMemo)(() => {
6898
6934
  const q = search.trim().toLowerCase();
6899
6935
  if (!q) return questions;
6900
6936
  return questions.filter((item) => item.question.toLowerCase().includes(q));
@@ -6957,7 +6993,7 @@ var HelpCenterPage = ({
6957
6993
  };
6958
6994
 
6959
6995
  // templates/FeatureBlogPage/FeatureBlogPage.tsx
6960
- var import_react28 = require("react");
6996
+ var import_react29 = require("react");
6961
6997
 
6962
6998
  // assets/share-link.png
6963
6999
  var share_link_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABYklEQVR4AezVgU3DMBAFUMRAzMEQzMEQzMEQzMFE+FX5kuNGF4cgIVWp8us73/n/76vaPj/98+sycE3gmsBDTuCl/bQELayfv5zAW5P6avgYwEzb2n7OGBiJGYjK9xLoYWhJ75ffGCCUm2bF/N7e4HVZxS28Pc7cgvHtiAG3ITiSZd+tIRrizyXRs4TrZdYAgowyxG4IcqyjMXupOS+/w4wBh3txoojsqUVky0D20uPcCnsGCBByCEnEe2JjVtOj3wpiEKcuXmHPwJZ4SBEhloM8kPdnmUxttVYGeoLcfHV4SJiBUbw8WxkI/+ieSGo+CoL29IkPGa8MIIvQuBKz1xvQf0gcQWXArfQgtvZgoK8zAnrUyrFrCmYMIAZnmBEDEWAECAd6p1AZ6MkI+hU0YjEQIMwE9P1qU6gMIAgpITlkT3waewYIEHRDfzIgB7XTmDFwWqQiuAxcE3j8CVTfALUfAAAA//85/ClxAAAABklEQVQDABFpTkF24Li2AAAAAElFTkSuQmCC";
@@ -7014,7 +7050,7 @@ var TocCard = ({
7014
7050
  idSuffix,
7015
7051
  collapsible
7016
7052
  }) => {
7017
- const [open, setOpen] = (0, import_react28.useState)(defaultOpen);
7053
+ const [open, setOpen] = (0, import_react29.useState)(defaultOpen);
7018
7054
  const panelId = `fbp-toc-panel-${idSuffix}`;
7019
7055
  const isOpen = collapsible ? open : true;
7020
7056
  const list = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("ol", { className: "fbp-tocList", id: panelId, children: headings.map((heading) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("li", { className: "fbp-tocItem", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
@@ -7056,7 +7092,7 @@ var ShareRow = ({
7056
7092
  onShare,
7057
7093
  copiedLabel
7058
7094
  }) => {
7059
- const [copied, setCopied] = (0, import_react28.useState)(false);
7095
+ const [copied, setCopied] = (0, import_react29.useState)(false);
7060
7096
  const handleCopy = async () => {
7061
7097
  onShare?.("copy");
7062
7098
  try {
@@ -7148,7 +7184,7 @@ var FeatureBlogPage = ({
7148
7184
  copiedLabel = "Copied!",
7149
7185
  className
7150
7186
  }) => {
7151
- const headingIds = (0, import_react28.useMemo)(() => {
7187
+ const headingIds = (0, import_react29.useMemo)(() => {
7152
7188
  const seen = /* @__PURE__ */ new Map();
7153
7189
  const ids = /* @__PURE__ */ new Map();
7154
7190
  content.forEach((block, i) => {
@@ -7160,14 +7196,14 @@ var FeatureBlogPage = ({
7160
7196
  });
7161
7197
  return ids;
7162
7198
  }, [content]);
7163
- const headings = (0, import_react28.useMemo)(
7199
+ const headings = (0, import_react29.useMemo)(
7164
7200
  () => content.map((block, i) => ({ block, i })).filter(
7165
7201
  ({ block }) => block.type === "steps" || block.type === "heading" && (block.level ?? 2) === 2
7166
7202
  ).map(({ block, i }) => ({ id: headingIds.get(i), text: block.text ?? "" })),
7167
7203
  [content, headingIds]
7168
7204
  );
7169
- const [activeId, setActiveId] = (0, import_react28.useState)(null);
7170
- (0, import_react28.useEffect)(() => {
7205
+ const [activeId, setActiveId] = (0, import_react29.useState)(null);
7206
+ (0, import_react29.useEffect)(() => {
7171
7207
  if (typeof IntersectionObserver === "undefined" || headings.length === 0) return;
7172
7208
  const elements = headings.map((heading) => document.getElementById(heading.id)).filter((el) => el !== null);
7173
7209
  if (elements.length === 0) return;
@@ -7272,7 +7308,7 @@ var FeatureBlogPage = ({
7272
7308
  };
7273
7309
 
7274
7310
  // templates/ParallaxBanner/ParallaxBanner.tsx
7275
- var import_react29 = require("react");
7311
+ var import_react30 = require("react");
7276
7312
  var import_framer_motion5 = require("framer-motion");
7277
7313
  var import_jsx_runtime55 = require("react/jsx-runtime");
7278
7314
  var PARALLAX_BANNER_TEXT_CONTENT = {
@@ -7315,7 +7351,7 @@ var ParallaxBanner = ({
7315
7351
  className,
7316
7352
  ...props
7317
7353
  }) => {
7318
- const sectionRef = (0, import_react29.useRef)(null);
7354
+ const sectionRef = (0, import_react30.useRef)(null);
7319
7355
  const prefersReducedMotion = (0, import_framer_motion5.useReducedMotion)();
7320
7356
  const parallaxActive = enableParallax && !prefersReducedMotion;
7321
7357
  const showCards = variant !== "banner-only" && cards.length > 0;
@@ -7381,7 +7417,7 @@ var ParallaxBanner = ({
7381
7417
  };
7382
7418
 
7383
7419
  // templates/TradingCalculator/TradingCalculator.tsx
7384
- var import_react30 = require("react");
7420
+ var import_react31 = require("react");
7385
7421
  var import_jsx_runtime56 = require("react/jsx-runtime");
7386
7422
  var DEFAULT_SYMBOLS_ENDPOINT = "https://deriv-static-pricingfeedv2.firebaseio.com/n8n/row/prod/dynamic_trading_specs.json";
7387
7423
  var DEFAULT_EXCHANGE_RATE_WS_URL = "wss://ws.derivws.com/websockets/v3?app_id=1089";
@@ -7418,13 +7454,13 @@ function computeResults(symbol, volumeInLots, assetPrice, rates) {
7418
7454
  return { marginRequired, tradeVolume, pipValue, swapChargeLong, swapChargeShort };
7419
7455
  }
7420
7456
  function useExchangeRates(wsUrl) {
7421
- const socketRef = (0, import_react30.useRef)(null);
7422
- const reqIdRef = (0, import_react30.useRef)(1);
7423
- const pendingRef = (0, import_react30.useRef)(
7457
+ const socketRef = (0, import_react31.useRef)(null);
7458
+ const reqIdRef = (0, import_react31.useRef)(1);
7459
+ const pendingRef = (0, import_react31.useRef)(
7424
7460
  /* @__PURE__ */ new Map()
7425
7461
  );
7426
- const cacheRef = (0, import_react30.useRef)(/* @__PURE__ */ new Map());
7427
- (0, import_react30.useEffect)(() => {
7462
+ const cacheRef = (0, import_react31.useRef)(/* @__PURE__ */ new Map());
7463
+ (0, import_react31.useEffect)(() => {
7428
7464
  const pending = pendingRef.current;
7429
7465
  return () => {
7430
7466
  socketRef.current?.close();
@@ -7433,7 +7469,7 @@ function useExchangeRates(wsUrl) {
7433
7469
  pending.clear();
7434
7470
  };
7435
7471
  }, [wsUrl]);
7436
- const getRates = (0, import_react30.useCallback)(
7472
+ const getRates = (0, import_react31.useCallback)(
7437
7473
  (baseCurrency) => {
7438
7474
  if (!wsUrl) return Promise.reject(new Error("Live exchange rate conversion is disabled"));
7439
7475
  const cached = cacheRef.current.get(baseCurrency);
@@ -7495,11 +7531,11 @@ function useExchangeRates(wsUrl) {
7495
7531
  return getRates;
7496
7532
  }
7497
7533
  function useSymbols(symbolsProp, endpoint) {
7498
- const [state, setState] = (0, import_react30.useState)(
7534
+ const [state, setState] = (0, import_react31.useState)(
7499
7535
  symbolsProp ? { status: "ready", data: symbolsProp } : { status: "loading" }
7500
7536
  );
7501
- const [retryToken, setRetryToken] = (0, import_react30.useState)(0);
7502
- (0, import_react30.useEffect)(() => {
7537
+ const [retryToken, setRetryToken] = (0, import_react31.useState)(0);
7538
+ (0, import_react31.useEffect)(() => {
7503
7539
  if (symbolsProp) {
7504
7540
  setState({ status: "ready", data: symbolsProp });
7505
7541
  return;
@@ -7521,7 +7557,7 @@ function useSymbols(symbolsProp, endpoint) {
7521
7557
  cancelled = true;
7522
7558
  };
7523
7559
  }, [symbolsProp, endpoint, retryToken]);
7524
- const retry = (0, import_react30.useCallback)(() => setRetryToken((n) => n + 1), []);
7560
+ const retry = (0, import_react31.useCallback)(() => setRetryToken((n) => n + 1), []);
7525
7561
  return [state, retry];
7526
7562
  }
7527
7563
  var ErrorIcon = () => /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
@@ -7543,24 +7579,24 @@ function groupByAssetClass(symbols) {
7543
7579
  return [...groups.entries()];
7544
7580
  }
7545
7581
  var SymbolCombobox = ({ symbolsState, onRetry, selected, onSelect, error, inputId }) => {
7546
- const [query, setQuery] = (0, import_react30.useState)("");
7547
- const [isOpen, setIsOpen] = (0, import_react30.useState)(false);
7548
- const [activeIndex, setActiveIndex] = (0, import_react30.useState)(-1);
7549
- const wrapperRef = (0, import_react30.useRef)(null);
7550
- const listboxId = (0, import_react30.useId)();
7582
+ const [query, setQuery] = (0, import_react31.useState)("");
7583
+ const [isOpen, setIsOpen] = (0, import_react31.useState)(false);
7584
+ const [activeIndex, setActiveIndex] = (0, import_react31.useState)(-1);
7585
+ const wrapperRef = (0, import_react31.useRef)(null);
7586
+ const listboxId = (0, import_react31.useId)();
7551
7587
  const isLoading = symbolsState.status === "loading";
7552
7588
  const isError = symbolsState.status === "error";
7553
7589
  const allSymbols = symbolsState.status === "ready" ? symbolsState.data : [];
7554
- const filtered = (0, import_react30.useMemo)(() => {
7590
+ const filtered = (0, import_react31.useMemo)(() => {
7555
7591
  const term = query.trim().toLowerCase();
7556
7592
  if (!term) return allSymbols;
7557
7593
  return allSymbols.filter(
7558
7594
  (item) => item.symbol.toLowerCase().includes(term) || item.description.toLowerCase().includes(term) || item.asset_class.toLowerCase().includes(term)
7559
7595
  );
7560
7596
  }, [allSymbols, query]);
7561
- const grouped = (0, import_react30.useMemo)(() => groupByAssetClass(filtered), [filtered]);
7562
- const flatOptions = (0, import_react30.useMemo)(() => grouped.flatMap(([, items]) => items), [grouped]);
7563
- (0, import_react30.useEffect)(() => {
7597
+ const grouped = (0, import_react31.useMemo)(() => groupByAssetClass(filtered), [filtered]);
7598
+ const flatOptions = (0, import_react31.useMemo)(() => grouped.flatMap(([, items]) => items), [grouped]);
7599
+ (0, import_react31.useEffect)(() => {
7564
7600
  if (!isOpen) return;
7565
7601
  const handlePointerDown = (event) => {
7566
7602
  if (wrapperRef.current && !wrapperRef.current.contains(event.target)) {
@@ -7702,15 +7738,15 @@ var TradingCalculator = ({
7702
7738
  const showTradeVolume = variant === "main";
7703
7739
  const [symbolsState, retrySymbols] = useSymbols(symbolsProp, symbolsEndpoint);
7704
7740
  const getRates = useExchangeRates(exchangeRateWsUrl);
7705
- const [selectedSymbol, setSelectedSymbol] = (0, import_react30.useState)(null);
7706
- const [volumeInLots, setVolumeInLots] = (0, import_react30.useState)("");
7707
- const [assetPrice, setAssetPrice] = (0, import_react30.useState)("");
7708
- const [errors, setErrors] = (0, import_react30.useState)({});
7709
- const [results, setResults] = (0, import_react30.useState)(null);
7710
- const [isCalculating, setIsCalculating] = (0, import_react30.useState)(false);
7711
- const [calcError, setCalcError] = (0, import_react30.useState)(null);
7712
- const didPreselect = (0, import_react30.useRef)(false);
7713
- (0, import_react30.useEffect)(() => {
7741
+ const [selectedSymbol, setSelectedSymbol] = (0, import_react31.useState)(null);
7742
+ const [volumeInLots, setVolumeInLots] = (0, import_react31.useState)("");
7743
+ const [assetPrice, setAssetPrice] = (0, import_react31.useState)("");
7744
+ const [errors, setErrors] = (0, import_react31.useState)({});
7745
+ const [results, setResults] = (0, import_react31.useState)(null);
7746
+ const [isCalculating, setIsCalculating] = (0, import_react31.useState)(false);
7747
+ const [calcError, setCalcError] = (0, import_react31.useState)(null);
7748
+ const didPreselect = (0, import_react31.useRef)(false);
7749
+ (0, import_react31.useEffect)(() => {
7714
7750
  if (didPreselect.current || !defaultSymbol || symbolsState.status !== "ready") return;
7715
7751
  const match = symbolsState.data.find((item) => item.symbol === defaultSymbol);
7716
7752
  if (match) {
@@ -7764,9 +7800,9 @@ var TradingCalculator = ({
7764
7800
  setIsCalculating(false);
7765
7801
  }
7766
7802
  };
7767
- const symbolInputId = (0, import_react30.useId)();
7768
- const volumeInputId = (0, import_react30.useId)();
7769
- const priceInputId = (0, import_react30.useId)();
7803
+ const symbolInputId = (0, import_react31.useId)();
7804
+ const volumeInputId = (0, import_react31.useId)();
7805
+ const priceInputId = (0, import_react31.useId)();
7770
7806
  return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("section", { className: ["tcalc-section", className ?? ""].filter(Boolean).join(" "), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "tcalc-container", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "tcalc-card", children: [
7771
7807
  /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "tcalc-column", children: [
7772
7808
  /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("h3", { className: "tcalc-panelTitle", children: "Calculator" }),
@@ -7914,7 +7950,7 @@ var TradingCalculator = ({
7914
7950
  };
7915
7951
 
7916
7952
  // templates/TradingCalculatorHowTo/TradingCalculatorHowTo.tsx
7917
- var import_react31 = require("react");
7953
+ var import_react32 = require("react");
7918
7954
  var import_jsx_runtime57 = require("react/jsx-runtime");
7919
7955
  var MARGIN_CONTENT = {
7920
7956
  title: "How to calculate margin requirements",
@@ -8065,7 +8101,7 @@ var SWAP_TABS = [
8065
8101
  { id: "percentage", label: "Swap calculation (In percentage)" }
8066
8102
  ];
8067
8103
  var swapModeForVariant = (variant) => variant === "swap-percentage" ? "percentage" : "points";
8068
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react31.useLayoutEffect : import_react31.useEffect;
8104
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react32.useLayoutEffect : import_react32.useEffect;
8069
8105
  var FormulaBlockView = ({ block }) => {
8070
8106
  if (block.type === "footnote") {
8071
8107
  return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "tchow-footnote", children: block.content });
@@ -8087,9 +8123,9 @@ var ConnectorArrow = () => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("svg",
8087
8123
  /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("path", { d: "M1.4 5.6L4 8.6L6.6 5.6", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round" })
8088
8124
  ] });
8089
8125
  var CalculationStrip = ({ tokens }) => {
8090
- const wrapperRef = (0, import_react31.useRef)(null);
8091
- const stripRef = (0, import_react31.useRef)(null);
8092
- const [fit, setFit] = (0, import_react31.useState)({ scale: 1, naturalHeight: 0 });
8126
+ const wrapperRef = (0, import_react32.useRef)(null);
8127
+ const stripRef = (0, import_react32.useRef)(null);
8128
+ const [fit, setFit] = (0, import_react32.useState)({ scale: 1, naturalHeight: 0 });
8093
8129
  useIsomorphicLayoutEffect(() => {
8094
8130
  const wrapper = wrapperRef.current;
8095
8131
  const strip = stripRef.current;
@@ -8126,7 +8162,7 @@ var CalculationStrip = ({ tokens }) => {
8126
8162
  style: isShrunk ? { transform: `scale(${fit.scale})` } : void 0,
8127
8163
  role: "img",
8128
8164
  "aria-label": tokens.map((token) => token.text).join(" "),
8129
- children: tokens.map((token, i) => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react31.Fragment, { children: [
8165
+ children: tokens.map((token, i) => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react32.Fragment, { children: [
8130
8166
  /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
8131
8167
  "span",
8132
8168
  {
@@ -8171,8 +8207,8 @@ var TradingCalculatorHowTo = ({
8171
8207
  ...props
8172
8208
  }) => {
8173
8209
  const isSwap = variant === "swap-points" || variant === "swap-percentage";
8174
- const [swapTab, setSwapTab] = (0, import_react31.useState)(() => swapModeForVariant(variant));
8175
- (0, import_react31.useEffect)(() => {
8210
+ const [swapTab, setSwapTab] = (0, import_react32.useState)(() => swapModeForVariant(variant));
8211
+ (0, import_react32.useEffect)(() => {
8176
8212
  setSwapTab(swapModeForVariant(variant));
8177
8213
  }, [variant]);
8178
8214
  const content = variant === "pip" ? PIP_CONTENT : isSwap ? swapTab === "percentage" ? SWAP_PERCENTAGE_CONTENT : SWAP_POINTS_CONTENT : MARGIN_CONTENT;
@@ -8210,7 +8246,7 @@ var TradingCalculatorHowTo = ({
8210
8246
  };
8211
8247
 
8212
8248
  // templates/FeatureOffices/FeatureOffices.tsx
8213
- var import_react32 = require("react");
8249
+ var import_react33 = require("react");
8214
8250
  var import_jsx_runtime58 = require("react/jsx-runtime");
8215
8251
  var isExternalUrl2 = (href) => Boolean(href && /^https?:\/\//i.test(href));
8216
8252
  var FEATURE_OFFICES_TEXT_CONTENT = {
@@ -8264,12 +8300,12 @@ var FeatureOffices = ({
8264
8300
  className,
8265
8301
  ...props
8266
8302
  }) => {
8267
- const [internalActiveId, setInternalActiveId] = (0, import_react32.useState)(
8303
+ const [internalActiveId, setInternalActiveId] = (0, import_react33.useState)(
8268
8304
  defaultActiveRegionId ?? regions[0]?.id
8269
8305
  );
8270
8306
  const isControlled = activeRegionId !== void 0;
8271
8307
  const activeId = isControlled ? activeRegionId : internalActiveId;
8272
- const filteredOffices = (0, import_react32.useMemo)(
8308
+ const filteredOffices = (0, import_react33.useMemo)(
8273
8309
  () => offices.filter((office) => office.region === activeId),
8274
8310
  [offices, activeId]
8275
8311
  );
@@ -8525,10 +8561,1155 @@ var ResourceBanner = ({
8525
8561
  }) })
8526
8562
  ] }) }) }) });
8527
8563
  };
8564
+
8565
+ // templates/OptionsTypes/OptionsTypes.tsx
8566
+ var import_react34 = require("react");
8567
+ var import_jsx_runtime63 = require("react/jsx-runtime");
8568
+ var OPTIONS_TYPES_PLACEHOLDER_ITEMS = [
8569
+ {
8570
+ id: "option-type",
8571
+ title: "Option type",
8572
+ description: "Explain how this option type works and when a customer might use it.",
8573
+ animations: [],
8574
+ markets: [{ label: "Market" }],
8575
+ platforms: [{ label: "Platform" }]
8576
+ }
8577
+ ];
8578
+ function safeHref(value) {
8579
+ if (!value) return null;
8580
+ if (value.startsWith("/") && !value.startsWith("//")) return value;
8581
+ try {
8582
+ const url = new URL(value);
8583
+ return url.protocol === "https:" ? value : null;
8584
+ } catch {
8585
+ return null;
8586
+ }
8587
+ }
8588
+ function safeLottieSrc(value) {
8589
+ const href = safeHref(value);
8590
+ if (!href) return null;
8591
+ try {
8592
+ const pathname = href.startsWith("/") ? href : new URL(href).pathname;
8593
+ return pathname.toLowerCase().endsWith(".lottie") ? href : null;
8594
+ } catch {
8595
+ return null;
8596
+ }
8597
+ }
8598
+ var iconPaths = {
8599
+ forex: [
8600
+ "M9.7002 10H7.7002V8H13.2002C14.0302 8 14.7002 7.33 14.7002 6.5V5.5C14.7002 4.67 14.0302 4 13.2002 4H6.2002C4.8202 4 3.7002 5.12 3.7002 6.5V18.5C3.7002 19.33 4.3702 20 5.2002 20H6.2002C7.0302 20 7.7002 19.33 7.7002 18.5V14H9.7002C10.8002 14 11.7002 13.1 11.7002 12C11.7002 10.9 10.8002 10 9.7002 10ZM9.7002 13H7.2002C6.9202 13 6.7002 13.22 6.7002 13.5V18.5C6.7002 18.78 6.4802 19 6.2002 19H5.2002C4.9202 19 4.7002 18.78 4.7002 18.5V6.5C4.7002 5.67 5.3702 5 6.2002 5H13.2002C13.4802 5 13.7002 5.22 13.7002 5.5V6.5C13.7002 6.78 13.4802 7 13.2002 7H7.2002C6.9202 7 6.7002 7.22 6.7002 7.5V10.5C6.7002 10.78 6.9202 11 7.2002 11H9.7002C10.2502 11 10.7002 11.45 10.7002 12C10.7002 12.55 10.2502 13 9.7002 13Z",
8601
+ "M20.9902 9.72C20.7202 9.27 20.2402 9 19.7102 9H18.5002C17.9402 9 17.4302 9.31 17.1702 9.81L16.9202 10.3L16.6702 9.81C16.4102 9.31 15.9002 9 15.3402 9H14.1302C13.6002 9 13.1202 9.27 12.8502 9.72C12.5802 10.17 12.5602 10.72 12.8002 11.19L14.6302 14.71L13.0202 17.8C12.7802 18.27 12.7902 18.82 13.0702 19.27C13.3502 19.72 13.8202 19.99 14.3502 19.99H15.5602C16.1202 19.99 16.6302 19.68 16.8902 19.18L16.9202 19.12L16.9502 19.18C17.2102 19.68 17.7202 19.99 18.2802 19.99H19.4902C20.0202 19.99 20.5002 19.72 20.7702 19.27C21.0402 18.82 21.0602 18.27 20.8202 17.8L19.2102 14.71L21.0402 11.19C21.2802 10.72 21.2702 10.17 20.9902 9.72ZM20.1502 10.73L18.2002 14.48C18.1202 14.62 18.1202 14.8 18.2002 14.94L19.9302 18.27C20.0502 18.5 19.9602 18.69 19.9102 18.76C19.8702 18.83 19.7402 19 19.4802 19H18.2702C18.0802 19 17.9102 18.9 17.8302 18.73L17.3602 17.82C17.2702 17.65 17.1002 17.55 16.9202 17.55C16.7402 17.55 16.5602 17.65 16.4802 17.82L16.0102 18.73C15.9202 18.9 15.7502 19 15.5702 19H14.3602C14.1102 19 13.9802 18.83 13.9302 18.76C13.8902 18.69 13.8002 18.5 13.9102 18.27L15.6402 14.94C15.7202 14.8 15.7202 14.62 15.6402 14.48L13.6902 10.73C13.5702 10.51 13.6602 10.31 13.7102 10.24C13.7602 10.17 13.8802 10 14.1402 10H15.3502C15.5402 10 15.7102 10.1 15.7902 10.27L16.4902 11.61C16.6602 11.94 17.2002 11.94 17.3802 11.61L18.0802 10.27C18.1702 10.1 18.3402 10 18.5202 10H19.7302C19.9802 10 20.1102 10.17 20.1602 10.24C20.2102 10.31 20.2902 10.5 20.1802 10.73H20.1502Z"
8602
+ ],
8603
+ "stock-indices": [
8604
+ "M19 10.5H18C17.17 10.5 16.5 11.17 16.5 12V19C16.5 19.83 17.17 20.5 18 20.5H19C19.83 20.5 20.5 19.83 20.5 19V12C20.5 11.17 19.83 10.5 19 10.5ZM19.5 19C19.5 19.28 19.28 19.5 19 19.5H18C17.72 19.5 17.5 19.28 17.5 19V12C17.5 11.72 17.72 11.5 18 11.5H19C19.28 11.5 19.5 11.72 19.5 12V19Z",
8605
+ "M13 13.5H12C11.17 13.5 10.5 14.17 10.5 15V19C10.5 19.83 11.17 20.5 12 20.5H13C13.83 20.5 14.5 19.83 14.5 19V15C14.5 14.17 13.83 13.5 13 13.5ZM13.5 19C13.5 19.28 13.28 19.5 13 19.5H12C11.72 19.5 11.5 19.28 11.5 19V15C11.5 14.72 11.72 14.5 12 14.5H13C13.28 14.5 13.5 14.72 13.5 15V19Z",
8606
+ "M7 15.5H6C5.17 15.5 4.5 16.17 4.5 17V19C4.5 19.83 5.17 20.5 6 20.5H7C7.83 20.5 8.5 19.83 8.5 19V17C8.5 16.17 7.83 15.5 7 15.5ZM7.5 19C7.5 19.28 7.28 19.5 7 19.5H6C5.72 19.5 5.5 19.28 5.5 19V17C5.5 16.72 5.72 16.5 6 16.5H7C7.28 16.5 7.5 16.72 7.5 17V19Z",
8607
+ "M21.47 3.85C21.47 3.85 21.47 3.82 21.46 3.8C21.46 3.78 21.44 3.77 21.43 3.75C21.41 3.71 21.38 3.67 21.35 3.64C21.33 3.63 21.31 3.62 21.3 3.61C21.27 3.58 21.23 3.56 21.19 3.54C21.16 3.53 21.12 3.52 21.08 3.52C21.05 3.52 21.03 3.5 21 3.5H18C17.72 3.5 17.5 3.72 17.5 4C17.5 4.28 17.72 4.5 18 4.5H19.76C17.68 6.51 15.34 8.22 12.77 9.56C9.98996 11 7.00996 11.99 3.91996 12.51C3.64996 12.56 3.45996 12.81 3.50996 13.09C3.54996 13.33 3.75996 13.51 3.99996 13.51C4.02996 13.51 4.05996 13.51 4.07996 13.51C7.27996 12.98 10.36 11.95 13.23 10.46C15.91 9.07 18.34 7.29 20.5 5.19V7.01C20.5 7.29 20.72 7.51 21 7.51C21.28 7.51 21.5 7.29 21.5 7.01V4.01C21.5 3.96 21.49 3.91 21.47 3.87V3.85Z"
8608
+ ],
8609
+ commodities: [
8610
+ "M21.9703 17.33L20.1803 12.48C19.9603 11.89 19.4003 11.5 18.7703 11.5H17.3403L15.6803 6.98C15.4603 6.39 14.9003 6 14.2703 6H10.7203C10.0903 6 9.53031 6.39 9.31031 6.98L7.64031 11.5H6.21031C5.58031 11.5 5.02031 11.89 4.80031 12.48L3.01031 17.33C2.95031 17.48 2.97031 17.65 3.07031 17.79C3.16031 17.92 3.32031 18 3.48031 18H21.5003C21.6603 18 21.8203 17.92 21.9103 17.79C22.0003 17.66 22.0303 17.48 21.9703 17.33ZM10.2603 7.33C10.3303 7.13 10.5203 7 10.7303 7H14.2803C14.4903 7 14.6803 7.13 14.7503 7.33L16.2903 11.5H8.72031L10.2603 7.33ZM12.5003 16.06L11.1903 12.5H13.8103L12.5003 16.06ZM4.22031 17L5.76031 12.83C5.83031 12.63 6.02031 12.5 6.23031 12.5H9.78031C9.99031 12.5 10.1803 12.63 10.2503 12.83L11.7903 17H4.22031ZM13.2203 17L14.7603 12.83C14.8303 12.63 15.0203 12.5 15.2303 12.5H18.7803C18.9903 12.5 19.1803 12.63 19.2503 12.83L20.7903 17H13.2203Z"
8611
+ ],
8612
+ "derived-indices": [
8613
+ "M12.5 2.5C7.26 2.5 3 6.76 3 12C3 17.24 7.26 21.5 12.5 21.5C17.74 21.5 22 17.24 22 12C22 6.76 17.74 2.5 12.5 2.5ZM12.5 20.5C11.62 20.5 10.68 19.03 10.12 16.63C10.89 16.55 11.69 16.5 12.5 16.5C13.31 16.5 14.11 16.55 14.88 16.63C14.32 19.02 13.38 20.5 12.5 20.5ZM12.5 15.5C11.61 15.5 10.75 15.55 9.92 15.65C9.76 14.7 9.66 13.65 9.63 12.5H15.36C15.34 13.64 15.24 14.7 15.07 15.65C14.24 15.56 13.38 15.5 12.49 15.5H12.5ZM12.5 3.5C13.38 3.5 14.32 4.97 14.88 7.37C14.11 7.45 13.31 7.5 12.5 7.5C11.69 7.5 10.89 7.45 10.12 7.37C10.68 4.98 11.62 3.5 12.5 3.5ZM12.5 8.5C13.39 8.5 14.25 8.45 15.08 8.35C15.24 9.3 15.34 10.35 15.37 11.5H9.64C9.66 10.36 9.76 9.3 9.93 8.35C10.76 8.44 11.62 8.5 12.51 8.5H12.5ZM4.03 11.5C4.12 9.92 4.64 8.46 5.48 7.23C6.44 7.67 7.63 8 8.95 8.22C8.77 9.27 8.67 10.39 8.65 11.5H4.03ZM8.63 12.5C8.65 13.61 8.76 14.73 8.93 15.78C7.61 16 6.43 16.33 5.46 16.77C4.62 15.54 4.11 14.07 4.01 12.5H8.63ZM20.97 12.5C20.88 14.08 20.36 15.54 19.52 16.77C18.56 16.33 17.37 16 16.05 15.78C16.23 14.73 16.33 13.61 16.35 12.5H20.97ZM16.36 11.5C16.34 10.39 16.23 9.27 16.06 8.22C17.38 8 18.56 7.67 19.53 7.23C20.37 8.46 20.88 9.93 20.98 11.5H16.36ZM18.89 6.42C18.04 6.77 17.01 7.05 15.86 7.23C15.54 5.83 15.08 4.6 14.48 3.74C16.22 4.16 17.75 5.11 18.89 6.41V6.42ZM10.51 3.74C9.91 4.59 9.45 5.82 9.13 7.23C7.99 7.05 6.95 6.77 6.1 6.42C7.24 5.12 8.77 4.16 10.51 3.75V3.74ZM6.1 17.58C6.95 17.23 7.98 16.95 9.13 16.77C9.45 18.17 9.91 19.4 10.51 20.26C8.77 19.84 7.24 18.89 6.1 17.59V17.58ZM14.49 20.25C15.09 19.4 15.55 18.17 15.87 16.76C17.01 16.94 18.05 17.22 18.9 17.57C17.76 18.87 16.23 19.83 14.49 20.24V20.25Z"
8614
+ ],
8615
+ cryptocurrencies: [
8616
+ "M12.49 2.50977C7.26 2.50977 3 6.75977 3 11.9998C3 17.2398 7.26 21.4898 12.49 21.4898C17.72 21.4898 21.99 17.2298 21.99 11.9998C21.99 6.76977 17.73 2.50977 12.49 2.50977ZM12.49 20.4998C7.81 20.4998 4 16.6898 4 12.0098C4 7.32977 7.81 3.50977 12.49 3.50977C17.17 3.50977 20.99 7.31977 20.99 11.9998C20.99 16.6798 17.18 20.4898 12.49 20.4898V20.4998Z",
8617
+ "M15.05 11.9098C15.33 11.5698 15.51 11.1398 15.51 10.6698C15.51 9.76977 14.89 9.00977 14.06 8.78977V6.99977C14.06 6.71977 13.84 6.49977 13.56 6.49977C13.28 6.49977 13.06 6.71977 13.06 6.99977V8.71977H12.12V6.99977C12.12 6.71977 11.9 6.49977 11.62 6.49977C11.34 6.49977 11.12 6.71977 11.12 6.99977V8.71977C10.31 8.74977 9.67 9.39977 9.67 10.2198V14.0298C9.67 14.8398 10.32 15.4998 11.12 15.5298V16.9998C11.12 17.2798 11.34 17.4998 11.62 17.4998C11.9 17.4998 12.12 17.2798 12.12 16.9998V15.5298H13.06V16.9998C13.06 17.2798 13.28 17.4998 13.56 17.4998C13.84 17.4998 14.06 17.2798 14.06 16.9998V15.5298C15.13 15.5298 16 14.6498 16 13.5798C16 12.8698 15.62 12.2598 15.06 11.9198L15.05 11.9098ZM11.17 9.70977H13.56C14.09 9.70977 14.51 10.1398 14.51 10.6598C14.51 11.1798 14.08 11.6098 13.56 11.6098H10.67V10.1998C10.67 9.91977 10.89 9.69977 11.17 9.69977V9.70977ZM14.05 14.5198H11.17C10.89 14.5198 10.67 14.2998 10.67 14.0198V12.6098H14.05C14.58 12.6098 15 13.0398 15 13.5598C15 14.0798 14.57 14.5098 14.05 14.5098V14.5198Z"
8618
+ ]
8619
+ };
8620
+ function MetaIcon({ icon, iconUrl }) {
8621
+ const imageSrc = safeHref(iconUrl);
8622
+ if (imageSrc) {
8623
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8624
+ "img",
8625
+ {
8626
+ className: "ot__meta-image",
8627
+ src: imageSrc,
8628
+ alt: "",
8629
+ "aria-hidden": "true",
8630
+ loading: "lazy",
8631
+ decoding: "async"
8632
+ }
8633
+ );
8634
+ }
8635
+ if (!icon) return null;
8636
+ const paths = iconPaths[icon];
8637
+ if (!paths) {
8638
+ const initials = icon === "deriv-trader" ? "DT" : icon === "deriv-bot" ? "DB" : "ST";
8639
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "ot__platform-icon", "aria-hidden": "true", children: initials });
8640
+ }
8641
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("svg", { className: "ot__meta-icon", viewBox: "0 0 25 24", fill: "none", "aria-hidden": "true", children: paths.map((d) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("path", { d, fill: "currentColor" }, d)) });
8642
+ }
8643
+ function MetaList({ items = [] }) {
8644
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("ul", { className: "ot__meta-list", children: items.map((item, index) => {
8645
+ const href = safeHref(item.href);
8646
+ const content = /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
8647
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(MetaIcon, { icon: item.icon, iconUrl: item.iconUrl }),
8648
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { children: item.label })
8649
+ ] });
8650
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("li", { children: href ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("a", { href, children: content }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { children: content }) }, `${item.label}-${index}`);
8651
+ }) });
8652
+ }
8653
+ function PlaybackGlyph({ playing }) {
8654
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("svg", { className: "ot__control-icon", viewBox: "0 0 64 64", "aria-hidden": "true", children: [
8655
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("circle", { className: "ot__control-disc", cx: "32", cy: "32", r: "32" }),
8656
+ playing ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
8657
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("rect", { className: "ot__control-glyph", x: "23", y: "21", width: "6", height: "22", rx: "2" }),
8658
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("rect", { className: "ot__control-glyph", x: "35", y: "21", width: "6", height: "22", rx: "2" })
8659
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8660
+ "path",
8661
+ {
8662
+ className: "ot__control-glyph",
8663
+ d: "M26.5058 19.9527L42.7058 29.8527C43.4933 30.359 43.9996 31.259 43.9996 32.159C43.9996 33.1152 43.4933 34.0152 42.7058 34.4652L26.5058 44.3652C25.6621 44.8715 24.5933 44.9277 23.7496 44.4215C22.9058 43.9715 22.3996 43.0715 22.3996 42.059V22.259C22.3996 21.3027 22.9058 20.4027 23.7496 19.9527C24.5933 19.4465 25.6621 19.4465 26.5058 19.9527Z"
8664
+ }
8665
+ )
8666
+ ] });
8667
+ }
8668
+ function AnimationCard({
8669
+ animation,
8670
+ itemId,
8671
+ playing,
8672
+ onToggle
8673
+ }) {
8674
+ const src = safeLottieSrc(animation.src);
8675
+ const posterSrc = safeHref(animation.posterUrl);
8676
+ const controlId = `ot-animation-${itemId}-${animation.id ?? animation.label}`.replace(/[^a-zA-Z0-9_-]/g, "-");
8677
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__animation-card", children: [
8678
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { id: controlId, className: "ot__animation-media", "aria-hidden": "true", children: src ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8679
+ DotLottieInView,
8680
+ {
8681
+ src,
8682
+ enabled: playing,
8683
+ loop: true,
8684
+ poster: posterSrc ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("img", { src: posterSrc, alt: "", loading: "lazy", decoding: "async" }) : void 0
8685
+ }
8686
+ ) : null }),
8687
+ posterSrc && !playing ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8688
+ "img",
8689
+ {
8690
+ className: "ot__animation-poster",
8691
+ src: posterSrc,
8692
+ alt: "",
8693
+ "aria-hidden": "true",
8694
+ loading: "lazy",
8695
+ decoding: "async"
8696
+ }
8697
+ ) : null,
8698
+ src ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8699
+ "button",
8700
+ {
8701
+ type: "button",
8702
+ className: `ot__playback-toggle${playing ? " ot__playback-toggle--playing" : ""}`,
8703
+ "aria-controls": controlId,
8704
+ "aria-pressed": playing,
8705
+ "aria-label": `${playing ? "Pause" : "Play"} ${animation.label} animation`,
8706
+ onClick: onToggle,
8707
+ children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(PlaybackGlyph, { playing })
8708
+ }
8709
+ ) : null
8710
+ ] });
8711
+ }
8712
+ function OptionPanel({
8713
+ item,
8714
+ variant,
8715
+ marketsLabel,
8716
+ platformsLabel,
8717
+ playing,
8718
+ setPlaying
8719
+ }) {
8720
+ const description = /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "ot__description", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { children: item.description }) });
8721
+ const animations = /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: `ot__animations ot__animations--${Math.min(item.animations.length, 2)}`, children: item.animations.slice(0, 2).map((animation, index) => {
8722
+ const key = `${item.id}-${animation.id ?? index}`;
8723
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8724
+ AnimationCard,
8725
+ {
8726
+ animation,
8727
+ itemId: item.id,
8728
+ playing: Boolean(playing[key]),
8729
+ onToggle: () => setPlaying((current) => ({
8730
+ ...current,
8731
+ [key]: !current[key]
8732
+ }))
8733
+ },
8734
+ key
8735
+ );
8736
+ }) });
8737
+ const metadata = /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__metadata", children: [
8738
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__meta-group", children: [
8739
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h4", { children: marketsLabel }),
8740
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(MetaList, { items: item.markets })
8741
+ ] }),
8742
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__meta-group", children: [
8743
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h4", { children: platformsLabel }),
8744
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(MetaList, { items: item.platforms })
8745
+ ] })
8746
+ ] });
8747
+ const layout = variant === "single" && item.animations.length === 1 ? "split" : "stacked";
8748
+ const optionClass = `ot__option ot__option--${variant} ot__option--${layout}`;
8749
+ if (layout === "split") {
8750
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: optionClass, children: [
8751
+ animations,
8752
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__option-side", children: [
8753
+ description,
8754
+ metadata
8755
+ ] })
8756
+ ] });
8757
+ }
8758
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: optionClass, children: [
8759
+ description,
8760
+ animations,
8761
+ metadata
8762
+ ] });
8763
+ }
8764
+ function OptionsTypes({
8765
+ variant = "tabs",
8766
+ heading = "Section title goes here",
8767
+ headingLevel = "h2",
8768
+ items = OPTIONS_TYPES_PLACEHOLDER_ITEMS,
8769
+ defaultActiveId,
8770
+ activeId,
8771
+ onChange,
8772
+ marketsLabel = "Markets available",
8773
+ platformsLabel = "Trade on",
8774
+ disclaimer,
8775
+ className,
8776
+ ...props
8777
+ }) {
8778
+ const usableItems = Array.isArray(items) ? items.filter((item) => item?.id) : [];
8779
+ const [internalActiveId, setInternalActiveId] = (0, import_react34.useState)(
8780
+ defaultActiveId ?? usableItems[0]?.id ?? ""
8781
+ );
8782
+ const selectedId = usableItems.find((item) => item.id === activeId)?.id ?? usableItems.find((item) => item.id === internalActiveId)?.id ?? usableItems[0]?.id ?? "";
8783
+ const [playing, setPlaying] = (0, import_react34.useState)({});
8784
+ const generatedId = (0, import_react34.useId)().replace(/:/g, "");
8785
+ const tabPrefix = `options-types-${generatedId}`;
8786
+ const Heading = headingLevel;
8787
+ (0, import_react34.useEffect)(() => {
8788
+ setPlaying({});
8789
+ }, [selectedId]);
8790
+ const selectItem = (id) => {
8791
+ if (activeId === void 0) setInternalActiveId(id);
8792
+ onChange?.(id);
8793
+ };
8794
+ const rootClass = ["ot", `ot--${variant}`, className].filter(Boolean).join(" ");
8795
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("section", { className: rootClass, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__inner", children: [
8796
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("header", { className: "ot__header", children: [
8797
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Heading, { className: "ot__heading", children: heading }),
8798
+ variant === "tabs" && usableItems.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8799
+ Tabs,
8800
+ {
8801
+ items: usableItems.map((item) => ({
8802
+ id: item.id,
8803
+ label: item.label ?? item.title
8804
+ })),
8805
+ activeId: selectedId,
8806
+ onChange: selectItem,
8807
+ idPrefix: tabPrefix,
8808
+ "aria-label": `${heading} categories`,
8809
+ className: "ot__tabs"
8810
+ }
8811
+ ) : null
8812
+ ] }),
8813
+ usableItems.length === 0 ? null : variant === "tabs" ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "ot__panels", children: usableItems.map((item, index) => {
8814
+ const isActive = item.id === selectedId;
8815
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8816
+ "div",
8817
+ {
8818
+ id: `${tabPrefix}-panel-${index}`,
8819
+ role: "tabpanel",
8820
+ "aria-labelledby": `${tabPrefix}-tab-${index}`,
8821
+ hidden: !isActive,
8822
+ tabIndex: 0,
8823
+ children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8824
+ OptionPanel,
8825
+ {
8826
+ item,
8827
+ variant: "tabs",
8828
+ marketsLabel,
8829
+ platformsLabel,
8830
+ playing,
8831
+ setPlaying
8832
+ }
8833
+ )
8834
+ },
8835
+ item.id
8836
+ );
8837
+ }) }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8838
+ OptionPanel,
8839
+ {
8840
+ item: usableItems[0],
8841
+ variant: "single",
8842
+ marketsLabel,
8843
+ platformsLabel,
8844
+ playing,
8845
+ setPlaying
8846
+ }
8847
+ ),
8848
+ disclaimer ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("p", { className: "ot__disclaimer", children: [
8849
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
8850
+ "svg",
8851
+ {
8852
+ className: "ot__disclaimer-icon",
8853
+ viewBox: "0 0 16 16",
8854
+ fill: "none",
8855
+ "aria-hidden": "true",
8856
+ children: [
8857
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("circle", { cx: "8", cy: "8", r: "6.4", stroke: "currentColor", strokeWidth: "1.2" }),
8858
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8859
+ "path",
8860
+ {
8861
+ d: "M8 7v4.2",
8862
+ stroke: "currentColor",
8863
+ strokeWidth: "1.4",
8864
+ strokeLinecap: "round"
8865
+ }
8866
+ ),
8867
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("circle", { cx: "8", cy: "4.9", r: "0.85", fill: "currentColor" })
8868
+ ]
8869
+ }
8870
+ ),
8871
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { children: disclaimer })
8872
+ ] }) : null
8873
+ ] }) });
8874
+ }
8875
+
8876
+ // templates/OptionsTypes/OptionsTypes.data.ts
8877
+ var WEBFLOW_CDN = "https://cdn.prod.website-files.com/661e6e1e01dd2f56adc6d370";
8878
+ var WEBFLOW_ICON_CDN = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c2b7";
8879
+ var FOREX = {
8880
+ label: "Forex",
8881
+ icon: "forex",
8882
+ href: "/markets/forex"
8883
+ };
8884
+ var STOCK_INDICES = {
8885
+ label: "Stock Indices",
8886
+ icon: "stock-indices",
8887
+ href: "/markets/stock-indices"
8888
+ };
8889
+ var COMMODITIES = {
8890
+ label: "Commodities",
8891
+ icon: "commodities",
8892
+ href: "/markets/commodities"
8893
+ };
8894
+ var DERIVED_INDICES = {
8895
+ label: "Derived Indices",
8896
+ icon: "derived-indices",
8897
+ href: "/markets/derived-indices/synthetic-indices"
8898
+ };
8899
+ var CRYPTOCURRENCIES = {
8900
+ label: "Cryptocurrencies",
8901
+ icon: "cryptocurrencies",
8902
+ href: "/markets/cryptocurrencies"
8903
+ };
8904
+ var DERIV_TRADER = {
8905
+ label: "Deriv Trader",
8906
+ icon: "deriv-trader",
8907
+ iconUrl: `${WEBFLOW_ICON_CDN}/68e3a18f20e4f9f6eb9109e8_6751d07ab72617a385122395_deriv%2520product-deriv%2520trader.svg`,
8908
+ href: "/trading-platforms/deriv-trader"
8909
+ };
8910
+ var DERIV_BOT = {
8911
+ label: "Deriv Bot",
8912
+ icon: "deriv-bot",
8913
+ iconUrl: `${WEBFLOW_ICON_CDN}/68e3a18f42c1592e9454466e_674992f6dd562e5f0b8e7679_deriv%2520product-deriv%2520bot.svg`,
8914
+ href: "/trading-platforms/deriv-bot"
8915
+ };
8916
+ var DIGITAL_MARKETS = [FOREX, STOCK_INDICES, COMMODITIES, DERIVED_INDICES];
8917
+ var TRADER_AND_BOT = [DERIV_TRADER, DERIV_BOT];
8918
+ var OPTIONS_TYPES_DIGITAL_CONTENT = {
8919
+ variant: "tabs",
8920
+ heading: "Types of Digital Options",
8921
+ defaultActiveId: "rise-fall",
8922
+ disclaimer: "Trade types and features offered may vary by platform and device.",
8923
+ items: [
8924
+ {
8925
+ id: "rise-fall",
8926
+ title: "Rise/Fall",
8927
+ description: "Predict whether the market price will rise above or fall below the entry price at the end of your contract.",
8928
+ animations: [
8929
+ {
8930
+ id: "rise",
8931
+ label: "Rise",
8932
+ src: `${WEBFLOW_CDN}/6630e43019db0934b75c5105_Web%20Trade%20Clip%20-%20UpDown%20(Rise).lottie`
8933
+ },
8934
+ {
8935
+ id: "fall",
8936
+ label: "Fall",
8937
+ src: `${WEBFLOW_CDN}/6630e42f22255a766c2af8aa_Web%20Trade%20Clip%20-%20UpDown%20(Fall).lottie`
8938
+ }
8939
+ ],
8940
+ markets: DIGITAL_MARKETS,
8941
+ platforms: TRADER_AND_BOT
8942
+ },
8943
+ {
8944
+ id: "higher-lower",
8945
+ title: "Higher/Lower",
8946
+ description: "Choose a target price at the start (barrier), and predict if the final price will be higher or lower than barrier.",
8947
+ animations: [
8948
+ {
8949
+ id: "higher",
8950
+ label: "Higher",
8951
+ src: `${WEBFLOW_CDN}/6630e42f93f0aa3f60d68dd2_Web%20Trade%20Clip%20-%20UpDown%20(Higher).lottie`
8952
+ },
8953
+ {
8954
+ id: "lower",
8955
+ label: "Lower",
8956
+ src: `${WEBFLOW_CDN}/6630e42f8922eb31fcbf275f_Web%20Trade%20Clip%20-%20%20UpDown%20(Lower).lottie`
8957
+ }
8958
+ ],
8959
+ markets: DIGITAL_MARKETS,
8960
+ platforms: TRADER_AND_BOT
8961
+ },
8962
+ {
8963
+ id: "touch-no-touch",
8964
+ title: "Touch/No Touch",
8965
+ description: 'Predict whether the market price will "touch" or not touch a target price (barrier) during the contract period.',
8966
+ animations: [
8967
+ {
8968
+ id: "touch",
8969
+ label: "Touch",
8970
+ src: `${WEBFLOW_CDN}/6630e3a120a6dcbe6ab22239_Web%20Trade%20Clip%20-%20TouchNoTouch%20(Touch).lottie`
8971
+ },
8972
+ {
8973
+ id: "no-touch",
8974
+ label: "No Touch",
8975
+ src: `${WEBFLOW_CDN}/6630e3a158064e5c58362ddd_Web%20Trade%20Clip%20-%20TouchNoTouch%20(No%20Touch).lottie`
8976
+ }
8977
+ ],
8978
+ markets: DIGITAL_MARKETS,
8979
+ platforms: TRADER_AND_BOT
8980
+ }
8981
+ ]
8982
+ };
8983
+ var OPTIONS_TYPES_ACCUMULATOR_CONTENT = {
8984
+ variant: "single",
8985
+ heading: "How do Accumulator Options work",
8986
+ items: [
8987
+ {
8988
+ id: "accumulator-options",
8989
+ title: "Accumulator Options",
8990
+ description: "Set a growth rate between 1\u20135% and see if the market price stays within a defined range from the previous spot price. Your payout grows exponentially based on the growth rate you choose. Keep in mind: higher growth rates mean narrower ranges for price movements.",
8991
+ animations: [
8992
+ {
8993
+ id: "accumulator",
8994
+ label: "Accumulator",
8995
+ src: `${WEBFLOW_CDN}/6630e0fff230226872ee39ed_Web%20Trade%20Clip%20-%20Accumulators%20(Accumulators).lottie`
8996
+ }
8997
+ ],
8998
+ markets: [DERIVED_INDICES],
8999
+ platforms: TRADER_AND_BOT
9000
+ }
9001
+ ]
9002
+ };
9003
+ var OPTIONS_TYPES_VANILLA_CONTENT = {
9004
+ variant: "single",
9005
+ heading: "How do Vanilla Options work",
9006
+ items: [
9007
+ {
9008
+ id: "vanilla-call-put",
9009
+ title: "Vanilla Call/Put",
9010
+ description: "Choose a strike price and decide your position. Open a Call position if you expect the price to rise above the strike price, or a Put position if you think it will fall below it. With fixed expiry times, this provides precise price level trading.",
9011
+ animations: [
9012
+ {
9013
+ id: "call",
9014
+ label: "Call",
9015
+ src: `${WEBFLOW_CDN}/6630e3c100c107af706a72f6_Web%20Trade%20Clip%20-%20Vanilla%20(Call).lottie`
9016
+ },
9017
+ {
9018
+ id: "put",
9019
+ label: "Put",
9020
+ src: `${WEBFLOW_CDN}/6630e3c2f230226872f0d58d_Web%20Trade%20Clip%20-%20Vanilla%20(Put).lottie`
9021
+ }
9022
+ ],
9023
+ markets: [DERIVED_INDICES],
9024
+ platforms: [DERIV_TRADER]
9025
+ }
9026
+ ]
9027
+ };
9028
+ var OPTIONS_TYPES_TURBO_CONTENT = {
9029
+ variant: "single",
9030
+ heading: "How do Turbo Options work",
9031
+ items: [
9032
+ {
9033
+ id: "turbo-up-down",
9034
+ title: "Turbo Up/Down",
9035
+ description: "Decide whether the market price will stay above (Up) or drop below (Down) a set barrier. Your payout adjusts based on how far the price moves in your chosen direction, letting you take advantage of both rising and falling markets.",
9036
+ animations: [
9037
+ {
9038
+ id: "up",
9039
+ label: "Up",
9040
+ src: `${WEBFLOW_CDN}/664aff68ca9411ee61c84443_Web%20Trade%20Clip%20(Up).lottie`
9041
+ },
9042
+ {
9043
+ id: "down",
9044
+ label: "Down",
9045
+ src: `${WEBFLOW_CDN}/664aff6801c5297f6a1f6e6c_Web%20Trade%20Clip%20(Down).lottie`
9046
+ }
9047
+ ],
9048
+ markets: [DERIVED_INDICES],
9049
+ platforms: [DERIV_TRADER]
9050
+ }
9051
+ ]
9052
+ };
9053
+ var OPTIONS_TYPES_MULTIPLIERS_CONTENT = {
9054
+ variant: "single",
9055
+ heading: "How do Multipliers work",
9056
+ items: [
9057
+ {
9058
+ id: "multipliers-up-down",
9059
+ title: "Multipliers Up/Down",
9060
+ description: "Select whether you expect the price to rise (Up) or fall (Down). Your multiplier will help amplify any potential gains. The more the market moves in your predicted direction, the greater your potential payout.",
9061
+ animations: [
9062
+ {
9063
+ id: "up",
9064
+ label: "Up",
9065
+ src: `${WEBFLOW_CDN}/6630e305e7f044e7deae8a90_Web%20Trade%20Clip%20-%20Multipliers%20(Up).lottie`
9066
+ },
9067
+ {
9068
+ id: "down",
9069
+ label: "Down",
9070
+ src: `${WEBFLOW_CDN}/6630e3055be526fd74f10190_Web%20Trade%20Clip%20-%20Multipliers%20(Down).lottie`
9071
+ }
9072
+ ],
9073
+ markets: [DERIVED_INDICES, FOREX, CRYPTOCURRENCIES, COMMODITIES],
9074
+ platforms: TRADER_AND_BOT
9075
+ }
9076
+ ]
9077
+ };
9078
+
9079
+ // templates/EntityInfoSection/EntityInfoSection.tsx
9080
+ var import_jsx_runtime64 = require("react/jsx-runtime");
9081
+ var DEFAULT_LINKS2 = [{ label: "View licence", href: "#" }];
9082
+ var EntityInfoSection = ({
9083
+ name = "Section title goes here",
9084
+ description = "Explain how this specific feature helps your user.",
9085
+ bullets,
9086
+ links,
9087
+ headingLevel: HeadingTag = "h2",
9088
+ className,
9089
+ ...props
9090
+ }) => {
9091
+ const resolvedLinks = links && links.length > 0 ? links : DEFAULT_LINKS2;
9092
+ const hasBullets = !!bullets && bullets.length > 0;
9093
+ const rootClass = ["eis", className].filter(Boolean).join(" ");
9094
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("section", { className: rootClass, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "eis__inner", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "eis__content", children: [
9095
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(HeadingTag, { className: "eis__name", children: name }),
9096
+ description && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "eis__description", children: description }),
9097
+ hasBullets && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("ul", { className: "eis__bullets", children: bullets.map((bullet, i) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("li", { className: "eis__bullets-item", children: bullet }, i)) }),
9098
+ resolvedLinks.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("ul", { className: "eis__links", children: resolvedLinks.map((link, i) => {
9099
+ const isExternal = link.external ?? true;
9100
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("li", { className: "eis__links-item", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
9101
+ Link,
9102
+ {
9103
+ className: "eis__link",
9104
+ colorScheme: "coral",
9105
+ href: link.href,
9106
+ label: link.label,
9107
+ target: isExternal ? "_blank" : void 0,
9108
+ rel: isExternal ? "noopener noreferrer" : void 0
9109
+ }
9110
+ ) }, link.id ?? i);
9111
+ }) })
9112
+ ] }) }) });
9113
+ };
9114
+
9115
+ // templates/CountryLinkGrid/CountryLinkGrid.tsx
9116
+ var import_jsx_runtime65 = require("react/jsx-runtime");
9117
+ var DEFAULT_ITEMS = [
9118
+ { label: "Country name", href: "#" },
9119
+ { label: "Country name", href: "#" },
9120
+ { label: "Country name", href: "#" },
9121
+ { label: "Country name", href: "#" }
9122
+ ];
9123
+ var CountryLinkGrid = ({
9124
+ title = "Section title goes here",
9125
+ description = "Explain how this specific feature helps your user.",
9126
+ items,
9127
+ headingLevel: HeadingTag = "h2",
9128
+ className,
9129
+ ...props
9130
+ }) => {
9131
+ const resolvedItems = items && items.length > 0 ? items : DEFAULT_ITEMS;
9132
+ const rootClass = ["clg", className].filter(Boolean).join(" ");
9133
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("section", { className: rootClass, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "clg__inner", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "clg__layout", children: [
9134
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "clg__header", children: [
9135
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(HeadingTag, { className: "clg__title", children: title }),
9136
+ description && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "clg__description", children: description })
9137
+ ] }),
9138
+ resolvedItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("ul", { className: "clg__list", children: resolvedItems.map((item, i) => {
9139
+ const isExternal = item.external ?? true;
9140
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("li", { className: "clg__item", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
9141
+ "a",
9142
+ {
9143
+ className: "clg__link",
9144
+ href: item.href,
9145
+ target: isExternal ? "_blank" : void 0,
9146
+ rel: isExternal ? "noopener noreferrer" : void 0,
9147
+ children: [
9148
+ item.iconSrc && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
9149
+ "img",
9150
+ {
9151
+ className: "clg__flag",
9152
+ src: item.iconSrc,
9153
+ alt: item.iconAlt ?? "",
9154
+ loading: "lazy",
9155
+ width: 36,
9156
+ height: 24
9157
+ }
9158
+ ),
9159
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "clg__text", children: item.label })
9160
+ ]
9161
+ }
9162
+ ) }, item.id ?? i);
9163
+ }) })
9164
+ ] }) }) });
9165
+ };
9166
+
9167
+ // templates/DocumentChips/DocumentChips.tsx
9168
+ var import_react35 = require("react");
9169
+ var import_jsx_runtime66 = require("react/jsx-runtime");
9170
+ var DEFAULT_GROUPS = [
9171
+ {
9172
+ id: "group-one",
9173
+ title: "First group title",
9174
+ documents: [
9175
+ {
9176
+ id: "doc-one",
9177
+ title: "First document title",
9178
+ href: "#",
9179
+ languageLink: { label: "Choose language", href: "#" }
9180
+ },
9181
+ {
9182
+ id: "doc-two",
9183
+ title: "Second document title",
9184
+ href: "#",
9185
+ languageLink: { label: "Choose language", href: "#" }
9186
+ }
9187
+ ]
9188
+ },
9189
+ {
9190
+ id: "group-two",
9191
+ title: "Second group title",
9192
+ documents: [
9193
+ { id: "doc-three", title: "Third document title", href: "#" },
9194
+ { id: "doc-four", title: "Fourth document title", href: "#" }
9195
+ ]
9196
+ }
9197
+ ];
9198
+ var DocumentChip = ({ document: document2, iconSrc, iconAlt, onLanguageSelect }) => {
9199
+ const isExternal = document2.external ?? true;
9200
+ const languageLink = document2.languageLink;
9201
+ const handleLanguageClick = (event) => {
9202
+ if (!onLanguageSelect) return;
9203
+ event.preventDefault();
9204
+ onLanguageSelect(document2, event);
9205
+ };
9206
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("li", { className: "dch__doc-item", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "dch__doc", children: [
9207
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
9208
+ "a",
9209
+ {
9210
+ className: "dch__doc-link",
9211
+ href: document2.href,
9212
+ target: isExternal ? "_blank" : void 0,
9213
+ rel: isExternal ? "noopener noreferrer" : void 0,
9214
+ children: [
9215
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
9216
+ "img",
9217
+ {
9218
+ className: "dch__doc-icon",
9219
+ src: document2.iconSrc ?? iconSrc,
9220
+ alt: iconAlt,
9221
+ loading: "lazy",
9222
+ "aria-hidden": iconAlt ? void 0 : true
9223
+ }
9224
+ ),
9225
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "dch__doc-title", children: document2.title })
9226
+ ]
9227
+ }
9228
+ ),
9229
+ languageLink && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "dch__doc-action", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
9230
+ Link,
9231
+ {
9232
+ className: "dch__doc-language",
9233
+ colorScheme: "black",
9234
+ label: languageLink.label ?? "Choose language",
9235
+ href: languageLink.href ?? document2.href,
9236
+ onClick: handleLanguageClick,
9237
+ "aria-haspopup": onLanguageSelect ? "dialog" : void 0
9238
+ }
9239
+ ) })
9240
+ ] }) });
9241
+ };
9242
+ var DocumentChipList = ({
9243
+ documents,
9244
+ iconSrc,
9245
+ iconAlt,
9246
+ onLanguageSelect
9247
+ }) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("ul", { className: "dch__docs", children: documents.map((document2, j) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
9248
+ DocumentChip,
9249
+ {
9250
+ document: document2,
9251
+ iconSrc,
9252
+ iconAlt,
9253
+ onLanguageSelect
9254
+ },
9255
+ document2.id ?? j
9256
+ )) });
9257
+ var DocumentChips = ({
9258
+ variant = "accordion",
9259
+ title = "Section title goes here",
9260
+ description,
9261
+ groups,
9262
+ iconSrc = "https://media.ffycdn.net/eu/deriv/d/8d33a322464c4809a9d01119104caa0d",
9263
+ iconAlt = "",
9264
+ allowMultipleOpen = false,
9265
+ onLanguageSelect,
9266
+ headingLevel: HeadingTag = "h2",
9267
+ className,
9268
+ ...props
9269
+ }) => {
9270
+ const resolvedGroups = groups && groups.length > 0 ? groups : DEFAULT_GROUPS;
9271
+ const groupKeys = resolvedGroups.map((group, i) => String(group.id ?? i));
9272
+ const [openKeys, setOpenKeys] = (0, import_react35.useState)(void 0);
9273
+ const resolvedOpenKeys = openKeys === void 0 ? groupKeys.slice(0, 1) : openKeys;
9274
+ const handleToggle = (key, next) => {
9275
+ setOpenKeys((current) => {
9276
+ const base = current === void 0 ? groupKeys.slice(0, 1) : current;
9277
+ if (!next) return base.filter((k) => k !== key);
9278
+ return allowMultipleOpen ? [...base.filter((k) => k !== key), key] : [key];
9279
+ });
9280
+ };
9281
+ const flatDocuments = resolvedGroups.flatMap((group) => group.documents ?? []);
9282
+ const rootClass = ["dch", className].filter(Boolean).join(" ");
9283
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("section", { className: rootClass, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "dch__inner", children: [
9284
+ (title || description) && /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "dch__header", children: [
9285
+ title && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(HeadingTag, { className: "dch__title", children: title }),
9286
+ description && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: "dch__description", children: description })
9287
+ ] }),
9288
+ variant === "flat" ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
9289
+ DocumentChipList,
9290
+ {
9291
+ documents: flatDocuments,
9292
+ iconAlt,
9293
+ iconSrc,
9294
+ onLanguageSelect
9295
+ }
9296
+ ) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "dch__groups", children: resolvedGroups.map((group, i) => {
9297
+ const key = groupKeys[i];
9298
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
9299
+ Accordion,
9300
+ {
9301
+ className: "dch__group",
9302
+ title: group.title,
9303
+ open: resolvedOpenKeys.includes(key),
9304
+ onToggle: (next) => handleToggle(key, next),
9305
+ showTopDivider: i > 0,
9306
+ children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
9307
+ DocumentChipList,
9308
+ {
9309
+ documents: group.documents ?? [],
9310
+ iconAlt,
9311
+ iconSrc,
9312
+ onLanguageSelect
9313
+ }
9314
+ )
9315
+ },
9316
+ key
9317
+ );
9318
+ }) })
9319
+ ] }) });
9320
+ };
9321
+
9322
+ // components/LinkModal/LinkModal.tsx
9323
+ var import_react36 = require("react");
9324
+ var import_react_dom2 = require("react-dom");
9325
+ var import_jsx_runtime67 = require("react/jsx-runtime");
9326
+ var XMarkIcon3 = () => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
9327
+ "svg",
9328
+ {
9329
+ width: "24",
9330
+ height: "24",
9331
+ viewBox: "0 0 24 24",
9332
+ fill: "none",
9333
+ xmlns: "http://www.w3.org/2000/svg",
9334
+ "aria-hidden": "true",
9335
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
9336
+ "path",
9337
+ {
9338
+ d: "M5 5l14 14M19 5L5 19",
9339
+ stroke: "currentColor",
9340
+ strokeWidth: "1.5",
9341
+ strokeLinecap: "round"
9342
+ }
9343
+ )
9344
+ }
9345
+ );
9346
+ var FOCUSABLE_SELECTOR = [
9347
+ "a[href]",
9348
+ "button:not([disabled])",
9349
+ "input:not([disabled])",
9350
+ "select:not([disabled])",
9351
+ "textarea:not([disabled])",
9352
+ '[tabindex]:not([tabindex="-1"])'
9353
+ ].join(",");
9354
+ var LinkModal = ({
9355
+ open,
9356
+ onClose,
9357
+ title = "Dialog title",
9358
+ closeLabel = "Close",
9359
+ children,
9360
+ headingLevel: HeadingTag = "h2",
9361
+ container,
9362
+ className,
9363
+ ...props
9364
+ }) => {
9365
+ const titleId = (0, import_react36.useId)();
9366
+ const panelRef = (0, import_react36.useRef)(null);
9367
+ const triggerRef = (0, import_react36.useRef)(null);
9368
+ const getFocusable = (0, import_react36.useCallback)(() => {
9369
+ const panel = panelRef.current;
9370
+ if (!panel) return [];
9371
+ return Array.from(panel.querySelectorAll(FOCUSABLE_SELECTOR)).filter(
9372
+ (el) => el.offsetParent !== null || el === document.activeElement
9373
+ );
9374
+ }, []);
9375
+ (0, import_react36.useEffect)(() => {
9376
+ if (!open || typeof document === "undefined") return;
9377
+ triggerRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
9378
+ panelRef.current?.focus();
9379
+ return () => {
9380
+ const trigger = triggerRef.current;
9381
+ triggerRef.current = null;
9382
+ if (trigger && document.contains(trigger)) trigger.focus();
9383
+ };
9384
+ }, [open]);
9385
+ (0, import_react36.useEffect)(() => {
9386
+ if (!open || typeof document === "undefined") return;
9387
+ const handleKeyDown = (event) => {
9388
+ if (event.key === "Escape") {
9389
+ event.stopPropagation();
9390
+ onClose();
9391
+ }
9392
+ };
9393
+ document.addEventListener("keydown", handleKeyDown);
9394
+ return () => document.removeEventListener("keydown", handleKeyDown);
9395
+ }, [open, onClose]);
9396
+ (0, import_react36.useEffect)(() => {
9397
+ if (!open || typeof document === "undefined") return;
9398
+ const body = document.body;
9399
+ const previousOverflow = body.style.overflow;
9400
+ const previousPaddingRight = body.style.paddingRight;
9401
+ const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
9402
+ body.style.overflow = "hidden";
9403
+ if (scrollbarWidth > 0) {
9404
+ const current = parseFloat(window.getComputedStyle(body).paddingRight) || 0;
9405
+ body.style.paddingRight = `${current + scrollbarWidth}px`;
9406
+ }
9407
+ return () => {
9408
+ body.style.overflow = previousOverflow;
9409
+ body.style.paddingRight = previousPaddingRight;
9410
+ };
9411
+ }, [open]);
9412
+ const handlePanelKeyDown = (event) => {
9413
+ if (event.key !== "Tab") return;
9414
+ const focusable = getFocusable();
9415
+ if (focusable.length === 0) {
9416
+ event.preventDefault();
9417
+ panelRef.current?.focus();
9418
+ return;
9419
+ }
9420
+ const first = focusable[0];
9421
+ const last = focusable[focusable.length - 1];
9422
+ const active = document.activeElement;
9423
+ if (event.shiftKey) {
9424
+ if (active === first || active === panelRef.current) {
9425
+ event.preventDefault();
9426
+ last.focus();
9427
+ }
9428
+ return;
9429
+ }
9430
+ if (active === last) {
9431
+ event.preventDefault();
9432
+ first.focus();
9433
+ }
9434
+ };
9435
+ if (!open || typeof document === "undefined") return null;
9436
+ const rootClass = ["lm", className].filter(Boolean).join(" ");
9437
+ return (0, import_react_dom2.createPortal)(
9438
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: rootClass, onClick: onClose, children: [
9439
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "lm__scrim", "aria-hidden": "true" }),
9440
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
9441
+ "div",
9442
+ {
9443
+ ref: panelRef,
9444
+ className: "lm__panel",
9445
+ role: "dialog",
9446
+ "aria-modal": "true",
9447
+ "aria-labelledby": titleId,
9448
+ tabIndex: -1,
9449
+ onClick: (event) => event.stopPropagation(),
9450
+ onKeyDown: handlePanelKeyDown,
9451
+ ...props,
9452
+ children: [
9453
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
9454
+ "button",
9455
+ {
9456
+ type: "button",
9457
+ className: "lm__close",
9458
+ onClick: onClose,
9459
+ "aria-label": closeLabel,
9460
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(XMarkIcon3, {})
9461
+ }
9462
+ ),
9463
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(HeadingTag, { id: titleId, className: "lm__title", children: title }),
9464
+ children && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "lm__body", children })
9465
+ ]
9466
+ }
9467
+ )
9468
+ ] }),
9469
+ container ?? document.body
9470
+ );
9471
+ };
9472
+
9473
+ // templates/LanguageSelectModal/LanguageSelectModal.tsx
9474
+ var import_jsx_runtime68 = require("react/jsx-runtime");
9475
+ var DEFAULT_OPTIONS = [
9476
+ { id: "option-one", label: "First option", href: "#" },
9477
+ { id: "option-two", label: "Second option", href: "#" },
9478
+ { id: "option-three", label: "Third option", href: "#" },
9479
+ { id: "option-four", label: "Fourth option", href: "#" },
9480
+ { id: "option-five", label: "Fifth option", href: "#" },
9481
+ { id: "option-six", label: "Sixth option", href: "#" }
9482
+ ];
9483
+ var LanguageSelectModal = ({
9484
+ open,
9485
+ onClose,
9486
+ title = "Select your language",
9487
+ closeLabel = "Close",
9488
+ options,
9489
+ headingLevel = "h2",
9490
+ container,
9491
+ className,
9492
+ ...props
9493
+ }) => {
9494
+ const resolvedOptions = options && options.length > 0 ? options : DEFAULT_OPTIONS;
9495
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
9496
+ LinkModal,
9497
+ {
9498
+ open,
9499
+ onClose,
9500
+ title,
9501
+ closeLabel,
9502
+ headingLevel,
9503
+ container,
9504
+ className,
9505
+ ...props,
9506
+ children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("ul", { className: "lsm__grid", children: resolvedOptions.map((option, i) => {
9507
+ const isExternal = option.external ?? true;
9508
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("li", { className: "lsm__grid-item", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
9509
+ "a",
9510
+ {
9511
+ className: "lsm__option",
9512
+ href: option.href,
9513
+ target: isExternal ? "_blank" : void 0,
9514
+ rel: isExternal ? "noopener noreferrer" : void 0,
9515
+ children: [
9516
+ option.flagSrc && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
9517
+ "img",
9518
+ {
9519
+ className: "lsm__flag",
9520
+ src: option.flagSrc,
9521
+ alt: option.flagAlt ?? "",
9522
+ loading: "lazy",
9523
+ "aria-hidden": option.flagAlt ? void 0 : true
9524
+ }
9525
+ ),
9526
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "lsm__option-label", children: option.label })
9527
+ ]
9528
+ }
9529
+ ) }, option.id ?? i);
9530
+ }) })
9531
+ }
9532
+ );
9533
+ };
9534
+
9535
+ // templates/AffiliatesSlider/AffiliatesSlider.tsx
9536
+ var import_react37 = require("react");
9537
+ var import_jsx_runtime69 = require("react/jsx-runtime");
9538
+ var ArrowIcon2 = () => /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
9539
+ "svg",
9540
+ {
9541
+ width: "32",
9542
+ height: "32",
9543
+ viewBox: "0 0 32 32",
9544
+ fill: "none",
9545
+ xmlns: "http://www.w3.org/2000/svg",
9546
+ "aria-hidden": "true",
9547
+ children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
9548
+ "path",
9549
+ {
9550
+ d: "M24.5547 16.9688L17.6797 23.8438C17.4453 24.0781 17.0156 24.0781 16.7812 23.8438C16.5469 23.6094 16.5469 23.1797 16.7812 22.9453L22.6016 17.125H7.875C7.52344 17.125 7.25 16.8516 7.25 16.5C7.25 16.1875 7.52344 15.875 7.875 15.875H22.6016L16.7812 10.0938C16.5469 9.85938 16.5469 9.42969 16.7812 9.19531C17.0156 8.96094 17.4453 8.96094 17.6797 9.19531L24.5547 16.0703C24.7891 16.3047 24.7891 16.7344 24.5547 16.9688Z",
9551
+ fill: "currentColor",
9552
+ fillOpacity: "0.72"
9553
+ }
9554
+ )
9555
+ }
9556
+ );
9557
+ var TrackGradient = () => /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
9558
+ "svg",
9559
+ {
9560
+ preserveAspectRatio: "none",
9561
+ width: "100%",
9562
+ height: "49",
9563
+ viewBox: "0 0 408 50",
9564
+ fill: "none",
9565
+ xmlns: "http://www.w3.org/2000/svg",
9566
+ "aria-hidden": "true",
9567
+ className: "afs__track-gradient",
9568
+ children: [
9569
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
9570
+ "path",
9571
+ {
9572
+ opacity: "0.5",
9573
+ d: "M408 0.25L0 49.25H408V0.25Z",
9574
+ fill: "url(#afs-track-gradient)"
9575
+ }
9576
+ ),
9577
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
9578
+ "linearGradient",
9579
+ {
9580
+ id: "afs-track-gradient",
9581
+ x1: "0",
9582
+ y1: "9.91566",
9583
+ x2: "178.34",
9584
+ y2: "227.916",
9585
+ gradientUnits: "userSpaceOnUse",
9586
+ children: [
9587
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("stop", { stopColor: "var(--afs-track-gradient-start)" }),
9588
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("stop", { offset: "1", stopColor: "var(--afs-track-gradient-end)" })
9589
+ ]
9590
+ }
9591
+ ) })
9592
+ ]
9593
+ }
9594
+ );
9595
+ var buildDefaultTicks = (min, max) => {
9596
+ const span = max - min;
9597
+ return [0, 0.25, 0.5, 0.75, 1].map((ratio) => Math.round(min + span * ratio));
9598
+ };
9599
+ var formatIncome = (value) => new Intl.NumberFormat("en-US", { maximumFractionDigits: 0 }).format(value);
9600
+ var AffiliatesSlider = ({
9601
+ title = "Section title goes here",
9602
+ description = "Explain how this specific feature helps your user.",
9603
+ min = 10,
9604
+ max = 50,
9605
+ step = 1,
9606
+ defaultValue = 10,
9607
+ value,
9608
+ onValueChange,
9609
+ referralsLabel = "total referrals (Min deposit amount of $100 each)",
9610
+ incomeLabel = "your potential income per month",
9611
+ incomePerReferral = 100,
9612
+ currencySymbol = "$",
9613
+ tickValues,
9614
+ disclaimer = "This calculator provides estimates only and may not reflect actual earnings.",
9615
+ disclaimerIconSrc = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/68da5c86c91c54f39c86cdaf_icon.svg",
9616
+ disclaimerIconAlt = "",
9617
+ sliderLabel = "Number of referrals",
9618
+ className,
9619
+ ...props
9620
+ }) => {
9621
+ const [internalValue, setInternalValue] = (0, import_react37.useState)(defaultValue);
9622
+ const currentValue = value ?? internalValue;
9623
+ const handleChange = (0, import_react37.useCallback)(
9624
+ (next) => {
9625
+ if (value === void 0) setInternalValue(next);
9626
+ onValueChange?.(next);
9627
+ },
9628
+ [onValueChange, value]
9629
+ );
9630
+ const ticks = (0, import_react37.useMemo)(
9631
+ () => tickValues ?? buildDefaultTicks(min, max),
9632
+ [max, min, tickValues]
9633
+ );
9634
+ const fillPercent = (currentValue - min) / (max - min) * 100;
9635
+ const income = currentValue * incomePerReferral;
9636
+ const rootClass = ["afs", className].filter(Boolean).join(" ");
9637
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("section", { className: rootClass, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__inner", children: [
9638
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__header", children: [
9639
+ title && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("h2", { className: "afs__title", children: title }),
9640
+ description && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "afs__description", children: description })
9641
+ ] }),
9642
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "afs__form", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__controls", children: [
9643
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__referrals", children: [
9644
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "afs__metric", children: currentValue }),
9645
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "afs__metric-label", children: referralsLabel })
9646
+ ] }),
9647
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "afs__arrow", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ArrowIcon2, {}) }),
9648
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__slider-block", children: [
9649
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(TrackGradient, {}),
9650
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "afs__track-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__track", children: [
9651
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
9652
+ "div",
9653
+ {
9654
+ className: "afs__fill",
9655
+ style: { width: `${fillPercent}%` }
9656
+ }
9657
+ ),
9658
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
9659
+ "div",
9660
+ {
9661
+ className: "afs__handle",
9662
+ style: { left: `${fillPercent}%` },
9663
+ "aria-hidden": "true"
9664
+ }
9665
+ ),
9666
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
9667
+ "input",
9668
+ {
9669
+ type: "range",
9670
+ className: "afs__input",
9671
+ min,
9672
+ max,
9673
+ step,
9674
+ value: currentValue,
9675
+ "aria-label": sliderLabel,
9676
+ "aria-valuemin": min,
9677
+ "aria-valuemax": max,
9678
+ "aria-valuenow": currentValue,
9679
+ onChange: (event) => handleChange(Number(event.target.value))
9680
+ }
9681
+ )
9682
+ ] }) }),
9683
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "afs__ticks", children: ticks.map((tick) => /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "afs__tick", children: tick }, tick)) })
9684
+ ] }),
9685
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__income", children: [
9686
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__income-value", children: [
9687
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "afs__metric", children: currencySymbol }),
9688
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "afs__metric", children: formatIncome(income) })
9689
+ ] }),
9690
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "afs__metric-label afs__metric-label--right", children: incomeLabel })
9691
+ ] })
9692
+ ] }) }),
9693
+ disclaimer && /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__disclaimer", children: [
9694
+ disclaimerIconSrc && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
9695
+ "img",
9696
+ {
9697
+ className: "afs__disclaimer-icon",
9698
+ src: disclaimerIconSrc,
9699
+ alt: disclaimerIconAlt,
9700
+ loading: "lazy",
9701
+ "aria-hidden": disclaimerIconAlt ? void 0 : true
9702
+ }
9703
+ ),
9704
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "afs__disclaimer-text", children: disclaimer })
9705
+ ] })
9706
+ ] }) });
9707
+ };
8528
9708
  // Annotate the CommonJS export names for ESM import in node:
8529
9709
  0 && (module.exports = {
8530
9710
  AVATAR_DATA,
8531
9711
  Accordion,
9712
+ AffiliatesSlider,
8532
9713
  ArticleHero,
8533
9714
  ArticleSection,
8534
9715
  AvatarGrid,
@@ -8543,15 +9724,18 @@ var ResourceBanner = ({
8543
9724
  Chip,
8544
9725
  ChipDropdown,
8545
9726
  CoralBanner,
9727
+ CountryLinkGrid,
8546
9728
  DEFAULT_AWARDS,
8547
9729
  DEFAULT_CULTURE_CARDS,
8548
9730
  DEFAULT_EXCHANGE_RATE_WS_URL,
8549
9731
  DEFAULT_SYMBOLS_ENDPOINT,
8550
9732
  DayNightTransition,
9733
+ DocumentChips,
8551
9734
  DotLottieInView,
8552
9735
  DownloadBadge,
8553
9736
  DownloadBanner,
8554
9737
  DynamicTable,
9738
+ EntityInfoSection,
8555
9739
  FEATURE_AWARDS_TEXT_CONTENT,
8556
9740
  FEATURE_BLOG_CATEGORIES_TEXT_CONTENT,
8557
9741
  FEATURE_BLOG_TEXT_CONTENT,
@@ -8576,11 +9760,20 @@ var ResourceBanner = ({
8576
9760
  Hero,
8577
9761
  IMAGE_BANNER_CHIPS_DEFAULT_IMAGE,
8578
9762
  ImageBanner,
9763
+ LanguageSelectModal,
8579
9764
  Leaders,
8580
9765
  Link,
9766
+ LinkModal,
8581
9767
  LogoMarquee,
8582
9768
  MasterPartner,
8583
9769
  Navbar,
9770
+ OPTIONS_TYPES_ACCUMULATOR_CONTENT,
9771
+ OPTIONS_TYPES_DIGITAL_CONTENT,
9772
+ OPTIONS_TYPES_MULTIPLIERS_CONTENT,
9773
+ OPTIONS_TYPES_PLACEHOLDER_ITEMS,
9774
+ OPTIONS_TYPES_TURBO_CONTENT,
9775
+ OPTIONS_TYPES_VANILLA_CONTENT,
9776
+ OptionsTypes,
8584
9777
  PARALLAX_BANNER_TEXT_CONTENT,
8585
9778
  Pagination,
8586
9779
  ParallaxBanner,