@deriv-web-design/ui 0.1.25 → 0.1.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -122,7 +122,8 @@ __export(index_exports, {
122
122
  Tiers: () => Tiers,
123
123
  TradingCalculator: () => TradingCalculator,
124
124
  TradingCalculatorHowTo: () => TradingCalculatorHowTo,
125
- dayNightTransitionV2Preset: () => dayNightTransitionV2Preset
125
+ dayNightTransitionV2Preset: () => dayNightTransitionV2Preset,
126
+ isLottieSrc: () => isLottieSrc
126
127
  });
127
128
  module.exports = __toCommonJS(index_exports);
128
129
 
@@ -1290,7 +1291,7 @@ var FaqAccordion = ({
1290
1291
  open: openIndex === index,
1291
1292
  onToggle: handleToggle(index),
1292
1293
  showTopDivider: false,
1293
- showBottomDivider: true,
1294
+ showBottomDivider: index < items.length - 1,
1294
1295
  children: item.answer
1295
1296
  },
1296
1297
  `${item.question}-${index}`
@@ -2774,6 +2775,13 @@ function DotLottieInView({
2774
2775
  );
2775
2776
  }
2776
2777
 
2778
+ // components/DotLottieInView/lottie-src.ts
2779
+ function isLottieSrc(value) {
2780
+ if (!value) return false;
2781
+ if (/\.lottie(\?|#|$)/i.test(value)) return true;
2782
+ return /\/[^/?#]+\.json(\?|#|$)/i.test(value) && /lottie|cdn\.|website-files/i.test(value);
2783
+ }
2784
+
2777
2785
  // templates/FeatureScroll/FeatureScroll.tsx
2778
2786
  var import_jsx_runtime28 = require("react/jsx-runtime");
2779
2787
  var FEATURE_SCROLL_DATA = [
@@ -2782,42 +2790,42 @@ var FEATURE_SCROLL_DATA = [
2782
2790
  description: "Trade the most popular currency pairs with high leverage, tight spreads, and fast execution.",
2783
2791
  linkLabel: "Learn more",
2784
2792
  link: "/markets/forex",
2785
- mediaUrl: "https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a906489e5aadf94e501c4_Forex.lottie"
2793
+ mediaUrl: "/lottie/markets/forex.lottie"
2786
2794
  },
2787
2795
  {
2788
2796
  title: "Derived Indices",
2789
2797
  description: "Trade 24/7 on exclusive Synthetic and Derived Indices. Choose volatility levels that match your strategy.",
2790
2798
  linkLabel: "Learn more",
2791
2799
  link: "/markets/derived-indices/synthetic-indices",
2792
- mediaUrl: "https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a9064588b0d2709e7ceac_Derived%20Indices.lottie"
2800
+ mediaUrl: "/lottie/markets/derived-indices.lottie"
2793
2801
  },
2794
2802
  {
2795
2803
  title: "Stocks",
2796
2804
  description: "Trade global market leaders like Apple, Tesla, and NVIDIA.",
2797
2805
  linkLabel: "Learn more",
2798
2806
  link: "/markets/stocks",
2799
- mediaUrl: "https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a9064892f97175b724a9c_Stocks.lottie"
2807
+ mediaUrl: "/lottie/markets/stocks.lottie"
2800
2808
  },
2801
2809
  {
2802
2810
  title: "Commodities",
2803
2811
  description: "Trade gold, silver, oil, natural gas, sugar, and more.",
2804
2812
  linkLabel: "Learn more",
2805
2813
  link: "/markets/commodities",
2806
- mediaUrl: "https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a9064edd96a014a6092cf_Commodities.lottie"
2814
+ mediaUrl: "/lottie/markets/commodities.lottie"
2807
2815
  },
2808
2816
  {
2809
2817
  title: "Cryptos",
2810
2818
  description: "Trade round the clock on the volatility of cryptocurrencies like Bitcoin and Ethereum.",
2811
2819
  linkLabel: "Learn more",
2812
2820
  link: "/markets/cryptocurrencies",
2813
- mediaUrl: "https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a90647b8d9652a28b94e3_Crypto.lottie"
2821
+ mediaUrl: "/lottie/markets/crypto.lottie"
2814
2822
  },
2815
2823
  {
2816
2824
  title: "Stock Indices",
2817
2825
  description: "Trade offerings that track the top global stock indices.",
2818
2826
  linkLabel: "Learn more",
2819
2827
  link: "/markets/stock-indices",
2820
- mediaUrl: "https://cdn.prod.website-files.com/66fbaad381fa6866fa4991f3/675a9064f2c16e4e0732abfb_Stock%20Indices.lottie"
2828
+ mediaUrl: "/lottie/markets/stock-indices.lottie"
2821
2829
  }
2822
2830
  ];
2823
2831
  var ChevronRight2 = () => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
@@ -2848,7 +2856,7 @@ function mediaSrc(item) {
2848
2856
  function resolveMediaType(item) {
2849
2857
  if (item.mediaType) return item.mediaType;
2850
2858
  const src = mediaSrc(item);
2851
- return src?.split("?")[0].endsWith(".lottie") ? "lottie" : "image";
2859
+ return src && isLottieSrc(src) ? "lottie" : "image";
2852
2860
  }
2853
2861
  var MediaRenderer = ({ item, active, rootMargin, threshold }) => {
2854
2862
  const src = mediaSrc(item);
@@ -3597,6 +3605,18 @@ var CTABanner = ({
3597
3605
  var import_react17 = require("react");
3598
3606
  var import_framer_motion2 = require("framer-motion");
3599
3607
 
3608
+ // components/Navbar/languageGridVars.ts
3609
+ function resolveLanguageGridVars(itemCount, languageRows) {
3610
+ if (typeof languageRows === "number" && Number.isFinite(languageRows) && languageRows >= 1) {
3611
+ const rows = Math.floor(languageRows);
3612
+ return {
3613
+ "--lang-rows": rows,
3614
+ "--lang-cols": Math.ceil(itemCount / rows)
3615
+ };
3616
+ }
3617
+ return { "--lang-rows": Math.ceil(itemCount / 3) };
3618
+ }
3619
+
3600
3620
  // assets/icon-globe.svg
3601
3621
  var icon_globe_default = 'data:image/svg+xml,<svg width="16" height="24" viewBox="0 0 16 24" fill="none" xmlns="http://www.w3.org/2000/svg">%0A<g clip-path="url(%23clip0_8670_6187)">%0A<path d="M8 18.5C8.21875 18.5 8.84375 18.2812 9.46875 17C9.75 16.4375 10 15.7812 10.1562 15H5.8125C6 15.7812 6.21875 16.4375 6.5 17C7.15625 18.2812 7.75 18.5 8 18.5ZM5.5625 13.5H10.4062C10.4688 13.0312 10.5 12.5312 10.5 12C10.5 11.5 10.4688 11 10.4062 10.5H5.5625C5.5 11 5.5 11.5 5.5 12C5.5 12.5312 5.5 13.0312 5.5625 13.5ZM5.8125 9H10.1562C10 8.25 9.75 7.59375 9.46875 7.03125C8.84375 5.75 8.21875 5.5 8 5.5C7.75 5.5 7.15625 5.75 6.5 7.03125C6.21875 7.59375 6 8.25 5.8125 9ZM11.9062 10.5C11.9688 11 11.9688 11.5 11.9688 12C11.9688 12.5312 11.9688 13.0312 11.9062 13.5H14.3125C14.4375 13.0312 14.5 12.5312 14.5 12C14.5 11.5 14.4375 11 14.3125 10.5H11.9062ZM13.75 9C13.0938 7.71875 12 6.6875 10.6875 6.09375C11.125 6.90625 11.4688 7.90625 11.6875 9H13.75ZM4.28125 9C4.5 7.90625 4.84375 6.90625 5.28125 6.09375C3.96875 6.6875 2.875 7.71875 2.21875 9H4.28125ZM1.65625 10.5C1.5625 11 1.5 11.5 1.5 12C1.5 12.5312 1.53125 13.0312 1.65625 13.5H4.0625C4 13.0312 4 12.5312 4 12C4 11.5 4 11 4.0625 10.5H1.65625ZM10.6875 17.9375C12 17.3438 13.0938 16.3125 13.75 15H11.6875C11.4688 16.125 11.125 17.125 10.6875 17.9375ZM5.28125 17.9375C4.84375 17.125 4.5 16.125 4.28125 15H2.21875C2.875 16.3125 3.96875 17.3438 5.28125 17.9375ZM8 20C5.125 20 2.5 18.5 1.0625 16C-0.375 13.5312 -0.375 10.5 1.0625 8C2.5 5.53125 5.125 4 8 4C10.8438 4 13.4688 5.53125 14.9062 8C16.3438 10.5 16.3438 13.5312 14.9062 16C13.4688 18.5 10.8438 20 8 20Z" fill="%23181C25"/>%0A</g>%0A<defs>%0A<clipPath id="clip0_8670_6187">%0A<rect width="16" height="24" fill="white"/>%0A</clipPath>%0A</defs>%0A</svg>%0A';
3602
3622
 
@@ -3827,6 +3847,7 @@ var Navbar = ({
3827
3847
  languageLabel,
3828
3848
  onLanguageClick,
3829
3849
  languageItems,
3850
+ languageRows,
3830
3851
  activeLanguageCode,
3831
3852
  onLanguageSelect,
3832
3853
  className,
@@ -4027,7 +4048,10 @@ var Navbar = ({
4027
4048
  "div",
4028
4049
  {
4029
4050
  className: "navbar__lang-dropdown-grid",
4030
- style: { "--lang-rows": Math.ceil(languageItems.length / 3) },
4051
+ style: resolveLanguageGridVars(
4052
+ languageItems.length,
4053
+ languageRows
4054
+ ),
4031
4055
  children: languageItems.map((lang) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4032
4056
  "button",
4033
4057
  {
@@ -5029,15 +5053,89 @@ var TextScroll = ({ text, className }) => {
5029
5053
  var import_react21 = require("react");
5030
5054
  var import_jsx_runtime39 = require("react/jsx-runtime");
5031
5055
  var PLACEHOLDER_IMAGE3 = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69b9309379ac08e59ca8210a_1f3f555da9a5cbb13a6fe1bf0d5fe1b6_placeholder-image.webp";
5056
+ function safeHref(value) {
5057
+ if (!value) return null;
5058
+ if (value.startsWith("/") && !value.startsWith("//")) return value;
5059
+ try {
5060
+ const url = new URL(value);
5061
+ return url.protocol === "https:" ? value : null;
5062
+ } catch {
5063
+ return null;
5064
+ }
5065
+ }
5066
+ function safeLottieSrc(value) {
5067
+ const href = safeHref(value);
5068
+ if (!href || !isLottieSrc(href)) return null;
5069
+ return href;
5070
+ }
5071
+ function PlaybackGlyph({ playing }) {
5072
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("svg", { className: "smc__control-icon", viewBox: "0 0 64 64", "aria-hidden": "true", children: [
5073
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("circle", { className: "smc__control-disc", cx: "32", cy: "32", r: "32" }),
5074
+ playing ? /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
5075
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("rect", { className: "smc__control-glyph", x: "23", y: "21", width: "6", height: "22", rx: "2" }),
5076
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("rect", { className: "smc__control-glyph", x: "35", y: "21", width: "6", height: "22", rx: "2" })
5077
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5078
+ "path",
5079
+ {
5080
+ className: "smc__control-glyph",
5081
+ 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"
5082
+ }
5083
+ )
5084
+ ] });
5085
+ }
5086
+ function LottiePanel({ item, index, playing, onToggle }) {
5087
+ const src = safeLottieSrc(item.lottieSrc);
5088
+ const posterSrc = safeHref(item.lottiePosterUrl);
5089
+ const controlId = `smc-lottie-${index}-${item.title}`.replace(/[^a-zA-Z0-9_-]/g, "-").slice(0, 80);
5090
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "smc__lottie", children: [
5091
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { id: controlId, className: "smc__lottie-media", "aria-hidden": "true", children: src ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5092
+ DotLottieInView,
5093
+ {
5094
+ src,
5095
+ enabled: playing,
5096
+ loop: true,
5097
+ className: "smc__lottie-player",
5098
+ style: { alignItems: "stretch", justifyContent: "stretch" },
5099
+ poster: posterSrc ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("img", { src: posterSrc, alt: "", loading: "lazy", decoding: "async" }) : void 0
5100
+ }
5101
+ ) : null }),
5102
+ posterSrc && !playing ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5103
+ "img",
5104
+ {
5105
+ className: "smc__lottie-poster",
5106
+ src: posterSrc,
5107
+ alt: "",
5108
+ "aria-hidden": "true",
5109
+ loading: "lazy",
5110
+ decoding: "async"
5111
+ }
5112
+ ) : null,
5113
+ src ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5114
+ "button",
5115
+ {
5116
+ type: "button",
5117
+ className: `smc__playback-toggle${playing ? " smc__playback-toggle--playing" : ""}`,
5118
+ "aria-controls": controlId,
5119
+ "aria-pressed": playing,
5120
+ "aria-label": `${playing ? "Pause" : "Play"} ${item.title} animation`,
5121
+ onClick: onToggle,
5122
+ children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(PlaybackGlyph, { playing })
5123
+ }
5124
+ ) : null
5125
+ ] });
5126
+ }
5032
5127
  var StickyMarketCards = ({
5033
5128
  sectionTitle,
5034
5129
  sectionDescription,
5130
+ variant = "default",
5035
5131
  items,
5036
5132
  className,
5037
5133
  ...props
5038
5134
  }) => {
5039
5135
  const cardRefs = (0, import_react21.useRef)([]);
5040
5136
  const cardInnerRefs = (0, import_react21.useRef)([]);
5137
+ const [playing, setPlaying] = (0, import_react21.useState)({});
5138
+ const isLottie = variant === "lottie";
5041
5139
  (0, import_react21.useEffect)(() => {
5042
5140
  if (typeof window === "undefined") return;
5043
5141
  let rafId = 0;
@@ -5104,14 +5202,14 @@ var StickyMarketCards = ({
5104
5202
  return () => {
5105
5203
  window.removeEventListener("resize", syncHeights);
5106
5204
  };
5107
- }, [items.length]);
5205
+ }, [items.length, variant]);
5108
5206
  const n = items.length;
5109
5207
  const maxStack = 4;
5110
5208
  const baseIndex = Math.max(0, n - maxStack);
5111
5209
  return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5112
5210
  "section",
5113
5211
  {
5114
- className: ["smc", className].filter(Boolean).join(" "),
5212
+ className: ["smc", isLottie ? "smc--lottie" : null, className].filter(Boolean).join(" "),
5115
5213
  ...props,
5116
5214
  children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "smc__inner", children: [
5117
5215
  /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "smc__header-wrap", children: [
@@ -5140,10 +5238,11 @@ var StickyMarketCards = ({
5140
5238
  },
5141
5239
  className: [
5142
5240
  "smc__card-inner",
5143
- `smc__card-inner--${theme}`
5144
- ].join(" "),
5241
+ `smc__card-inner--${theme}`,
5242
+ isLottie ? "smc__card-inner--lottie" : null
5243
+ ].filter(Boolean).join(" "),
5145
5244
  children: [
5146
- /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "smc__card-bg", children: [
5245
+ !isLottie ? /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "smc__card-bg", children: [
5147
5246
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5148
5247
  "img",
5149
5248
  {
@@ -5162,11 +5261,37 @@ var StickyMarketCards = ({
5162
5261
  ].join(" ")
5163
5262
  }
5164
5263
  )
5165
- ] }),
5166
- /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "smc__card-content", children: [
5167
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "smc__card-title-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("h3", { className: "smc__card-title", children: item.title }) }),
5168
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "smc__card-desc-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("p", { className: "smc__card-desc", children: item.description }) })
5169
- ] })
5264
+ ] }) : null,
5265
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5266
+ "div",
5267
+ {
5268
+ className: [
5269
+ "smc__card-content",
5270
+ isLottie ? "smc__card-content--lottie" : null
5271
+ ].filter(Boolean).join(" "),
5272
+ children: isLottie ? /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
5273
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5274
+ LottiePanel,
5275
+ {
5276
+ item,
5277
+ index: i,
5278
+ playing: Boolean(playing[i]),
5279
+ onToggle: () => setPlaying((prev) => ({
5280
+ ...prev,
5281
+ [i]: !prev[i]
5282
+ }))
5283
+ }
5284
+ ),
5285
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "smc__card-text", children: [
5286
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("h3", { className: "smc__card-title", children: item.title }),
5287
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("p", { className: "smc__card-desc", children: item.description })
5288
+ ] })
5289
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
5290
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "smc__card-title-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("h3", { className: "smc__card-title", children: item.title }) }),
5291
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "smc__card-desc-wrap", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("p", { className: "smc__card-desc", children: item.description }) })
5292
+ ] })
5293
+ }
5294
+ )
5170
5295
  ]
