@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/block-registry.json +754 -12
- package/components.manifest.json +380 -1
- package/dist/index.css +1153 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +391 -6
- package/dist/index.d.ts +391 -6
- package/dist/index.js +1408 -215
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1273 -89
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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:
|
|
1105
|
-
"aria-controls":
|
|
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:
|
|
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
|
|
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 =
|
|
2010
|
-
const leftRef =
|
|
2011
|
-
const rightRef =
|
|
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
|
|
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 =
|
|
2260
|
-
const leftColRef =
|
|
2261
|
-
const rightColRef =
|
|
2262
|
-
const rafRef =
|
|
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 =
|
|
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
|
|
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 =
|
|
2459
|
-
const startRef =
|
|
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 =
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
2761
|
-
const mobileItemRefs =
|
|
2762
|
-
const mediaColRef =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
3703
|
-
const langHoverTimeoutRef =
|
|
3704
|
-
const pillAreaRef =
|
|
3705
|
-
const langBtnRef =
|
|
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
|
|
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 =
|
|
4176
|
-
const dayWordRef =
|
|
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
|
|
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 =
|
|
4576
|
-
const col2Ref =
|
|
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
|
|
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 =
|
|
4841
|
-
const wordsRef =
|
|
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
|
|
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 =
|
|
4913
|
-
const cardInnerRefs =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
5718
|
-
const autoRef =
|
|
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
|
|
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 =
|
|
6224
|
-
const dragState =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
7332
|
-
const reqIdRef =
|
|
7333
|
-
const pendingRef =
|
|
7354
|
+
const socketRef = useRef19(null);
|
|
7355
|
+
const reqIdRef = useRef19(1);
|
|
7356
|
+
const pendingRef = useRef19(
|
|
7334
7357
|
/* @__PURE__ */ new Map()
|
|
7335
7358
|
);
|
|
7336
|
-
const cacheRef =
|
|
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 =
|
|
7460
|
-
const listboxId =
|
|
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 =
|
|
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 =
|
|
7678
|
-
const volumeInputId =
|
|
7679
|
-
const priceInputId =
|
|
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
|
|
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 =
|
|
8001
|
-
const stripRef =
|
|
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,
|