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