@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.mjs CHANGED
@@ -1077,17 +1077,29 @@ var Pagination = ({
1077
1077
  };
1078
1078
 
1079
1079
  // components/Tabs/Tabs.tsx
1080
+ import { useId as useId2, useRef as useRef3 } from "react";
1080
1081
  import { jsx as jsx17 } from "react/jsx-runtime";
1081
1082
  var Tabs = ({
1082
1083
  items,
1083
1084
  activeId,
1084
1085
  onChange,
1086
+ idPrefix,
1085
1087
  className,
1086
1088
  ...props
1087
1089
  }) => {
1090
+ const generatedId = useId2().replace(/:/g, "");
1091
+ const prefix = idPrefix ?? `tabs-${generatedId}`;
1092
+ const rootRef = useRef3(null);
1093
+ const selectAndFocus = (index) => {
1094
+ const item = items[index];
1095
+ if (!item) return;
1096
+ onChange(item.id);
1097
+ rootRef.current?.querySelectorAll('[role="tab"]')[index]?.focus();
1098
+ };
1088
1099
  return /* @__PURE__ */ jsx17(
1089
1100
  "div",
1090
1101
  {
1102
+ ref: rootRef,
1091
1103
  className: ["tabs-menu w-tab-menu", className].filter(Boolean).join(" "),
1092
1104
  role: "tablist",
1093
1105
  ...props,
@@ -1099,10 +1111,25 @@ var Tabs = ({
1099
1111
  label: item.label,
1100
1112
  selected: isActive,
1101
1113
  onClick: () => onChange(item.id),
1114
+ onKeyDown: (event) => {
1115
+ if (event.key === "ArrowRight" || event.key === "ArrowDown") {
1116
+ event.preventDefault();
1117
+ selectAndFocus((i + 1) % items.length);
1118
+ } else if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
1119
+ event.preventDefault();
1120
+ selectAndFocus((i - 1 + items.length) % items.length);
1121
+ } else if (event.key === "Home") {
1122
+ event.preventDefault();
1123
+ selectAndFocus(0);
1124
+ } else if (event.key === "End") {
1125
+ event.preventDefault();
1126
+ selectAndFocus(items.length - 1);
1127
+ }
1128
+ },
1102
1129
  className: isActive ? "tab-active" : "",
1103
1130
  "data-w-tab": item.label,
1104
- id: `w-tabs-0-data-w-tab-${i}`,
1105
- "aria-controls": `w-tabs-0-data-w-pane-${i}`,
1131
+ id: `${prefix}-tab-${i}`,
1132
+ "aria-controls": `${prefix}-panel-${i}`,
1106
1133
  "aria-selected": isActive,
1107
1134
  tabIndex: isActive ? 0 : -1,
1108
1135
  role: "tab"
@@ -1134,7 +1161,7 @@ var FaqAccordion = ({
1134
1161
  title: item.question,
1135
1162
  open: openIndex === index,
1136
1163
  onToggle: handleToggle(index),
1137
- showTopDivider: index === 0,
1164
+ showTopDivider: false,
1138
1165
  showBottomDivider: true,
1139
1166
  children: item.answer
1140
1167
  },
@@ -1146,6 +1173,19 @@ var FaqAccordion = ({
1146
1173
  // templates/FeatureCards/FeatureCards.tsx
1147
1174
  import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
1148
1175
  var externalLinkRel = (href) => href && /^https?:\/\//i.test(href) ? "noopener noreferrer" : void 0;
1176
+ var PlatformIcon = ({ platform }) => {
1177
+ if (!platform.iconSrc) return null;
1178
+ return /* @__PURE__ */ jsx19(
1179
+ "img",
1180
+ {
1181
+ alt: "",
1182
+ className: "fc-platformLink-icon",
1183
+ height: 32,
1184
+ src: platform.iconSrc,
1185
+ width: 32
1186
+ }
1187
+ );
1188
+ };
1149
1189
  var TwoCardsItem = ({ card, index }) => {
1150
1190
  const isDark = card.twoTone === "dark";
1151
1191
  const showCardLink = card.showLink !== false;
@@ -1184,16 +1224,7 @@ var TwoCardsItem = ({ card, index }) => {
1184
1224
  href: platform.href,
1185
1225
  rel: externalLinkRel(platform.href),
1186
1226
  children: [
1187
- /* @__PURE__ */ jsx19(
1188
- "img",
1189
- {
1190
- alt: "",
1191
- className: "fc-platformLink-icon",
1192
- height: 32,
1193
- src: platform.iconSrc,
1194
- width: 32
1195
- }
1196
- ),
1227
+ /* @__PURE__ */ jsx19(PlatformIcon, { platform }),
1197
1228
  /* @__PURE__ */ jsx19("span", { className: "fc-platformLink-label", children: platform.label })
1198
1229
  ]
1199
1230
  },
@@ -1242,16 +1273,7 @@ var OneCardPanel = ({ card }) => {
1242
1273
  href: platform.href,
1243
1274
  rel: externalLinkRel(platform.href),
1244
1275
  children: [
1245
- /* @__PURE__ */ jsx19(
1246
- "img",
1247
- {
1248
- alt: "",
1249
- className: "fc-platformLink-icon",
1250
- height: 32,
1251
- src: platform.iconSrc,
1252
- width: 32
1253
- }
1254
- ),
1276
+ /* @__PURE__ */ jsx19(PlatformIcon, { platform }),
1255
1277
  /* @__PURE__ */ jsx19("span", { className: "fc-platformLink-label", children: platform.label })
1256
1278
  ]
1257
1279
  },
@@ -1929,7 +1951,7 @@ var Hero = ({
1929
1951
  };
1930
1952
 
1931
1953
  // templates/Header/Header.tsx
1932
- import { useEffect as useEffect3, useRef as useRef3 } from "react";
1954
+ import { useEffect as useEffect3, useRef as useRef4 } from "react";
1933
1955
  import { jsx as jsx24, jsxs as jsxs22 } from "react/jsx-runtime";
1934
1956
  var ButtonBlock2 = ({
1935
1957
  primaryButton,
@@ -2006,9 +2028,9 @@ var Header = ({
2006
2028
  ...props
2007
2029
  }) => {
2008
2030
  const variantClass = `header--${variant}`;
2009
- const sectionRef = useRef3(null);
2010
- const leftRef = useRef3(null);
2011
- const rightRef = useRef3(null);
2031
+ const sectionRef = useRef4(null);
2032
+ const leftRef = useRef4(null);
2033
+ const rightRef = useRef4(null);
2012
2034
  useEffect3(() => {
2013
2035
  if (variant !== "visuals") return;
2014
2036
  if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
@@ -2072,7 +2094,7 @@ var Header = ({
2072
2094
  };
2073
2095
 
2074
2096
  // templates/Stats/StatsV2.tsx
2075
- import { useEffect as useEffect4, useMemo, useRef as useRef4, useState as useState7 } from "react";
2097
+ import { useEffect as useEffect4, useMemo, useRef as useRef5, useState as useState7 } from "react";
2076
2098
  import { jsx as jsx25, jsxs as jsxs23 } from "react/jsx-runtime";
2077
2099
  var HOLD_MS = 1e3;
2078
2100
  var STEP_DURATION_MS = 700;
@@ -2256,10 +2278,10 @@ var Stats = ({
2256
2278
  className,
2257
2279
  ...props
2258
2280
  }) => {
2259
- const sectionRef = useRef4(null);
2260
- const leftColRef = useRef4(null);
2261
- const rightColRef = useRef4(null);
2262
- const rafRef = useRef4(null);
2281
+ const sectionRef = useRef5(null);
2282
+ const leftColRef = useRef5(null);
2283
+ const rightColRef = useRef5(null);
2284
+ const rafRef = useRef5(null);
2263
2285
  const N = stats.length;
2264
2286
  const hasAwards = leftAwards.length > 0 || rightAwards.length > 0;
2265
2287
  const allAwards = [...leftAwards, ...rightAwards];
@@ -2270,7 +2292,7 @@ var Stats = ({
2270
2292
  }, [stats, N]);
2271
2293
  const [step, setStep] = useState7(0);
2272
2294
  const [phase, setPhase] = useState7("idle");
2273
- const scheduleRef = useRef4(null);
2295
+ const scheduleRef = useRef5(null);
2274
2296
  useEffect4(() => {
2275
2297
  if (N <= 1) return;
2276
2298
  let timerId = null;
@@ -2440,7 +2462,7 @@ var Stats = ({
2440
2462
  };
2441
2463
 
2442
2464
  // templates/Stats/StatsSimple.tsx
2443
- import { useEffect as useEffect5, useRef as useRef5, useState as useState8 } from "react";
2465
+ import { useEffect as useEffect5, useRef as useRef6, useState as useState8 } from "react";
2444
2466
  import { jsx as jsx26, jsxs as jsxs24 } from "react/jsx-runtime";
2445
2467
  function parseValue(raw) {
2446
2468
  const match = raw.match(/^([^0-9]*)([0-9]+(?:\.[0-9]+)?)(.*)$/);
@@ -2455,8 +2477,8 @@ var DURATION_MS = 1800;
2455
2477
  var EASING2 = (t) => 1 - Math.pow(1 - t, 3);
2456
2478
  function useCountUp(target, active) {
2457
2479
  const [display, setDisplay] = useState8(0);
2458
- const rafRef = useRef5(null);
2459
- const startRef = useRef5(null);
2480
+ const rafRef = useRef6(null);
2481
+ const startRef = useRef6(null);
2460
2482
  useEffect5(() => {
2461
2483
  if (!active) return;
2462
2484
  startRef.current = null;
@@ -2495,7 +2517,7 @@ var StatsSimple = ({
2495
2517
  className,
2496
2518
  ...props
2497
2519
  }) => {
2498
- const sectionRef = useRef5(null);
2520
+ const sectionRef = useRef6(null);
2499
2521
  const [animated, setAnimated] = useState8(false);
2500
2522
  useEffect5(() => {
2501
2523
  const el = sectionRef.current;
@@ -2527,14 +2549,14 @@ var StatsSimple = ({
2527
2549
  };
2528
2550
 
2529
2551
  // templates/FeatureScroll/FeatureScroll.tsx
2530
- import { useEffect as useEffect7, useLayoutEffect, useRef as useRef7, useState as useState10 } from "react";
2552
+ import { useEffect as useEffect7, useLayoutEffect, useRef as useRef8, useState as useState10 } from "react";
2531
2553
 
2532
2554
  // components/DotLottieInView/DotLottieInView.tsx
2533
2555
  import {
2534
2556
  lazy,
2535
2557
  Suspense,
2536
2558
  useEffect as useEffect6,
2537
- useRef as useRef6,
2559
+ useRef as useRef7,
2538
2560
  useState as useState9
2539
2561
  } from "react";
2540
2562
  import { jsx as jsx27 } from "react/jsx-runtime";
@@ -2545,12 +2567,13 @@ function DotLottieInView({
2545
2567
  enabled = true,
2546
2568
  rootMargin = "0px",
2547
2569
  threshold = 0.2,
2570
+ loop = false,
2548
2571
  className,
2549
2572
  style,
2550
2573
  poster,
2551
2574
  ...dotProps
2552
2575
  }) {
2553
- const wrapRef = useRef6(null);
2576
+ const wrapRef = useRef7(null);
2554
2577
  const [inView, setInView] = useState9(false);
2555
2578
  const [mounted, setMounted] = useState9(false);
2556
2579
  const [dotLottie, setDotLottie] = useState9(null);
@@ -2620,7 +2643,7 @@ function DotLottieInView({
2620
2643
  DotLottiePlayer,
2621
2644
  {
2622
2645
  ...dotProps,
2623
- loop: false,
2646
+ loop,
2624
2647
  autoplay: false,
2625
2648
  dotLottieRefCallback: setDotLottie
2626
2649
  }
@@ -2757,9 +2780,9 @@ var FeatureScroll = ({
2757
2780
  }) => {
2758
2781
  const [activeIndex, setActiveIndex] = useState10(0);
2759
2782
  const [mobileActiveIndex, setMobileActiveIndex] = useState10(0);
2760
- const titleRefs = useRef7([]);
2761
- const mobileItemRefs = useRef7([]);
2762
- const mediaColRef = useRef7(null);
2783
+ const titleRefs = useRef8([]);
2784
+ const mobileItemRefs = useRef8([]);
2785
+ const mediaColRef = useRef8(null);
2763
2786
  useLayoutEffect(() => {
2764
2787
  if (items.length === 0) return;
2765
2788
  const readThresholdPx = () => {
@@ -2994,7 +3017,7 @@ var FeatureSplit = ({
2994
3017
  };
2995
3018
 
2996
3019
  // templates/StickyStackedCards/StickyStackedCards.tsx
2997
- import { useEffect as useEffect8, useRef as useRef8 } from "react";
3020
+ import { useEffect as useEffect8, useRef as useRef9 } from "react";
2998
3021
  import { jsx as jsx30, jsxs as jsxs27 } from "react/jsx-runtime";
2999
3022
  var PLACEHOLDER_IMAGE = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69b9309379ac08e59ca8210a_1f3f555da9a5cbb13a6fe1bf0d5fe1b6_placeholder-image.webp";
3000
3023
  var STEPS_DATA = [
@@ -3024,7 +3047,7 @@ var StickyStackedCards = ({
3024
3047
  className,
3025
3048
  ...props
3026
3049
  }) => {
3027
- const cardRefs = useRef8([]);
3050
+ const cardRefs = useRef9([]);
3028
3051
  useEffect8(() => {
3029
3052
  if (typeof window === "undefined") return;
3030
3053
  let rafId = 0;
@@ -3114,7 +3137,7 @@ var StickyStackedCards = ({
3114
3137
  };
3115
3138
 
3116
3139
  // templates/CTABanner/CTABanner.tsx
3117
- import { useRef as useRef9 } from "react";
3140
+ import { useRef as useRef10 } from "react";
3118
3141
  import {
3119
3142
  motion,
3120
3143
  useScroll,
@@ -3368,7 +3391,7 @@ var CTABanner = ({
3368
3391
  ...props
3369
3392
  }) => {
3370
3393
  const resolvedAvatars = avatars ?? (variant === "compact" ? COMPACT_AVATAR_DATA : AVATAR_DATA);
3371
- const sectionRef = useRef9(null);
3394
+ const sectionRef = useRef10(null);
3372
3395
  const { scrollYProgress } = useScroll({
3373
3396
  target: sectionRef,
3374
3397
  offset: ["start end", "end start"]
@@ -3455,7 +3478,7 @@ var CTABanner = ({
3455
3478
  };
3456
3479
 
3457
3480
  // components/Navbar/Navbar.tsx
3458
- import { useRef as useRef10, useState as useState11, useEffect as useEffect9, useCallback as useCallback2 } from "react";
3481
+ import { useRef as useRef11, useState as useState11, useEffect as useEffect9, useCallback as useCallback2 } from "react";
3459
3482
  import { motion as motion2, AnimatePresence } from "framer-motion";
3460
3483
 
3461
3484
  // assets/icon-globe.svg
@@ -3699,10 +3722,10 @@ var Navbar = ({
3699
3722
  const [scrolled, setScrolled] = useState11(false);
3700
3723
  const [langDropdownOpen, setLangDropdownOpen] = useState11(false);
3701
3724
  const [mobileLangOpen, setMobileLangOpen] = useState11(false);
3702
- const hoverTimeoutRef = useRef10(null);
3703
- const langHoverTimeoutRef = useRef10(null);
3704
- const pillAreaRef = useRef10(null);
3705
- const langBtnRef = useRef10(null);
3725
+ const hoverTimeoutRef = useRef11(null);
3726
+ const langHoverTimeoutRef = useRef11(null);
3727
+ const pillAreaRef = useRef11(null);
3728
+ const langBtnRef = useRef11(null);
3706
3729
  const hasLangDropdown = Boolean(languageItems && languageItems.length > 0);
3707
3730
  const resolvedLogo = theme === "light" ? logoSrcDark ?? logoSrc : logoSrc;
3708
3731
  useEffect9(() => {
@@ -4057,7 +4080,7 @@ var Navbar = ({
4057
4080
  };
4058
4081
 
4059
4082
  // templates/DayNightTransition/DayNightTransition.tsx
4060
- import { useEffect as useEffect10, useLayoutEffect as useLayoutEffect2, useRef as useRef11, useState as useState12 } from "react";
4083
+ import { useEffect as useEffect10, useLayoutEffect as useLayoutEffect2, useRef as useRef12, useState as useState12 } from "react";
4061
4084
  import {
4062
4085
  motion as motion3,
4063
4086
  useScroll as useScroll2,
@@ -4172,8 +4195,8 @@ var DayNightTransition = ({
4172
4195
  className,
4173
4196
  ...props
4174
4197
  }) => {
4175
- const wrapperRef = useRef11(null);
4176
- const dayWordRef = useRef11(null);
4198
+ const wrapperRef = useRef12(null);
4199
+ const dayWordRef = useRef12(null);
4177
4200
  const [nightMarginStart, setNightMarginStart] = useState12("0px");
4178
4201
  const [nightMarginEnd, setNightMarginEnd] = useState12("0px");
4179
4202
  const [ixMedia, setIxMedia] = useState12("desktop");
@@ -4507,7 +4530,7 @@ var dayNightTransitionV2Preset = {
4507
4530
  };
4508
4531
 
4509
4532
  // templates/LogoMarquee/LogoMarquee.tsx
4510
- import { useRef as useRef12 } from "react";
4533
+ import { useRef as useRef13 } from "react";
4511
4534
  import {
4512
4535
  motion as motion4,
4513
4536
  useScroll as useScroll3,
@@ -4572,8 +4595,8 @@ var LogoMarquee = ({
4572
4595
  const scrollVelocity = useVelocity(scrollY);
4573
4596
  const col1Y = useMotionValue(0);
4574
4597
  const col2Y = useMotionValue(0);
4575
- const col1Ref = useRef12(null);
4576
- const col2Ref = useRef12(null);
4598
+ const col1Ref = useRef13(null);
4599
+ const col2Ref = useRef13(null);
4577
4600
  useAnimationFrame((_, delta) => {
4578
4601
  const raw = scrollVelocity.get();
4579
4602
  if (Math.abs(raw) < DEADZONE) return;
@@ -4831,14 +4854,14 @@ var DownloadBanner = ({
4831
4854
  };
4832
4855
 
4833
4856
  // templates/TextScroll/TextScroll.tsx
4834
- import { useEffect as useEffect11, useRef as useRef13 } from "react";
4857
+ import { useEffect as useEffect11, useRef as useRef14 } from "react";
4835
4858
  import { gsap } from "gsap";
4836
4859
  import { ScrollTrigger } from "gsap/ScrollTrigger";
4837
4860
  import { jsx as jsx38, jsxs as jsxs34 } from "react/jsx-runtime";
4838
4861
  gsap.registerPlugin(ScrollTrigger);
4839
4862
  var TextScroll = ({ text, className }) => {
4840
- const sectionRef = useRef13(null);
4841
- const wordsRef = useRef13([]);
4863
+ const sectionRef = useRef14(null);
4864
+ const wordsRef = useRef14([]);
4842
4865
  const words = text.split(/\s+/).filter(Boolean);
4843
4866
  useEffect11(() => {
4844
4867
  const section = sectionRef.current;
@@ -4899,7 +4922,7 @@ var TextScroll = ({ text, className }) => {
4899
4922
  };
4900
4923
 
4901
4924
  // templates/StickyMarketCards/StickyMarketCards.tsx
4902
- import { useEffect as useEffect12, useRef as useRef14 } from "react";
4925
+ import { useEffect as useEffect12, useRef as useRef15 } from "react";
4903
4926
  import { jsx as jsx39, jsxs as jsxs35 } from "react/jsx-runtime";
4904
4927
  var PLACEHOLDER_IMAGE3 = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69b9309379ac08e59ca8210a_1f3f555da9a5cbb13a6fe1bf0d5fe1b6_placeholder-image.webp";
4905
4928
  var StickyMarketCards = ({
@@ -4909,8 +4932,8 @@ var StickyMarketCards = ({
4909
4932
  className,
4910
4933
  ...props
4911
4934
  }) => {
4912
- const cardRefs = useRef14([]);
4913
- const cardInnerRefs = useRef14([]);
4935
+ const cardRefs = useRef15([]);
4936
+ const cardInnerRefs = useRef15([]);
4914
4937
  useEffect12(() => {
4915
4938
  if (typeof window === "undefined") return;
4916
4939
  let rafId = 0;
@@ -5522,7 +5545,7 @@ var ImageBanner = ({
5522
5545
  };
5523
5546
 
5524
5547
  // templates/Testimonial/Testimonial.tsx
5525
- import { useCallback as useCallback3, useEffect as useEffect13, useId as useId2, useRef as useRef15, useState as useState15 } from "react";
5548
+ import { useCallback as useCallback3, useEffect as useEffect13, useId as useId3, useRef as useRef16, useState as useState15 } from "react";
5526
5549
 
5527
5550
  // assets/quote-left.webp
5528
5551
  var quote_left_default = "data:image/webp;base64,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";
@@ -5536,7 +5559,7 @@ var trustpilot_rating_badge_default = "data:image/png;base64,iVBORw0KGgoAAAANSUh
5536
5559
  // templates/Testimonial/Testimonial.tsx
5537
5560
  import { jsx as jsx44, jsxs as jsxs40 } from "react/jsx-runtime";
5538
5561
  var StarCell = ({ fill }) => {
5539
- const clipId = useId2();
5562
+ const clipId = useId3();
5540
5563
  const clamped = Math.max(0, Math.min(1, fill));
5541
5564
  return /* @__PURE__ */ jsxs40(
5542
5565
  "svg",
@@ -5600,7 +5623,7 @@ var TrustpilotTestimonial = ({
5600
5623
  trustpilotScore = 4.5,
5601
5624
  ...props
5602
5625
  }) => {
5603
- const trackRef = useRef15(null);
5626
+ const trackRef = useRef16(null);
5604
5627
  const [canPrev, setCanPrev] = useState15(false);
5605
5628
  const [canNext, setCanNext] = useState15(true);
5606
5629
  const syncScrollState = useCallback3(() => {
@@ -5714,8 +5737,8 @@ var DefaultTestimonial = ({
5714
5737
  }) => {
5715
5738
  const [activeIndex, setActiveIndex] = useState15(0);
5716
5739
  const [phase, setPhase] = useState15("idle");
5717
- const pendingIndex = useRef15(null);
5718
- const autoRef = useRef15(null);
5740
+ const pendingIndex = useRef16(null);
5741
+ const autoRef = useRef16(null);
5719
5742
  const goTo = (next) => {
5720
5743
  if (next === activeIndex || phase !== "idle") return;
5721
5744
  pendingIndex.current = next;
@@ -6105,7 +6128,7 @@ var ArticleSection = ({
6105
6128
  };
6106
6129
 
6107
6130
  // templates/CoralBanner/CoralBanner.tsx
6108
- import { useCallback as useCallback4, useEffect as useEffect14, useRef as useRef16, useState as useState16 } from "react";
6131
+ import { useCallback as useCallback4, useEffect as useEffect14, useRef as useRef17, useState as useState16 } from "react";
6109
6132
  import { jsx as jsx47, jsxs as jsxs43 } from "react/jsx-runtime";
6110
6133
  var DEFAULT_SLIDES = [
6111
6134
  {
@@ -6220,8 +6243,8 @@ var CoralBanner = ({
6220
6243
  const count = resolvedSlides.length;
6221
6244
  const isCarousel = variant === "carousel" && count > 1;
6222
6245
  const [activeIndex, setActiveIndex] = useState16(0);
6223
- const autoplayTimer = useRef16(null);
6224
- const dragState = useRef16(null);
6246
+ const autoplayTimer = useRef17(null);
6247
+ const dragState = useRef17(null);
6225
6248
  const goTo = useCallback4(
6226
6249
  (index) => {
6227
6250
  if (count <= 1) return;
@@ -7182,7 +7205,7 @@ var FeatureBlogPage = ({
7182
7205
  };
7183
7206
 
7184
7207
  // templates/ParallaxBanner/ParallaxBanner.tsx
7185
- import { useRef as useRef17 } from "react";
7208
+ import { useRef as useRef18 } from "react";
7186
7209
  import { motion as motion5, useScroll as useScroll4, useSpring as useSpring3, useTransform as useTransform3, useReducedMotion } from "framer-motion";
7187
7210
  import { jsx as jsx55, jsxs as jsxs51 } from "react/jsx-runtime";
7188
7211
  var PARALLAX_BANNER_TEXT_CONTENT = {
@@ -7225,7 +7248,7 @@ var ParallaxBanner = ({
7225
7248
  className,
7226
7249
  ...props
7227
7250
  }) => {
7228
- const sectionRef = useRef17(null);
7251
+ const sectionRef = useRef18(null);
7229
7252
  const prefersReducedMotion = useReducedMotion();
7230
7253
  const parallaxActive = enableParallax && !prefersReducedMotion;
7231
7254
  const showCards = variant !== "banner-only" && cards.length > 0;
@@ -7291,7 +7314,7 @@ var ParallaxBanner = ({
7291
7314
  };
7292
7315
 
7293
7316
  // templates/TradingCalculator/TradingCalculator.tsx
7294
- import { useCallback as useCallback5, useEffect as useEffect16, useId as useId3, useMemo as useMemo7, useRef as useRef18, useState as useState21 } from "react";
7317
+ import { useCallback as useCallback5, useEffect as useEffect16, useId as useId4, useMemo as useMemo7, useRef as useRef19, useState as useState21 } from "react";
7295
7318
  import { Fragment as Fragment10, jsx as jsx56, jsxs as jsxs52 } from "react/jsx-runtime";
7296
7319
  var DEFAULT_SYMBOLS_ENDPOINT = "https://deriv-static-pricingfeedv2.firebaseio.com/n8n/row/prod/dynamic_trading_specs.json";
7297
7320
  var DEFAULT_EXCHANGE_RATE_WS_URL = "wss://ws.derivws.com/websockets/v3?app_id=1089";
@@ -7328,12 +7351,12 @@ function computeResults(symbol, volumeInLots, assetPrice, rates) {
7328
7351
  return { marginRequired, tradeVolume, pipValue, swapChargeLong, swapChargeShort };
7329
7352
  }
7330
7353
  function useExchangeRates(wsUrl) {
7331
- const socketRef = useRef18(null);
7332
- const reqIdRef = useRef18(1);
7333
- const pendingRef = useRef18(
7354
+ const socketRef = useRef19(null);
7355
+ const reqIdRef = useRef19(1);
7356
+ const pendingRef = useRef19(
7334
7357
  /* @__PURE__ */ new Map()
7335
7358
  );
7336
- const cacheRef = useRef18(/* @__PURE__ */ new Map());
7359
+ const cacheRef = useRef19(/* @__PURE__ */ new Map());
7337
7360
  useEffect16(() => {
7338
7361
  const pending = pendingRef.current;
7339
7362
  return () => {
@@ -7456,8 +7479,8 @@ var SymbolCombobox = ({ symbolsState, onRetry, selected, onSelect, error, inputI
7456
7479
  const [query, setQuery] = useState21("");
7457
7480
  const [isOpen, setIsOpen] = useState21(false);
7458
7481
  const [activeIndex, setActiveIndex] = useState21(-1);
7459
- const wrapperRef = useRef18(null);
7460
- const listboxId = useId3();
7482
+ const wrapperRef = useRef19(null);
7483
+ const listboxId = useId4();
7461
7484
  const isLoading = symbolsState.status === "loading";
7462
7485
  const isError = symbolsState.status === "error";
7463
7486
  const allSymbols = symbolsState.status === "ready" ? symbolsState.data : [];
@@ -7619,7 +7642,7 @@ var TradingCalculator = ({
7619
7642
  const [results, setResults] = useState21(null);
7620
7643
  const [isCalculating, setIsCalculating] = useState21(false);
7621
7644
  const [calcError, setCalcError] = useState21(null);
7622
- const didPreselect = useRef18(false);
7645
+ const didPreselect = useRef19(false);
7623
7646
  useEffect16(() => {
7624
7647
  if (didPreselect.current || !defaultSymbol || symbolsState.status !== "ready") return;
7625
7648
  const match = symbolsState.data.find((item) => item.symbol === defaultSymbol);
@@ -7674,9 +7697,9 @@ var TradingCalculator = ({
7674
7697
  setIsCalculating(false);
7675
7698
  }
7676
7699
  };
7677
- const symbolInputId = useId3();
7678
- const volumeInputId = useId3();
7679
- const priceInputId = useId3();
7700
+ const symbolInputId = useId4();
7701
+ const volumeInputId = useId4();
7702
+ const priceInputId = useId4();
7680
7703
  return /* @__PURE__ */ jsx56("section", { className: ["tcalc-section", className ?? ""].filter(Boolean).join(" "), ...props, children: /* @__PURE__ */ jsx56("div", { className: "tcalc-container", children: /* @__PURE__ */ jsxs52("div", { className: "tcalc-card", children: [
7681
7704
  /* @__PURE__ */ jsxs52("div", { className: "tcalc-column", children: [
7682
7705
  /* @__PURE__ */ jsx56("h3", { className: "tcalc-panelTitle", children: "Calculator" }),
@@ -7824,7 +7847,7 @@ var TradingCalculator = ({
7824
7847
  };
7825
7848
 
7826
7849
  // templates/TradingCalculatorHowTo/TradingCalculatorHowTo.tsx
7827
- import { Fragment as Fragment11, useEffect as useEffect17, useLayoutEffect as useLayoutEffect3, useRef as useRef19, useState as useState22 } from "react";
7850
+ import { Fragment as Fragment11, useEffect as useEffect17, useLayoutEffect as useLayoutEffect3, useRef as useRef20, useState as useState22 } from "react";
7828
7851
  import { Fragment as Fragment12, jsx as jsx57, jsxs as jsxs53 } from "react/jsx-runtime";
7829
7852
  var MARGIN_CONTENT = {
7830
7853
  title: "How to calculate margin requirements",
@@ -7997,8 +8020,8 @@ var ConnectorArrow = () => /* @__PURE__ */ jsxs53("svg", { width: "8", height: "
7997
8020
  /* @__PURE__ */ jsx57("path", { d: "M1.4 5.6L4 8.6L6.6 5.6", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round" })
7998
8021
  ] });
7999
8022
  var CalculationStrip = ({ tokens }) => {
8000
- const wrapperRef = useRef19(null);
8001
- const stripRef = useRef19(null);
8023
+ const wrapperRef = useRef20(null);
8024
+ const stripRef = useRef20(null);
8002
8025
  const [fit, setFit] = useState22({ scale: 1, naturalHeight: 0 });
8003
8026
  useIsomorphicLayoutEffect(() => {
8004
8027
  const wrapper = wrapperRef.current;
@@ -8435,9 +8458,1158 @@ var ResourceBanner = ({
8435
8458
  }) })
8436
8459
  ] }) }) }) });
8437
8460
  };
8461
+
8462
+ // templates/OptionsTypes/OptionsTypes.tsx
8463
+ import {
8464
+ useEffect as useEffect18,
8465
+ useId as useId5,
8466
+ useState as useState24
8467
+ } from "react";
8468
+ import { Fragment as Fragment13, jsx as jsx63, jsxs as jsxs59 } from "react/jsx-runtime";
8469
+ var OPTIONS_TYPES_PLACEHOLDER_ITEMS = [
8470
+ {
8471
+ id: "option-type",
8472
+ title: "Option type",
8473
+ description: "Explain how this option type works and when a customer might use it.",
8474
+ animations: [],
8475
+ markets: [{ label: "Market" }],
8476
+ platforms: [{ label: "Platform" }]
8477
+ }
8478
+ ];
8479
+ function safeHref(value) {
8480
+ if (!value) return null;
8481
+ if (value.startsWith("/") && !value.startsWith("//")) return value;
8482
+ try {
8483
+ const url = new URL(value);
8484
+ return url.protocol === "https:" ? value : null;
8485
+ } catch {
8486
+ return null;
8487
+ }
8488
+ }
8489
+ function safeLottieSrc(value) {
8490
+ const href = safeHref(value);
8491
+ if (!href) return null;
8492
+ try {
8493
+ const pathname = href.startsWith("/") ? href : new URL(href).pathname;
8494
+ return pathname.toLowerCase().endsWith(".lottie") ? href : null;
8495
+ } catch {
8496
+ return null;
8497
+ }
8498
+ }
8499
+ var iconPaths = {
8500
+ forex: [
8501
+ "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",
8502
+ "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"
8503
+ ],
8504
+ "stock-indices": [
8505
+ "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",
8506
+ "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",
8507
+ "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",
8508
+ "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"
8509
+ ],
8510
+ commodities: [
8511
+ "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"
8512
+ ],
8513
+ "derived-indices": [
8514
+ "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"
8515
+ ],
8516
+ cryptocurrencies: [
8517
+ "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",
8518
+ "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"
8519
+ ]
8520
+ };
8521
+ function MetaIcon({ icon, iconUrl }) {
8522
+ const imageSrc = safeHref(iconUrl);
8523
+ if (imageSrc) {
8524
+ return /* @__PURE__ */ jsx63(
8525
+ "img",
8526
+ {
8527
+ className: "ot__meta-image",
8528
+ src: imageSrc,
8529
+ alt: "",
8530
+ "aria-hidden": "true",
8531
+ loading: "lazy",
8532
+ decoding: "async"
8533
+ }
8534
+ );
8535
+ }
8536
+ if (!icon) return null;
8537
+ const paths = iconPaths[icon];
8538
+ if (!paths) {
8539
+ const initials = icon === "deriv-trader" ? "DT" : icon === "deriv-bot" ? "DB" : "ST";
8540
+ return /* @__PURE__ */ jsx63("span", { className: "ot__platform-icon", "aria-hidden": "true", children: initials });
8541
+ }
8542
+ return /* @__PURE__ */ jsx63("svg", { className: "ot__meta-icon", viewBox: "0 0 25 24", fill: "none", "aria-hidden": "true", children: paths.map((d) => /* @__PURE__ */ jsx63("path", { d, fill: "currentColor" }, d)) });
8543
+ }
8544
+ function MetaList({ items = [] }) {
8545
+ return /* @__PURE__ */ jsx63("ul", { className: "ot__meta-list", children: items.map((item, index) => {
8546
+ const href = safeHref(item.href);
8547
+ const content = /* @__PURE__ */ jsxs59(Fragment13, { children: [
8548
+ /* @__PURE__ */ jsx63(MetaIcon, { icon: item.icon, iconUrl: item.iconUrl }),
8549
+ /* @__PURE__ */ jsx63("span", { children: item.label })
8550
+ ] });
8551
+ return /* @__PURE__ */ jsx63("li", { children: href ? /* @__PURE__ */ jsx63("a", { href, children: content }) : /* @__PURE__ */ jsx63("span", { children: content }) }, `${item.label}-${index}`);
8552
+ }) });
8553
+ }
8554
+ function PlaybackGlyph({ playing }) {
8555
+ return /* @__PURE__ */ jsxs59("svg", { className: "ot__control-icon", viewBox: "0 0 64 64", "aria-hidden": "true", children: [
8556
+ /* @__PURE__ */ jsx63("circle", { className: "ot__control-disc", cx: "32", cy: "32", r: "32" }),
8557
+ playing ? /* @__PURE__ */ jsxs59(Fragment13, { children: [
8558
+ /* @__PURE__ */ jsx63("rect", { className: "ot__control-glyph", x: "23", y: "21", width: "6", height: "22", rx: "2" }),
8559
+ /* @__PURE__ */ jsx63("rect", { className: "ot__control-glyph", x: "35", y: "21", width: "6", height: "22", rx: "2" })
8560
+ ] }) : /* @__PURE__ */ jsx63(
8561
+ "path",
8562
+ {
8563
+ className: "ot__control-glyph",
8564
+ 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"
8565
+ }
8566
+ )
8567
+ ] });
8568
+ }
8569
+ function AnimationCard({
8570
+ animation,
8571
+ itemId,
8572
+ playing,
8573
+ onToggle
8574
+ }) {
8575
+ const src = safeLottieSrc(animation.src);
8576
+ const posterSrc = safeHref(animation.posterUrl);
8577
+ const controlId = `ot-animation-${itemId}-${animation.id ?? animation.label}`.replace(/[^a-zA-Z0-9_-]/g, "-");
8578
+ return /* @__PURE__ */ jsxs59("div", { className: "ot__animation-card", children: [
8579
+ /* @__PURE__ */ jsx63("div", { id: controlId, className: "ot__animation-media", "aria-hidden": "true", children: src ? /* @__PURE__ */ jsx63(
8580
+ DotLottieInView,
8581
+ {
8582
+ src,
8583
+ enabled: playing,
8584
+ loop: true,
8585
+ poster: posterSrc ? /* @__PURE__ */ jsx63("img", { src: posterSrc, alt: "", loading: "lazy", decoding: "async" }) : void 0
8586
+ }
8587
+ ) : null }),
8588
+ posterSrc && !playing ? /* @__PURE__ */ jsx63(
8589
+ "img",
8590
+ {
8591
+ className: "ot__animation-poster",
8592
+ src: posterSrc,
8593
+ alt: "",
8594
+ "aria-hidden": "true",
8595
+ loading: "lazy",
8596
+ decoding: "async"
8597
+ }
8598
+ ) : null,
8599
+ src ? /* @__PURE__ */ jsx63(
8600
+ "button",
8601
+ {
8602
+ type: "button",
8603
+ className: `ot__playback-toggle${playing ? " ot__playback-toggle--playing" : ""}`,
8604
+ "aria-controls": controlId,
8605
+ "aria-pressed": playing,
8606
+ "aria-label": `${playing ? "Pause" : "Play"} ${animation.label} animation`,
8607
+ onClick: onToggle,
8608
+ children: /* @__PURE__ */ jsx63(PlaybackGlyph, { playing })
8609
+ }
8610
+ ) : null
8611
+ ] });
8612
+ }
8613
+ function OptionPanel({
8614
+ item,
8615
+ variant,
8616
+ marketsLabel,
8617
+ platformsLabel,
8618
+ playing,
8619
+ setPlaying
8620
+ }) {
8621
+ const description = /* @__PURE__ */ jsx63("div", { className: "ot__description", children: /* @__PURE__ */ jsx63("p", { children: item.description }) });
8622
+ const animations = /* @__PURE__ */ jsx63("div", { className: `ot__animations ot__animations--${Math.min(item.animations.length, 2)}`, children: item.animations.slice(0, 2).map((animation, index) => {
8623
+ const key = `${item.id}-${animation.id ?? index}`;
8624
+ return /* @__PURE__ */ jsx63(
8625
+ AnimationCard,
8626
+ {
8627
+ animation,
8628
+ itemId: item.id,
8629
+ playing: Boolean(playing[key]),
8630
+ onToggle: () => setPlaying((current) => ({
8631
+ ...current,
8632
+ [key]: !current[key]
8633
+ }))
8634
+ },
8635
+ key
8636
+ );
8637
+ }) });
8638
+ const metadata = /* @__PURE__ */ jsxs59("div", { className: "ot__metadata", children: [
8639
+ /* @__PURE__ */ jsxs59("div", { className: "ot__meta-group", children: [
8640
+ /* @__PURE__ */ jsx63("h4", { children: marketsLabel }),
8641
+ /* @__PURE__ */ jsx63(MetaList, { items: item.markets })
8642
+ ] }),
8643
+ /* @__PURE__ */ jsxs59("div", { className: "ot__meta-group", children: [
8644
+ /* @__PURE__ */ jsx63("h4", { children: platformsLabel }),
8645
+ /* @__PURE__ */ jsx63(MetaList, { items: item.platforms })
8646
+ ] })
8647
+ ] });
8648
+ const layout = variant === "single" && item.animations.length === 1 ? "split" : "stacked";
8649
+ const optionClass = `ot__option ot__option--${variant} ot__option--${layout}`;
8650
+ if (layout === "split") {
8651
+ return /* @__PURE__ */ jsxs59("div", { className: optionClass, children: [
8652
+ animations,
8653
+ /* @__PURE__ */ jsxs59("div", { className: "ot__option-side", children: [
8654
+ description,
8655
+ metadata
8656
+ ] })
8657
+ ] });
8658
+ }
8659
+ return /* @__PURE__ */ jsxs59("div", { className: optionClass, children: [
8660
+ description,
8661
+ animations,
8662
+ metadata
8663
+ ] });
8664
+ }
8665
+ function OptionsTypes({
8666
+ variant = "tabs",
8667
+ heading = "Section title goes here",
8668
+ headingLevel = "h2",
8669
+ items = OPTIONS_TYPES_PLACEHOLDER_ITEMS,
8670
+ defaultActiveId,
8671
+ activeId,
8672
+ onChange,
8673
+ marketsLabel = "Markets available",
8674
+ platformsLabel = "Trade on",
8675
+ disclaimer,
8676
+ className,
8677
+ ...props
8678
+ }) {
8679
+ const usableItems = Array.isArray(items) ? items.filter((item) => item?.id) : [];
8680
+ const [internalActiveId, setInternalActiveId] = useState24(
8681
+ defaultActiveId ?? usableItems[0]?.id ?? ""
8682
+ );
8683
+ const selectedId = usableItems.find((item) => item.id === activeId)?.id ?? usableItems.find((item) => item.id === internalActiveId)?.id ?? usableItems[0]?.id ?? "";
8684
+ const [playing, setPlaying] = useState24({});
8685
+ const generatedId = useId5().replace(/:/g, "");
8686
+ const tabPrefix = `options-types-${generatedId}`;
8687
+ const Heading = headingLevel;
8688
+ useEffect18(() => {
8689
+ setPlaying({});
8690
+ }, [selectedId]);
8691
+ const selectItem = (id) => {
8692
+ if (activeId === void 0) setInternalActiveId(id);
8693
+ onChange?.(id);
8694
+ };
8695
+ const rootClass = ["ot", `ot--${variant}`, className].filter(Boolean).join(" ");
8696
+ return /* @__PURE__ */ jsx63("section", { className: rootClass, ...props, children: /* @__PURE__ */ jsxs59("div", { className: "ot__inner", children: [
8697
+ /* @__PURE__ */ jsxs59("header", { className: "ot__header", children: [
8698
+ /* @__PURE__ */ jsx63(Heading, { className: "ot__heading", children: heading }),
8699
+ variant === "tabs" && usableItems.length > 1 ? /* @__PURE__ */ jsx63(
8700
+ Tabs,
8701
+ {
8702
+ items: usableItems.map((item) => ({
8703
+ id: item.id,
8704
+ label: item.label ?? item.title
8705
+ })),
8706
+ activeId: selectedId,
8707
+ onChange: selectItem,
8708
+ idPrefix: tabPrefix,
8709
+ "aria-label": `${heading} categories`,
8710
+ className: "ot__tabs"
8711
+ }
8712
+ ) : null
8713
+ ] }),
8714
+ usableItems.length === 0 ? null : variant === "tabs" ? /* @__PURE__ */ jsx63("div", { className: "ot__panels", children: usableItems.map((item, index) => {
8715
+ const isActive = item.id === selectedId;
8716
+ return /* @__PURE__ */ jsx63(
8717
+ "div",
8718
+ {
8719
+ id: `${tabPrefix}-panel-${index}`,
8720
+ role: "tabpanel",
8721
+ "aria-labelledby": `${tabPrefix}-tab-${index}`,
8722
+ hidden: !isActive,
8723
+ tabIndex: 0,
8724
+ children: /* @__PURE__ */ jsx63(
8725
+ OptionPanel,
8726
+ {
8727
+ item,
8728
+ variant: "tabs",
8729
+ marketsLabel,
8730
+ platformsLabel,
8731
+ playing,
8732
+ setPlaying
8733
+ }
8734
+ )
8735
+ },
8736
+ item.id
8737
+ );
8738
+ }) }) : /* @__PURE__ */ jsx63(
8739
+ OptionPanel,
8740
+ {
8741
+ item: usableItems[0],
8742
+ variant: "single",
8743
+ marketsLabel,
8744
+ platformsLabel,
8745
+ playing,
8746
+ setPlaying
8747
+ }
8748
+ ),
8749
+ disclaimer ? /* @__PURE__ */ jsxs59("p", { className: "ot__disclaimer", children: [
8750
+ /* @__PURE__ */ jsxs59(
8751
+ "svg",
8752
+ {
8753
+ className: "ot__disclaimer-icon",
8754
+ viewBox: "0 0 16 16",
8755
+ fill: "none",
8756
+ "aria-hidden": "true",
8757
+ children: [
8758
+ /* @__PURE__ */ jsx63("circle", { cx: "8", cy: "8", r: "6.4", stroke: "currentColor", strokeWidth: "1.2" }),
8759
+ /* @__PURE__ */ jsx63(
8760
+ "path",
8761
+ {
8762
+ d: "M8 7v4.2",
8763
+ stroke: "currentColor",
8764
+ strokeWidth: "1.4",
8765
+ strokeLinecap: "round"
8766
+ }
8767
+ ),
8768
+ /* @__PURE__ */ jsx63("circle", { cx: "8", cy: "4.9", r: "0.85", fill: "currentColor" })
8769
+ ]
8770
+ }
8771
+ ),
8772
+ /* @__PURE__ */ jsx63("span", { children: disclaimer })
8773
+ ] }) : null
8774
+ ] }) });
8775
+ }
8776
+
8777
+ // templates/OptionsTypes/OptionsTypes.data.ts
8778
+ var WEBFLOW_CDN = "https://cdn.prod.website-files.com/661e6e1e01dd2f56adc6d370";
8779
+ var WEBFLOW_ICON_CDN = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c2b7";
8780
+ var FOREX = {
8781
+ label: "Forex",
8782
+ icon: "forex",
8783
+ href: "/markets/forex"
8784
+ };
8785
+ var STOCK_INDICES = {
8786
+ label: "Stock Indices",
8787
+ icon: "stock-indices",
8788
+ href: "/markets/stock-indices"
8789
+ };
8790
+ var COMMODITIES = {
8791
+ label: "Commodities",
8792
+ icon: "commodities",
8793
+ href: "/markets/commodities"
8794
+ };
8795
+ var DERIVED_INDICES = {
8796
+ label: "Derived Indices",
8797
+ icon: "derived-indices",
8798
+ href: "/markets/derived-indices/synthetic-indices"
8799
+ };
8800
+ var CRYPTOCURRENCIES = {
8801
+ label: "Cryptocurrencies",
8802
+ icon: "cryptocurrencies",
8803
+ href: "/markets/cryptocurrencies"
8804
+ };
8805
+ var DERIV_TRADER = {
8806
+ label: "Deriv Trader",
8807
+ icon: "deriv-trader",
8808
+ iconUrl: `${WEBFLOW_ICON_CDN}/68e3a18f20e4f9f6eb9109e8_6751d07ab72617a385122395_deriv%2520product-deriv%2520trader.svg`,
8809
+ href: "/trading-platforms/deriv-trader"
8810
+ };
8811
+ var DERIV_BOT = {
8812
+ label: "Deriv Bot",
8813
+ icon: "deriv-bot",
8814
+ iconUrl: `${WEBFLOW_ICON_CDN}/68e3a18f42c1592e9454466e_674992f6dd562e5f0b8e7679_deriv%2520product-deriv%2520bot.svg`,
8815
+ href: "/trading-platforms/deriv-bot"
8816
+ };
8817
+ var DIGITAL_MARKETS = [FOREX, STOCK_INDICES, COMMODITIES, DERIVED_INDICES];
8818
+ var TRADER_AND_BOT = [DERIV_TRADER, DERIV_BOT];
8819
+ var OPTIONS_TYPES_DIGITAL_CONTENT = {
8820
+ variant: "tabs",
8821
+ heading: "Types of Digital Options",
8822
+ defaultActiveId: "rise-fall",
8823
+ disclaimer: "Trade types and features offered may vary by platform and device.",
8824
+ items: [
8825
+ {
8826
+ id: "rise-fall",
8827
+ title: "Rise/Fall",
8828
+ description: "Predict whether the market price will rise above or fall below the entry price at the end of your contract.",
8829
+ animations: [
8830
+ {
8831
+ id: "rise",
8832
+ label: "Rise",
8833
+ src: `${WEBFLOW_CDN}/6630e43019db0934b75c5105_Web%20Trade%20Clip%20-%20UpDown%20(Rise).lottie`
8834
+ },
8835
+ {
8836
+ id: "fall",
8837
+ label: "Fall",
8838
+ src: `${WEBFLOW_CDN}/6630e42f22255a766c2af8aa_Web%20Trade%20Clip%20-%20UpDown%20(Fall).lottie`
8839
+ }
8840
+ ],
8841
+ markets: DIGITAL_MARKETS,
8842
+ platforms: TRADER_AND_BOT
8843
+ },
8844
+ {
8845
+ id: "higher-lower",
8846
+ title: "Higher/Lower",
8847
+ description: "Choose a target price at the start (barrier), and predict if the final price will be higher or lower than barrier.",
8848
+ animations: [
8849
+ {
8850
+ id: "higher",
8851
+ label: "Higher",
8852
+ src: `${WEBFLOW_CDN}/6630e42f93f0aa3f60d68dd2_Web%20Trade%20Clip%20-%20UpDown%20(Higher).lottie`
8853
+ },
8854
+ {
8855
+ id: "lower",
8856
+ label: "Lower",
8857
+ src: `${WEBFLOW_CDN}/6630e42f8922eb31fcbf275f_Web%20Trade%20Clip%20-%20%20UpDown%20(Lower).lottie`
8858
+ }
8859
+ ],
8860
+ markets: DIGITAL_MARKETS,
8861
+ platforms: TRADER_AND_BOT
8862
+ },
8863
+ {
8864
+ id: "touch-no-touch",
8865
+ title: "Touch/No Touch",
8866
+ description: 'Predict whether the market price will "touch" or not touch a target price (barrier) during the contract period.',
8867
+ animations: [
8868
+ {
8869
+ id: "touch",
8870
+ label: "Touch",
8871
+ src: `${WEBFLOW_CDN}/6630e3a120a6dcbe6ab22239_Web%20Trade%20Clip%20-%20TouchNoTouch%20(Touch).lottie`
8872
+ },
8873
+ {
8874
+ id: "no-touch",
8875
+ label: "No Touch",
8876
+ src: `${WEBFLOW_CDN}/6630e3a158064e5c58362ddd_Web%20Trade%20Clip%20-%20TouchNoTouch%20(No%20Touch).lottie`
8877
+ }
8878
+ ],
8879
+ markets: DIGITAL_MARKETS,
8880
+ platforms: TRADER_AND_BOT
8881
+ }
8882
+ ]
8883
+ };
8884
+ var OPTIONS_TYPES_ACCUMULATOR_CONTENT = {
8885
+ variant: "single",
8886
+ heading: "How do Accumulator Options work",
8887
+ items: [
8888
+ {
8889
+ id: "accumulator-options",
8890
+ title: "Accumulator Options",
8891
+ 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.",
8892
+ animations: [
8893
+ {
8894
+ id: "accumulator",
8895
+ label: "Accumulator",
8896
+ src: `${WEBFLOW_CDN}/6630e0fff230226872ee39ed_Web%20Trade%20Clip%20-%20Accumulators%20(Accumulators).lottie`
8897
+ }
8898
+ ],
8899
+ markets: [DERIVED_INDICES],
8900
+ platforms: TRADER_AND_BOT
8901
+ }
8902
+ ]
8903
+ };
8904
+ var OPTIONS_TYPES_VANILLA_CONTENT = {
8905
+ variant: "single",
8906
+ heading: "How do Vanilla Options work",
8907
+ items: [
8908
+ {
8909
+ id: "vanilla-call-put",
8910
+ title: "Vanilla Call/Put",
8911
+ 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.",
8912
+ animations: [
8913
+ {
8914
+ id: "call",
8915
+ label: "Call",
8916
+ src: `${WEBFLOW_CDN}/6630e3c100c107af706a72f6_Web%20Trade%20Clip%20-%20Vanilla%20(Call).lottie`
8917
+ },
8918
+ {
8919
+ id: "put",
8920
+ label: "Put",
8921
+ src: `${WEBFLOW_CDN}/6630e3c2f230226872f0d58d_Web%20Trade%20Clip%20-%20Vanilla%20(Put).lottie`
8922
+ }
8923
+ ],
8924
+ markets: [DERIVED_INDICES],
8925
+ platforms: [DERIV_TRADER]
8926
+ }
8927
+ ]
8928
+ };
8929
+ var OPTIONS_TYPES_TURBO_CONTENT = {
8930
+ variant: "single",
8931
+ heading: "How do Turbo Options work",
8932
+ items: [
8933
+ {
8934
+ id: "turbo-up-down",
8935
+ title: "Turbo Up/Down",
8936
+ 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.",
8937
+ animations: [
8938
+ {
8939
+ id: "up",
8940
+ label: "Up",
8941
+ src: `${WEBFLOW_CDN}/664aff68ca9411ee61c84443_Web%20Trade%20Clip%20(Up).lottie`
8942
+ },
8943
+ {
8944
+ id: "down",
8945
+ label: "Down",
8946
+ src: `${WEBFLOW_CDN}/664aff6801c5297f6a1f6e6c_Web%20Trade%20Clip%20(Down).lottie`
8947
+ }
8948
+ ],
8949
+ markets: [DERIVED_INDICES],
8950
+ platforms: [DERIV_TRADER]
8951
+ }
8952
+ ]
8953
+ };
8954
+ var OPTIONS_TYPES_MULTIPLIERS_CONTENT = {
8955
+ variant: "single",
8956
+ heading: "How do Multipliers work",
8957
+ items: [
8958
+ {
8959
+ id: "multipliers-up-down",
8960
+ title: "Multipliers Up/Down",
8961
+ 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.",
8962
+ animations: [
8963
+ {
8964
+ id: "up",
8965
+ label: "Up",
8966
+ src: `${WEBFLOW_CDN}/6630e305e7f044e7deae8a90_Web%20Trade%20Clip%20-%20Multipliers%20(Up).lottie`
8967
+ },
8968
+ {
8969
+ id: "down",
8970
+ label: "Down",
8971
+ src: `${WEBFLOW_CDN}/6630e3055be526fd74f10190_Web%20Trade%20Clip%20-%20Multipliers%20(Down).lottie`
8972
+ }
8973
+ ],
8974
+ markets: [DERIVED_INDICES, FOREX, CRYPTOCURRENCIES, COMMODITIES],
8975
+ platforms: TRADER_AND_BOT
8976
+ }
8977
+ ]
8978
+ };
8979
+
8980
+ // templates/EntityInfoSection/EntityInfoSection.tsx
8981
+ import { jsx as jsx64, jsxs as jsxs60 } from "react/jsx-runtime";
8982
+ var DEFAULT_LINKS2 = [{ label: "View licence", href: "#" }];
8983
+ var EntityInfoSection = ({
8984
+ name = "Section title goes here",
8985
+ description = "Explain how this specific feature helps your user.",
8986
+ bullets,
8987
+ links,
8988
+ headingLevel: HeadingTag = "h2",
8989
+ className,
8990
+ ...props
8991
+ }) => {
8992
+ const resolvedLinks = links && links.length > 0 ? links : DEFAULT_LINKS2;
8993
+ const hasBullets = !!bullets && bullets.length > 0;
8994
+ const rootClass = ["eis", className].filter(Boolean).join(" ");
8995
+ return /* @__PURE__ */ jsx64("section", { className: rootClass, ...props, children: /* @__PURE__ */ jsx64("div", { className: "eis__inner", children: /* @__PURE__ */ jsxs60("div", { className: "eis__content", children: [
8996
+ /* @__PURE__ */ jsx64(HeadingTag, { className: "eis__name", children: name }),
8997
+ description && /* @__PURE__ */ jsx64("p", { className: "eis__description", children: description }),
8998
+ hasBullets && /* @__PURE__ */ jsx64("ul", { className: "eis__bullets", children: bullets.map((bullet, i) => /* @__PURE__ */ jsx64("li", { className: "eis__bullets-item", children: bullet }, i)) }),
8999
+ resolvedLinks.length > 0 && /* @__PURE__ */ jsx64("ul", { className: "eis__links", children: resolvedLinks.map((link, i) => {
9000
+ const isExternal = link.external ?? true;
9001
+ return /* @__PURE__ */ jsx64("li", { className: "eis__links-item", children: /* @__PURE__ */ jsx64(
9002
+ Link,
9003
+ {
9004
+ className: "eis__link",
9005
+ colorScheme: "coral",
9006
+ href: link.href,
9007
+ label: link.label,
9008
+ target: isExternal ? "_blank" : void 0,
9009
+ rel: isExternal ? "noopener noreferrer" : void 0
9010
+ }
9011
+ ) }, link.id ?? i);
9012
+ }) })
9013
+ ] }) }) });
9014
+ };
9015
+
9016
+ // templates/CountryLinkGrid/CountryLinkGrid.tsx
9017
+ import { jsx as jsx65, jsxs as jsxs61 } from "react/jsx-runtime";
9018
+ var DEFAULT_ITEMS = [
9019
+ { label: "Country name", href: "#" },
9020
+ { label: "Country name", href: "#" },
9021
+ { label: "Country name", href: "#" },
9022
+ { label: "Country name", href: "#" }
9023
+ ];
9024
+ var CountryLinkGrid = ({
9025
+ title = "Section title goes here",
9026
+ description = "Explain how this specific feature helps your user.",
9027
+ items,
9028
+ headingLevel: HeadingTag = "h2",
9029
+ className,
9030
+ ...props
9031
+ }) => {
9032
+ const resolvedItems = items && items.length > 0 ? items : DEFAULT_ITEMS;
9033
+ const rootClass = ["clg", className].filter(Boolean).join(" ");
9034
+ return /* @__PURE__ */ jsx65("section", { className: rootClass, ...props, children: /* @__PURE__ */ jsx65("div", { className: "clg__inner", children: /* @__PURE__ */ jsxs61("div", { className: "clg__layout", children: [
9035
+ /* @__PURE__ */ jsxs61("div", { className: "clg__header", children: [
9036
+ /* @__PURE__ */ jsx65(HeadingTag, { className: "clg__title", children: title }),
9037
+ description && /* @__PURE__ */ jsx65("p", { className: "clg__description", children: description })
9038
+ ] }),
9039
+ resolvedItems.length > 0 && /* @__PURE__ */ jsx65("ul", { className: "clg__list", children: resolvedItems.map((item, i) => {
9040
+ const isExternal = item.external ?? true;
9041
+ return /* @__PURE__ */ jsx65("li", { className: "clg__item", children: /* @__PURE__ */ jsxs61(
9042
+ "a",
9043
+ {
9044
+ className: "clg__link",
9045
+ href: item.href,
9046
+ target: isExternal ? "_blank" : void 0,
9047
+ rel: isExternal ? "noopener noreferrer" : void 0,
9048
+ children: [
9049
+ item.iconSrc && /* @__PURE__ */ jsx65(
9050
+ "img",
9051
+ {
9052
+ className: "clg__flag",
9053
+ src: item.iconSrc,
9054
+ alt: item.iconAlt ?? "",
9055
+ loading: "lazy",
9056
+ width: 36,
9057
+ height: 24
9058
+ }
9059
+ ),
9060
+ /* @__PURE__ */ jsx65("span", { className: "clg__text", children: item.label })
9061
+ ]
9062
+ }
9063
+ ) }, item.id ?? i);
9064
+ }) })
9065
+ ] }) }) });
9066
+ };
9067
+
9068
+ // templates/DocumentChips/DocumentChips.tsx
9069
+ import { useState as useState25 } from "react";
9070
+ import { jsx as jsx66, jsxs as jsxs62 } from "react/jsx-runtime";
9071
+ var DEFAULT_GROUPS = [
9072
+ {
9073
+ id: "group-one",
9074
+ title: "First group title",
9075
+ documents: [
9076
+ {
9077
+ id: "doc-one",
9078
+ title: "First document title",
9079
+ href: "#",
9080
+ languageLink: { label: "Choose language", href: "#" }
9081
+ },
9082
+ {
9083
+ id: "doc-two",
9084
+ title: "Second document title",
9085
+ href: "#",
9086
+ languageLink: { label: "Choose language", href: "#" }
9087
+ }
9088
+ ]
9089
+ },
9090
+ {
9091
+ id: "group-two",
9092
+ title: "Second group title",
9093
+ documents: [
9094
+ { id: "doc-three", title: "Third document title", href: "#" },
9095
+ { id: "doc-four", title: "Fourth document title", href: "#" }
9096
+ ]
9097
+ }
9098
+ ];
9099
+ var DocumentChip = ({ document: document2, iconSrc, iconAlt, onLanguageSelect }) => {
9100
+ const isExternal = document2.external ?? true;
9101
+ const languageLink = document2.languageLink;
9102
+ const handleLanguageClick = (event) => {
9103
+ if (!onLanguageSelect) return;
9104
+ event.preventDefault();
9105
+ onLanguageSelect(document2, event);
9106
+ };
9107
+ return /* @__PURE__ */ jsx66("li", { className: "dch__doc-item", children: /* @__PURE__ */ jsxs62("div", { className: "dch__doc", children: [
9108
+ /* @__PURE__ */ jsxs62(
9109
+ "a",
9110
+ {
9111
+ className: "dch__doc-link",
9112
+ href: document2.href,
9113
+ target: isExternal ? "_blank" : void 0,
9114
+ rel: isExternal ? "noopener noreferrer" : void 0,
9115
+ children: [
9116
+ /* @__PURE__ */ jsx66(
9117
+ "img",
9118
+ {
9119
+ className: "dch__doc-icon",
9120
+ src: document2.iconSrc ?? iconSrc,
9121
+ alt: iconAlt,
9122
+ loading: "lazy",
9123
+ "aria-hidden": iconAlt ? void 0 : true
9124
+ }
9125
+ ),
9126
+ /* @__PURE__ */ jsx66("span", { className: "dch__doc-title", children: document2.title })
9127
+ ]
9128
+ }
9129
+ ),
9130
+ languageLink && /* @__PURE__ */ jsx66("div", { className: "dch__doc-action", children: /* @__PURE__ */ jsx66(
9131
+ Link,
9132
+ {
9133
+ className: "dch__doc-language",
9134
+ colorScheme: "black",
9135
+ label: languageLink.label ?? "Choose language",
9136
+ href: languageLink.href ?? document2.href,
9137
+ onClick: handleLanguageClick,
9138
+ "aria-haspopup": onLanguageSelect ? "dialog" : void 0
9139
+ }
9140
+ ) })
9141
+ ] }) });
9142
+ };
9143
+ var DocumentChipList = ({
9144
+ documents,
9145
+ iconSrc,
9146
+ iconAlt,
9147
+ onLanguageSelect
9148
+ }) => /* @__PURE__ */ jsx66("ul", { className: "dch__docs", children: documents.map((document2, j) => /* @__PURE__ */ jsx66(
9149
+ DocumentChip,
9150
+ {
9151
+ document: document2,
9152
+ iconSrc,
9153
+ iconAlt,
9154
+ onLanguageSelect
9155
+ },
9156
+ document2.id ?? j
9157
+ )) });
9158
+ var DocumentChips = ({
9159
+ variant = "accordion",
9160
+ title = "Section title goes here",
9161
+ description,
9162
+ groups,
9163
+ iconSrc = "https://media.ffycdn.net/eu/deriv/d/8d33a322464c4809a9d01119104caa0d",
9164
+ iconAlt = "",
9165
+ allowMultipleOpen = false,
9166
+ onLanguageSelect,
9167
+ headingLevel: HeadingTag = "h2",
9168
+ className,
9169
+ ...props
9170
+ }) => {
9171
+ const resolvedGroups = groups && groups.length > 0 ? groups : DEFAULT_GROUPS;
9172
+ const groupKeys = resolvedGroups.map((group, i) => String(group.id ?? i));
9173
+ const [openKeys, setOpenKeys] = useState25(void 0);
9174
+ const resolvedOpenKeys = openKeys === void 0 ? groupKeys.slice(0, 1) : openKeys;
9175
+ const handleToggle = (key, next) => {
9176
+ setOpenKeys((current) => {
9177
+ const base = current === void 0 ? groupKeys.slice(0, 1) : current;
9178
+ if (!next) return base.filter((k) => k !== key);
9179
+ return allowMultipleOpen ? [...base.filter((k) => k !== key), key] : [key];
9180
+ });
9181
+ };
9182
+ const flatDocuments = resolvedGroups.flatMap((group) => group.documents ?? []);
9183
+ const rootClass = ["dch", className].filter(Boolean).join(" ");
9184
+ return /* @__PURE__ */ jsx66("section", { className: rootClass, ...props, children: /* @__PURE__ */ jsxs62("div", { className: "dch__inner", children: [
9185
+ (title || description) && /* @__PURE__ */ jsxs62("div", { className: "dch__header", children: [
9186
+ title && /* @__PURE__ */ jsx66(HeadingTag, { className: "dch__title", children: title }),
9187
+ description && /* @__PURE__ */ jsx66("p", { className: "dch__description", children: description })
9188
+ ] }),
9189
+ variant === "flat" ? /* @__PURE__ */ jsx66(
9190
+ DocumentChipList,
9191
+ {
9192
+ documents: flatDocuments,
9193
+ iconAlt,
9194
+ iconSrc,
9195
+ onLanguageSelect
9196
+ }
9197
+ ) : /* @__PURE__ */ jsx66("div", { className: "dch__groups", children: resolvedGroups.map((group, i) => {
9198
+ const key = groupKeys[i];
9199
+ return /* @__PURE__ */ jsx66(
9200
+ Accordion,
9201
+ {
9202
+ className: "dch__group",
9203
+ title: group.title,
9204
+ open: resolvedOpenKeys.includes(key),
9205
+ onToggle: (next) => handleToggle(key, next),
9206
+ showTopDivider: i > 0,
9207
+ children: /* @__PURE__ */ jsx66(
9208
+ DocumentChipList,
9209
+ {
9210
+ documents: group.documents ?? [],
9211
+ iconAlt,
9212
+ iconSrc,
9213
+ onLanguageSelect
9214
+ }
9215
+ )
9216
+ },
9217
+ key
9218
+ );
9219
+ }) })
9220
+ ] }) });
9221
+ };
9222
+
9223
+ // components/LinkModal/LinkModal.tsx
9224
+ import { useCallback as useCallback6, useEffect as useEffect19, useId as useId6, useRef as useRef21 } from "react";
9225
+ import { createPortal as createPortal2 } from "react-dom";
9226
+ import { jsx as jsx67, jsxs as jsxs63 } from "react/jsx-runtime";
9227
+ var XMarkIcon3 = () => /* @__PURE__ */ jsx67(
9228
+ "svg",
9229
+ {
9230
+ width: "24",
9231
+ height: "24",
9232
+ viewBox: "0 0 24 24",
9233
+ fill: "none",
9234
+ xmlns: "http://www.w3.org/2000/svg",
9235
+ "aria-hidden": "true",
9236
+ children: /* @__PURE__ */ jsx67(
9237
+ "path",
9238
+ {
9239
+ d: "M5 5l14 14M19 5L5 19",
9240
+ stroke: "currentColor",
9241
+ strokeWidth: "1.5",
9242
+ strokeLinecap: "round"
9243
+ }
9244
+ )
9245
+ }
9246
+ );
9247
+ var FOCUSABLE_SELECTOR = [
9248
+ "a[href]",
9249
+ "button:not([disabled])",
9250
+ "input:not([disabled])",
9251
+ "select:not([disabled])",
9252
+ "textarea:not([disabled])",
9253
+ '[tabindex]:not([tabindex="-1"])'
9254
+ ].join(",");
9255
+ var LinkModal = ({
9256
+ open,
9257
+ onClose,
9258
+ title = "Dialog title",
9259
+ closeLabel = "Close",
9260
+ children,
9261
+ headingLevel: HeadingTag = "h2",
9262
+ container,
9263
+ className,
9264
+ ...props
9265
+ }) => {
9266
+ const titleId = useId6();
9267
+ const panelRef = useRef21(null);
9268
+ const triggerRef = useRef21(null);
9269
+ const getFocusable = useCallback6(() => {
9270
+ const panel = panelRef.current;
9271
+ if (!panel) return [];
9272
+ return Array.from(panel.querySelectorAll(FOCUSABLE_SELECTOR)).filter(
9273
+ (el) => el.offsetParent !== null || el === document.activeElement
9274
+ );
9275
+ }, []);
9276
+ useEffect19(() => {
9277
+ if (!open || typeof document === "undefined") return;
9278
+ triggerRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
9279
+ panelRef.current?.focus();
9280
+ return () => {
9281
+ const trigger = triggerRef.current;
9282
+ triggerRef.current = null;
9283
+ if (trigger && document.contains(trigger)) trigger.focus();
9284
+ };
9285
+ }, [open]);
9286
+ useEffect19(() => {
9287
+ if (!open || typeof document === "undefined") return;
9288
+ const handleKeyDown = (event) => {
9289
+ if (event.key === "Escape") {
9290
+ event.stopPropagation();
9291
+ onClose();
9292
+ }
9293
+ };
9294
+ document.addEventListener("keydown", handleKeyDown);
9295
+ return () => document.removeEventListener("keydown", handleKeyDown);
9296
+ }, [open, onClose]);
9297
+ useEffect19(() => {
9298
+ if (!open || typeof document === "undefined") return;
9299
+ const body = document.body;
9300
+ const previousOverflow = body.style.overflow;
9301
+ const previousPaddingRight = body.style.paddingRight;
9302
+ const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
9303
+ body.style.overflow = "hidden";
9304
+ if (scrollbarWidth > 0) {
9305
+ const current = parseFloat(window.getComputedStyle(body).paddingRight) || 0;
9306
+ body.style.paddingRight = `${current + scrollbarWidth}px`;
9307
+ }
9308
+ return () => {
9309
+ body.style.overflow = previousOverflow;
9310
+ body.style.paddingRight = previousPaddingRight;
9311
+ };
9312
+ }, [open]);
9313
+ const handlePanelKeyDown = (event) => {
9314
+ if (event.key !== "Tab") return;
9315
+ const focusable = getFocusable();
9316
+ if (focusable.length === 0) {
9317
+ event.preventDefault();
9318
+ panelRef.current?.focus();
9319
+ return;
9320
+ }
9321
+ const first = focusable[0];
9322
+ const last = focusable[focusable.length - 1];
9323
+ const active = document.activeElement;
9324
+ if (event.shiftKey) {
9325
+ if (active === first || active === panelRef.current) {
9326
+ event.preventDefault();
9327
+ last.focus();
9328
+ }
9329
+ return;
9330
+ }
9331
+ if (active === last) {
9332
+ event.preventDefault();
9333
+ first.focus();
9334
+ }
9335
+ };
9336
+ if (!open || typeof document === "undefined") return null;
9337
+ const rootClass = ["lm", className].filter(Boolean).join(" ");
9338
+ return createPortal2(
9339
+ /* @__PURE__ */ jsxs63("div", { className: rootClass, onClick: onClose, children: [
9340
+ /* @__PURE__ */ jsx67("div", { className: "lm__scrim", "aria-hidden": "true" }),
9341
+ /* @__PURE__ */ jsxs63(
9342
+ "div",
9343
+ {
9344
+ ref: panelRef,
9345
+ className: "lm__panel",
9346
+ role: "dialog",
9347
+ "aria-modal": "true",
9348
+ "aria-labelledby": titleId,
9349
+ tabIndex: -1,
9350
+ onClick: (event) => event.stopPropagation(),
9351
+ onKeyDown: handlePanelKeyDown,
9352
+ ...props,
9353
+ children: [
9354
+ /* @__PURE__ */ jsx67(
9355
+ "button",
9356
+ {
9357
+ type: "button",
9358
+ className: "lm__close",
9359
+ onClick: onClose,
9360
+ "aria-label": closeLabel,
9361
+ children: /* @__PURE__ */ jsx67(XMarkIcon3, {})
9362
+ }
9363
+ ),
9364
+ /* @__PURE__ */ jsx67(HeadingTag, { id: titleId, className: "lm__title", children: title }),
9365
+ children && /* @__PURE__ */ jsx67("div", { className: "lm__body", children })
9366
+ ]
9367
+ }
9368
+ )
9369
+ ] }),
9370
+ container ?? document.body
9371
+ );
9372
+ };
9373
+
9374
+ // templates/LanguageSelectModal/LanguageSelectModal.tsx
9375
+ import { jsx as jsx68, jsxs as jsxs64 } from "react/jsx-runtime";
9376
+ var DEFAULT_OPTIONS = [
9377
+ { id: "option-one", label: "First option", href: "#" },
9378
+ { id: "option-two", label: "Second option", href: "#" },
9379
+ { id: "option-three", label: "Third option", href: "#" },
9380
+ { id: "option-four", label: "Fourth option", href: "#" },
9381
+ { id: "option-five", label: "Fifth option", href: "#" },
9382
+ { id: "option-six", label: "Sixth option", href: "#" }
9383
+ ];
9384
+ var LanguageSelectModal = ({
9385
+ open,
9386
+ onClose,
9387
+ title = "Select your language",
9388
+ closeLabel = "Close",
9389
+ options,
9390
+ headingLevel = "h2",
9391
+ container,
9392
+ className,
9393
+ ...props
9394
+ }) => {
9395
+ const resolvedOptions = options && options.length > 0 ? options : DEFAULT_OPTIONS;
9396
+ return /* @__PURE__ */ jsx68(
9397
+ LinkModal,
9398
+ {
9399
+ open,
9400
+ onClose,
9401
+ title,
9402
+ closeLabel,
9403
+ headingLevel,
9404
+ container,
9405
+ className,
9406
+ ...props,
9407
+ children: /* @__PURE__ */ jsx68("ul", { className: "lsm__grid", children: resolvedOptions.map((option, i) => {
9408
+ const isExternal = option.external ?? true;
9409
+ return /* @__PURE__ */ jsx68("li", { className: "lsm__grid-item", children: /* @__PURE__ */ jsxs64(
9410
+ "a",
9411
+ {
9412
+ className: "lsm__option",
9413
+ href: option.href,
9414
+ target: isExternal ? "_blank" : void 0,
9415
+ rel: isExternal ? "noopener noreferrer" : void 0,
9416
+ children: [
9417
+ option.flagSrc && /* @__PURE__ */ jsx68(
9418
+ "img",
9419
+ {
9420
+ className: "lsm__flag",
9421
+ src: option.flagSrc,
9422
+ alt: option.flagAlt ?? "",
9423
+ loading: "lazy",
9424
+ "aria-hidden": option.flagAlt ? void 0 : true
9425
+ }
9426
+ ),
9427
+ /* @__PURE__ */ jsx68("span", { className: "lsm__option-label", children: option.label })
9428
+ ]
9429
+ }
9430
+ ) }, option.id ?? i);
9431
+ }) })
9432
+ }
9433
+ );
9434
+ };
9435
+
9436
+ // templates/AffiliatesSlider/AffiliatesSlider.tsx
9437
+ import { useCallback as useCallback7, useMemo as useMemo9, useState as useState26 } from "react";
9438
+ import { jsx as jsx69, jsxs as jsxs65 } from "react/jsx-runtime";
9439
+ var ArrowIcon2 = () => /* @__PURE__ */ jsx69(
9440
+ "svg",
9441
+ {
9442
+ width: "32",
9443
+ height: "32",
9444
+ viewBox: "0 0 32 32",
9445
+ fill: "none",
9446
+ xmlns: "http://www.w3.org/2000/svg",
9447
+ "aria-hidden": "true",
9448
+ children: /* @__PURE__ */ jsx69(
9449
+ "path",
9450
+ {
9451
+ 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",
9452
+ fill: "currentColor",
9453
+ fillOpacity: "0.72"
9454
+ }
9455
+ )
9456
+ }
9457
+ );
9458
+ var TrackGradient = () => /* @__PURE__ */ jsxs65(
9459
+ "svg",
9460
+ {
9461
+ preserveAspectRatio: "none",
9462
+ width: "100%",
9463
+ height: "49",
9464
+ viewBox: "0 0 408 50",
9465
+ fill: "none",
9466
+ xmlns: "http://www.w3.org/2000/svg",
9467
+ "aria-hidden": "true",
9468
+ className: "afs__track-gradient",
9469
+ children: [
9470
+ /* @__PURE__ */ jsx69(
9471
+ "path",
9472
+ {
9473
+ opacity: "0.5",
9474
+ d: "M408 0.25L0 49.25H408V0.25Z",
9475
+ fill: "url(#afs-track-gradient)"
9476
+ }
9477
+ ),
9478
+ /* @__PURE__ */ jsx69("defs", { children: /* @__PURE__ */ jsxs65(
9479
+ "linearGradient",
9480
+ {
9481
+ id: "afs-track-gradient",
9482
+ x1: "0",
9483
+ y1: "9.91566",
9484
+ x2: "178.34",
9485
+ y2: "227.916",
9486
+ gradientUnits: "userSpaceOnUse",
9487
+ children: [
9488
+ /* @__PURE__ */ jsx69("stop", { stopColor: "var(--afs-track-gradient-start)" }),
9489
+ /* @__PURE__ */ jsx69("stop", { offset: "1", stopColor: "var(--afs-track-gradient-end)" })
9490
+ ]
9491
+ }
9492
+ ) })
9493
+ ]
9494
+ }
9495
+ );
9496
+ var buildDefaultTicks = (min, max) => {
9497
+ const span = max - min;
9498
+ return [0, 0.25, 0.5, 0.75, 1].map((ratio) => Math.round(min + span * ratio));
9499
+ };
9500
+ var formatIncome = (value) => new Intl.NumberFormat("en-US", { maximumFractionDigits: 0 }).format(value);
9501
+ var AffiliatesSlider = ({
9502
+ title = "Section title goes here",
9503
+ description = "Explain how this specific feature helps your user.",
9504
+ min = 10,
9505
+ max = 50,
9506
+ step = 1,
9507
+ defaultValue = 10,
9508
+ value,
9509
+ onValueChange,
9510
+ referralsLabel = "total referrals (Min deposit amount of $100 each)",
9511
+ incomeLabel = "your potential income per month",
9512
+ incomePerReferral = 100,
9513
+ currencySymbol = "$",
9514
+ tickValues,
9515
+ disclaimer = "This calculator provides estimates only and may not reflect actual earnings.",
9516
+ disclaimerIconSrc = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/68da5c86c91c54f39c86cdaf_icon.svg",
9517
+ disclaimerIconAlt = "",
9518
+ sliderLabel = "Number of referrals",
9519
+ className,
9520
+ ...props
9521
+ }) => {
9522
+ const [internalValue, setInternalValue] = useState26(defaultValue);
9523
+ const currentValue = value ?? internalValue;
9524
+ const handleChange = useCallback7(
9525
+ (next) => {
9526
+ if (value === void 0) setInternalValue(next);
9527
+ onValueChange?.(next);
9528
+ },
9529
+ [onValueChange, value]
9530
+ );
9531
+ const ticks = useMemo9(
9532
+ () => tickValues ?? buildDefaultTicks(min, max),
9533
+ [max, min, tickValues]
9534
+ );
9535
+ const fillPercent = (currentValue - min) / (max - min) * 100;
9536
+ const income = currentValue * incomePerReferral;
9537
+ const rootClass = ["afs", className].filter(Boolean).join(" ");
9538
+ return /* @__PURE__ */ jsx69("section", { className: rootClass, ...props, children: /* @__PURE__ */ jsxs65("div", { className: "afs__inner", children: [
9539
+ /* @__PURE__ */ jsxs65("div", { className: "afs__header", children: [
9540
+ title && /* @__PURE__ */ jsx69("h2", { className: "afs__title", children: title }),
9541
+ description && /* @__PURE__ */ jsx69("p", { className: "afs__description", children: description })
9542
+ ] }),
9543
+ /* @__PURE__ */ jsx69("div", { className: "afs__form", children: /* @__PURE__ */ jsxs65("div", { className: "afs__controls", children: [
9544
+ /* @__PURE__ */ jsxs65("div", { className: "afs__referrals", children: [
9545
+ /* @__PURE__ */ jsx69("div", { className: "afs__metric", children: currentValue }),
9546
+ /* @__PURE__ */ jsx69("p", { className: "afs__metric-label", children: referralsLabel })
9547
+ ] }),
9548
+ /* @__PURE__ */ jsx69("div", { className: "afs__arrow", "aria-hidden": "true", children: /* @__PURE__ */ jsx69(ArrowIcon2, {}) }),
9549
+ /* @__PURE__ */ jsxs65("div", { className: "afs__slider-block", children: [
9550
+ /* @__PURE__ */ jsx69(TrackGradient, {}),
9551
+ /* @__PURE__ */ jsx69("div", { className: "afs__track-wrap", children: /* @__PURE__ */ jsxs65("div", { className: "afs__track", children: [
9552
+ /* @__PURE__ */ jsx69(
9553
+ "div",
9554
+ {
9555
+ className: "afs__fill",
9556
+ style: { width: `${fillPercent}%` }
9557
+ }
9558
+ ),
9559
+ /* @__PURE__ */ jsx69(
9560
+ "div",
9561
+ {
9562
+ className: "afs__handle",
9563
+ style: { left: `${fillPercent}%` },
9564
+ "aria-hidden": "true"
9565
+ }
9566
+ ),
9567
+ /* @__PURE__ */ jsx69(
9568
+ "input",
9569
+ {
9570
+ type: "range",
9571
+ className: "afs__input",
9572
+ min,
9573
+ max,
9574
+ step,
9575
+ value: currentValue,
9576
+ "aria-label": sliderLabel,
9577
+ "aria-valuemin": min,
9578
+ "aria-valuemax": max,
9579
+ "aria-valuenow": currentValue,
9580
+ onChange: (event) => handleChange(Number(event.target.value))
9581
+ }
9582
+ )
9583
+ ] }) }),
9584
+ /* @__PURE__ */ jsx69("div", { className: "afs__ticks", children: ticks.map((tick) => /* @__PURE__ */ jsx69("span", { className: "afs__tick", children: tick }, tick)) })
9585
+ ] }),
9586
+ /* @__PURE__ */ jsxs65("div", { className: "afs__income", children: [
9587
+ /* @__PURE__ */ jsxs65("div", { className: "afs__income-value", children: [
9588
+ /* @__PURE__ */ jsx69("span", { className: "afs__metric", children: currencySymbol }),
9589
+ /* @__PURE__ */ jsx69("span", { className: "afs__metric", children: formatIncome(income) })
9590
+ ] }),
9591
+ /* @__PURE__ */ jsx69("p", { className: "afs__metric-label afs__metric-label--right", children: incomeLabel })
9592
+ ] })
9593
+ ] }) }),
9594
+ disclaimer && /* @__PURE__ */ jsxs65("div", { className: "afs__disclaimer", children: [
9595
+ disclaimerIconSrc && /* @__PURE__ */ jsx69(
9596
+ "img",
9597
+ {
9598
+ className: "afs__disclaimer-icon",
9599
+ src: disclaimerIconSrc,
9600
+ alt: disclaimerIconAlt,
9601
+ loading: "lazy",
9602
+ "aria-hidden": disclaimerIconAlt ? void 0 : true
9603
+ }
9604
+ ),
9605
+ /* @__PURE__ */ jsx69("p", { className: "afs__disclaimer-text", children: disclaimer })
9606
+ ] })
9607
+ ] }) });
9608
+ };
8438
9609
  export {
8439
9610
  AVATAR_DATA,
8440
9611
  Accordion,
9612
+ AffiliatesSlider,
8441
9613
  ArticleHero,
8442
9614
  ArticleSection,
8443
9615
  AvatarGrid,
@@ -8452,15 +9624,18 @@ export {
8452
9624
  Chip,
8453
9625
  ChipDropdown,
8454
9626
  CoralBanner,
9627
+ CountryLinkGrid,
8455
9628
  DEFAULT_AWARDS,
8456
9629
  DEFAULT_CULTURE_CARDS,
8457
9630
  DEFAULT_EXCHANGE_RATE_WS_URL,
8458
9631
  DEFAULT_SYMBOLS_ENDPOINT,
8459
9632
  DayNightTransition,
9633
+ DocumentChips,
8460
9634
  DotLottieInView,
8461
9635
  DownloadBadge,
8462
9636
  DownloadBanner,
8463
9637
  DynamicTable,
9638
+ EntityInfoSection,
8464
9639
  FEATURE_AWARDS_TEXT_CONTENT,
8465
9640
  FEATURE_BLOG_CATEGORIES_TEXT_CONTENT,
8466
9641
  FEATURE_BLOG_TEXT_CONTENT,
@@ -8485,11 +9660,20 @@ export {
8485
9660
  Hero,
8486
9661
  IMAGE_BANNER_CHIPS_DEFAULT_IMAGE,
8487
9662
  ImageBanner,
9663
+ LanguageSelectModal,
8488
9664
  Leaders,
8489
9665
  Link,
9666
+ LinkModal,
8490
9667
  LogoMarquee,
8491
9668
  MasterPartner,
8492
9669
  Navbar,
9670
+ OPTIONS_TYPES_ACCUMULATOR_CONTENT,
9671
+ OPTIONS_TYPES_DIGITAL_CONTENT,
9672
+ OPTIONS_TYPES_MULTIPLIERS_CONTENT,
9673
+ OPTIONS_TYPES_PLACEHOLDER_ITEMS,
9674
+ OPTIONS_TYPES_TURBO_CONTENT,
9675
+ OPTIONS_TYPES_VANILLA_CONTENT,
9676
+ OptionsTypes,
8493
9677
  PARALLAX_BANNER_TEXT_CONTENT,
8494
9678
  Pagination,
8495
9679
  ParallaxBanner,