@deriv-web-design/ui 0.1.20 → 0.1.23
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 +887 -16
- package/components.manifest.json +380 -1
- package/dist/index.css +1278 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +412 -6
- package/dist/index.d.ts +412 -6
- package/dist/index.js +1565 -215
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1430 -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,21 @@ __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_EU_MULTIPLIERS_CONTENT: () => OPTIONS_TYPES_EU_MULTIPLIERS_CONTENT,
|
|
96
|
+
OPTIONS_TYPES_MULTIPLIERS_CONTENT: () => OPTIONS_TYPES_MULTIPLIERS_CONTENT,
|
|
97
|
+
OPTIONS_TYPES_PLACEHOLDER_ITEMS: () => OPTIONS_TYPES_PLACEHOLDER_ITEMS,
|
|
98
|
+
OPTIONS_TYPES_TURBO_CONTENT: () => OPTIONS_TYPES_TURBO_CONTENT,
|
|
99
|
+
OPTIONS_TYPES_VANILLA_CONTENT: () => OPTIONS_TYPES_VANILLA_CONTENT,
|
|
100
|
+
OptionsTypes: () => OptionsTypes,
|
|
87
101
|
PARALLAX_BANNER_TEXT_CONTENT: () => PARALLAX_BANNER_TEXT_CONTENT,
|
|
88
102
|
Pagination: () => Pagination,
|
|
89
103
|
ParallaxBanner: () => ParallaxBanner,
|
|
@@ -1191,17 +1205,29 @@ var Pagination = ({
|
|
|
1191
1205
|
};
|
|
1192
1206
|
|
|
1193
1207
|
// components/Tabs/Tabs.tsx
|
|
1208
|
+
var import_react7 = require("react");
|
|
1194
1209
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1195
1210
|
var Tabs = ({
|
|
1196
1211
|
items,
|
|
1197
1212
|
activeId,
|
|
1198
1213
|
onChange,
|
|
1214
|
+
idPrefix,
|
|
1199
1215
|
className,
|
|
1200
1216
|
...props
|
|
1201
1217
|
}) => {
|
|
1218
|
+
const generatedId = (0, import_react7.useId)().replace(/:/g, "");
|
|
1219
|
+
const prefix = idPrefix ?? `tabs-${generatedId}`;
|
|
1220
|
+
const rootRef = (0, import_react7.useRef)(null);
|
|
1221
|
+
const selectAndFocus = (index) => {
|
|
1222
|
+
const item = items[index];
|
|
1223
|
+
if (!item) return;
|
|
1224
|
+
onChange(item.id);
|
|
1225
|
+
rootRef.current?.querySelectorAll('[role="tab"]')[index]?.focus();
|
|
1226
|
+
};
|
|
1202
1227
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1203
1228
|
"div",
|
|
1204
1229
|
{
|
|
1230
|
+
ref: rootRef,
|
|
1205
1231
|
className: ["tabs-menu w-tab-menu", className].filter(Boolean).join(" "),
|
|
1206
1232
|
role: "tablist",
|
|
1207
1233
|
...props,
|
|
@@ -1213,10 +1239,25 @@ var Tabs = ({
|
|
|
1213
1239
|
label: item.label,
|
|
1214
1240
|
selected: isActive,
|
|
1215
1241
|
onClick: () => onChange(item.id),
|
|
1242
|
+
onKeyDown: (event) => {
|
|
1243
|
+
if (event.key === "ArrowRight" || event.key === "ArrowDown") {
|
|
1244
|
+
event.preventDefault();
|
|
1245
|
+
selectAndFocus((i + 1) % items.length);
|
|
1246
|
+
} else if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
|
|
1247
|
+
event.preventDefault();
|
|
1248
|
+
selectAndFocus((i - 1 + items.length) % items.length);
|
|
1249
|
+
} else if (event.key === "Home") {
|
|
1250
|
+
event.preventDefault();
|
|
1251
|
+
selectAndFocus(0);
|
|
1252
|
+
} else if (event.key === "End") {
|
|
1253
|
+
event.preventDefault();
|
|
1254
|
+
selectAndFocus(items.length - 1);
|
|
1255
|
+
}
|
|
1256
|
+
},
|
|
1216
1257
|
className: isActive ? "tab-active" : "",
|
|
1217
1258
|
"data-w-tab": item.label,
|
|
1218
|
-
id:
|
|
1219
|
-
"aria-controls":
|
|
1259
|
+
id: `${prefix}-tab-${i}`,
|
|
1260
|
+
"aria-controls": `${prefix}-panel-${i}`,
|
|
1220
1261
|
"aria-selected": isActive,
|
|
1221
1262
|
tabIndex: isActive ? 0 : -1,
|
|
1222
1263
|
role: "tab"
|
|
@@ -1229,14 +1270,14 @@ var Tabs = ({
|
|
|
1229
1270
|
};
|
|
1230
1271
|
|
|
1231
1272
|
// templates/FaqAccordion/FaqAccordion.tsx
|
|
1232
|
-
var
|
|
1273
|
+
var import_react8 = require("react");
|
|
1233
1274
|
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1234
1275
|
var FaqAccordion = ({
|
|
1235
1276
|
title,
|
|
1236
1277
|
items,
|
|
1237
1278
|
colorScheme = "white"
|
|
1238
1279
|
}) => {
|
|
1239
|
-
const [openIndex, setOpenIndex] = (0,
|
|
1280
|
+
const [openIndex, setOpenIndex] = (0, import_react8.useState)(null);
|
|
1240
1281
|
const handleToggle = (index) => (isOpen) => {
|
|
1241
1282
|
setOpenIndex(isOpen ? index : null);
|
|
1242
1283
|
};
|
|
@@ -1248,7 +1289,7 @@ var FaqAccordion = ({
|
|
|
1248
1289
|
title: item.question,
|
|
1249
1290
|
open: openIndex === index,
|
|
1250
1291
|
onToggle: handleToggle(index),
|
|
1251
|
-
showTopDivider:
|
|
1292
|
+
showTopDivider: false,
|
|
1252
1293
|
showBottomDivider: true,
|
|
1253
1294
|
children: item.answer
|
|
1254
1295
|
},
|
|
@@ -1260,6 +1301,19 @@ var FaqAccordion = ({
|
|
|
1260
1301
|
// templates/FeatureCards/FeatureCards.tsx
|
|
1261
1302
|
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1262
1303
|
var externalLinkRel = (href) => href && /^https?:\/\//i.test(href) ? "noopener noreferrer" : void 0;
|
|
1304
|
+
var PlatformIcon = ({ platform }) => {
|
|
1305
|
+
if (!platform.iconSrc) return null;
|
|
1306
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1307
|
+
"img",
|
|
1308
|
+
{
|
|
1309
|
+
alt: "",
|
|
1310
|
+
className: "fc-platformLink-icon",
|
|
1311
|
+
height: 32,
|
|
1312
|
+
src: platform.iconSrc,
|
|
1313
|
+
width: 32
|
|
1314
|
+
}
|
|
1315
|
+
);
|
|
1316
|
+
};
|
|
1263
1317
|
var TwoCardsItem = ({ card, index }) => {
|
|
1264
1318
|
const isDark = card.twoTone === "dark";
|
|
1265
1319
|
const showCardLink = card.showLink !== false;
|
|
@@ -1298,16 +1352,7 @@ var TwoCardsItem = ({ card, index }) => {
|
|
|
1298
1352
|
href: platform.href,
|
|
1299
1353
|
rel: externalLinkRel(platform.href),
|
|
1300
1354
|
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
|
-
),
|
|
1355
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(PlatformIcon, { platform }),
|
|
1311
1356
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "fc-platformLink-label", children: platform.label })
|
|
1312
1357
|
]
|
|
1313
1358
|
},
|
|
@@ -1356,16 +1401,7 @@ var OneCardPanel = ({ card }) => {
|
|
|
1356
1401
|
href: platform.href,
|
|
1357
1402
|
rel: externalLinkRel(platform.href),
|
|
1358
1403
|
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
|
-
),
|
|
1404
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(PlatformIcon, { platform }),
|
|
1369
1405
|
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "fc-platformLink-label", children: platform.label })
|
|
1370
1406
|
]
|
|
1371
1407
|
},
|
|
@@ -1513,7 +1549,7 @@ var FeatureBullets = ({
|
|
|
1513
1549
|
};
|
|
1514
1550
|
|
|
1515
1551
|
// components/Footer/Footer.tsx
|
|
1516
|
-
var
|
|
1552
|
+
var import_react9 = require("react");
|
|
1517
1553
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
1518
1554
|
var ExternalLinkIcon = () => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
1519
1555
|
"svg",
|
|
@@ -1641,7 +1677,7 @@ var Footer = ({
|
|
|
1641
1677
|
...props
|
|
1642
1678
|
}) => {
|
|
1643
1679
|
const allSections = navColumns.flat();
|
|
1644
|
-
const [openSections, setOpenSections] = (0,
|
|
1680
|
+
const [openSections, setOpenSections] = (0, import_react9.useState)(/* @__PURE__ */ new Set());
|
|
1645
1681
|
const toggleSection = (index) => {
|
|
1646
1682
|
setOpenSections((prev) => {
|
|
1647
1683
|
const next = new Set(prev);
|
|
@@ -2043,7 +2079,7 @@ var Hero = ({
|
|
|
2043
2079
|
};
|
|
2044
2080
|
|
|
2045
2081
|
// templates/Header/Header.tsx
|
|
2046
|
-
var
|
|
2082
|
+
var import_react10 = require("react");
|
|
2047
2083
|
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2048
2084
|
var ButtonBlock2 = ({
|
|
2049
2085
|
primaryButton,
|
|
@@ -2120,10 +2156,10 @@ var Header = ({
|
|
|
2120
2156
|
...props
|
|
2121
2157
|
}) => {
|
|
2122
2158
|
const variantClass = `header--${variant}`;
|
|
2123
|
-
const sectionRef = (0,
|
|
2124
|
-
const leftRef = (0,
|
|
2125
|
-
const rightRef = (0,
|
|
2126
|
-
(0,
|
|
2159
|
+
const sectionRef = (0, import_react10.useRef)(null);
|
|
2160
|
+
const leftRef = (0, import_react10.useRef)(null);
|
|
2161
|
+
const rightRef = (0, import_react10.useRef)(null);
|
|
2162
|
+
(0, import_react10.useEffect)(() => {
|
|
2127
2163
|
if (variant !== "visuals") return;
|
|
2128
2164
|
if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
|
|
2129
2165
|
const section = sectionRef.current;
|
|
@@ -2186,7 +2222,7 @@ var Header = ({
|
|
|
2186
2222
|
};
|
|
2187
2223
|
|
|
2188
2224
|
// templates/Stats/StatsV2.tsx
|
|
2189
|
-
var
|
|
2225
|
+
var import_react11 = require("react");
|
|
2190
2226
|
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
2191
2227
|
var HOLD_MS = 1e3;
|
|
2192
2228
|
var STEP_DURATION_MS = 700;
|
|
@@ -2370,22 +2406,22 @@ var Stats = ({
|
|
|
2370
2406
|
className,
|
|
2371
2407
|
...props
|
|
2372
2408
|
}) => {
|
|
2373
|
-
const sectionRef = (0,
|
|
2374
|
-
const leftColRef = (0,
|
|
2375
|
-
const rightColRef = (0,
|
|
2376
|
-
const rafRef = (0,
|
|
2409
|
+
const sectionRef = (0, import_react11.useRef)(null);
|
|
2410
|
+
const leftColRef = (0, import_react11.useRef)(null);
|
|
2411
|
+
const rightColRef = (0, import_react11.useRef)(null);
|
|
2412
|
+
const rafRef = (0, import_react11.useRef)(null);
|
|
2377
2413
|
const N = stats.length;
|
|
2378
2414
|
const hasAwards = leftAwards.length > 0 || rightAwards.length > 0;
|
|
2379
2415
|
const allAwards = [...leftAwards, ...rightAwards];
|
|
2380
|
-
const strip = (0,
|
|
2416
|
+
const strip = (0, import_react11.useMemo)(() => {
|
|
2381
2417
|
if (N === 0) return [];
|
|
2382
2418
|
const target = Math.max(2 * N, N + 3);
|
|
2383
2419
|
return Array.from({ length: target }, (_, i) => stats[i % N]);
|
|
2384
2420
|
}, [stats, N]);
|
|
2385
|
-
const [step, setStep] = (0,
|
|
2386
|
-
const [phase, setPhase] = (0,
|
|
2387
|
-
const scheduleRef = (0,
|
|
2388
|
-
(0,
|
|
2421
|
+
const [step, setStep] = (0, import_react11.useState)(0);
|
|
2422
|
+
const [phase, setPhase] = (0, import_react11.useState)("idle");
|
|
2423
|
+
const scheduleRef = (0, import_react11.useRef)(null);
|
|
2424
|
+
(0, import_react11.useEffect)(() => {
|
|
2389
2425
|
if (N <= 1) return;
|
|
2390
2426
|
let timerId = null;
|
|
2391
2427
|
let cancelled = false;
|
|
@@ -2416,7 +2452,7 @@ var Stats = ({
|
|
|
2416
2452
|
if (timerId !== null) window.clearTimeout(timerId);
|
|
2417
2453
|
};
|
|
2418
2454
|
}, [N]);
|
|
2419
|
-
(0,
|
|
2455
|
+
(0, import_react11.useEffect)(() => {
|
|
2420
2456
|
if (phase === "snap-disable") {
|
|
2421
2457
|
const raf = requestAnimationFrame(() => {
|
|
2422
2458
|
setStep(0);
|
|
@@ -2434,11 +2470,11 @@ var Stats = ({
|
|
|
2434
2470
|
return () => cancelAnimationFrame(raf);
|
|
2435
2471
|
}
|
|
2436
2472
|
}, [phase]);
|
|
2437
|
-
(0,
|
|
2473
|
+
(0, import_react11.useEffect)(() => {
|
|
2438
2474
|
setStep(0);
|
|
2439
2475
|
setPhase("idle");
|
|
2440
2476
|
}, [N]);
|
|
2441
|
-
(0,
|
|
2477
|
+
(0, import_react11.useEffect)(() => {
|
|
2442
2478
|
const apply = () => {
|
|
2443
2479
|
const section = sectionRef.current;
|
|
2444
2480
|
if (!section || window.innerWidth < PARALLAX_BREAKPOINT) {
|
|
@@ -2554,7 +2590,7 @@ var Stats = ({
|
|
|
2554
2590
|
};
|
|
2555
2591
|
|
|
2556
2592
|
// templates/Stats/StatsSimple.tsx
|
|
2557
|
-
var
|
|
2593
|
+
var import_react12 = require("react");
|
|
2558
2594
|
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
2559
2595
|
function parseValue(raw) {
|
|
2560
2596
|
const match = raw.match(/^([^0-9]*)([0-9]+(?:\.[0-9]+)?)(.*)$/);
|
|
@@ -2568,10 +2604,10 @@ function parseValue(raw) {
|
|
|
2568
2604
|
var DURATION_MS = 1800;
|
|
2569
2605
|
var EASING2 = (t) => 1 - Math.pow(1 - t, 3);
|
|
2570
2606
|
function useCountUp(target, active) {
|
|
2571
|
-
const [display, setDisplay] = (0,
|
|
2572
|
-
const rafRef = (0,
|
|
2573
|
-
const startRef = (0,
|
|
2574
|
-
(0,
|
|
2607
|
+
const [display, setDisplay] = (0, import_react12.useState)(0);
|
|
2608
|
+
const rafRef = (0, import_react12.useRef)(null);
|
|
2609
|
+
const startRef = (0, import_react12.useRef)(null);
|
|
2610
|
+
(0, import_react12.useEffect)(() => {
|
|
2575
2611
|
if (!active) return;
|
|
2576
2612
|
startRef.current = null;
|
|
2577
2613
|
const tick = (now) => {
|
|
@@ -2609,9 +2645,9 @@ var StatsSimple = ({
|
|
|
2609
2645
|
className,
|
|
2610
2646
|
...props
|
|
2611
2647
|
}) => {
|
|
2612
|
-
const sectionRef = (0,
|
|
2613
|
-
const [animated, setAnimated] = (0,
|
|
2614
|
-
(0,
|
|
2648
|
+
const sectionRef = (0, import_react12.useRef)(null);
|
|
2649
|
+
const [animated, setAnimated] = (0, import_react12.useState)(false);
|
|
2650
|
+
(0, import_react12.useEffect)(() => {
|
|
2615
2651
|
const el = sectionRef.current;
|
|
2616
2652
|
if (!el) return;
|
|
2617
2653
|
const observer = new IntersectionObserver(
|
|
@@ -2641,28 +2677,29 @@ var StatsSimple = ({
|
|
|
2641
2677
|
};
|
|
2642
2678
|
|
|
2643
2679
|
// templates/FeatureScroll/FeatureScroll.tsx
|
|
2644
|
-
var
|
|
2680
|
+
var import_react14 = require("react");
|
|
2645
2681
|
|
|
2646
2682
|
// components/DotLottieInView/DotLottieInView.tsx
|
|
2647
|
-
var
|
|
2683
|
+
var import_react13 = require("react");
|
|
2648
2684
|
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
2649
|
-
var DotLottiePlayer = (0,
|
|
2685
|
+
var DotLottiePlayer = (0, import_react13.lazy)(
|
|
2650
2686
|
() => import("@lottiefiles/dotlottie-react").then((m) => ({ default: m.DotLottieReact }))
|
|
2651
2687
|
);
|
|
2652
2688
|
function DotLottieInView({
|
|
2653
2689
|
enabled = true,
|
|
2654
2690
|
rootMargin = "0px",
|
|
2655
2691
|
threshold = 0.2,
|
|
2692
|
+
loop = false,
|
|
2656
2693
|
className,
|
|
2657
2694
|
style,
|
|
2658
2695
|
poster,
|
|
2659
2696
|
...dotProps
|
|
2660
2697
|
}) {
|
|
2661
|
-
const wrapRef = (0,
|
|
2662
|
-
const [inView, setInView] = (0,
|
|
2663
|
-
const [mounted, setMounted] = (0,
|
|
2664
|
-
const [dotLottie, setDotLottie] = (0,
|
|
2665
|
-
(0,
|
|
2698
|
+
const wrapRef = (0, import_react13.useRef)(null);
|
|
2699
|
+
const [inView, setInView] = (0, import_react13.useState)(false);
|
|
2700
|
+
const [mounted, setMounted] = (0, import_react13.useState)(false);
|
|
2701
|
+
const [dotLottie, setDotLottie] = (0, import_react13.useState)(null);
|
|
2702
|
+
(0, import_react13.useEffect)(() => {
|
|
2666
2703
|
const el = wrapRef.current;
|
|
2667
2704
|
if (!el) return;
|
|
2668
2705
|
const observer = new IntersectionObserver(
|
|
@@ -2674,7 +2711,7 @@ function DotLottieInView({
|
|
|
2674
2711
|
observer.observe(el);
|
|
2675
2712
|
return () => observer.disconnect();
|
|
2676
2713
|
}, [rootMargin, threshold]);
|
|
2677
|
-
(0,
|
|
2714
|
+
(0, import_react13.useEffect)(() => {
|
|
2678
2715
|
if (mounted) return;
|
|
2679
2716
|
if (!inView) return;
|
|
2680
2717
|
if (typeof window === "undefined") return;
|
|
@@ -2692,7 +2729,7 @@ function DotLottieInView({
|
|
|
2692
2729
|
if (timerId !== null) window.clearTimeout(timerId);
|
|
2693
2730
|
};
|
|
2694
2731
|
}, [inView, mounted]);
|
|
2695
|
-
(0,
|
|
2732
|
+
(0, import_react13.useEffect)(() => {
|
|
2696
2733
|
if (!dotLottie) return;
|
|
2697
2734
|
if (!enabled || !inView) {
|
|
2698
2735
|
dotLottie.stop();
|
|
@@ -2724,11 +2761,11 @@ function DotLottieInView({
|
|
|
2724
2761
|
backgroundColor: "transparent",
|
|
2725
2762
|
...style
|
|
2726
2763
|
},
|
|
2727
|
-
children: mounted ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2764
|
+
children: mounted ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_react13.Suspense, { fallback: poster ?? null, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
2728
2765
|
DotLottiePlayer,
|
|
2729
2766
|
{
|
|
2730
2767
|
...dotProps,
|
|
2731
|
-
loop
|
|
2768
|
+
loop,
|
|
2732
2769
|
autoplay: false,
|
|
2733
2770
|
dotLottieRefCallback: setDotLottie
|
|
2734
2771
|
}
|
|
@@ -2863,12 +2900,12 @@ var FeatureScroll = ({
|
|
|
2863
2900
|
mediaThreshold,
|
|
2864
2901
|
...props
|
|
2865
2902
|
}) => {
|
|
2866
|
-
const [activeIndex, setActiveIndex] = (0,
|
|
2867
|
-
const [mobileActiveIndex, setMobileActiveIndex] = (0,
|
|
2868
|
-
const titleRefs = (0,
|
|
2869
|
-
const mobileItemRefs = (0,
|
|
2870
|
-
const mediaColRef = (0,
|
|
2871
|
-
(0,
|
|
2903
|
+
const [activeIndex, setActiveIndex] = (0, import_react14.useState)(0);
|
|
2904
|
+
const [mobileActiveIndex, setMobileActiveIndex] = (0, import_react14.useState)(0);
|
|
2905
|
+
const titleRefs = (0, import_react14.useRef)([]);
|
|
2906
|
+
const mobileItemRefs = (0, import_react14.useRef)([]);
|
|
2907
|
+
const mediaColRef = (0, import_react14.useRef)(null);
|
|
2908
|
+
(0, import_react14.useLayoutEffect)(() => {
|
|
2872
2909
|
if (items.length === 0) return;
|
|
2873
2910
|
const readThresholdPx = () => {
|
|
2874
2911
|
const col = mediaColRef.current;
|
|
@@ -2914,7 +2951,7 @@ var FeatureScroll = ({
|
|
|
2914
2951
|
if (rafId !== 0) window.cancelAnimationFrame(rafId);
|
|
2915
2952
|
};
|
|
2916
2953
|
}, [items.length]);
|
|
2917
|
-
(0,
|
|
2954
|
+
(0, import_react14.useEffect)(() => {
|
|
2918
2955
|
if (items.length === 0) return;
|
|
2919
2956
|
if (typeof window === "undefined") return;
|
|
2920
2957
|
const ratios = /* @__PURE__ */ new Map();
|
|
@@ -3102,7 +3139,7 @@ var FeatureSplit = ({
|
|
|
3102
3139
|
};
|
|
3103
3140
|
|
|
3104
3141
|
// templates/StickyStackedCards/StickyStackedCards.tsx
|
|
3105
|
-
var
|
|
3142
|
+
var import_react15 = require("react");
|
|
3106
3143
|
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
3107
3144
|
var PLACEHOLDER_IMAGE = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69b9309379ac08e59ca8210a_1f3f555da9a5cbb13a6fe1bf0d5fe1b6_placeholder-image.webp";
|
|
3108
3145
|
var STEPS_DATA = [
|
|
@@ -3132,8 +3169,8 @@ var StickyStackedCards = ({
|
|
|
3132
3169
|
className,
|
|
3133
3170
|
...props
|
|
3134
3171
|
}) => {
|
|
3135
|
-
const cardRefs = (0,
|
|
3136
|
-
(0,
|
|
3172
|
+
const cardRefs = (0, import_react15.useRef)([]);
|
|
3173
|
+
(0, import_react15.useEffect)(() => {
|
|
3137
3174
|
if (typeof window === "undefined") return;
|
|
3138
3175
|
let rafId = 0;
|
|
3139
3176
|
const update = () => {
|
|
@@ -3222,7 +3259,7 @@ var StickyStackedCards = ({
|
|
|
3222
3259
|
};
|
|
3223
3260
|
|
|
3224
3261
|
// templates/CTABanner/CTABanner.tsx
|
|
3225
|
-
var
|
|
3262
|
+
var import_react16 = require("react");
|
|
3226
3263
|
var import_framer_motion = require("framer-motion");
|
|
3227
3264
|
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
3228
3265
|
var ENTRANCE = {
|
|
@@ -3470,7 +3507,7 @@ var CTABanner = ({
|
|
|
3470
3507
|
...props
|
|
3471
3508
|
}) => {
|
|
3472
3509
|
const resolvedAvatars = avatars ?? (variant === "compact" ? COMPACT_AVATAR_DATA : AVATAR_DATA);
|
|
3473
|
-
const sectionRef = (0,
|
|
3510
|
+
const sectionRef = (0, import_react16.useRef)(null);
|
|
3474
3511
|
const { scrollYProgress } = (0, import_framer_motion.useScroll)({
|
|
3475
3512
|
target: sectionRef,
|
|
3476
3513
|
offset: ["start end", "end start"]
|
|
@@ -3557,7 +3594,7 @@ var CTABanner = ({
|
|
|
3557
3594
|
};
|
|
3558
3595
|
|
|
3559
3596
|
// components/Navbar/Navbar.tsx
|
|
3560
|
-
var
|
|
3597
|
+
var import_react17 = require("react");
|
|
3561
3598
|
var import_framer_motion2 = require("framer-motion");
|
|
3562
3599
|
|
|
3563
3600
|
// assets/icon-globe.svg
|
|
@@ -3795,32 +3832,32 @@ var Navbar = ({
|
|
|
3795
3832
|
className,
|
|
3796
3833
|
...props
|
|
3797
3834
|
}) => {
|
|
3798
|
-
const [openDropdown, setOpenDropdown] = (0,
|
|
3799
|
-
const [mobileOpen, setMobileOpen] = (0,
|
|
3800
|
-
const [mobileExpanded, setMobileExpanded] = (0,
|
|
3801
|
-
const [scrolled, setScrolled] = (0,
|
|
3802
|
-
const [langDropdownOpen, setLangDropdownOpen] = (0,
|
|
3803
|
-
const [mobileLangOpen, setMobileLangOpen] = (0,
|
|
3804
|
-
const hoverTimeoutRef = (0,
|
|
3805
|
-
const langHoverTimeoutRef = (0,
|
|
3806
|
-
const pillAreaRef = (0,
|
|
3807
|
-
const langBtnRef = (0,
|
|
3835
|
+
const [openDropdown, setOpenDropdown] = (0, import_react17.useState)(null);
|
|
3836
|
+
const [mobileOpen, setMobileOpen] = (0, import_react17.useState)(false);
|
|
3837
|
+
const [mobileExpanded, setMobileExpanded] = (0, import_react17.useState)(null);
|
|
3838
|
+
const [scrolled, setScrolled] = (0, import_react17.useState)(false);
|
|
3839
|
+
const [langDropdownOpen, setLangDropdownOpen] = (0, import_react17.useState)(false);
|
|
3840
|
+
const [mobileLangOpen, setMobileLangOpen] = (0, import_react17.useState)(false);
|
|
3841
|
+
const hoverTimeoutRef = (0, import_react17.useRef)(null);
|
|
3842
|
+
const langHoverTimeoutRef = (0, import_react17.useRef)(null);
|
|
3843
|
+
const pillAreaRef = (0, import_react17.useRef)(null);
|
|
3844
|
+
const langBtnRef = (0, import_react17.useRef)(null);
|
|
3808
3845
|
const hasLangDropdown = Boolean(languageItems && languageItems.length > 0);
|
|
3809
3846
|
const resolvedLogo = theme === "light" ? logoSrcDark ?? logoSrc : logoSrc;
|
|
3810
|
-
(0,
|
|
3847
|
+
(0, import_react17.useEffect)(() => {
|
|
3811
3848
|
if (process.env.NODE_ENV !== "production" && !logoSrcDark) {
|
|
3812
3849
|
console.warn(
|
|
3813
3850
|
"[Navbar] `logoSrcDark` was not provided. The condensed pill logo (shown once the page is scrolled) falls back to `logoSrc`, which is typically the light-coloured logo \u2014 it will be invisible against the pill's white/near-white scrolled background. Pass `logoSrcDark` to fix this."
|
|
3814
3851
|
);
|
|
3815
3852
|
}
|
|
3816
3853
|
}, [logoSrcDark]);
|
|
3817
|
-
(0,
|
|
3854
|
+
(0, import_react17.useEffect)(() => {
|
|
3818
3855
|
const onScroll = () => setScrolled(window.scrollY > 0);
|
|
3819
3856
|
onScroll();
|
|
3820
3857
|
window.addEventListener("scroll", onScroll, { passive: true });
|
|
3821
3858
|
return () => window.removeEventListener("scroll", onScroll);
|
|
3822
3859
|
}, []);
|
|
3823
|
-
(0,
|
|
3860
|
+
(0, import_react17.useEffect)(() => {
|
|
3824
3861
|
const onKey = (e) => {
|
|
3825
3862
|
if (e.key === "Escape") {
|
|
3826
3863
|
setOpenDropdown(null);
|
|
@@ -3831,16 +3868,16 @@ var Navbar = ({
|
|
|
3831
3868
|
document.addEventListener("keydown", onKey);
|
|
3832
3869
|
return () => document.removeEventListener("keydown", onKey);
|
|
3833
3870
|
}, []);
|
|
3834
|
-
(0,
|
|
3871
|
+
(0, import_react17.useEffect)(() => {
|
|
3835
3872
|
if (!mobileOpen) setMobileLangOpen(false);
|
|
3836
3873
|
}, [mobileOpen]);
|
|
3837
|
-
(0,
|
|
3874
|
+
(0, import_react17.useEffect)(() => {
|
|
3838
3875
|
document.body.style.overflow = mobileOpen ? "hidden" : "";
|
|
3839
3876
|
return () => {
|
|
3840
3877
|
document.body.style.overflow = "";
|
|
3841
3878
|
};
|
|
3842
3879
|
}, [mobileOpen]);
|
|
3843
|
-
(0,
|
|
3880
|
+
(0, import_react17.useEffect)(() => {
|
|
3844
3881
|
if (!openDropdown) return;
|
|
3845
3882
|
const onPointerDown = (e) => {
|
|
3846
3883
|
if (pillAreaRef.current && !pillAreaRef.current.contains(e.target)) {
|
|
@@ -3850,36 +3887,36 @@ var Navbar = ({
|
|
|
3850
3887
|
document.addEventListener("pointerdown", onPointerDown);
|
|
3851
3888
|
return () => document.removeEventListener("pointerdown", onPointerDown);
|
|
3852
3889
|
}, [openDropdown]);
|
|
3853
|
-
const clearHoverTimeout = (0,
|
|
3890
|
+
const clearHoverTimeout = (0, import_react17.useCallback)(() => {
|
|
3854
3891
|
if (hoverTimeoutRef.current) {
|
|
3855
3892
|
clearTimeout(hoverTimeoutRef.current);
|
|
3856
3893
|
hoverTimeoutRef.current = null;
|
|
3857
3894
|
}
|
|
3858
3895
|
}, []);
|
|
3859
|
-
const clearLangHoverTimeout = (0,
|
|
3896
|
+
const clearLangHoverTimeout = (0, import_react17.useCallback)(() => {
|
|
3860
3897
|
if (langHoverTimeoutRef.current) {
|
|
3861
3898
|
clearTimeout(langHoverTimeoutRef.current);
|
|
3862
3899
|
langHoverTimeoutRef.current = null;
|
|
3863
3900
|
}
|
|
3864
3901
|
}, []);
|
|
3865
|
-
const handleLangEnter = (0,
|
|
3902
|
+
const handleLangEnter = (0, import_react17.useCallback)(() => {
|
|
3866
3903
|
clearLangHoverTimeout();
|
|
3867
3904
|
setLangDropdownOpen(true);
|
|
3868
3905
|
}, [clearLangHoverTimeout]);
|
|
3869
|
-
const handleLangLeave = (0,
|
|
3906
|
+
const handleLangLeave = (0, import_react17.useCallback)(() => {
|
|
3870
3907
|
clearLangHoverTimeout();
|
|
3871
3908
|
langHoverTimeoutRef.current = setTimeout(() => setLangDropdownOpen(false), 150);
|
|
3872
3909
|
}, [clearLangHoverTimeout]);
|
|
3873
|
-
const handleLangSelect = (0,
|
|
3910
|
+
const handleLangSelect = (0, import_react17.useCallback)((code) => {
|
|
3874
3911
|
setLangDropdownOpen(false);
|
|
3875
3912
|
setMobileLangOpen(false);
|
|
3876
3913
|
onLanguageSelect?.(code);
|
|
3877
3914
|
}, [onLanguageSelect]);
|
|
3878
|
-
const handleNavEnter = (0,
|
|
3915
|
+
const handleNavEnter = (0, import_react17.useCallback)((label) => {
|
|
3879
3916
|
clearHoverTimeout();
|
|
3880
3917
|
setOpenDropdown(label);
|
|
3881
3918
|
}, [clearHoverTimeout]);
|
|
3882
|
-
const handleNavLeave = (0,
|
|
3919
|
+
const handleNavLeave = (0, import_react17.useCallback)(() => {
|
|
3883
3920
|
clearHoverTimeout();
|
|
3884
3921
|
hoverTimeoutRef.current = setTimeout(() => setOpenDropdown(null), 120);
|
|
3885
3922
|
}, [clearHoverTimeout]);
|
|
@@ -4159,7 +4196,7 @@ var Navbar = ({
|
|
|
4159
4196
|
};
|
|
4160
4197
|
|
|
4161
4198
|
// templates/DayNightTransition/DayNightTransition.tsx
|
|
4162
|
-
var
|
|
4199
|
+
var import_react18 = require("react");
|
|
4163
4200
|
var import_framer_motion3 = require("framer-motion");
|
|
4164
4201
|
|
|
4165
4202
|
// templates/DayNightTransition/webflowDayNightV2Ix.ts
|
|
@@ -4268,13 +4305,13 @@ var DayNightTransition = ({
|
|
|
4268
4305
|
className,
|
|
4269
4306
|
...props
|
|
4270
4307
|
}) => {
|
|
4271
|
-
const wrapperRef = (0,
|
|
4272
|
-
const dayWordRef = (0,
|
|
4273
|
-
const [nightMarginStart, setNightMarginStart] = (0,
|
|
4274
|
-
const [nightMarginEnd, setNightMarginEnd] = (0,
|
|
4275
|
-
const [ixMedia, setIxMedia] = (0,
|
|
4308
|
+
const wrapperRef = (0, import_react18.useRef)(null);
|
|
4309
|
+
const dayWordRef = (0, import_react18.useRef)(null);
|
|
4310
|
+
const [nightMarginStart, setNightMarginStart] = (0, import_react18.useState)("0px");
|
|
4311
|
+
const [nightMarginEnd, setNightMarginEnd] = (0, import_react18.useState)("0px");
|
|
4312
|
+
const [ixMedia, setIxMedia] = (0, import_react18.useState)("desktop");
|
|
4276
4313
|
const webflowV2 = scrollPreset === "webflow-day-night-v2";
|
|
4277
|
-
(0,
|
|
4314
|
+
(0, import_react18.useEffect)(() => {
|
|
4278
4315
|
const mq = window.matchMedia("(max-width: 991px)");
|
|
4279
4316
|
const sync = () => setIxMedia(mq.matches ? "mobile" : "desktop");
|
|
4280
4317
|
sync();
|
|
@@ -4282,7 +4319,7 @@ var DayNightTransition = ({
|
|
|
4282
4319
|
return () => mq.removeEventListener("change", sync);
|
|
4283
4320
|
}, []);
|
|
4284
4321
|
const MotionHeadline = headlineLevel === "h1" ? import_framer_motion3.motion.h1 : import_framer_motion3.motion.h2;
|
|
4285
|
-
(0,
|
|
4322
|
+
(0, import_react18.useLayoutEffect)(() => {
|
|
4286
4323
|
if (!inlineDayNightHeadline) return;
|
|
4287
4324
|
const syncNightPull = () => {
|
|
4288
4325
|
const dayEl = dayWordRef.current;
|
|
@@ -4603,7 +4640,7 @@ var dayNightTransitionV2Preset = {
|
|
|
4603
4640
|
};
|
|
4604
4641
|
|
|
4605
4642
|
// templates/LogoMarquee/LogoMarquee.tsx
|
|
4606
|
-
var
|
|
4643
|
+
var import_react19 = require("react");
|
|
4607
4644
|
var import_framer_motion4 = require("framer-motion");
|
|
4608
4645
|
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
4609
4646
|
function modWrap(min, max, v) {
|
|
@@ -4662,8 +4699,8 @@ var LogoMarquee = ({
|
|
|
4662
4699
|
const scrollVelocity = (0, import_framer_motion4.useVelocity)(scrollY);
|
|
4663
4700
|
const col1Y = (0, import_framer_motion4.useMotionValue)(0);
|
|
4664
4701
|
const col2Y = (0, import_framer_motion4.useMotionValue)(0);
|
|
4665
|
-
const col1Ref = (0,
|
|
4666
|
-
const col2Ref = (0,
|
|
4702
|
+
const col1Ref = (0, import_react19.useRef)(null);
|
|
4703
|
+
const col2Ref = (0, import_react19.useRef)(null);
|
|
4667
4704
|
(0, import_framer_motion4.useAnimationFrame)((_, delta) => {
|
|
4668
4705
|
const raw = scrollVelocity.get();
|
|
4669
4706
|
if (Math.abs(raw) < DEADZONE) return;
|
|
@@ -4921,16 +4958,16 @@ var DownloadBanner = ({
|
|
|
4921
4958
|
};
|
|
4922
4959
|
|
|
4923
4960
|
// templates/TextScroll/TextScroll.tsx
|
|
4924
|
-
var
|
|
4961
|
+
var import_react20 = require("react");
|
|
4925
4962
|
var import_gsap = require("gsap");
|
|
4926
4963
|
var import_ScrollTrigger = require("gsap/ScrollTrigger");
|
|
4927
4964
|
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
4928
4965
|
import_gsap.gsap.registerPlugin(import_ScrollTrigger.ScrollTrigger);
|
|
4929
4966
|
var TextScroll = ({ text, className }) => {
|
|
4930
|
-
const sectionRef = (0,
|
|
4931
|
-
const wordsRef = (0,
|
|
4967
|
+
const sectionRef = (0, import_react20.useRef)(null);
|
|
4968
|
+
const wordsRef = (0, import_react20.useRef)([]);
|
|
4932
4969
|
const words = text.split(/\s+/).filter(Boolean);
|
|
4933
|
-
(0,
|
|
4970
|
+
(0, import_react20.useEffect)(() => {
|
|
4934
4971
|
const section = sectionRef.current;
|
|
4935
4972
|
const wordEls = wordsRef.current.filter(Boolean);
|
|
4936
4973
|
if (!section || wordEls.length === 0) return;
|
|
@@ -4989,7 +5026,7 @@ var TextScroll = ({ text, className }) => {
|
|
|
4989
5026
|
};
|
|
4990
5027
|
|
|
4991
5028
|
// templates/StickyMarketCards/StickyMarketCards.tsx
|
|
4992
|
-
var
|
|
5029
|
+
var import_react21 = require("react");
|
|
4993
5030
|
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
4994
5031
|
var PLACEHOLDER_IMAGE3 = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69b9309379ac08e59ca8210a_1f3f555da9a5cbb13a6fe1bf0d5fe1b6_placeholder-image.webp";
|
|
4995
5032
|
var StickyMarketCards = ({
|
|
@@ -4999,9 +5036,9 @@ var StickyMarketCards = ({
|
|
|
4999
5036
|
className,
|
|
5000
5037
|
...props
|
|
5001
5038
|
}) => {
|
|
5002
|
-
const cardRefs = (0,
|
|
5003
|
-
const cardInnerRefs = (0,
|
|
5004
|
-
(0,
|
|
5039
|
+
const cardRefs = (0, import_react21.useRef)([]);
|
|
5040
|
+
const cardInnerRefs = (0, import_react21.useRef)([]);
|
|
5041
|
+
(0, import_react21.useEffect)(() => {
|
|
5005
5042
|
if (typeof window === "undefined") return;
|
|
5006
5043
|
let rafId = 0;
|
|
5007
5044
|
const update = () => {
|
|
@@ -5042,7 +5079,7 @@ var StickyMarketCards = ({
|
|
|
5042
5079
|
cancelAnimationFrame(rafId);
|
|
5043
5080
|
};
|
|
5044
5081
|
}, [items.length]);
|
|
5045
|
-
(0,
|
|
5082
|
+
(0, import_react21.useEffect)(() => {
|
|
5046
5083
|
if (typeof window === "undefined") return;
|
|
5047
5084
|
const syncHeights = () => {
|
|
5048
5085
|
const inners = cardInnerRefs.current.filter(Boolean);
|
|
@@ -5143,7 +5180,7 @@ var StickyMarketCards = ({
|
|
|
5143
5180
|
};
|
|
5144
5181
|
|
|
5145
5182
|
// templates/Table/Table.tsx
|
|
5146
|
-
var
|
|
5183
|
+
var import_react22 = require("react");
|
|
5147
5184
|
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
5148
5185
|
var InfoIcon = ({ className }) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", className, children: [
|
|
5149
5186
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "1.5" }),
|
|
@@ -5161,11 +5198,11 @@ var Table = ({
|
|
|
5161
5198
|
className,
|
|
5162
5199
|
...props
|
|
5163
5200
|
}) => {
|
|
5164
|
-
const [search, setSearch] = (0,
|
|
5165
|
-
const [page, setPage] = (0,
|
|
5166
|
-
const [tooltip, setTooltip] = (0,
|
|
5201
|
+
const [search, setSearch] = (0, import_react22.useState)("");
|
|
5202
|
+
const [page, setPage] = (0, import_react22.useState)(1);
|
|
5203
|
+
const [tooltip, setTooltip] = (0, import_react22.useState)({ visible: false, heading: "", description: "", x: 0, y: 0, arrowOffset: 0 });
|
|
5167
5204
|
const mainKey = mainColumnKey ?? columns.find((c) => c.width === "main")?.key ?? columns[0]?.key;
|
|
5168
|
-
const filtered = (0,
|
|
5205
|
+
const filtered = (0, import_react22.useMemo)(() => {
|
|
5169
5206
|
const q = search.trim().toLowerCase();
|
|
5170
5207
|
if (!q) return rows;
|
|
5171
5208
|
return rows.filter(
|
|
@@ -5394,7 +5431,7 @@ var DynamicTable = ({
|
|
|
5394
5431
|
};
|
|
5395
5432
|
|
|
5396
5433
|
// templates/Leaders/Leaders.tsx
|
|
5397
|
-
var
|
|
5434
|
+
var import_react23 = require("react");
|
|
5398
5435
|
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
5399
5436
|
var ChevronDownIcon4 = () => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("path", { d: "M4 6L8 10L12 6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
5400
5437
|
var ChevronUpIcon = () => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("path", { d: "M12 10L8 6L4 10", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) });
|
|
@@ -5436,7 +5473,7 @@ var AvatarGrid = ({
|
|
|
5436
5473
|
className,
|
|
5437
5474
|
...props
|
|
5438
5475
|
}) => {
|
|
5439
|
-
const [isExpanded, setIsExpanded] = (0,
|
|
5476
|
+
const [isExpanded, setIsExpanded] = (0, import_react23.useState)(false);
|
|
5440
5477
|
const hasMore = items.length > initialVisibleCount;
|
|
5441
5478
|
const visibleItems = items.slice(0, initialVisibleCount);
|
|
5442
5479
|
const extraItems = items.slice(initialVisibleCount);
|
|
@@ -5612,7 +5649,7 @@ var ImageBanner = ({
|
|
|
5612
5649
|
};
|
|
5613
5650
|
|
|
5614
5651
|
// templates/Testimonial/Testimonial.tsx
|
|
5615
|
-
var
|
|
5652
|
+
var import_react24 = require("react");
|
|
5616
5653
|
|
|
5617
5654
|
// assets/quote-left.webp
|
|
5618
5655
|
var quote_left_default = "data:image/webp;base64,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";
|
|
@@ -5626,7 +5663,7 @@ var trustpilot_rating_badge_default = "data:image/png;base64,iVBORw0KGgoAAAANSUh
|
|
|
5626
5663
|
// templates/Testimonial/Testimonial.tsx
|
|
5627
5664
|
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
5628
5665
|
var StarCell = ({ fill }) => {
|
|
5629
|
-
const clipId = (0,
|
|
5666
|
+
const clipId = (0, import_react24.useId)();
|
|
5630
5667
|
const clamped = Math.max(0, Math.min(1, fill));
|
|
5631
5668
|
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
5632
5669
|
"svg",
|
|
@@ -5690,15 +5727,15 @@ var TrustpilotTestimonial = ({
|
|
|
5690
5727
|
trustpilotScore = 4.5,
|
|
5691
5728
|
...props
|
|
5692
5729
|
}) => {
|
|
5693
|
-
const trackRef = (0,
|
|
5694
|
-
const [canPrev, setCanPrev] = (0,
|
|
5695
|
-
const [canNext, setCanNext] = (0,
|
|
5696
|
-
const syncScrollState = (0,
|
|
5730
|
+
const trackRef = (0, import_react24.useRef)(null);
|
|
5731
|
+
const [canPrev, setCanPrev] = (0, import_react24.useState)(false);
|
|
5732
|
+
const [canNext, setCanNext] = (0, import_react24.useState)(true);
|
|
5733
|
+
const syncScrollState = (0, import_react24.useCallback)(() => {
|
|
5697
5734
|
const next = readScrollState(trackRef.current);
|
|
5698
5735
|
setCanPrev(next.canPrev);
|
|
5699
5736
|
setCanNext(next.canNext);
|
|
5700
5737
|
}, []);
|
|
5701
|
-
(0,
|
|
5738
|
+
(0, import_react24.useEffect)(() => {
|
|
5702
5739
|
const el = trackRef.current;
|
|
5703
5740
|
if (!el) return;
|
|
5704
5741
|
syncScrollState();
|
|
@@ -5802,16 +5839,16 @@ var DefaultTestimonial = ({
|
|
|
5802
5839
|
className,
|
|
5803
5840
|
...props
|
|
5804
5841
|
}) => {
|
|
5805
|
-
const [activeIndex, setActiveIndex] = (0,
|
|
5806
|
-
const [phase, setPhase] = (0,
|
|
5807
|
-
const pendingIndex = (0,
|
|
5808
|
-
const autoRef = (0,
|
|
5842
|
+
const [activeIndex, setActiveIndex] = (0, import_react24.useState)(0);
|
|
5843
|
+
const [phase, setPhase] = (0, import_react24.useState)("idle");
|
|
5844
|
+
const pendingIndex = (0, import_react24.useRef)(null);
|
|
5845
|
+
const autoRef = (0, import_react24.useRef)(null);
|
|
5809
5846
|
const goTo = (next) => {
|
|
5810
5847
|
if (next === activeIndex || phase !== "idle") return;
|
|
5811
5848
|
pendingIndex.current = next;
|
|
5812
5849
|
setPhase("exiting");
|
|
5813
5850
|
};
|
|
5814
|
-
(0,
|
|
5851
|
+
(0, import_react24.useEffect)(() => {
|
|
5815
5852
|
if (phase === "exiting") {
|
|
5816
5853
|
const t = setTimeout(() => {
|
|
5817
5854
|
setActiveIndex(pendingIndex.current ?? activeIndex);
|
|
@@ -5820,7 +5857,7 @@ var DefaultTestimonial = ({
|
|
|
5820
5857
|
return () => clearTimeout(t);
|
|
5821
5858
|
}
|
|
5822
5859
|
}, [phase, activeIndex]);
|
|
5823
|
-
(0,
|
|
5860
|
+
(0, import_react24.useEffect)(() => {
|
|
5824
5861
|
if (items.length <= 1) return;
|
|
5825
5862
|
autoRef.current = setTimeout(() => {
|
|
5826
5863
|
const next = (activeIndex + 1) % items.length;
|
|
@@ -6195,7 +6232,7 @@ var ArticleSection = ({
|
|
|
6195
6232
|
};
|
|
6196
6233
|
|
|
6197
6234
|
// templates/CoralBanner/CoralBanner.tsx
|
|
6198
|
-
var
|
|
6235
|
+
var import_react25 = require("react");
|
|
6199
6236
|
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
6200
6237
|
var DEFAULT_SLIDES = [
|
|
6201
6238
|
{
|
|
@@ -6309,10 +6346,10 @@ var CoralBanner = ({
|
|
|
6309
6346
|
const resolvedSlides = slides && slides.length > 0 ? slides : DEFAULT_SLIDES;
|
|
6310
6347
|
const count = resolvedSlides.length;
|
|
6311
6348
|
const isCarousel = variant === "carousel" && count > 1;
|
|
6312
|
-
const [activeIndex, setActiveIndex] = (0,
|
|
6313
|
-
const autoplayTimer = (0,
|
|
6314
|
-
const dragState = (0,
|
|
6315
|
-
const goTo = (0,
|
|
6349
|
+
const [activeIndex, setActiveIndex] = (0, import_react25.useState)(0);
|
|
6350
|
+
const autoplayTimer = (0, import_react25.useRef)(null);
|
|
6351
|
+
const dragState = (0, import_react25.useRef)(null);
|
|
6352
|
+
const goTo = (0, import_react25.useCallback)(
|
|
6316
6353
|
(index) => {
|
|
6317
6354
|
if (count <= 1) return;
|
|
6318
6355
|
const next = infinite ? (index % count + count) % count : Math.max(0, Math.min(index, count - 1));
|
|
@@ -6320,12 +6357,12 @@ var CoralBanner = ({
|
|
|
6320
6357
|
},
|
|
6321
6358
|
[count, infinite]
|
|
6322
6359
|
);
|
|
6323
|
-
const goNext = (0,
|
|
6324
|
-
const goPrev = (0,
|
|
6360
|
+
const goNext = (0, import_react25.useCallback)(() => goTo(activeIndex + 1), [activeIndex, goTo]);
|
|
6361
|
+
const goPrev = (0, import_react25.useCallback)(() => goTo(activeIndex - 1), [activeIndex, goTo]);
|
|
6325
6362
|
const resetAutoplay = () => {
|
|
6326
6363
|
if (autoplayTimer.current) clearTimeout(autoplayTimer.current);
|
|
6327
6364
|
};
|
|
6328
|
-
(0,
|
|
6365
|
+
(0, import_react25.useEffect)(() => {
|
|
6329
6366
|
if (!isCarousel || !autoplay) return;
|
|
6330
6367
|
autoplayTimer.current = setTimeout(() => {
|
|
6331
6368
|
goTo(activeIndex + 1);
|
|
@@ -6600,7 +6637,7 @@ var FeatureBlog = ({
|
|
|
6600
6637
|
};
|
|
6601
6638
|
|
|
6602
6639
|
// templates/FeatureBlogCategories/FeatureBlogCategories.tsx
|
|
6603
|
-
var
|
|
6640
|
+
var import_react26 = require("react");
|
|
6604
6641
|
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
6605
6642
|
var isExternalUrl = (href) => Boolean(href && /^https?:\/\//i.test(href));
|
|
6606
6643
|
var FEATURE_BLOG_CATEGORIES_TEXT_CONTENT = {
|
|
@@ -6664,20 +6701,20 @@ var FeatureBlogCategories = ({
|
|
|
6664
6701
|
className,
|
|
6665
6702
|
...props
|
|
6666
6703
|
}) => {
|
|
6667
|
-
const [search, setSearch] = (0,
|
|
6668
|
-
const [internalActiveId, setInternalActiveId] = (0,
|
|
6704
|
+
const [search, setSearch] = (0, import_react26.useState)("");
|
|
6705
|
+
const [internalActiveId, setInternalActiveId] = (0, import_react26.useState)(defaultActiveCategoryId ?? allCategoryId);
|
|
6669
6706
|
const isControlled = activeCategoryId !== void 0;
|
|
6670
6707
|
const activeId = isControlled ? activeCategoryId : internalActiveId;
|
|
6671
|
-
const tabs = (0,
|
|
6708
|
+
const tabs = (0, import_react26.useMemo)(
|
|
6672
6709
|
() => [{ id: allCategoryId, label: allCategoryLabel }, ...categories],
|
|
6673
6710
|
[allCategoryId, allCategoryLabel, categories]
|
|
6674
6711
|
);
|
|
6675
|
-
const categoryLabelById = (0,
|
|
6712
|
+
const categoryLabelById = (0, import_react26.useMemo)(() => {
|
|
6676
6713
|
const map = /* @__PURE__ */ new Map();
|
|
6677
6714
|
categories.forEach((category) => map.set(category.id, category.label));
|
|
6678
6715
|
return map;
|
|
6679
6716
|
}, [categories]);
|
|
6680
|
-
const filteredPosts = (0,
|
|
6717
|
+
const filteredPosts = (0, import_react26.useMemo)(() => {
|
|
6681
6718
|
const query = search.trim().toLowerCase();
|
|
6682
6719
|
return posts.filter((post) => {
|
|
6683
6720
|
const matchesCategory = activeId === allCategoryId || post.category === activeId;
|
|
@@ -6773,7 +6810,7 @@ var HelpCentreCategories = ({
|
|
|
6773
6810
|
};
|
|
6774
6811
|
|
|
6775
6812
|
// templates/HelpCentreSubCategories/HelpCentreSubCategories.tsx
|
|
6776
|
-
var
|
|
6813
|
+
var import_react27 = require("react");
|
|
6777
6814
|
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
6778
6815
|
var externalLinkRel4 = (href) => href && /^https?:\/\//i.test(href) ? "noopener noreferrer" : void 0;
|
|
6779
6816
|
var QuestionCard = ({ item }) => {
|
|
@@ -6790,8 +6827,8 @@ var HelpCentreSubCategories = ({
|
|
|
6790
6827
|
noResultsText = 'No results found for "{query}"',
|
|
6791
6828
|
onSearchChange
|
|
6792
6829
|
}) => {
|
|
6793
|
-
const [search, setSearch] = (0,
|
|
6794
|
-
const filtered = (0,
|
|
6830
|
+
const [search, setSearch] = (0, import_react27.useState)("");
|
|
6831
|
+
const filtered = (0, import_react27.useMemo)(() => {
|
|
6795
6832
|
const q = search.trim().toLowerCase();
|
|
6796
6833
|
if (!q) return items;
|
|
6797
6834
|
return items.filter((item) => item.question.toLowerCase().includes(q));
|
|
@@ -6822,7 +6859,7 @@ var HelpCentreSubCategories = ({
|
|
|
6822
6859
|
};
|
|
6823
6860
|
|
|
6824
6861
|
// templates/HelpCenterPage/HelpCenterPage.tsx
|
|
6825
|
-
var
|
|
6862
|
+
var import_react28 = require("react");
|
|
6826
6863
|
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
6827
6864
|
var externalLinkRel5 = (href) => href && /^https?:\/\//i.test(href) ? "noopener noreferrer" : void 0;
|
|
6828
6865
|
var ChevronDownIcon5 = () => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("svg", { "aria-hidden": "true", fill: "none", height: "16", viewBox: "0 0 16 16", width: "16", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("path", { d: "M4 6l4 4 4-4", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.5" }) });
|
|
@@ -6888,13 +6925,13 @@ var HelpCenterPage = ({
|
|
|
6888
6925
|
articlesSheetTitle = "Articles in this section",
|
|
6889
6926
|
className
|
|
6890
6927
|
}) => {
|
|
6891
|
-
const [search, setSearch] = (0,
|
|
6892
|
-
const [internalActiveId, setInternalActiveId] = (0,
|
|
6893
|
-
const [sheetOpen, setSheetOpen] = (0,
|
|
6928
|
+
const [search, setSearch] = (0, import_react28.useState)("");
|
|
6929
|
+
const [internalActiveId, setInternalActiveId] = (0, import_react28.useState)(defaultActiveQuestionId ?? questions[0]?.id);
|
|
6930
|
+
const [sheetOpen, setSheetOpen] = (0, import_react28.useState)(false);
|
|
6894
6931
|
const isControlled = activeQuestionId !== void 0;
|
|
6895
6932
|
const activeId = isControlled ? activeQuestionId : internalActiveId;
|
|
6896
6933
|
const activeItem = questions.find((item) => item.id === activeId);
|
|
6897
|
-
const filtered = (0,
|
|
6934
|
+
const filtered = (0, import_react28.useMemo)(() => {
|
|
6898
6935
|
const q = search.trim().toLowerCase();
|
|
6899
6936
|
if (!q) return questions;
|
|
6900
6937
|
return questions.filter((item) => item.question.toLowerCase().includes(q));
|
|
@@ -6957,7 +6994,7 @@ var HelpCenterPage = ({
|
|
|
6957
6994
|
};
|
|
6958
6995
|
|
|
6959
6996
|
// templates/FeatureBlogPage/FeatureBlogPage.tsx
|
|
6960
|
-
var
|
|
6997
|
+
var import_react29 = require("react");
|
|
6961
6998
|
|
|
6962
6999
|
// assets/share-link.png
|
|
6963
7000
|
var share_link_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABYklEQVR4AezVgU3DMBAFUMRAzMEQzMEQzMEQzMFE+FX5kuNGF4cgIVWp8us73/n/76vaPj/98+sycE3gmsBDTuCl/bQELayfv5zAW5P6avgYwEzb2n7OGBiJGYjK9xLoYWhJ75ffGCCUm2bF/N7e4HVZxS28Pc7cgvHtiAG3ITiSZd+tIRrizyXRs4TrZdYAgowyxG4IcqyjMXupOS+/w4wBh3txoojsqUVky0D20uPcCnsGCBByCEnEe2JjVtOj3wpiEKcuXmHPwJZ4SBEhloM8kPdnmUxttVYGeoLcfHV4SJiBUbw8WxkI/+ieSGo+CoL29IkPGa8MIIvQuBKz1xvQf0gcQWXArfQgtvZgoK8zAnrUyrFrCmYMIAZnmBEDEWAECAd6p1AZ6MkI+hU0YjEQIMwE9P1qU6gMIAgpITlkT3waewYIEHRDfzIgB7XTmDFwWqQiuAxcE3j8CVTfALUfAAAA//85/ClxAAAABklEQVQDABFpTkF24Li2AAAAAElFTkSuQmCC";
|
|
@@ -7014,7 +7051,7 @@ var TocCard = ({
|
|
|
7014
7051
|
idSuffix,
|
|
7015
7052
|
collapsible
|
|
7016
7053
|
}) => {
|
|
7017
|
-
const [open, setOpen] = (0,
|
|
7054
|
+
const [open, setOpen] = (0, import_react29.useState)(defaultOpen);
|
|
7018
7055
|
const panelId = `fbp-toc-panel-${idSuffix}`;
|
|
7019
7056
|
const isOpen = collapsible ? open : true;
|
|
7020
7057
|
const list = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("ol", { className: "fbp-tocList", id: panelId, children: headings.map((heading) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("li", { className: "fbp-tocItem", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
@@ -7056,7 +7093,7 @@ var ShareRow = ({
|
|
|
7056
7093
|
onShare,
|
|
7057
7094
|
copiedLabel
|
|
7058
7095
|
}) => {
|
|
7059
|
-
const [copied, setCopied] = (0,
|
|
7096
|
+
const [copied, setCopied] = (0, import_react29.useState)(false);
|
|
7060
7097
|
const handleCopy = async () => {
|
|
7061
7098
|
onShare?.("copy");
|
|
7062
7099
|
try {
|
|
@@ -7148,7 +7185,7 @@ var FeatureBlogPage = ({
|
|
|
7148
7185
|
copiedLabel = "Copied!",
|
|
7149
7186
|
className
|
|
7150
7187
|
}) => {
|
|
7151
|
-
const headingIds = (0,
|
|
7188
|
+
const headingIds = (0, import_react29.useMemo)(() => {
|
|
7152
7189
|
const seen = /* @__PURE__ */ new Map();
|
|
7153
7190
|
const ids = /* @__PURE__ */ new Map();
|
|
7154
7191
|
content.forEach((block, i) => {
|
|
@@ -7160,14 +7197,14 @@ var FeatureBlogPage = ({
|
|
|
7160
7197
|
});
|
|
7161
7198
|
return ids;
|
|
7162
7199
|
}, [content]);
|
|
7163
|
-
const headings = (0,
|
|
7200
|
+
const headings = (0, import_react29.useMemo)(
|
|
7164
7201
|
() => content.map((block, i) => ({ block, i })).filter(
|
|
7165
7202
|
({ block }) => block.type === "steps" || block.type === "heading" && (block.level ?? 2) === 2
|
|
7166
7203
|
).map(({ block, i }) => ({ id: headingIds.get(i), text: block.text ?? "" })),
|
|
7167
7204
|
[content, headingIds]
|
|
7168
7205
|
);
|
|
7169
|
-
const [activeId, setActiveId] = (0,
|
|
7170
|
-
(0,
|
|
7206
|
+
const [activeId, setActiveId] = (0, import_react29.useState)(null);
|
|
7207
|
+
(0, import_react29.useEffect)(() => {
|
|
7171
7208
|
if (typeof IntersectionObserver === "undefined" || headings.length === 0) return;
|
|
7172
7209
|
const elements = headings.map((heading) => document.getElementById(heading.id)).filter((el) => el !== null);
|
|
7173
7210
|
if (elements.length === 0) return;
|
|
@@ -7272,7 +7309,7 @@ var FeatureBlogPage = ({
|
|
|
7272
7309
|
};
|
|
7273
7310
|
|
|
7274
7311
|
// templates/ParallaxBanner/ParallaxBanner.tsx
|
|
7275
|
-
var
|
|
7312
|
+
var import_react30 = require("react");
|
|
7276
7313
|
var import_framer_motion5 = require("framer-motion");
|
|
7277
7314
|
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
7278
7315
|
var PARALLAX_BANNER_TEXT_CONTENT = {
|
|
@@ -7315,7 +7352,7 @@ var ParallaxBanner = ({
|
|
|
7315
7352
|
className,
|
|
7316
7353
|
...props
|
|
7317
7354
|
}) => {
|
|
7318
|
-
const sectionRef = (0,
|
|
7355
|
+
const sectionRef = (0, import_react30.useRef)(null);
|
|
7319
7356
|
const prefersReducedMotion = (0, import_framer_motion5.useReducedMotion)();
|
|
7320
7357
|
const parallaxActive = enableParallax && !prefersReducedMotion;
|
|
7321
7358
|
const showCards = variant !== "banner-only" && cards.length > 0;
|
|
@@ -7381,7 +7418,7 @@ var ParallaxBanner = ({
|
|
|
7381
7418
|
};
|
|
7382
7419
|
|
|
7383
7420
|
// templates/TradingCalculator/TradingCalculator.tsx
|
|
7384
|
-
var
|
|
7421
|
+
var import_react31 = require("react");
|
|
7385
7422
|
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
7386
7423
|
var DEFAULT_SYMBOLS_ENDPOINT = "https://deriv-static-pricingfeedv2.firebaseio.com/n8n/row/prod/dynamic_trading_specs.json";
|
|
7387
7424
|
var DEFAULT_EXCHANGE_RATE_WS_URL = "wss://ws.derivws.com/websockets/v3?app_id=1089";
|
|
@@ -7418,13 +7455,13 @@ function computeResults(symbol, volumeInLots, assetPrice, rates) {
|
|
|
7418
7455
|
return { marginRequired, tradeVolume, pipValue, swapChargeLong, swapChargeShort };
|
|
7419
7456
|
}
|
|
7420
7457
|
function useExchangeRates(wsUrl) {
|
|
7421
|
-
const socketRef = (0,
|
|
7422
|
-
const reqIdRef = (0,
|
|
7423
|
-
const pendingRef = (0,
|
|
7458
|
+
const socketRef = (0, import_react31.useRef)(null);
|
|
7459
|
+
const reqIdRef = (0, import_react31.useRef)(1);
|
|
7460
|
+
const pendingRef = (0, import_react31.useRef)(
|
|
7424
7461
|
/* @__PURE__ */ new Map()
|
|
7425
7462
|
);
|
|
7426
|
-
const cacheRef = (0,
|
|
7427
|
-
(0,
|
|
7463
|
+
const cacheRef = (0, import_react31.useRef)(/* @__PURE__ */ new Map());
|
|
7464
|
+
(0, import_react31.useEffect)(() => {
|
|
7428
7465
|
const pending = pendingRef.current;
|
|
7429
7466
|
return () => {
|
|
7430
7467
|
socketRef.current?.close();
|
|
@@ -7433,7 +7470,7 @@ function useExchangeRates(wsUrl) {
|
|
|
7433
7470
|
pending.clear();
|
|
7434
7471
|
};
|
|
7435
7472
|
}, [wsUrl]);
|
|
7436
|
-
const getRates = (0,
|
|
7473
|
+
const getRates = (0, import_react31.useCallback)(
|
|
7437
7474
|
(baseCurrency) => {
|
|
7438
7475
|
if (!wsUrl) return Promise.reject(new Error("Live exchange rate conversion is disabled"));
|
|
7439
7476
|
const cached = cacheRef.current.get(baseCurrency);
|
|
@@ -7495,11 +7532,11 @@ function useExchangeRates(wsUrl) {
|
|
|
7495
7532
|
return getRates;
|
|
7496
7533
|
}
|
|
7497
7534
|
function useSymbols(symbolsProp, endpoint) {
|
|
7498
|
-
const [state, setState] = (0,
|
|
7535
|
+
const [state, setState] = (0, import_react31.useState)(
|
|
7499
7536
|
symbolsProp ? { status: "ready", data: symbolsProp } : { status: "loading" }
|
|
7500
7537
|
);
|
|
7501
|
-
const [retryToken, setRetryToken] = (0,
|
|
7502
|
-
(0,
|
|
7538
|
+
const [retryToken, setRetryToken] = (0, import_react31.useState)(0);
|
|
7539
|
+
(0, import_react31.useEffect)(() => {
|
|
7503
7540
|
if (symbolsProp) {
|
|
7504
7541
|
setState({ status: "ready", data: symbolsProp });
|
|
7505
7542
|
return;
|
|
@@ -7521,7 +7558,7 @@ function useSymbols(symbolsProp, endpoint) {
|
|
|
7521
7558
|
cancelled = true;
|
|
7522
7559
|
};
|
|
7523
7560
|
}, [symbolsProp, endpoint, retryToken]);
|
|
7524
|
-
const retry = (0,
|
|
7561
|
+
const retry = (0, import_react31.useCallback)(() => setRetryToken((n) => n + 1), []);
|
|
7525
7562
|
return [state, retry];
|
|
7526
7563
|
}
|
|
7527
7564
|
var ErrorIcon = () => /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
|
|
@@ -7543,24 +7580,24 @@ function groupByAssetClass(symbols) {
|
|
|
7543
7580
|
return [...groups.entries()];
|
|
7544
7581
|
}
|
|
7545
7582
|
var SymbolCombobox = ({ symbolsState, onRetry, selected, onSelect, error, inputId }) => {
|
|
7546
|
-
const [query, setQuery] = (0,
|
|
7547
|
-
const [isOpen, setIsOpen] = (0,
|
|
7548
|
-
const [activeIndex, setActiveIndex] = (0,
|
|
7549
|
-
const wrapperRef = (0,
|
|
7550
|
-
const listboxId = (0,
|
|
7583
|
+
const [query, setQuery] = (0, import_react31.useState)("");
|
|
7584
|
+
const [isOpen, setIsOpen] = (0, import_react31.useState)(false);
|
|
7585
|
+
const [activeIndex, setActiveIndex] = (0, import_react31.useState)(-1);
|
|
7586
|
+
const wrapperRef = (0, import_react31.useRef)(null);
|
|
7587
|
+
const listboxId = (0, import_react31.useId)();
|
|
7551
7588
|
const isLoading = symbolsState.status === "loading";
|
|
7552
7589
|
const isError = symbolsState.status === "error";
|
|
7553
7590
|
const allSymbols = symbolsState.status === "ready" ? symbolsState.data : [];
|
|
7554
|
-
const filtered = (0,
|
|
7591
|
+
const filtered = (0, import_react31.useMemo)(() => {
|
|
7555
7592
|
const term = query.trim().toLowerCase();
|
|
7556
7593
|
if (!term) return allSymbols;
|
|
7557
7594
|
return allSymbols.filter(
|
|
7558
7595
|
(item) => item.symbol.toLowerCase().includes(term) || item.description.toLowerCase().includes(term) || item.asset_class.toLowerCase().includes(term)
|
|
7559
7596
|
);
|
|
7560
7597
|
}, [allSymbols, query]);
|
|
7561
|
-
const grouped = (0,
|
|
7562
|
-
const flatOptions = (0,
|
|
7563
|
-
(0,
|
|
7598
|
+
const grouped = (0, import_react31.useMemo)(() => groupByAssetClass(filtered), [filtered]);
|
|
7599
|
+
const flatOptions = (0, import_react31.useMemo)(() => grouped.flatMap(([, items]) => items), [grouped]);
|
|
7600
|
+
(0, import_react31.useEffect)(() => {
|
|
7564
7601
|
if (!isOpen) return;
|
|
7565
7602
|
const handlePointerDown = (event) => {
|
|
7566
7603
|
if (wrapperRef.current && !wrapperRef.current.contains(event.target)) {
|
|
@@ -7702,15 +7739,15 @@ var TradingCalculator = ({
|
|
|
7702
7739
|
const showTradeVolume = variant === "main";
|
|
7703
7740
|
const [symbolsState, retrySymbols] = useSymbols(symbolsProp, symbolsEndpoint);
|
|
7704
7741
|
const getRates = useExchangeRates(exchangeRateWsUrl);
|
|
7705
|
-
const [selectedSymbol, setSelectedSymbol] = (0,
|
|
7706
|
-
const [volumeInLots, setVolumeInLots] = (0,
|
|
7707
|
-
const [assetPrice, setAssetPrice] = (0,
|
|
7708
|
-
const [errors, setErrors] = (0,
|
|
7709
|
-
const [results, setResults] = (0,
|
|
7710
|
-
const [isCalculating, setIsCalculating] = (0,
|
|
7711
|
-
const [calcError, setCalcError] = (0,
|
|
7712
|
-
const didPreselect = (0,
|
|
7713
|
-
(0,
|
|
7742
|
+
const [selectedSymbol, setSelectedSymbol] = (0, import_react31.useState)(null);
|
|
7743
|
+
const [volumeInLots, setVolumeInLots] = (0, import_react31.useState)("");
|
|
7744
|
+
const [assetPrice, setAssetPrice] = (0, import_react31.useState)("");
|
|
7745
|
+
const [errors, setErrors] = (0, import_react31.useState)({});
|
|
7746
|
+
const [results, setResults] = (0, import_react31.useState)(null);
|
|
7747
|
+
const [isCalculating, setIsCalculating] = (0, import_react31.useState)(false);
|
|
7748
|
+
const [calcError, setCalcError] = (0, import_react31.useState)(null);
|
|
7749
|
+
const didPreselect = (0, import_react31.useRef)(false);
|
|
7750
|
+
(0, import_react31.useEffect)(() => {
|
|
7714
7751
|
if (didPreselect.current || !defaultSymbol || symbolsState.status !== "ready") return;
|
|
7715
7752
|
const match = symbolsState.data.find((item) => item.symbol === defaultSymbol);
|
|
7716
7753
|
if (match) {
|
|
@@ -7764,9 +7801,9 @@ var TradingCalculator = ({
|
|
|
7764
7801
|
setIsCalculating(false);
|
|
7765
7802
|
}
|
|
7766
7803
|
};
|
|
7767
|
-
const symbolInputId = (0,
|
|
7768
|
-
const volumeInputId = (0,
|
|
7769
|
-
const priceInputId = (0,
|
|
7804
|
+
const symbolInputId = (0, import_react31.useId)();
|
|
7805
|
+
const volumeInputId = (0, import_react31.useId)();
|
|
7806
|
+
const priceInputId = (0, import_react31.useId)();
|
|
7770
7807
|
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("section", { className: ["tcalc-section", className ?? ""].filter(Boolean).join(" "), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "tcalc-container", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "tcalc-card", children: [
|
|
7771
7808
|
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "tcalc-column", children: [
|
|
7772
7809
|
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("h3", { className: "tcalc-panelTitle", children: "Calculator" }),
|
|
@@ -7914,7 +7951,7 @@ var TradingCalculator = ({
|
|
|
7914
7951
|
};
|
|
7915
7952
|
|
|
7916
7953
|
// templates/TradingCalculatorHowTo/TradingCalculatorHowTo.tsx
|
|
7917
|
-
var
|
|
7954
|
+
var import_react32 = require("react");
|
|
7918
7955
|
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
7919
7956
|
var MARGIN_CONTENT = {
|
|
7920
7957
|
title: "How to calculate margin requirements",
|
|
@@ -8065,7 +8102,7 @@ var SWAP_TABS = [
|
|
|
8065
8102
|
{ id: "percentage", label: "Swap calculation (In percentage)" }
|
|
8066
8103
|
];
|
|
8067
8104
|
var swapModeForVariant = (variant) => variant === "swap-percentage" ? "percentage" : "points";
|
|
8068
|
-
var useIsomorphicLayoutEffect = typeof window !== "undefined" ?
|
|
8105
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react32.useLayoutEffect : import_react32.useEffect;
|
|
8069
8106
|
var FormulaBlockView = ({ block }) => {
|
|
8070
8107
|
if (block.type === "footnote") {
|
|
8071
8108
|
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "tchow-footnote", children: block.content });
|
|
@@ -8087,9 +8124,9 @@ var ConnectorArrow = () => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("svg",
|
|
|
8087
8124
|
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("path", { d: "M1.4 5.6L4 8.6L6.6 5.6", stroke: "currentColor", strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
8088
8125
|
] });
|
|
8089
8126
|
var CalculationStrip = ({ tokens }) => {
|
|
8090
|
-
const wrapperRef = (0,
|
|
8091
|
-
const stripRef = (0,
|
|
8092
|
-
const [fit, setFit] = (0,
|
|
8127
|
+
const wrapperRef = (0, import_react32.useRef)(null);
|
|
8128
|
+
const stripRef = (0, import_react32.useRef)(null);
|
|
8129
|
+
const [fit, setFit] = (0, import_react32.useState)({ scale: 1, naturalHeight: 0 });
|
|
8093
8130
|
useIsomorphicLayoutEffect(() => {
|
|
8094
8131
|
const wrapper = wrapperRef.current;
|
|
8095
8132
|
const strip = stripRef.current;
|
|
@@ -8126,7 +8163,7 @@ var CalculationStrip = ({ tokens }) => {
|
|
|
8126
8163
|
style: isShrunk ? { transform: `scale(${fit.scale})` } : void 0,
|
|
8127
8164
|
role: "img",
|
|
8128
8165
|
"aria-label": tokens.map((token) => token.text).join(" "),
|
|
8129
|
-
children: tokens.map((token, i) => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
8166
|
+
children: tokens.map((token, i) => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react32.Fragment, { children: [
|
|
8130
8167
|
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
8131
8168
|
"span",
|
|
8132
8169
|
{
|
|
@@ -8171,8 +8208,8 @@ var TradingCalculatorHowTo = ({
|
|
|
8171
8208
|
...props
|
|
8172
8209
|
}) => {
|
|
8173
8210
|
const isSwap = variant === "swap-points" || variant === "swap-percentage";
|
|
8174
|
-
const [swapTab, setSwapTab] = (0,
|
|
8175
|
-
(0,
|
|
8211
|
+
const [swapTab, setSwapTab] = (0, import_react32.useState)(() => swapModeForVariant(variant));
|
|
8212
|
+
(0, import_react32.useEffect)(() => {
|
|
8176
8213
|
setSwapTab(swapModeForVariant(variant));
|
|
8177
8214
|
}, [variant]);
|
|
8178
8215
|
const content = variant === "pip" ? PIP_CONTENT : isSwap ? swapTab === "percentage" ? SWAP_PERCENTAGE_CONTENT : SWAP_POINTS_CONTENT : MARGIN_CONTENT;
|
|
@@ -8210,7 +8247,7 @@ var TradingCalculatorHowTo = ({
|
|
|
8210
8247
|
};
|
|
8211
8248
|
|
|
8212
8249
|
// templates/FeatureOffices/FeatureOffices.tsx
|
|
8213
|
-
var
|
|
8250
|
+
var import_react33 = require("react");
|
|
8214
8251
|
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
8215
8252
|
var isExternalUrl2 = (href) => Boolean(href && /^https?:\/\//i.test(href));
|
|
8216
8253
|
var FEATURE_OFFICES_TEXT_CONTENT = {
|
|
@@ -8264,12 +8301,12 @@ var FeatureOffices = ({
|
|
|
8264
8301
|
className,
|
|
8265
8302
|
...props
|
|
8266
8303
|
}) => {
|
|
8267
|
-
const [internalActiveId, setInternalActiveId] = (0,
|
|
8304
|
+
const [internalActiveId, setInternalActiveId] = (0, import_react33.useState)(
|
|
8268
8305
|
defaultActiveRegionId ?? regions[0]?.id
|
|
8269
8306
|
);
|
|
8270
8307
|
const isControlled = activeRegionId !== void 0;
|
|
8271
8308
|
const activeId = isControlled ? activeRegionId : internalActiveId;
|
|
8272
|
-
const filteredOffices = (0,
|
|
8309
|
+
const filteredOffices = (0, import_react33.useMemo)(
|
|
8273
8310
|
() => offices.filter((office) => office.region === activeId),
|
|
8274
8311
|
[offices, activeId]
|
|
8275
8312
|
);
|
|
@@ -8525,10 +8562,1310 @@ var ResourceBanner = ({
|
|
|
8525
8562
|
}) })
|
|
8526
8563
|
] }) }) }) });
|
|
8527
8564
|
};
|
|
8565
|
+
|
|
8566
|
+
// templates/OptionsTypes/OptionsTypes.tsx
|
|
8567
|
+
var import_react34 = require("react");
|
|
8568
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
8569
|
+
var OPTIONS_TYPES_PLACEHOLDER_ITEMS = [
|
|
8570
|
+
{
|
|
8571
|
+
id: "option-type",
|
|
8572
|
+
title: "Option type",
|
|
8573
|
+
description: "Explain how this option type works and when a customer might use it.",
|
|
8574
|
+
animations: [],
|
|
8575
|
+
markets: [{ label: "Market" }],
|
|
8576
|
+
platforms: [{ label: "Platform" }]
|
|
8577
|
+
}
|
|
8578
|
+
];
|
|
8579
|
+
function safeHref(value) {
|
|
8580
|
+
if (!value) return null;
|
|
8581
|
+
if (value.startsWith("/") && !value.startsWith("//")) return value;
|
|
8582
|
+
try {
|
|
8583
|
+
const url = new URL(value);
|
|
8584
|
+
return url.protocol === "https:" ? value : null;
|
|
8585
|
+
} catch {
|
|
8586
|
+
return null;
|
|
8587
|
+
}
|
|
8588
|
+
}
|
|
8589
|
+
function safeLottieSrc(value) {
|
|
8590
|
+
const href = safeHref(value);
|
|
8591
|
+
if (!href) return null;
|
|
8592
|
+
try {
|
|
8593
|
+
const pathname = href.startsWith("/") ? href : new URL(href).pathname;
|
|
8594
|
+
return pathname.toLowerCase().endsWith(".lottie") ? href : null;
|
|
8595
|
+
} catch {
|
|
8596
|
+
return null;
|
|
8597
|
+
}
|
|
8598
|
+
}
|
|
8599
|
+
var iconPaths = {
|
|
8600
|
+
forex: [
|
|
8601
|
+
"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",
|
|
8602
|
+
"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"
|
|
8603
|
+
],
|
|
8604
|
+
"stock-indices": [
|
|
8605
|
+
"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",
|
|
8606
|
+
"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",
|
|
8607
|
+
"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",
|
|
8608
|
+
"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"
|
|
8609
|
+
],
|
|
8610
|
+
commodities: [
|
|
8611
|
+
"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"
|
|
8612
|
+
],
|
|
8613
|
+
"derived-indices": [
|
|
8614
|
+
"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"
|
|
8615
|
+
],
|
|
8616
|
+
cryptocurrencies: [
|
|
8617
|
+
"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",
|
|
8618
|
+
"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"
|
|
8619
|
+
]
|
|
8620
|
+
};
|
|
8621
|
+
function MetaIcon({ icon, iconUrl }) {
|
|
8622
|
+
const imageSrc = safeHref(iconUrl);
|
|
8623
|
+
if (imageSrc) {
|
|
8624
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8625
|
+
"img",
|
|
8626
|
+
{
|
|
8627
|
+
className: "ot__meta-image",
|
|
8628
|
+
src: imageSrc,
|
|
8629
|
+
alt: "",
|
|
8630
|
+
"aria-hidden": "true",
|
|
8631
|
+
loading: "lazy",
|
|
8632
|
+
decoding: "async"
|
|
8633
|
+
}
|
|
8634
|
+
);
|
|
8635
|
+
}
|
|
8636
|
+
if (!icon) return null;
|
|
8637
|
+
const paths = iconPaths[icon];
|
|
8638
|
+
if (!paths) {
|
|
8639
|
+
const initials = icon === "deriv-trader" ? "DT" : icon === "deriv-bot" ? "DB" : "ST";
|
|
8640
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "ot__platform-icon", "aria-hidden": "true", children: initials });
|
|
8641
|
+
}
|
|
8642
|
+
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)) });
|
|
8643
|
+
}
|
|
8644
|
+
function MetaList({ items = [] }) {
|
|
8645
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("ul", { className: "ot__meta-list", children: items.map((item, index) => {
|
|
8646
|
+
const href = safeHref(item.href);
|
|
8647
|
+
const content = /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
|
|
8648
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(MetaIcon, { icon: item.icon, iconUrl: item.iconUrl }),
|
|
8649
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { children: item.label })
|
|
8650
|
+
] });
|
|
8651
|
+
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}`);
|
|
8652
|
+
}) });
|
|
8653
|
+
}
|
|
8654
|
+
function PlaybackGlyph({ playing }) {
|
|
8655
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("svg", { className: "ot__control-icon", viewBox: "0 0 64 64", "aria-hidden": "true", children: [
|
|
8656
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("circle", { className: "ot__control-disc", cx: "32", cy: "32", r: "32" }),
|
|
8657
|
+
playing ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
|
|
8658
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("rect", { className: "ot__control-glyph", x: "23", y: "21", width: "6", height: "22", rx: "2" }),
|
|
8659
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("rect", { className: "ot__control-glyph", x: "35", y: "21", width: "6", height: "22", rx: "2" })
|
|
8660
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8661
|
+
"path",
|
|
8662
|
+
{
|
|
8663
|
+
className: "ot__control-glyph",
|
|
8664
|
+
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"
|
|
8665
|
+
}
|
|
8666
|
+
)
|
|
8667
|
+
] });
|
|
8668
|
+
}
|
|
8669
|
+
function AnimationCard({
|
|
8670
|
+
animation,
|
|
8671
|
+
itemId,
|
|
8672
|
+
playing,
|
|
8673
|
+
onToggle
|
|
8674
|
+
}) {
|
|
8675
|
+
const src = safeLottieSrc(animation.src);
|
|
8676
|
+
const posterSrc = safeHref(animation.posterUrl);
|
|
8677
|
+
const controlId = `ot-animation-${itemId}-${animation.id ?? animation.label}`.replace(/[^a-zA-Z0-9_-]/g, "-");
|
|
8678
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__animation-card", children: [
|
|
8679
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { id: controlId, className: "ot__animation-media", "aria-hidden": "true", children: src ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8680
|
+
DotLottieInView,
|
|
8681
|
+
{
|
|
8682
|
+
src,
|
|
8683
|
+
enabled: playing,
|
|
8684
|
+
loop: true,
|
|
8685
|
+
poster: posterSrc ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("img", { src: posterSrc, alt: "", loading: "lazy", decoding: "async" }) : void 0
|
|
8686
|
+
}
|
|
8687
|
+
) : null }),
|
|
8688
|
+
posterSrc && !playing ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8689
|
+
"img",
|
|
8690
|
+
{
|
|
8691
|
+
className: "ot__animation-poster",
|
|
8692
|
+
src: posterSrc,
|
|
8693
|
+
alt: "",
|
|
8694
|
+
"aria-hidden": "true",
|
|
8695
|
+
loading: "lazy",
|
|
8696
|
+
decoding: "async"
|
|
8697
|
+
}
|
|
8698
|
+
) : null,
|
|
8699
|
+
src ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8700
|
+
"button",
|
|
8701
|
+
{
|
|
8702
|
+
type: "button",
|
|
8703
|
+
className: `ot__playback-toggle${playing ? " ot__playback-toggle--playing" : ""}`,
|
|
8704
|
+
"aria-controls": controlId,
|
|
8705
|
+
"aria-pressed": playing,
|
|
8706
|
+
"aria-label": `${playing ? "Pause" : "Play"} ${animation.label} animation`,
|
|
8707
|
+
onClick: onToggle,
|
|
8708
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(PlaybackGlyph, { playing })
|
|
8709
|
+
}
|
|
8710
|
+
) : null
|
|
8711
|
+
] });
|
|
8712
|
+
}
|
|
8713
|
+
function OptionPanel({
|
|
8714
|
+
item,
|
|
8715
|
+
variant,
|
|
8716
|
+
marketsLabel,
|
|
8717
|
+
platformsLabel,
|
|
8718
|
+
playing,
|
|
8719
|
+
setPlaying
|
|
8720
|
+
}) {
|
|
8721
|
+
const description = /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "ot__description", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { children: item.description }) });
|
|
8722
|
+
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) => {
|
|
8723
|
+
const key = `${item.id}-${animation.id ?? index}`;
|
|
8724
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8725
|
+
AnimationCard,
|
|
8726
|
+
{
|
|
8727
|
+
animation,
|
|
8728
|
+
itemId: item.id,
|
|
8729
|
+
playing: Boolean(playing[key]),
|
|
8730
|
+
onToggle: () => setPlaying((current) => ({
|
|
8731
|
+
...current,
|
|
8732
|
+
[key]: !current[key]
|
|
8733
|
+
}))
|
|
8734
|
+
},
|
|
8735
|
+
key
|
|
8736
|
+
);
|
|
8737
|
+
}) });
|
|
8738
|
+
const metadata = /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__metadata", children: [
|
|
8739
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__meta-group", children: [
|
|
8740
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h4", { children: marketsLabel }),
|
|
8741
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(MetaList, { items: item.markets })
|
|
8742
|
+
] }),
|
|
8743
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__meta-group", children: [
|
|
8744
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h4", { children: platformsLabel }),
|
|
8745
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(MetaList, { items: item.platforms })
|
|
8746
|
+
] })
|
|
8747
|
+
] });
|
|
8748
|
+
const layout = variant === "single" && item.animations.length === 1 ? "split" : "stacked";
|
|
8749
|
+
const optionClass = `ot__option ot__option--${variant} ot__option--${layout}`;
|
|
8750
|
+
if (layout === "split") {
|
|
8751
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: optionClass, children: [
|
|
8752
|
+
animations,
|
|
8753
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__option-side", children: [
|
|
8754
|
+
description,
|
|
8755
|
+
metadata
|
|
8756
|
+
] })
|
|
8757
|
+
] });
|
|
8758
|
+
}
|
|
8759
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: optionClass, children: [
|
|
8760
|
+
description,
|
|
8761
|
+
animations,
|
|
8762
|
+
metadata
|
|
8763
|
+
] });
|
|
8764
|
+
}
|
|
8765
|
+
function TogglePanel({
|
|
8766
|
+
item,
|
|
8767
|
+
idPrefix,
|
|
8768
|
+
marketsLabel,
|
|
8769
|
+
platformsLabel,
|
|
8770
|
+
playing,
|
|
8771
|
+
setPlaying
|
|
8772
|
+
}) {
|
|
8773
|
+
const animations = item.animations;
|
|
8774
|
+
const [activeIndex, setActiveIndex] = (0, import_react34.useState)(0);
|
|
8775
|
+
const switchRefs = (0, import_react34.useRef)([]);
|
|
8776
|
+
const safeIndex = Math.min(activeIndex, Math.max(animations.length - 1, 0));
|
|
8777
|
+
(0, import_react34.useEffect)(() => {
|
|
8778
|
+
setPlaying({});
|
|
8779
|
+
}, [safeIndex, setPlaying]);
|
|
8780
|
+
const hasMarkets = Boolean(item.markets && item.markets.length > 0);
|
|
8781
|
+
const hasPlatforms = Boolean(item.platforms && item.platforms.length > 0);
|
|
8782
|
+
const onSwitchKeyDown = (event) => {
|
|
8783
|
+
const last = animations.length - 1;
|
|
8784
|
+
let next = null;
|
|
8785
|
+
if (event.key === "ArrowRight" || event.key === "ArrowDown") {
|
|
8786
|
+
next = safeIndex === last ? 0 : safeIndex + 1;
|
|
8787
|
+
} else if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
|
|
8788
|
+
next = safeIndex === 0 ? last : safeIndex - 1;
|
|
8789
|
+
} else if (event.key === "Home") {
|
|
8790
|
+
next = 0;
|
|
8791
|
+
} else if (event.key === "End") {
|
|
8792
|
+
next = last;
|
|
8793
|
+
}
|
|
8794
|
+
if (next === null) return;
|
|
8795
|
+
event.preventDefault();
|
|
8796
|
+
setActiveIndex(next);
|
|
8797
|
+
switchRefs.current[next]?.focus();
|
|
8798
|
+
};
|
|
8799
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__option ot__option--toggle", children: [
|
|
8800
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "ot__toggle-media", children: animations.map((animation, index) => {
|
|
8801
|
+
const key = `${item.id}-${animation.id ?? index}`;
|
|
8802
|
+
const isActive = index === safeIndex;
|
|
8803
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8804
|
+
"div",
|
|
8805
|
+
{
|
|
8806
|
+
className: "ot__toggle-pane",
|
|
8807
|
+
id: `${idPrefix}-media-${index}`,
|
|
8808
|
+
role: "tabpanel",
|
|
8809
|
+
"aria-labelledby": `${idPrefix}-switch-${index}`,
|
|
8810
|
+
hidden: !isActive,
|
|
8811
|
+
children: isActive ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8812
|
+
AnimationCard,
|
|
8813
|
+
{
|
|
8814
|
+
animation,
|
|
8815
|
+
itemId: item.id,
|
|
8816
|
+
playing: Boolean(playing[key]),
|
|
8817
|
+
onToggle: () => setPlaying((current) => ({
|
|
8818
|
+
...current,
|
|
8819
|
+
[key]: !current[key]
|
|
8820
|
+
}))
|
|
8821
|
+
}
|
|
8822
|
+
) : null
|
|
8823
|
+
},
|
|
8824
|
+
key
|
|
8825
|
+
);
|
|
8826
|
+
}) }),
|
|
8827
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__toggle-side", children: [
|
|
8828
|
+
animations.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8829
|
+
"div",
|
|
8830
|
+
{
|
|
8831
|
+
className: "ot__toggle-switch",
|
|
8832
|
+
role: "tablist",
|
|
8833
|
+
"aria-label": `${item.title} views`,
|
|
8834
|
+
onKeyDown: onSwitchKeyDown,
|
|
8835
|
+
children: animations.map((animation, index) => {
|
|
8836
|
+
const isActive = index === safeIndex;
|
|
8837
|
+
const iconUrl = safeHref(animation.iconUrl);
|
|
8838
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8839
|
+
"button",
|
|
8840
|
+
{
|
|
8841
|
+
ref: (node) => {
|
|
8842
|
+
switchRefs.current[index] = node;
|
|
8843
|
+
},
|
|
8844
|
+
type: "button",
|
|
8845
|
+
role: "tab",
|
|
8846
|
+
id: `${idPrefix}-switch-${index}`,
|
|
8847
|
+
"aria-controls": `${idPrefix}-media-${index}`,
|
|
8848
|
+
"aria-selected": isActive,
|
|
8849
|
+
"aria-label": animation.label,
|
|
8850
|
+
tabIndex: isActive ? 0 : -1,
|
|
8851
|
+
className: `ot__toggle-option${isActive ? " ot__toggle-option--active" : ""}`,
|
|
8852
|
+
onClick: () => setActiveIndex(index),
|
|
8853
|
+
children: iconUrl ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8854
|
+
"img",
|
|
8855
|
+
{
|
|
8856
|
+
className: "ot__toggle-icon",
|
|
8857
|
+
src: iconUrl,
|
|
8858
|
+
alt: "",
|
|
8859
|
+
"aria-hidden": "true",
|
|
8860
|
+
loading: "lazy",
|
|
8861
|
+
decoding: "async"
|
|
8862
|
+
}
|
|
8863
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "ot__toggle-option-label", children: animation.label })
|
|
8864
|
+
},
|
|
8865
|
+
`${item.id}-switch-${animation.id ?? index}`
|
|
8866
|
+
);
|
|
8867
|
+
})
|
|
8868
|
+
}
|
|
8869
|
+
) : null,
|
|
8870
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h3", { className: "ot__toggle-title", children: item.title }),
|
|
8871
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "ot__description", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { children: item.description }) }),
|
|
8872
|
+
hasMarkets || hasPlatforms ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__metadata", children: [
|
|
8873
|
+
hasMarkets ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__meta-group", children: [
|
|
8874
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h4", { children: marketsLabel }),
|
|
8875
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(MetaList, { items: item.markets })
|
|
8876
|
+
] }) : null,
|
|
8877
|
+
hasPlatforms ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__meta-group", children: [
|
|
8878
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h4", { children: platformsLabel }),
|
|
8879
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(MetaList, { items: item.platforms })
|
|
8880
|
+
] }) : null
|
|
8881
|
+
] }) : null
|
|
8882
|
+
] })
|
|
8883
|
+
] });
|
|
8884
|
+
}
|
|
8885
|
+
function OptionsTypes({
|
|
8886
|
+
variant = "tabs",
|
|
8887
|
+
heading = "Section title goes here",
|
|
8888
|
+
headingLevel = "h2",
|
|
8889
|
+
items = OPTIONS_TYPES_PLACEHOLDER_ITEMS,
|
|
8890
|
+
defaultActiveId,
|
|
8891
|
+
activeId,
|
|
8892
|
+
onChange,
|
|
8893
|
+
marketsLabel = "Markets available",
|
|
8894
|
+
platformsLabel = "Trade on",
|
|
8895
|
+
disclaimer,
|
|
8896
|
+
className,
|
|
8897
|
+
...props
|
|
8898
|
+
}) {
|
|
8899
|
+
const usableItems = Array.isArray(items) ? items.filter((item) => item?.id) : [];
|
|
8900
|
+
const [internalActiveId, setInternalActiveId] = (0, import_react34.useState)(
|
|
8901
|
+
defaultActiveId ?? usableItems[0]?.id ?? ""
|
|
8902
|
+
);
|
|
8903
|
+
const selectedId = usableItems.find((item) => item.id === activeId)?.id ?? usableItems.find((item) => item.id === internalActiveId)?.id ?? usableItems[0]?.id ?? "";
|
|
8904
|
+
const [playing, setPlaying] = (0, import_react34.useState)({});
|
|
8905
|
+
const generatedId = (0, import_react34.useId)().replace(/:/g, "");
|
|
8906
|
+
const tabPrefix = `options-types-${generatedId}`;
|
|
8907
|
+
const Heading = headingLevel;
|
|
8908
|
+
(0, import_react34.useEffect)(() => {
|
|
8909
|
+
setPlaying({});
|
|
8910
|
+
}, [selectedId]);
|
|
8911
|
+
const selectItem = (id) => {
|
|
8912
|
+
if (activeId === void 0) setInternalActiveId(id);
|
|
8913
|
+
onChange?.(id);
|
|
8914
|
+
};
|
|
8915
|
+
const rootClass = ["ot", `ot--${variant}`, className].filter(Boolean).join(" ");
|
|
8916
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("section", { className: rootClass, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__inner", children: [
|
|
8917
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("header", { className: "ot__header", children: [
|
|
8918
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Heading, { className: "ot__heading", children: heading }),
|
|
8919
|
+
variant === "tabs" && usableItems.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8920
|
+
Tabs,
|
|
8921
|
+
{
|
|
8922
|
+
items: usableItems.map((item) => ({
|
|
8923
|
+
id: item.id,
|
|
8924
|
+
label: item.label ?? item.title
|
|
8925
|
+
})),
|
|
8926
|
+
activeId: selectedId,
|
|
8927
|
+
onChange: selectItem,
|
|
8928
|
+
idPrefix: tabPrefix,
|
|
8929
|
+
"aria-label": `${heading} categories`,
|
|
8930
|
+
className: "ot__tabs"
|
|
8931
|
+
}
|
|
8932
|
+
) : null
|
|
8933
|
+
] }),
|
|
8934
|
+
usableItems.length === 0 ? null : variant === "tabs" ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "ot__panels", children: usableItems.map((item, index) => {
|
|
8935
|
+
const isActive = item.id === selectedId;
|
|
8936
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8937
|
+
"div",
|
|
8938
|
+
{
|
|
8939
|
+
id: `${tabPrefix}-panel-${index}`,
|
|
8940
|
+
role: "tabpanel",
|
|
8941
|
+
"aria-labelledby": `${tabPrefix}-tab-${index}`,
|
|
8942
|
+
hidden: !isActive,
|
|
8943
|
+
tabIndex: 0,
|
|
8944
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8945
|
+
OptionPanel,
|
|
8946
|
+
{
|
|
8947
|
+
item,
|
|
8948
|
+
variant: "tabs",
|
|
8949
|
+
marketsLabel,
|
|
8950
|
+
platformsLabel,
|
|
8951
|
+
playing,
|
|
8952
|
+
setPlaying
|
|
8953
|
+
}
|
|
8954
|
+
)
|
|
8955
|
+
},
|
|
8956
|
+
item.id
|
|
8957
|
+
);
|
|
8958
|
+
}) }) : variant === "toggle" ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8959
|
+
TogglePanel,
|
|
8960
|
+
{
|
|
8961
|
+
item: usableItems[0],
|
|
8962
|
+
idPrefix: tabPrefix,
|
|
8963
|
+
marketsLabel,
|
|
8964
|
+
platformsLabel,
|
|
8965
|
+
playing,
|
|
8966
|
+
setPlaying
|
|
8967
|
+
}
|
|
8968
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8969
|
+
OptionPanel,
|
|
8970
|
+
{
|
|
8971
|
+
item: usableItems[0],
|
|
8972
|
+
variant: "single",
|
|
8973
|
+
marketsLabel,
|
|
8974
|
+
platformsLabel,
|
|
8975
|
+
playing,
|
|
8976
|
+
setPlaying
|
|
8977
|
+
}
|
|
8978
|
+
),
|
|
8979
|
+
disclaimer ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("p", { className: "ot__disclaimer", children: [
|
|
8980
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
8981
|
+
"svg",
|
|
8982
|
+
{
|
|
8983
|
+
className: "ot__disclaimer-icon",
|
|
8984
|
+
viewBox: "0 0 16 16",
|
|
8985
|
+
fill: "none",
|
|
8986
|
+
"aria-hidden": "true",
|
|
8987
|
+
children: [
|
|
8988
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("circle", { cx: "8", cy: "8", r: "6.4", stroke: "currentColor", strokeWidth: "1.2" }),
|
|
8989
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
8990
|
+
"path",
|
|
8991
|
+
{
|
|
8992
|
+
d: "M8 7v4.2",
|
|
8993
|
+
stroke: "currentColor",
|
|
8994
|
+
strokeWidth: "1.4",
|
|
8995
|
+
strokeLinecap: "round"
|
|
8996
|
+
}
|
|
8997
|
+
),
|
|
8998
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("circle", { cx: "8", cy: "4.9", r: "0.85", fill: "currentColor" })
|
|
8999
|
+
]
|
|
9000
|
+
}
|
|
9001
|
+
),
|
|
9002
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { children: disclaimer })
|
|
9003
|
+
] }) : null
|
|
9004
|
+
] }) });
|
|
9005
|
+
}
|
|
9006
|
+
|
|
9007
|
+
// templates/OptionsTypes/OptionsTypes.data.ts
|
|
9008
|
+
var WEBFLOW_CDN = "https://cdn.prod.website-files.com/661e6e1e01dd2f56adc6d370";
|
|
9009
|
+
var WEBFLOW_ICON_CDN = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c2b7";
|
|
9010
|
+
var FOREX = {
|
|
9011
|
+
label: "Forex",
|
|
9012
|
+
icon: "forex",
|
|
9013
|
+
href: "/markets/forex"
|
|
9014
|
+
};
|
|
9015
|
+
var STOCK_INDICES = {
|
|
9016
|
+
label: "Stock Indices",
|
|
9017
|
+
icon: "stock-indices",
|
|
9018
|
+
href: "/markets/stock-indices"
|
|
9019
|
+
};
|
|
9020
|
+
var COMMODITIES = {
|
|
9021
|
+
label: "Commodities",
|
|
9022
|
+
icon: "commodities",
|
|
9023
|
+
href: "/markets/commodities"
|
|
9024
|
+
};
|
|
9025
|
+
var DERIVED_INDICES = {
|
|
9026
|
+
label: "Derived Indices",
|
|
9027
|
+
icon: "derived-indices",
|
|
9028
|
+
href: "/markets/derived-indices/synthetic-indices"
|
|
9029
|
+
};
|
|
9030
|
+
var CRYPTOCURRENCIES = {
|
|
9031
|
+
label: "Cryptocurrencies",
|
|
9032
|
+
icon: "cryptocurrencies",
|
|
9033
|
+
href: "/markets/cryptocurrencies"
|
|
9034
|
+
};
|
|
9035
|
+
var DERIV_TRADER = {
|
|
9036
|
+
label: "Deriv Trader",
|
|
9037
|
+
icon: "deriv-trader",
|
|
9038
|
+
iconUrl: `${WEBFLOW_ICON_CDN}/68e3a18f20e4f9f6eb9109e8_6751d07ab72617a385122395_deriv%2520product-deriv%2520trader.svg`,
|
|
9039
|
+
href: "/trading-platforms/deriv-trader"
|
|
9040
|
+
};
|
|
9041
|
+
var DERIV_BOT = {
|
|
9042
|
+
label: "Deriv Bot",
|
|
9043
|
+
icon: "deriv-bot",
|
|
9044
|
+
iconUrl: `${WEBFLOW_ICON_CDN}/68e3a18f42c1592e9454466e_674992f6dd562e5f0b8e7679_deriv%2520product-deriv%2520bot.svg`,
|
|
9045
|
+
href: "/trading-platforms/deriv-bot"
|
|
9046
|
+
};
|
|
9047
|
+
var DIGITAL_MARKETS = [FOREX, STOCK_INDICES, COMMODITIES, DERIVED_INDICES];
|
|
9048
|
+
var TRADER_AND_BOT = [DERIV_TRADER, DERIV_BOT];
|
|
9049
|
+
var OPTIONS_TYPES_DIGITAL_CONTENT = {
|
|
9050
|
+
variant: "tabs",
|
|
9051
|
+
heading: "Types of Digital Options",
|
|
9052
|
+
defaultActiveId: "rise-fall",
|
|
9053
|
+
disclaimer: "Trade types and features offered may vary by platform and device.",
|
|
9054
|
+
items: [
|
|
9055
|
+
{
|
|
9056
|
+
id: "rise-fall",
|
|
9057
|
+
title: "Rise/Fall",
|
|
9058
|
+
description: "Predict whether the market price will rise above or fall below the entry price at the end of your contract.",
|
|
9059
|
+
animations: [
|
|
9060
|
+
{
|
|
9061
|
+
id: "rise",
|
|
9062
|
+
label: "Rise",
|
|
9063
|
+
src: `${WEBFLOW_CDN}/6630e43019db0934b75c5105_Web%20Trade%20Clip%20-%20UpDown%20(Rise).lottie`
|
|
9064
|
+
},
|
|
9065
|
+
{
|
|
9066
|
+
id: "fall",
|
|
9067
|
+
label: "Fall",
|
|
9068
|
+
src: `${WEBFLOW_CDN}/6630e42f22255a766c2af8aa_Web%20Trade%20Clip%20-%20UpDown%20(Fall).lottie`
|
|
9069
|
+
}
|
|
9070
|
+
],
|
|
9071
|
+
markets: DIGITAL_MARKETS,
|
|
9072
|
+
platforms: TRADER_AND_BOT
|
|
9073
|
+
},
|
|
9074
|
+
{
|
|
9075
|
+
id: "higher-lower",
|
|
9076
|
+
title: "Higher/Lower",
|
|
9077
|
+
description: "Choose a target price at the start (barrier), and predict if the final price will be higher or lower than barrier.",
|
|
9078
|
+
animations: [
|
|
9079
|
+
{
|
|
9080
|
+
id: "higher",
|
|
9081
|
+
label: "Higher",
|
|
9082
|
+
src: `${WEBFLOW_CDN}/6630e42f93f0aa3f60d68dd2_Web%20Trade%20Clip%20-%20UpDown%20(Higher).lottie`
|
|
9083
|
+
},
|
|
9084
|
+
{
|
|
9085
|
+
id: "lower",
|
|
9086
|
+
label: "Lower",
|
|
9087
|
+
src: `${WEBFLOW_CDN}/6630e42f8922eb31fcbf275f_Web%20Trade%20Clip%20-%20%20UpDown%20(Lower).lottie`
|
|
9088
|
+
}
|
|
9089
|
+
],
|
|
9090
|
+
markets: DIGITAL_MARKETS,
|
|
9091
|
+
platforms: TRADER_AND_BOT
|
|
9092
|
+
},
|
|
9093
|
+
{
|
|
9094
|
+
id: "touch-no-touch",
|
|
9095
|
+
title: "Touch/No Touch",
|
|
9096
|
+
description: 'Predict whether the market price will "touch" or not touch a target price (barrier) during the contract period.',
|
|
9097
|
+
animations: [
|
|
9098
|
+
{
|
|
9099
|
+
id: "touch",
|
|
9100
|
+
label: "Touch",
|
|
9101
|
+
src: `${WEBFLOW_CDN}/6630e3a120a6dcbe6ab22239_Web%20Trade%20Clip%20-%20TouchNoTouch%20(Touch).lottie`
|
|
9102
|
+
},
|
|
9103
|
+
{
|
|
9104
|
+
id: "no-touch",
|
|
9105
|
+
label: "No Touch",
|
|
9106
|
+
src: `${WEBFLOW_CDN}/6630e3a158064e5c58362ddd_Web%20Trade%20Clip%20-%20TouchNoTouch%20(No%20Touch).lottie`
|
|
9107
|
+
}
|
|
9108
|
+
],
|
|
9109
|
+
markets: DIGITAL_MARKETS,
|
|
9110
|
+
platforms: TRADER_AND_BOT
|
|
9111
|
+
}
|
|
9112
|
+
]
|
|
9113
|
+
};
|
|
9114
|
+
var OPTIONS_TYPES_ACCUMULATOR_CONTENT = {
|
|
9115
|
+
variant: "single",
|
|
9116
|
+
heading: "How do Accumulator Options work",
|
|
9117
|
+
items: [
|
|
9118
|
+
{
|
|
9119
|
+
id: "accumulator-options",
|
|
9120
|
+
title: "Accumulator Options",
|
|
9121
|
+
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.",
|
|
9122
|
+
animations: [
|
|
9123
|
+
{
|
|
9124
|
+
id: "accumulator",
|
|
9125
|
+
label: "Accumulator",
|
|
9126
|
+
src: `${WEBFLOW_CDN}/6630e0fff230226872ee39ed_Web%20Trade%20Clip%20-%20Accumulators%20(Accumulators).lottie`
|
|
9127
|
+
}
|
|
9128
|
+
],
|
|
9129
|
+
markets: [DERIVED_INDICES],
|
|
9130
|
+
platforms: TRADER_AND_BOT
|
|
9131
|
+
}
|
|
9132
|
+
]
|
|
9133
|
+
};
|
|
9134
|
+
var OPTIONS_TYPES_VANILLA_CONTENT = {
|
|
9135
|
+
variant: "single",
|
|
9136
|
+
heading: "How do Vanilla Options work",
|
|
9137
|
+
items: [
|
|
9138
|
+
{
|
|
9139
|
+
id: "vanilla-call-put",
|
|
9140
|
+
title: "Vanilla Call/Put",
|
|
9141
|
+
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.",
|
|
9142
|
+
animations: [
|
|
9143
|
+
{
|
|
9144
|
+
id: "call",
|
|
9145
|
+
label: "Call",
|
|
9146
|
+
src: `${WEBFLOW_CDN}/6630e3c100c107af706a72f6_Web%20Trade%20Clip%20-%20Vanilla%20(Call).lottie`
|
|
9147
|
+
},
|
|
9148
|
+
{
|
|
9149
|
+
id: "put",
|
|
9150
|
+
label: "Put",
|
|
9151
|
+
src: `${WEBFLOW_CDN}/6630e3c2f230226872f0d58d_Web%20Trade%20Clip%20-%20Vanilla%20(Put).lottie`
|
|
9152
|
+
}
|
|
9153
|
+
],
|
|
9154
|
+
markets: [DERIVED_INDICES],
|
|
9155
|
+
platforms: [DERIV_TRADER]
|
|
9156
|
+
}
|
|
9157
|
+
]
|
|
9158
|
+
};
|
|
9159
|
+
var OPTIONS_TYPES_TURBO_CONTENT = {
|
|
9160
|
+
variant: "single",
|
|
9161
|
+
heading: "How do Turbo Options work",
|
|
9162
|
+
items: [
|
|
9163
|
+
{
|
|
9164
|
+
id: "turbo-up-down",
|
|
9165
|
+
title: "Turbo Up/Down",
|
|
9166
|
+
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.",
|
|
9167
|
+
animations: [
|
|
9168
|
+
{
|
|
9169
|
+
id: "up",
|
|
9170
|
+
label: "Up",
|
|
9171
|
+
src: `${WEBFLOW_CDN}/664aff68ca9411ee61c84443_Web%20Trade%20Clip%20(Up).lottie`
|
|
9172
|
+
},
|
|
9173
|
+
{
|
|
9174
|
+
id: "down",
|
|
9175
|
+
label: "Down",
|
|
9176
|
+
src: `${WEBFLOW_CDN}/664aff6801c5297f6a1f6e6c_Web%20Trade%20Clip%20(Down).lottie`
|
|
9177
|
+
}
|
|
9178
|
+
],
|
|
9179
|
+
markets: [DERIVED_INDICES],
|
|
9180
|
+
platforms: [DERIV_TRADER]
|
|
9181
|
+
}
|
|
9182
|
+
]
|
|
9183
|
+
};
|
|
9184
|
+
var OPTIONS_TYPES_MULTIPLIERS_CONTENT = {
|
|
9185
|
+
variant: "single",
|
|
9186
|
+
heading: "How do Multipliers work",
|
|
9187
|
+
items: [
|
|
9188
|
+
{
|
|
9189
|
+
id: "multipliers-up-down",
|
|
9190
|
+
title: "Multipliers Up/Down",
|
|
9191
|
+
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.",
|
|
9192
|
+
animations: [
|
|
9193
|
+
{
|
|
9194
|
+
id: "up",
|
|
9195
|
+
label: "Up",
|
|
9196
|
+
src: `${WEBFLOW_CDN}/6630e305e7f044e7deae8a90_Web%20Trade%20Clip%20-%20Multipliers%20(Up).lottie`
|
|
9197
|
+
},
|
|
9198
|
+
{
|
|
9199
|
+
id: "down",
|
|
9200
|
+
label: "Down",
|
|
9201
|
+
src: `${WEBFLOW_CDN}/6630e3055be526fd74f10190_Web%20Trade%20Clip%20-%20Multipliers%20(Down).lottie`
|
|
9202
|
+
}
|
|
9203
|
+
],
|
|
9204
|
+
markets: [DERIVED_INDICES, FOREX, CRYPTOCURRENCIES, COMMODITIES],
|
|
9205
|
+
platforms: TRADER_AND_BOT
|
|
9206
|
+
}
|
|
9207
|
+
]
|
|
9208
|
+
};
|
|
9209
|
+
var OPTIONS_TYPES_EU_MULTIPLIERS_CONTENT = {
|
|
9210
|
+
variant: "toggle",
|
|
9211
|
+
heading: "How do multipliers work",
|
|
9212
|
+
items: [
|
|
9213
|
+
{
|
|
9214
|
+
id: "eu-multipliers",
|
|
9215
|
+
title: "Multipliers",
|
|
9216
|
+
description: "Choose a multiplier (up to 30x) and predict if the market price will go up or down compared to the entry price. Your potential payout grows the further the market price moves in your predicted direction, boosted by the multiplier. Losses are limited to the initial amount you put into the contract.",
|
|
9217
|
+
animations: [
|
|
9218
|
+
{
|
|
9219
|
+
id: "up",
|
|
9220
|
+
label: "Up",
|
|
9221
|
+
src: `${WEBFLOW_CDN}/6630e305e7f044e7deae8a90_Web%20Trade%20Clip%20-%20Multipliers%20(Up).lottie`,
|
|
9222
|
+
iconUrl: `${WEBFLOW_ICON_CDN}/68e4859893e33d078096e151_66585fe0e1dc7e70cc75dec1_multipliers-up-sm.svg`
|
|
9223
|
+
},
|
|
9224
|
+
{
|
|
9225
|
+
id: "down",
|
|
9226
|
+
label: "Down",
|
|
9227
|
+
src: `${WEBFLOW_CDN}/6630e3055be526fd74f10190_Web%20Trade%20Clip%20-%20Multipliers%20(Down).lottie`,
|
|
9228
|
+
iconUrl: `${WEBFLOW_ICON_CDN}/68e4859893e33d078096e155_66585fe0e1dc7e70cc75dee8_multipliers-down-sm.svg`
|
|
9229
|
+
}
|
|
9230
|
+
]
|
|
9231
|
+
}
|
|
9232
|
+
]
|
|
9233
|
+
};
|
|
9234
|
+
|
|
9235
|
+
// templates/EntityInfoSection/EntityInfoSection.tsx
|
|
9236
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
9237
|
+
var DEFAULT_LINKS2 = [{ label: "View licence", href: "#" }];
|
|
9238
|
+
var EntityInfoSection = ({
|
|
9239
|
+
name = "Section title goes here",
|
|
9240
|
+
description = "Explain how this specific feature helps your user.",
|
|
9241
|
+
bullets,
|
|
9242
|
+
links,
|
|
9243
|
+
headingLevel: HeadingTag = "h2",
|
|
9244
|
+
className,
|
|
9245
|
+
...props
|
|
9246
|
+
}) => {
|
|
9247
|
+
const resolvedLinks = links && links.length > 0 ? links : DEFAULT_LINKS2;
|
|
9248
|
+
const hasBullets = !!bullets && bullets.length > 0;
|
|
9249
|
+
const rootClass = ["eis", className].filter(Boolean).join(" ");
|
|
9250
|
+
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: [
|
|
9251
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(HeadingTag, { className: "eis__name", children: name }),
|
|
9252
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("p", { className: "eis__description", children: description }),
|
|
9253
|
+
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)) }),
|
|
9254
|
+
resolvedLinks.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("ul", { className: "eis__links", children: resolvedLinks.map((link, i) => {
|
|
9255
|
+
const isExternal = link.external ?? true;
|
|
9256
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("li", { className: "eis__links-item", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
9257
|
+
Link,
|
|
9258
|
+
{
|
|
9259
|
+
className: "eis__link",
|
|
9260
|
+
colorScheme: "coral",
|
|
9261
|
+
href: link.href,
|
|
9262
|
+
label: link.label,
|
|
9263
|
+
target: isExternal ? "_blank" : void 0,
|
|
9264
|
+
rel: isExternal ? "noopener noreferrer" : void 0
|
|
9265
|
+
}
|
|
9266
|
+
) }, link.id ?? i);
|
|
9267
|
+
}) })
|
|
9268
|
+
] }) }) });
|
|
9269
|
+
};
|
|
9270
|
+
|
|
9271
|
+
// templates/CountryLinkGrid/CountryLinkGrid.tsx
|
|
9272
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
9273
|
+
var DEFAULT_ITEMS = [
|
|
9274
|
+
{ label: "Country name", href: "#" },
|
|
9275
|
+
{ label: "Country name", href: "#" },
|
|
9276
|
+
{ label: "Country name", href: "#" },
|
|
9277
|
+
{ label: "Country name", href: "#" }
|
|
9278
|
+
];
|
|
9279
|
+
var CountryLinkGrid = ({
|
|
9280
|
+
title = "Section title goes here",
|
|
9281
|
+
description = "Explain how this specific feature helps your user.",
|
|
9282
|
+
items,
|
|
9283
|
+
headingLevel: HeadingTag = "h2",
|
|
9284
|
+
className,
|
|
9285
|
+
...props
|
|
9286
|
+
}) => {
|
|
9287
|
+
const resolvedItems = items && items.length > 0 ? items : DEFAULT_ITEMS;
|
|
9288
|
+
const rootClass = ["clg", className].filter(Boolean).join(" ");
|
|
9289
|
+
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: [
|
|
9290
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "clg__header", children: [
|
|
9291
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(HeadingTag, { className: "clg__title", children: title }),
|
|
9292
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "clg__description", children: description })
|
|
9293
|
+
] }),
|
|
9294
|
+
resolvedItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("ul", { className: "clg__list", children: resolvedItems.map((item, i) => {
|
|
9295
|
+
const isExternal = item.external ?? true;
|
|
9296
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("li", { className: "clg__item", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
|
|
9297
|
+
"a",
|
|
9298
|
+
{
|
|
9299
|
+
className: "clg__link",
|
|
9300
|
+
href: item.href,
|
|
9301
|
+
target: isExternal ? "_blank" : void 0,
|
|
9302
|
+
rel: isExternal ? "noopener noreferrer" : void 0,
|
|
9303
|
+
children: [
|
|
9304
|
+
item.iconSrc && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
9305
|
+
"img",
|
|
9306
|
+
{
|
|
9307
|
+
className: "clg__flag",
|
|
9308
|
+
src: item.iconSrc,
|
|
9309
|
+
alt: item.iconAlt ?? "",
|
|
9310
|
+
loading: "lazy",
|
|
9311
|
+
width: 36,
|
|
9312
|
+
height: 24
|
|
9313
|
+
}
|
|
9314
|
+
),
|
|
9315
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "clg__text", children: item.label })
|
|
9316
|
+
]
|
|
9317
|
+
}
|
|
9318
|
+
) }, item.id ?? i);
|
|
9319
|
+
}) })
|
|
9320
|
+
] }) }) });
|
|
9321
|
+
};
|
|
9322
|
+
|
|
9323
|
+
// templates/DocumentChips/DocumentChips.tsx
|
|
9324
|
+
var import_react35 = require("react");
|
|
9325
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
9326
|
+
var DEFAULT_GROUPS = [
|
|
9327
|
+
{
|
|
9328
|
+
id: "group-one",
|
|
9329
|
+
title: "First group title",
|
|
9330
|
+
documents: [
|
|
9331
|
+
{
|
|
9332
|
+
id: "doc-one",
|
|
9333
|
+
title: "First document title",
|
|
9334
|
+
href: "#",
|
|
9335
|
+
languageLink: { label: "Choose language", href: "#" }
|
|
9336
|
+
},
|
|
9337
|
+
{
|
|
9338
|
+
id: "doc-two",
|
|
9339
|
+
title: "Second document title",
|
|
9340
|
+
href: "#",
|
|
9341
|
+
languageLink: { label: "Choose language", href: "#" }
|
|
9342
|
+
}
|
|
9343
|
+
]
|
|
9344
|
+
},
|
|
9345
|
+
{
|
|
9346
|
+
id: "group-two",
|
|
9347
|
+
title: "Second group title",
|
|
9348
|
+
documents: [
|
|
9349
|
+
{ id: "doc-three", title: "Third document title", href: "#" },
|
|
9350
|
+
{ id: "doc-four", title: "Fourth document title", href: "#" }
|
|
9351
|
+
]
|
|
9352
|
+
}
|
|
9353
|
+
];
|
|
9354
|
+
var DocumentChip = ({ document: document2, iconSrc, iconAlt, onLanguageSelect }) => {
|
|
9355
|
+
const isExternal = document2.external ?? true;
|
|
9356
|
+
const languageLink = document2.languageLink;
|
|
9357
|
+
const handleLanguageClick = (event) => {
|
|
9358
|
+
if (!onLanguageSelect) return;
|
|
9359
|
+
event.preventDefault();
|
|
9360
|
+
onLanguageSelect(document2, event);
|
|
9361
|
+
};
|
|
9362
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("li", { className: "dch__doc-item", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "dch__doc", children: [
|
|
9363
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
9364
|
+
"a",
|
|
9365
|
+
{
|
|
9366
|
+
className: "dch__doc-link",
|
|
9367
|
+
href: document2.href,
|
|
9368
|
+
target: isExternal ? "_blank" : void 0,
|
|
9369
|
+
rel: isExternal ? "noopener noreferrer" : void 0,
|
|
9370
|
+
children: [
|
|
9371
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
9372
|
+
"img",
|
|
9373
|
+
{
|
|
9374
|
+
className: "dch__doc-icon",
|
|
9375
|
+
src: document2.iconSrc ?? iconSrc,
|
|
9376
|
+
alt: iconAlt,
|
|
9377
|
+
loading: "lazy",
|
|
9378
|
+
"aria-hidden": iconAlt ? void 0 : true
|
|
9379
|
+
}
|
|
9380
|
+
),
|
|
9381
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "dch__doc-title", children: document2.title })
|
|
9382
|
+
]
|
|
9383
|
+
}
|
|
9384
|
+
),
|
|
9385
|
+
languageLink && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "dch__doc-action", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
9386
|
+
Link,
|
|
9387
|
+
{
|
|
9388
|
+
className: "dch__doc-language",
|
|
9389
|
+
colorScheme: "black",
|
|
9390
|
+
label: languageLink.label ?? "Choose language",
|
|
9391
|
+
href: languageLink.href ?? document2.href,
|
|
9392
|
+
onClick: handleLanguageClick,
|
|
9393
|
+
"aria-haspopup": onLanguageSelect ? "dialog" : void 0
|
|
9394
|
+
}
|
|
9395
|
+
) })
|
|
9396
|
+
] }) });
|
|
9397
|
+
};
|
|
9398
|
+
var DocumentChipList = ({
|
|
9399
|
+
documents,
|
|
9400
|
+
iconSrc,
|
|
9401
|
+
iconAlt,
|
|
9402
|
+
onLanguageSelect
|
|
9403
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("ul", { className: "dch__docs", children: documents.map((document2, j) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
9404
|
+
DocumentChip,
|
|
9405
|
+
{
|
|
9406
|
+
document: document2,
|
|
9407
|
+
iconSrc,
|
|
9408
|
+
iconAlt,
|
|
9409
|
+
onLanguageSelect
|
|
9410
|
+
},
|
|
9411
|
+
document2.id ?? j
|
|
9412
|
+
)) });
|
|
9413
|
+
var DocumentChips = ({
|
|
9414
|
+
variant = "accordion",
|
|
9415
|
+
title = "Section title goes here",
|
|
9416
|
+
description,
|
|
9417
|
+
groups,
|
|
9418
|
+
iconSrc = "https://media.ffycdn.net/eu/deriv/d/8d33a322464c4809a9d01119104caa0d",
|
|
9419
|
+
iconAlt = "",
|
|
9420
|
+
allowMultipleOpen = false,
|
|
9421
|
+
onLanguageSelect,
|
|
9422
|
+
headingLevel: HeadingTag = "h2",
|
|
9423
|
+
className,
|
|
9424
|
+
...props
|
|
9425
|
+
}) => {
|
|
9426
|
+
const resolvedGroups = groups && groups.length > 0 ? groups : DEFAULT_GROUPS;
|
|
9427
|
+
const groupKeys = resolvedGroups.map((group, i) => String(group.id ?? i));
|
|
9428
|
+
const [openKeys, setOpenKeys] = (0, import_react35.useState)(void 0);
|
|
9429
|
+
const resolvedOpenKeys = openKeys === void 0 ? groupKeys.slice(0, 1) : openKeys;
|
|
9430
|
+
const handleToggle = (key, next) => {
|
|
9431
|
+
setOpenKeys((current) => {
|
|
9432
|
+
const base = current === void 0 ? groupKeys.slice(0, 1) : current;
|
|
9433
|
+
if (!next) return base.filter((k) => k !== key);
|
|
9434
|
+
return allowMultipleOpen ? [...base.filter((k) => k !== key), key] : [key];
|
|
9435
|
+
});
|
|
9436
|
+
};
|
|
9437
|
+
const flatDocuments = resolvedGroups.flatMap((group) => group.documents ?? []);
|
|
9438
|
+
const rootClass = ["dch", className].filter(Boolean).join(" ");
|
|
9439
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("section", { className: rootClass, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "dch__inner", children: [
|
|
9440
|
+
(title || description) && /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "dch__header", children: [
|
|
9441
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(HeadingTag, { className: "dch__title", children: title }),
|
|
9442
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: "dch__description", children: description })
|
|
9443
|
+
] }),
|
|
9444
|
+
variant === "flat" ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
9445
|
+
DocumentChipList,
|
|
9446
|
+
{
|
|
9447
|
+
documents: flatDocuments,
|
|
9448
|
+
iconAlt,
|
|
9449
|
+
iconSrc,
|
|
9450
|
+
onLanguageSelect
|
|
9451
|
+
}
|
|
9452
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "dch__groups", children: resolvedGroups.map((group, i) => {
|
|
9453
|
+
const key = groupKeys[i];
|
|
9454
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
9455
|
+
Accordion,
|
|
9456
|
+
{
|
|
9457
|
+
className: "dch__group",
|
|
9458
|
+
title: group.title,
|
|
9459
|
+
open: resolvedOpenKeys.includes(key),
|
|
9460
|
+
onToggle: (next) => handleToggle(key, next),
|
|
9461
|
+
showTopDivider: i > 0,
|
|
9462
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
9463
|
+
DocumentChipList,
|
|
9464
|
+
{
|
|
9465
|
+
documents: group.documents ?? [],
|
|
9466
|
+
iconAlt,
|
|
9467
|
+
iconSrc,
|
|
9468
|
+
onLanguageSelect
|
|
9469
|
+
}
|
|
9470
|
+
)
|
|
9471
|
+
},
|
|
9472
|
+
key
|
|
9473
|
+
);
|
|
9474
|
+
}) })
|
|
9475
|
+
] }) });
|
|
9476
|
+
};
|
|
9477
|
+
|
|
9478
|
+
// components/LinkModal/LinkModal.tsx
|
|
9479
|
+
var import_react36 = require("react");
|
|
9480
|
+
var import_react_dom2 = require("react-dom");
|
|
9481
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
9482
|
+
var XMarkIcon3 = () => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
9483
|
+
"svg",
|
|
9484
|
+
{
|
|
9485
|
+
width: "24",
|
|
9486
|
+
height: "24",
|
|
9487
|
+
viewBox: "0 0 24 24",
|
|
9488
|
+
fill: "none",
|
|
9489
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
9490
|
+
"aria-hidden": "true",
|
|
9491
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
9492
|
+
"path",
|
|
9493
|
+
{
|
|
9494
|
+
d: "M5 5l14 14M19 5L5 19",
|
|
9495
|
+
stroke: "currentColor",
|
|
9496
|
+
strokeWidth: "1.5",
|
|
9497
|
+
strokeLinecap: "round"
|
|
9498
|
+
}
|
|
9499
|
+
)
|
|
9500
|
+
}
|
|
9501
|
+
);
|
|
9502
|
+
var FOCUSABLE_SELECTOR = [
|
|
9503
|
+
"a[href]",
|
|
9504
|
+
"button:not([disabled])",
|
|
9505
|
+
"input:not([disabled])",
|
|
9506
|
+
"select:not([disabled])",
|
|
9507
|
+
"textarea:not([disabled])",
|
|
9508
|
+
'[tabindex]:not([tabindex="-1"])'
|
|
9509
|
+
].join(",");
|
|
9510
|
+
var LinkModal = ({
|
|
9511
|
+
open,
|
|
9512
|
+
onClose,
|
|
9513
|
+
title = "Dialog title",
|
|
9514
|
+
closeLabel = "Close",
|
|
9515
|
+
children,
|
|
9516
|
+
headingLevel: HeadingTag = "h2",
|
|
9517
|
+
container,
|
|
9518
|
+
className,
|
|
9519
|
+
...props
|
|
9520
|
+
}) => {
|
|
9521
|
+
const titleId = (0, import_react36.useId)();
|
|
9522
|
+
const panelRef = (0, import_react36.useRef)(null);
|
|
9523
|
+
const triggerRef = (0, import_react36.useRef)(null);
|
|
9524
|
+
const getFocusable = (0, import_react36.useCallback)(() => {
|
|
9525
|
+
const panel = panelRef.current;
|
|
9526
|
+
if (!panel) return [];
|
|
9527
|
+
return Array.from(panel.querySelectorAll(FOCUSABLE_SELECTOR)).filter(
|
|
9528
|
+
(el) => el.offsetParent !== null || el === document.activeElement
|
|
9529
|
+
);
|
|
9530
|
+
}, []);
|
|
9531
|
+
(0, import_react36.useEffect)(() => {
|
|
9532
|
+
if (!open || typeof document === "undefined") return;
|
|
9533
|
+
triggerRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
9534
|
+
panelRef.current?.focus();
|
|
9535
|
+
return () => {
|
|
9536
|
+
const trigger = triggerRef.current;
|
|
9537
|
+
triggerRef.current = null;
|
|
9538
|
+
if (trigger && document.contains(trigger)) trigger.focus();
|
|
9539
|
+
};
|
|
9540
|
+
}, [open]);
|
|
9541
|
+
(0, import_react36.useEffect)(() => {
|
|
9542
|
+
if (!open || typeof document === "undefined") return;
|
|
9543
|
+
const handleKeyDown = (event) => {
|
|
9544
|
+
if (event.key === "Escape") {
|
|
9545
|
+
event.stopPropagation();
|
|
9546
|
+
onClose();
|
|
9547
|
+
}
|
|
9548
|
+
};
|
|
9549
|
+
document.addEventListener("keydown", handleKeyDown);
|
|
9550
|
+
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
9551
|
+
}, [open, onClose]);
|
|
9552
|
+
(0, import_react36.useEffect)(() => {
|
|
9553
|
+
if (!open || typeof document === "undefined") return;
|
|
9554
|
+
const body = document.body;
|
|
9555
|
+
const previousOverflow = body.style.overflow;
|
|
9556
|
+
const previousPaddingRight = body.style.paddingRight;
|
|
9557
|
+
const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
|
|
9558
|
+
body.style.overflow = "hidden";
|
|
9559
|
+
if (scrollbarWidth > 0) {
|
|
9560
|
+
const current = parseFloat(window.getComputedStyle(body).paddingRight) || 0;
|
|
9561
|
+
body.style.paddingRight = `${current + scrollbarWidth}px`;
|
|
9562
|
+
}
|
|
9563
|
+
return () => {
|
|
9564
|
+
body.style.overflow = previousOverflow;
|
|
9565
|
+
body.style.paddingRight = previousPaddingRight;
|
|
9566
|
+
};
|
|
9567
|
+
}, [open]);
|
|
9568
|
+
const handlePanelKeyDown = (event) => {
|
|
9569
|
+
if (event.key !== "Tab") return;
|
|
9570
|
+
const focusable = getFocusable();
|
|
9571
|
+
if (focusable.length === 0) {
|
|
9572
|
+
event.preventDefault();
|
|
9573
|
+
panelRef.current?.focus();
|
|
9574
|
+
return;
|
|
9575
|
+
}
|
|
9576
|
+
const first = focusable[0];
|
|
9577
|
+
const last = focusable[focusable.length - 1];
|
|
9578
|
+
const active = document.activeElement;
|
|
9579
|
+
if (event.shiftKey) {
|
|
9580
|
+
if (active === first || active === panelRef.current) {
|
|
9581
|
+
event.preventDefault();
|
|
9582
|
+
last.focus();
|
|
9583
|
+
}
|
|
9584
|
+
return;
|
|
9585
|
+
}
|
|
9586
|
+
if (active === last) {
|
|
9587
|
+
event.preventDefault();
|
|
9588
|
+
first.focus();
|
|
9589
|
+
}
|
|
9590
|
+
};
|
|
9591
|
+
if (!open || typeof document === "undefined") return null;
|
|
9592
|
+
const rootClass = ["lm", className].filter(Boolean).join(" ");
|
|
9593
|
+
return (0, import_react_dom2.createPortal)(
|
|
9594
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: rootClass, onClick: onClose, children: [
|
|
9595
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "lm__scrim", "aria-hidden": "true" }),
|
|
9596
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
|
|
9597
|
+
"div",
|
|
9598
|
+
{
|
|
9599
|
+
ref: panelRef,
|
|
9600
|
+
className: "lm__panel",
|
|
9601
|
+
role: "dialog",
|
|
9602
|
+
"aria-modal": "true",
|
|
9603
|
+
"aria-labelledby": titleId,
|
|
9604
|
+
tabIndex: -1,
|
|
9605
|
+
onClick: (event) => event.stopPropagation(),
|
|
9606
|
+
onKeyDown: handlePanelKeyDown,
|
|
9607
|
+
...props,
|
|
9608
|
+
children: [
|
|
9609
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
9610
|
+
"button",
|
|
9611
|
+
{
|
|
9612
|
+
type: "button",
|
|
9613
|
+
className: "lm__close",
|
|
9614
|
+
onClick: onClose,
|
|
9615
|
+
"aria-label": closeLabel,
|
|
9616
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(XMarkIcon3, {})
|
|
9617
|
+
}
|
|
9618
|
+
),
|
|
9619
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(HeadingTag, { id: titleId, className: "lm__title", children: title }),
|
|
9620
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "lm__body", children })
|
|
9621
|
+
]
|
|
9622
|
+
}
|
|
9623
|
+
)
|
|
9624
|
+
] }),
|
|
9625
|
+
container ?? document.body
|
|
9626
|
+
);
|
|
9627
|
+
};
|
|
9628
|
+
|
|
9629
|
+
// templates/LanguageSelectModal/LanguageSelectModal.tsx
|
|
9630
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
9631
|
+
var DEFAULT_OPTIONS = [
|
|
9632
|
+
{ id: "option-one", label: "First option", href: "#" },
|
|
9633
|
+
{ id: "option-two", label: "Second option", href: "#" },
|
|
9634
|
+
{ id: "option-three", label: "Third option", href: "#" },
|
|
9635
|
+
{ id: "option-four", label: "Fourth option", href: "#" },
|
|
9636
|
+
{ id: "option-five", label: "Fifth option", href: "#" },
|
|
9637
|
+
{ id: "option-six", label: "Sixth option", href: "#" }
|
|
9638
|
+
];
|
|
9639
|
+
var LanguageSelectModal = ({
|
|
9640
|
+
open,
|
|
9641
|
+
onClose,
|
|
9642
|
+
title = "Select your language",
|
|
9643
|
+
closeLabel = "Close",
|
|
9644
|
+
options,
|
|
9645
|
+
headingLevel = "h2",
|
|
9646
|
+
container,
|
|
9647
|
+
className,
|
|
9648
|
+
...props
|
|
9649
|
+
}) => {
|
|
9650
|
+
const resolvedOptions = options && options.length > 0 ? options : DEFAULT_OPTIONS;
|
|
9651
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
9652
|
+
LinkModal,
|
|
9653
|
+
{
|
|
9654
|
+
open,
|
|
9655
|
+
onClose,
|
|
9656
|
+
title,
|
|
9657
|
+
closeLabel,
|
|
9658
|
+
headingLevel,
|
|
9659
|
+
container,
|
|
9660
|
+
className,
|
|
9661
|
+
...props,
|
|
9662
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("ul", { className: "lsm__grid", children: resolvedOptions.map((option, i) => {
|
|
9663
|
+
const isExternal = option.external ?? true;
|
|
9664
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("li", { className: "lsm__grid-item", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
|
|
9665
|
+
"a",
|
|
9666
|
+
{
|
|
9667
|
+
className: "lsm__option",
|
|
9668
|
+
href: option.href,
|
|
9669
|
+
target: isExternal ? "_blank" : void 0,
|
|
9670
|
+
rel: isExternal ? "noopener noreferrer" : void 0,
|
|
9671
|
+
children: [
|
|
9672
|
+
option.flagSrc && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
9673
|
+
"img",
|
|
9674
|
+
{
|
|
9675
|
+
className: "lsm__flag",
|
|
9676
|
+
src: option.flagSrc,
|
|
9677
|
+
alt: option.flagAlt ?? "",
|
|
9678
|
+
loading: "lazy",
|
|
9679
|
+
"aria-hidden": option.flagAlt ? void 0 : true
|
|
9680
|
+
}
|
|
9681
|
+
),
|
|
9682
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "lsm__option-label", children: option.label })
|
|
9683
|
+
]
|
|
9684
|
+
}
|
|
9685
|
+
) }, option.id ?? i);
|
|
9686
|
+
}) })
|
|
9687
|
+
}
|
|
9688
|
+
);
|
|
9689
|
+
};
|
|
9690
|
+
|
|
9691
|
+
// templates/AffiliatesSlider/AffiliatesSlider.tsx
|
|
9692
|
+
var import_react37 = require("react");
|
|
9693
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
9694
|
+
var ArrowIcon2 = () => /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
9695
|
+
"svg",
|
|
9696
|
+
{
|
|
9697
|
+
width: "32",
|
|
9698
|
+
height: "32",
|
|
9699
|
+
viewBox: "0 0 32 32",
|
|
9700
|
+
fill: "none",
|
|
9701
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
9702
|
+
"aria-hidden": "true",
|
|
9703
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
9704
|
+
"path",
|
|
9705
|
+
{
|
|
9706
|
+
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",
|
|
9707
|
+
fill: "currentColor",
|
|
9708
|
+
fillOpacity: "0.72"
|
|
9709
|
+
}
|
|
9710
|
+
)
|
|
9711
|
+
}
|
|
9712
|
+
);
|
|
9713
|
+
var TrackGradient = () => /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
9714
|
+
"svg",
|
|
9715
|
+
{
|
|
9716
|
+
preserveAspectRatio: "none",
|
|
9717
|
+
width: "100%",
|
|
9718
|
+
height: "49",
|
|
9719
|
+
viewBox: "0 0 408 50",
|
|
9720
|
+
fill: "none",
|
|
9721
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
9722
|
+
"aria-hidden": "true",
|
|
9723
|
+
className: "afs__track-gradient",
|
|
9724
|
+
children: [
|
|
9725
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
9726
|
+
"path",
|
|
9727
|
+
{
|
|
9728
|
+
opacity: "0.5",
|
|
9729
|
+
d: "M408 0.25L0 49.25H408V0.25Z",
|
|
9730
|
+
fill: "url(#afs-track-gradient)"
|
|
9731
|
+
}
|
|
9732
|
+
),
|
|
9733
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
9734
|
+
"linearGradient",
|
|
9735
|
+
{
|
|
9736
|
+
id: "afs-track-gradient",
|
|
9737
|
+
x1: "0",
|
|
9738
|
+
y1: "9.91566",
|
|
9739
|
+
x2: "178.34",
|
|
9740
|
+
y2: "227.916",
|
|
9741
|
+
gradientUnits: "userSpaceOnUse",
|
|
9742
|
+
children: [
|
|
9743
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("stop", { stopColor: "var(--afs-track-gradient-start)" }),
|
|
9744
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("stop", { offset: "1", stopColor: "var(--afs-track-gradient-end)" })
|
|
9745
|
+
]
|
|
9746
|
+
}
|
|
9747
|
+
) })
|
|
9748
|
+
]
|
|
9749
|
+
}
|
|
9750
|
+
);
|
|
9751
|
+
var buildDefaultTicks = (min, max) => {
|
|
9752
|
+
const span = max - min;
|
|
9753
|
+
return [0, 0.25, 0.5, 0.75, 1].map((ratio) => Math.round(min + span * ratio));
|
|
9754
|
+
};
|
|
9755
|
+
var formatIncome = (value) => new Intl.NumberFormat("en-US", { maximumFractionDigits: 0 }).format(value);
|
|
9756
|
+
var AffiliatesSlider = ({
|
|
9757
|
+
title = "Section title goes here",
|
|
9758
|
+
description = "Explain how this specific feature helps your user.",
|
|
9759
|
+
min = 10,
|
|
9760
|
+
max = 50,
|
|
9761
|
+
step = 1,
|
|
9762
|
+
defaultValue = 10,
|
|
9763
|
+
value,
|
|
9764
|
+
onValueChange,
|
|
9765
|
+
referralsLabel = "total referrals (Min deposit amount of $100 each)",
|
|
9766
|
+
incomeLabel = "your potential income per month",
|
|
9767
|
+
incomePerReferral = 100,
|
|
9768
|
+
currencySymbol = "$",
|
|
9769
|
+
tickValues,
|
|
9770
|
+
disclaimer = "This calculator provides estimates only and may not reflect actual earnings.",
|
|
9771
|
+
disclaimerIconSrc = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/68da5c86c91c54f39c86cdaf_icon.svg",
|
|
9772
|
+
disclaimerIconAlt = "",
|
|
9773
|
+
sliderLabel = "Number of referrals",
|
|
9774
|
+
className,
|
|
9775
|
+
...props
|
|
9776
|
+
}) => {
|
|
9777
|
+
const [internalValue, setInternalValue] = (0, import_react37.useState)(defaultValue);
|
|
9778
|
+
const currentValue = value ?? internalValue;
|
|
9779
|
+
const handleChange = (0, import_react37.useCallback)(
|
|
9780
|
+
(next) => {
|
|
9781
|
+
if (value === void 0) setInternalValue(next);
|
|
9782
|
+
onValueChange?.(next);
|
|
9783
|
+
},
|
|
9784
|
+
[onValueChange, value]
|
|
9785
|
+
);
|
|
9786
|
+
const ticks = (0, import_react37.useMemo)(
|
|
9787
|
+
() => tickValues ?? buildDefaultTicks(min, max),
|
|
9788
|
+
[max, min, tickValues]
|
|
9789
|
+
);
|
|
9790
|
+
const fillPercent = (currentValue - min) / (max - min) * 100;
|
|
9791
|
+
const income = currentValue * incomePerReferral;
|
|
9792
|
+
const rootClass = ["afs", className].filter(Boolean).join(" ");
|
|
9793
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("section", { className: rootClass, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__inner", children: [
|
|
9794
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__header", children: [
|
|
9795
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("h2", { className: "afs__title", children: title }),
|
|
9796
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "afs__description", children: description })
|
|
9797
|
+
] }),
|
|
9798
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "afs__form", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__controls", children: [
|
|
9799
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__referrals", children: [
|
|
9800
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "afs__metric", children: currentValue }),
|
|
9801
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "afs__metric-label", children: referralsLabel })
|
|
9802
|
+
] }),
|
|
9803
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "afs__arrow", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ArrowIcon2, {}) }),
|
|
9804
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__slider-block", children: [
|
|
9805
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(TrackGradient, {}),
|
|
9806
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "afs__track-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__track", children: [
|
|
9807
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
9808
|
+
"div",
|
|
9809
|
+
{
|
|
9810
|
+
className: "afs__fill",
|
|
9811
|
+
style: { width: `${fillPercent}%` }
|
|
9812
|
+
}
|
|
9813
|
+
),
|
|
9814
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
9815
|
+
"div",
|
|
9816
|
+
{
|
|
9817
|
+
className: "afs__handle",
|
|
9818
|
+
style: { left: `${fillPercent}%` },
|
|
9819
|
+
"aria-hidden": "true"
|
|
9820
|
+
}
|
|
9821
|
+
),
|
|
9822
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
9823
|
+
"input",
|
|
9824
|
+
{
|
|
9825
|
+
type: "range",
|
|
9826
|
+
className: "afs__input",
|
|
9827
|
+
min,
|
|
9828
|
+
max,
|
|
9829
|
+
step,
|
|
9830
|
+
value: currentValue,
|
|
9831
|
+
"aria-label": sliderLabel,
|
|
9832
|
+
"aria-valuemin": min,
|
|
9833
|
+
"aria-valuemax": max,
|
|
9834
|
+
"aria-valuenow": currentValue,
|
|
9835
|
+
onChange: (event) => handleChange(Number(event.target.value))
|
|
9836
|
+
}
|
|
9837
|
+
)
|
|
9838
|
+
] }) }),
|
|
9839
|
+
/* @__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)) })
|
|
9840
|
+
] }),
|
|
9841
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__income", children: [
|
|
9842
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__income-value", children: [
|
|
9843
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "afs__metric", children: currencySymbol }),
|
|
9844
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "afs__metric", children: formatIncome(income) })
|
|
9845
|
+
] }),
|
|
9846
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "afs__metric-label afs__metric-label--right", children: incomeLabel })
|
|
9847
|
+
] })
|
|
9848
|
+
] }) }),
|
|
9849
|
+
disclaimer && /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "afs__disclaimer", children: [
|
|
9850
|
+
disclaimerIconSrc && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
9851
|
+
"img",
|
|
9852
|
+
{
|
|
9853
|
+
className: "afs__disclaimer-icon",
|
|
9854
|
+
src: disclaimerIconSrc,
|
|
9855
|
+
alt: disclaimerIconAlt,
|
|
9856
|
+
loading: "lazy",
|
|
9857
|
+
"aria-hidden": disclaimerIconAlt ? void 0 : true
|
|
9858
|
+
}
|
|
9859
|
+
),
|
|
9860
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("p", { className: "afs__disclaimer-text", children: disclaimer })
|
|
9861
|
+
] })
|
|
9862
|
+
] }) });
|
|
9863
|
+
};
|
|
8528
9864
|
// Annotate the CommonJS export names for ESM import in node:
|
|
8529
9865
|
0 && (module.exports = {
|
|
8530
9866
|
AVATAR_DATA,
|
|
8531
9867
|
Accordion,
|
|
9868
|
+
AffiliatesSlider,
|
|
8532
9869
|
ArticleHero,
|
|
8533
9870
|
ArticleSection,
|
|
8534
9871
|
AvatarGrid,
|
|
@@ -8543,15 +9880,18 @@ var ResourceBanner = ({
|
|
|
8543
9880
|
Chip,
|
|
8544
9881
|
ChipDropdown,
|
|
8545
9882
|
CoralBanner,
|
|
9883
|
+
CountryLinkGrid,
|
|
8546
9884
|
DEFAULT_AWARDS,
|
|
8547
9885
|
DEFAULT_CULTURE_CARDS,
|
|
8548
9886
|
DEFAULT_EXCHANGE_RATE_WS_URL,
|
|
8549
9887
|
DEFAULT_SYMBOLS_ENDPOINT,
|
|
8550
9888
|
DayNightTransition,
|
|
9889
|
+
DocumentChips,
|
|
8551
9890
|
DotLottieInView,
|
|
8552
9891
|
DownloadBadge,
|
|
8553
9892
|
DownloadBanner,
|
|
8554
9893
|
DynamicTable,
|
|
9894
|
+
EntityInfoSection,
|
|
8555
9895
|
FEATURE_AWARDS_TEXT_CONTENT,
|
|
8556
9896
|
FEATURE_BLOG_CATEGORIES_TEXT_CONTENT,
|
|
8557
9897
|
FEATURE_BLOG_TEXT_CONTENT,
|
|
@@ -8576,11 +9916,21 @@ var ResourceBanner = ({
|
|
|
8576
9916
|
Hero,
|
|
8577
9917
|
IMAGE_BANNER_CHIPS_DEFAULT_IMAGE,
|
|
8578
9918
|
ImageBanner,
|
|
9919
|
+
LanguageSelectModal,
|
|
8579
9920
|
Leaders,
|
|
8580
9921
|
Link,
|
|
9922
|
+
LinkModal,
|
|
8581
9923
|
LogoMarquee,
|
|
8582
9924
|
MasterPartner,
|
|
8583
9925
|
Navbar,
|
|
9926
|
+
OPTIONS_TYPES_ACCUMULATOR_CONTENT,
|
|
9927
|
+
OPTIONS_TYPES_DIGITAL_CONTENT,
|
|
9928
|
+
OPTIONS_TYPES_EU_MULTIPLIERS_CONTENT,
|
|
9929
|
+
OPTIONS_TYPES_MULTIPLIERS_CONTENT,
|
|
9930
|
+
OPTIONS_TYPES_PLACEHOLDER_ITEMS,
|
|
9931
|
+
OPTIONS_TYPES_TURBO_CONTENT,
|
|
9932
|
+
OPTIONS_TYPES_VANILLA_CONTENT,
|
|
9933
|
+
OptionsTypes,
|
|
8584
9934
|
PARALLAX_BANNER_TEXT_CONTENT,
|
|
8585
9935
|
Pagination,
|
|
8586
9936
|
ParallaxBanner,
|