5171
5296
  }
5172
5297
  )
@@ -8576,7 +8701,7 @@ var OPTIONS_TYPES_PLACEHOLDER_ITEMS = [
8576
8701
  platforms: [{ label: "Platform" }]
8577
8702
  }
8578
8703
  ];
8579
- function safeHref(value) {
8704
+ function safeHref2(value) {
8580
8705
  if (!value) return null;
8581
8706
  if (value.startsWith("/") && !value.startsWith("//")) return value;
8582
8707
  try {
@@ -8586,8 +8711,8 @@ function safeHref(value) {
8586
8711
  return null;
8587
8712
  }
8588
8713
  }
8589
- function safeLottieSrc(value) {
8590
- const href = safeHref(value);
8714
+ function safeLottieSrc2(value) {
8715
+ const href = safeHref2(value);
8591
8716
  if (!href) return null;
8592
8717
  try {
8593
8718
  const pathname = href.startsWith("/") ? href : new URL(href).pathname;
@@ -8619,7 +8744,7 @@ var iconPaths = {
8619
8744
  ]
8620
8745
  };
8621
8746
  function MetaIcon({ icon, iconUrl }) {
8622
- const imageSrc = safeHref(iconUrl);
8747
+ const imageSrc = safeHref2(iconUrl);
8623
8748
  if (imageSrc) {
8624
8749
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8625
8750
  "img",
@@ -8643,7 +8768,7 @@ function MetaIcon({ icon, iconUrl }) {
8643
8768
  }
8644
8769
  function MetaList({ items = [] }) {
8645
8770
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("ul", { className: "ot__meta-list", children: items.map((item, index) => {
8646
- const href = safeHref(item.href);
8771
+ const href = safeHref2(item.href);
8647
8772
  const content = /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
8648
8773
  /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(MetaIcon, { icon: item.icon, iconUrl: item.iconUrl }),
8649
8774
  /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { children: item.label })
@@ -8651,7 +8776,7 @@ function MetaList({ items = [] }) {
8651
8776
  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
8777
  }) });
8653
8778
  }
8654
- function PlaybackGlyph({ playing }) {
8779
+ function PlaybackGlyph2({ playing }) {
8655
8780
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("svg", { className: "ot__control-icon", viewBox: "0 0 64 64", "aria-hidden": "true", children: [
8656
8781
  /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("circle", { className: "ot__control-disc", cx: "32", cy: "32", r: "32" }),
8657
8782
  playing ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
@@ -8672,8 +8797,8 @@ function AnimationCard({
8672
8797
  playing,
8673
8798
  onToggle
8674
8799
  }) {
8675
- const src = safeLottieSrc(animation.src);
8676
- const posterSrc = safeHref(animation.posterUrl);
8800
+ const src = safeLottieSrc2(animation.src);
8801
+ const posterSrc = safeHref2(animation.posterUrl);
8677
8802
  const controlId = `ot-animation-${itemId}-${animation.id ?? animation.label}`.replace(/[^a-zA-Z0-9_-]/g, "-");
8678
8803
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "ot__animation-card", children: [
8679
8804
  /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { id: controlId, className: "ot__animation-media", "aria-hidden": "true", children: src ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
@@ -8705,7 +8830,7 @@ function AnimationCard({
8705
8830
  "aria-pressed": playing,
8706
8831
  "aria-label": `${playing ? "Pause" : "Play"} ${animation.label} animation`,
8707
8832
  onClick: onToggle,
8708
- children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(PlaybackGlyph, { playing })
8833
+ children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(PlaybackGlyph2, { playing })
8709
8834
  }
8710
8835
  ) : null
8711
8836
  ] });
@@ -8834,7 +8959,7 @@ function TogglePanel({
8834
8959
  onKeyDown: onSwitchKeyDown,
8835
8960
  children: animations.map((animation, index) => {
8836
8961
  const isActive = index === safeIndex;
8837
- const iconUrl = safeHref(animation.iconUrl);
8962
+ const iconUrl = safeHref2(animation.iconUrl);
8838
8963
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8839
8964
  "button",
8840
8965
  {
@@ -9005,8 +9130,8 @@ function OptionsTypes({
9005
9130
  }
9006
9131
 
9007
9132
  // templates/OptionsTypes/OptionsTypes.data.ts
9008
- var WEBFLOW_CDN = "https://cdn.prod.website-files.com/661e6e1e01dd2f56adc6d370";
9009
9133
  var WEBFLOW_ICON_CDN = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c2b7";
9134
+ var LOTTIE = "/lottie/trade-clips";
9010
9135
  var FOREX = {
9011
9136
  label: "Forex",
9012
9137
  icon: "forex",
@@ -9060,12 +9185,12 @@ var OPTIONS_TYPES_DIGITAL_CONTENT = {
9060
9185
  {
9061
9186
  id: "rise",
9062
9187
  label: "Rise",
9063
- src: `${WEBFLOW_CDN}/6630e43019db0934b75c5105_Web%20Trade%20Clip%20-%20UpDown%20(Rise).lottie`
9188
+ src: `${LOTTIE}/rise.lottie`
9064
9189
  },
9065
9190
  {
9066
9191
  id: "fall",
9067
9192
  label: "Fall",
9068
- src: `${WEBFLOW_CDN}/6630e42f22255a766c2af8aa_Web%20Trade%20Clip%20-%20UpDown%20(Fall).lottie`
9193
+ src: `${LOTTIE}/fall.lottie`
9069
9194
  }
9070
9195
  ],
9071
9196
  markets: DIGITAL_MARKETS,
@@ -9079,12 +9204,12 @@ var OPTIONS_TYPES_DIGITAL_CONTENT = {
9079
9204
  {
9080
9205
  id: "higher",
9081
9206
  label: "Higher",
9082
- src: `${WEBFLOW_CDN}/6630e42f93f0aa3f60d68dd2_Web%20Trade%20Clip%20-%20UpDown%20(Higher).lottie`
9207
+ src: `${LOTTIE}/higher.lottie`
9083
9208
  },
9084
9209
  {
9085
9210
  id: "lower",
9086
9211
  label: "Lower",
9087
- src: `${WEBFLOW_CDN}/6630e42f8922eb31fcbf275f_Web%20Trade%20Clip%20-%20%20UpDown%20(Lower).lottie`
9212
+ src: `${LOTTIE}/lower.lottie`
9088
9213
  }
9089
9214
  ],
9090
9215
  markets: DIGITAL_MARKETS,
@@ -9098,12 +9223,12 @@ var OPTIONS_TYPES_DIGITAL_CONTENT = {
9098
9223
  {
9099
9224
  id: "touch",
9100
9225
  label: "Touch",
9101
- src: `${WEBFLOW_CDN}/6630e3a120a6dcbe6ab22239_Web%20Trade%20Clip%20-%20TouchNoTouch%20(Touch).lottie`
9226
+ src: `${LOTTIE}/touch.lottie`
9102
9227
  },
9103
9228
  {
9104
9229
  id: "no-touch",
9105
9230
  label: "No Touch",
9106
- src: `${WEBFLOW_CDN}/6630e3a158064e5c58362ddd_Web%20Trade%20Clip%20-%20TouchNoTouch%20(No%20Touch).lottie`
9231
+ src: `${LOTTIE}/no-touch.lottie`
9107
9232
  }
9108
9233
  ],
9109
9234
  markets: DIGITAL_MARKETS,
@@ -9123,7 +9248,7 @@ var OPTIONS_TYPES_ACCUMULATOR_CONTENT = {
9123
9248
  {
9124
9249
  id: "accumulator",
9125
9250
  label: "Accumulator",
9126
- src: `${WEBFLOW_CDN}/6630e0fff230226872ee39ed_Web%20Trade%20Clip%20-%20Accumulators%20(Accumulators).lottie`
9251
+ src: `${LOTTIE}/accumulator.lottie`
9127
9252
  }
9128
9253
  ],
9129
9254
  markets: [DERIVED_INDICES],
@@ -9143,12 +9268,12 @@ var OPTIONS_TYPES_VANILLA_CONTENT = {
9143
9268
  {
9144
9269
  id: "call",
9145
9270
  label: "Call",
9146
- src: `${WEBFLOW_CDN}/6630e3c100c107af706a72f6_Web%20Trade%20Clip%20-%20Vanilla%20(Call).lottie`
9271
+ src: `${LOTTIE}/vanilla-call.lottie`
9147
9272
  },
9148
9273
  {
9149
9274
  id: "put",
9150
9275
  label: "Put",
9151
- src: `${WEBFLOW_CDN}/6630e3c2f230226872f0d58d_Web%20Trade%20Clip%20-%20Vanilla%20(Put).lottie`
9276
+ src: `${LOTTIE}/vanilla-put.lottie`
9152
9277
  }
9153
9278
  ],
9154
9279
  markets: [DERIVED_INDICES],
@@ -9161,19 +9286,19 @@ var OPTIONS_TYPES_TURBO_CONTENT = {
9161
9286
  heading: "How do Turbo Options work",
9162
9287
  items: [
9163
9288
  {
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.",
9289
+ id: "turbo-long-short",
9290
+ title: "Turbo Long/Short",
9291
+ description: "Decide whether the market price will stay above (Long) or drop below (Short) 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
9292
  animations: [
9168
9293
  {
9169
- id: "up",
9170
- label: "Up",
9171
- src: `${WEBFLOW_CDN}/664aff68ca9411ee61c84443_Web%20Trade%20Clip%20(Up).lottie`
9294
+ id: "long",
9295
+ label: "Long",
9296
+ src: `${LOTTIE}/turbo-long.lottie`
9172
9297
  },
9173
9298
  {
9174
- id: "down",
9175
- label: "Down",
9176
- src: `${WEBFLOW_CDN}/664aff6801c5297f6a1f6e6c_Web%20Trade%20Clip%20(Down).lottie`
9299
+ id: "short",
9300
+ label: "Short",
9301
+ src: `${LOTTIE}/turbo-short.lottie`
9177
9302
  }
9178
9303
  ],
9179
9304
  markets: [DERIVED_INDICES],
@@ -9193,12 +9318,12 @@ var OPTIONS_TYPES_MULTIPLIERS_CONTENT = {
9193
9318
  {
9194
9319
  id: "up",
9195
9320
  label: "Up",
9196
- src: `${WEBFLOW_CDN}/6630e305e7f044e7deae8a90_Web%20Trade%20Clip%20-%20Multipliers%20(Up).lottie`
9321
+ src: `${LOTTIE}/multipliers-up.lottie`
9197
9322
  },
9198
9323
  {
9199
9324
  id: "down",
9200
9325
  label: "Down",
9201
- src: `${WEBFLOW_CDN}/6630e3055be526fd74f10190_Web%20Trade%20Clip%20-%20Multipliers%20(Down).lottie`
9326
+ src: `${LOTTIE}/multipliers-down.lottie`
9202
9327
  }
9203
9328
  ],
9204
9329
  markets: [DERIVED_INDICES, FOREX, CRYPTOCURRENCIES, COMMODITIES],
@@ -9218,13 +9343,13 @@ var OPTIONS_TYPES_EU_MULTIPLIERS_CONTENT = {
9218
9343
  {
9219
9344
  id: "up",
9220
9345
  label: "Up",
9221
- src: `${WEBFLOW_CDN}/6630e305e7f044e7deae8a90_Web%20Trade%20Clip%20-%20Multipliers%20(Up).lottie`,
9346
+ src: `${LOTTIE}/multipliers-up.lottie`,
9222
9347
  iconUrl: `${WEBFLOW_ICON_CDN}/68e4859893e33d078096e151_66585fe0e1dc7e70cc75dec1_multipliers-up-sm.svg`
9223
9348
  },
9224
9349
  {
9225
9350
  id: "down",
9226
9351
  label: "Down",
9227
- src: `${WEBFLOW_CDN}/6630e3055be526fd74f10190_Web%20Trade%20Clip%20-%20Multipliers%20(Down).lottie`,
9352
+ src: `${LOTTIE}/multipliers-down.lottie`,
9228
9353
  iconUrl: `${WEBFLOW_ICON_CDN}/68e4859893e33d078096e155_66585fe0e1dc7e70cc75dee8_multipliers-down-sm.svg`
9229
9354
  }
9230
9355
  ]
@@ -9955,6 +10080,7 @@ var AffiliatesSlider = ({
9955
10080
  Tiers,
9956
10081
  TradingCalculator,
9957
10082
  TradingCalculatorHowTo,
9958
- dayNightTransitionV2Preset
10083
+ dayNightTransitionV2Preset,
10084
+ isLottieSrc
9959
10085
  });
9960
10086
  //# sourceMappingURL=index.js.map