@deriv-web-design/ui 0.1.14 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -47,6 +47,7 @@ var Link = ({
47
47
  colorScheme = "coral",
48
48
  label,
49
49
  icon,
50
+ iconPosition = "left",
50
51
  showChevron = true,
51
52
  disabled = false,
52
53
  children,
@@ -78,8 +79,9 @@ var Link = ({
78
79
  onClick: handleClick,
79
80
  ...props,
80
81
  children: [
81
- hasIcon && /* @__PURE__ */ jsx2("span", { className: "icon", children: icon }),
82
+ hasIcon && iconPosition === "left" && /* @__PURE__ */ jsx2("span", { className: "icon", children: icon }),
82
83
  /* @__PURE__ */ jsx2("span", { className: "label", children: label ?? children }),
84
+ hasIcon && iconPosition === "right" && /* @__PURE__ */ jsx2("span", { className: "icon", children: icon }),
83
85
  !hasIcon && showChevron && /* @__PURE__ */ jsx2("span", { className: "chevron", "aria-hidden": "true", children: /* @__PURE__ */ jsx2(ChevronIcon, {}) })
84
86
  ]
85
87
  }
@@ -5278,6 +5280,34 @@ var Leaders = AvatarGrid;
5278
5280
 
5279
5281
  // templates/ImageBanner/ImageBanner.tsx
5280
5282
  import { jsx as jsx43, jsxs as jsxs39 } from "react/jsx-runtime";
5283
+ var DEFAULT_CHIPS = [
5284
+ "Dynamic ads",
5285
+ "AI insights",
5286
+ "Performance tracking",
5287
+ "Events"
5288
+ ];
5289
+ var IMAGE_BANNER_CHIPS_DEFAULT_IMAGE = "https://cdn.prod.website-files.com/68da5c86c91c54f39c86c28a/69a13cf79748b347527dc74d_tier-cover.webp";
5290
+ var ChipCheckIcon = () => /* @__PURE__ */ jsx43(
5291
+ "svg",
5292
+ {
5293
+ className: "image-banner__chip-icon",
5294
+ width: "11",
5295
+ height: "12",
5296
+ viewBox: "0 0 11 18",
5297
+ fill: "none",
5298
+ xmlns: "http://www.w3.org/2000/svg",
5299
+ "aria-hidden": "true",
5300
+ focusable: "false",
5301
+ children: /* @__PURE__ */ jsx43(
5302
+ "path",
5303
+ {
5304
+ d: "M10.5156 5.98438C10.8203 6.26562 10.8203 6.75781 10.5156 7.03906L4.51562 13.0391C4.23438 13.3438 3.74219 13.3438 3.46094 13.0391L0.460938 10.0391C0.15625 9.75781 0.15625 9.26562 0.460938 8.98438C0.742188 8.67969 1.23438 8.67969 1.51562 8.98438L4 11.4453L9.46094 5.98438C9.74219 5.67969 10.2344 5.67969 10.5156 5.98438Z",
5305
+ fill: "currentColor",
5306
+ fillOpacity: "0.88"
5307
+ }
5308
+ )
5309
+ }
5310
+ );
5281
5311
  var ImageBanner = ({
5282
5312
  variant = "split-left",
5283
5313
  title = "Join our global community",
@@ -5285,16 +5315,25 @@ var ImageBanner = ({
5285
5315
  ctaLabel = "Trader's Hub",
5286
5316
  ctaHref,
5287
5317
  onCtaClick,
5318
+ chips = DEFAULT_CHIPS,
5288
5319
  imageUrl,
5289
5320
  imageAlt = "",
5290
5321
  className,
5291
5322
  ...props
5292
5323
  }) => {
5293
5324
  const isFullBg = variant === "full-bg-left" || variant === "full-bg-right";
5325
+ const isChips = variant === "chips-left" || variant === "chips-right";
5326
+ const showCta = !isChips && Boolean(ctaLabel);
5327
+ const visibleChips = isChips ? chips.filter((label) => label.trim().length > 0) : [];
5328
+ const resolvedImageUrl = imageUrl ?? (isChips ? IMAGE_BANNER_CHIPS_DEFAULT_IMAGE : void 0);
5294
5329
  return /* @__PURE__ */ jsx43(
5295
5330
  "section",
5296
5331
  {
5297
- className: ["image-banner", className].filter(Boolean).join(" "),
5332
+ className: [
5333
+ "image-banner",
5334
+ isChips ? "image-banner--chips" : "",
5335
+ className
5336
+ ].filter(Boolean).join(" "),
5298
5337
  ...props,
5299
5338
  children: /* @__PURE__ */ jsxs39(
5300
5339
  "div",
@@ -5304,11 +5343,11 @@ var ImageBanner = ({
5304
5343
  `image-banner__inner--${variant}`
5305
5344
  ].join(" "),
5306
5345
  children: [
5307
- isFullBg && imageUrl && /* @__PURE__ */ jsxs39("div", { className: "image-banner__bg-image-wrapper", children: [
5346
+ isFullBg && resolvedImageUrl && /* @__PURE__ */ jsxs39("div", { className: "image-banner__bg-image-wrapper", children: [
5308
5347
  /* @__PURE__ */ jsx43(
5309
5348
  "img",
5310
5349
  {
5311
- src: imageUrl,
5350
+ src: resolvedImageUrl,
5312
5351
  alt: imageAlt,
5313
5352
  className: "image-banner__bg-image",
5314
5353
  loading: "lazy"
@@ -5319,7 +5358,11 @@ var ImageBanner = ({
5319
5358
  /* @__PURE__ */ jsxs39("div", { className: "image-banner__content", children: [
5320
5359
  /* @__PURE__ */ jsx43("h2", { className: "image-banner__title", children: title }),
5321
5360
  description && /* @__PURE__ */ jsx43("p", { className: "image-banner__description", children: description }),
5322
- ctaLabel && /* @__PURE__ */ jsx43("div", { className: "image-banner__actions", children: /* @__PURE__ */ jsx43(
5361
+ visibleChips.length > 0 && /* @__PURE__ */ jsx43("ul", { className: "image-banner__chips", "aria-label": "Features", children: visibleChips.map((label) => /* @__PURE__ */ jsxs39("li", { className: "image-banner__chip", children: [
5362
+ /* @__PURE__ */ jsx43(ChipCheckIcon, {}),
5363
+ /* @__PURE__ */ jsx43("span", { className: "image-banner__chip-label", children: label })
5364
+ ] }, label)) }),
5365
+ showCta && /* @__PURE__ */ jsx43("div", { className: "image-banner__actions", children: /* @__PURE__ */ jsx43(
5323
5366
  Link,
5324
5367
  {
5325
5368
  colorScheme: "coral",
@@ -5331,15 +5374,24 @@ var ImageBanner = ({
5331
5374
  }
5332
5375
  ) })
5333
5376
  ] }),
5334
- !isFullBg && imageUrl && /* @__PURE__ */ jsx43("div", { className: "image-banner__image-wrapper", children: /* @__PURE__ */ jsx43(
5335
- "img",
5336
- {
5337
- src: imageUrl,
5338
- alt: imageAlt,
5339
- className: "image-banner__image",
5340
- loading: "lazy"
5341
- }
5342
- ) })
5377
+ !isFullBg && resolvedImageUrl && /* @__PURE__ */ jsxs39("div", { className: "image-banner__image-wrapper", children: [
5378
+ /* @__PURE__ */ jsx43(
5379
+ "img",
5380
+ {
5381
+ src: resolvedImageUrl,
5382
+ alt: imageAlt,
5383
+ className: "image-banner__image",
5384
+ loading: "lazy"
5385
+ }
5386
+ ),
5387
+ isChips && /* @__PURE__ */ jsx43(
5388
+ "div",
5389
+ {
5390
+ className: "image-banner__image-fade",
5391
+ "aria-hidden": "true"
5392
+ }
5393
+ )
5394
+ ] })
5343
5395
  ]
5344
5396
  }
5345
5397
  )
@@ -8019,6 +8071,248 @@ var FeatureOffices = ({
8019
8071
  /* @__PURE__ */ jsx58("div", { className: "fo-grid", children: filteredOffices.map((office, index) => /* @__PURE__ */ jsx58(OfficeCard, { linkText, office }, `${office.city}-${index}`)) })
8020
8072
  ] }) });
8021
8073
  };
8074
+
8075
+ // templates/Tiers/Tiers.tsx
8076
+ import { jsx as jsx59, jsxs as jsxs55 } from "react/jsx-runtime";
8077
+ var DEFAULT_ACCENTS = ["bronze", "silver", "gold", "platinum"];
8078
+ var resolveAccent = (tier, index) => tier.accent ?? DEFAULT_ACCENTS[index] ?? "bronze";
8079
+ var Tiers = ({
8080
+ title,
8081
+ description,
8082
+ tiers,
8083
+ showLink = false,
8084
+ linkText = "Learn more about partner tiers",
8085
+ linkHref,
8086
+ onLinkClick
8087
+ }) => {
8088
+ return /* @__PURE__ */ jsx59("section", { className: "tiers", children: /* @__PURE__ */ jsxs55("div", { className: "tiers__container", children: [
8089
+ /* @__PURE__ */ jsxs55("header", { className: "tiers__header", children: [
8090
+ /* @__PURE__ */ jsx59("h2", { className: "tiers__title", children: title }),
8091
+ description && /* @__PURE__ */ jsx59("p", { className: "tiers__description", children: description })
8092
+ ] }),
8093
+ /* @__PURE__ */ jsx59("ol", { className: "tiers__list", children: tiers.map((tier, index) => {
8094
+ const accent = resolveAccent(tier, index);
8095
+ return /* @__PURE__ */ jsx59(
8096
+ "li",
8097
+ {
8098
+ className: `tiers__item tiers__item--${accent}`,
8099
+ children: /* @__PURE__ */ jsxs55("div", { className: "tiers__shell", children: [
8100
+ /* @__PURE__ */ jsxs55("div", { className: "tiers__icon-row", children: [
8101
+ /* @__PURE__ */ jsx59(
8102
+ "span",
8103
+ {
8104
+ className: "tiers__line tiers__line--left",
8105
+ "aria-hidden": "true"
8106
+ }
8107
+ ),
8108
+ /* @__PURE__ */ jsx59("div", { className: "tiers__icon-wrap", children: /* @__PURE__ */ jsx59(
8109
+ "img",
8110
+ {
8111
+ src: tier.icon,
8112
+ alt: tier.iconAlt ?? tier.name,
8113
+ className: "tiers__icon",
8114
+ width: 64,
8115
+ height: 64,
8116
+ loading: "lazy"
8117
+ }
8118
+ ) }),
8119
+ /* @__PURE__ */ jsx59(
8120
+ "span",
8121
+ {
8122
+ className: "tiers__line tiers__line--right",
8123
+ "aria-hidden": "true"
8124
+ }
8125
+ )
8126
+ ] }),
8127
+ /* @__PURE__ */ jsxs55("div", { className: "tiers__heading", children: [
8128
+ /* @__PURE__ */ jsx59("h3", { className: "tiers__name", children: tier.name }),
8129
+ /* @__PURE__ */ jsx59("p", { className: "tiers__status", children: tier.status })
8130
+ ] }),
8131
+ /* @__PURE__ */ jsxs55("div", { className: "tiers__card", children: [
8132
+ /* @__PURE__ */ jsx59("p", { className: "tiers__card-title", children: tier.title }),
8133
+ /* @__PURE__ */ jsx59("p", { className: "tiers__card-description", children: tier.description })
8134
+ ] }),
8135
+ tier.requirement && /* @__PURE__ */ jsx59("p", { className: "tiers__requirement", children: tier.requirement })
8136
+ ] })
8137
+ },
8138
+ tier.name
8139
+ );
8140
+ }) }),
8141
+ showLink && /* @__PURE__ */ jsx59("div", { className: "tiers__footer", children: /* @__PURE__ */ jsx59(
8142
+ Link,
8143
+ {
8144
+ colorScheme: "coral",
8145
+ label: linkText,
8146
+ href: linkHref,
8147
+ onClick: onLinkClick
8148
+ }
8149
+ ) })
8150
+ ] }) });
8151
+ };
8152
+
8153
+ // templates/PartnersPayout/PartnersPayout.tsx
8154
+ import { jsx as jsx60, jsxs as jsxs56 } from "react/jsx-runtime";
8155
+ var PartnersPayout = ({
8156
+ title,
8157
+ period,
8158
+ payouts,
8159
+ imageUrl,
8160
+ imageAlt = "",
8161
+ className,
8162
+ ...props
8163
+ }) => /* @__PURE__ */ jsx60(
8164
+ "section",
8165
+ {
8166
+ className: ["partners-payout", className].filter(Boolean).join(" "),
8167
+ ...props,
8168
+ children: /* @__PURE__ */ jsxs56("div", { className: "partners-payout__container", children: [
8169
+ /* @__PURE__ */ jsxs56("div", { className: "partners-payout__content", children: [
8170
+ /* @__PURE__ */ jsxs56("header", { className: "partners-payout__header", children: [
8171
+ /* @__PURE__ */ jsx60("h2", { className: "partners-payout__title", children: title }),
8172
+ /* @__PURE__ */ jsx60("p", { className: "partners-payout__period", children: period })
8173
+ ] }),
8174
+ /* @__PURE__ */ jsx60("ul", { className: "partners-payout__grid", children: payouts.map((payout, index) => /* @__PURE__ */ jsxs56(
8175
+ "li",
8176
+ {
8177
+ className: "partners-payout__item",
8178
+ children: [
8179
+ /* @__PURE__ */ jsx60("span", { className: "partners-payout__region", children: payout.region }),
8180
+ /* @__PURE__ */ jsx60("span", { className: "partners-payout__amount", children: payout.amount })
8181
+ ]
8182
+ },
8183
+ `${payout.region}-${index}`
8184
+ )) })
8185
+ ] }),
8186
+ /* @__PURE__ */ jsx60(
8187
+ "img",
8188
+ {
8189
+ className: "partners-payout__image",
8190
+ src: imageUrl,
8191
+ alt: imageAlt,
8192
+ loading: "lazy"
8193
+ }
8194
+ )
8195
+ ] })
8196
+ }
8197
+ );
8198
+
8199
+ // templates/MasterPartner/MasterPartner.tsx
8200
+ import { jsx as jsx61, jsxs as jsxs57 } from "react/jsx-runtime";
8201
+ var MasterPartner = ({
8202
+ title,
8203
+ description,
8204
+ note,
8205
+ closingText,
8206
+ ctaLabel,
8207
+ ctaHref,
8208
+ onCtaClick,
8209
+ image,
8210
+ imageAlt = "",
8211
+ steps
8212
+ }) => {
8213
+ const ctaButton = /* @__PURE__ */ jsx61(Button, { colorScheme: "coral", variant: "primary", label: ctaLabel, onClick: onCtaClick });
8214
+ return /* @__PURE__ */ jsx61("section", { className: "master-partner", children: /* @__PURE__ */ jsxs57("div", { className: "master-partner__container", children: [
8215
+ /* @__PURE__ */ jsxs57("div", { className: "master-partner__top", children: [
8216
+ /* @__PURE__ */ jsxs57("div", { className: "master-partner__content", children: [
8217
+ /* @__PURE__ */ jsx61("h2", { className: "master-partner__title", children: title }),
8218
+ /* @__PURE__ */ jsxs57("div", { className: "master-partner__copy", children: [
8219
+ /* @__PURE__ */ jsx61("p", { className: "master-partner__paragraph", children: description }),
8220
+ note && /* @__PURE__ */ jsxs57("p", { className: "master-partner__paragraph", children: [
8221
+ /* @__PURE__ */ jsx61("strong", { children: note.label }),
8222
+ " ",
8223
+ note.text
8224
+ ] }),
8225
+ closingText && /* @__PURE__ */ jsx61("p", { className: "master-partner__paragraph", children: closingText })
8226
+ ] }),
8227
+ ctaLabel && /* @__PURE__ */ jsx61("div", { className: "master-partner__cta", children: ctaHref ? /* @__PURE__ */ jsx61("a", { href: ctaHref, children: ctaButton }) : ctaButton })
8228
+ ] }),
8229
+ /* @__PURE__ */ jsx61("div", { className: "master-partner__image-wrapper", children: /* @__PURE__ */ jsx61(
8230
+ "img",
8231
+ {
8232
+ className: "master-partner__image",
8233
+ src: image,
8234
+ alt: imageAlt,
8235
+ loading: "lazy"
8236
+ }
8237
+ ) })
8238
+ ] }),
8239
+ /* @__PURE__ */ jsx61("ol", { className: "master-partner__steps", children: steps.map((step, index) => /* @__PURE__ */ jsxs57("li", { className: "master-partner__step", children: [
8240
+ /* @__PURE__ */ jsx61(
8241
+ "img",
8242
+ {
8243
+ className: "master-partner__step-icon",
8244
+ src: step.icon,
8245
+ alt: step.iconAlt ?? "",
8246
+ "aria-hidden": "true",
8247
+ width: 32,
8248
+ height: 32,
8249
+ loading: "lazy"
8250
+ }
8251
+ ),
8252
+ /* @__PURE__ */ jsx61("p", { className: "master-partner__step-description", children: step.description })
8253
+ ] }, index)) })
8254
+ ] }) });
8255
+ };
8256
+
8257
+ // templates/ResourceBanner/ResourceBanner.tsx
8258
+ import { jsx as jsx62, jsxs as jsxs58 } from "react/jsx-runtime";
8259
+ var DEFAULT_LINKS = [{ label: "Learn more", href: "#" }];
8260
+ var RESOURCE_BANNER_DERIV_CONTENT = {
8261
+ title: "Learn more about staying safe",
8262
+ description: "Read our guide on secure and responsible trading for more on protecting your account.",
8263
+ links: [
8264
+ {
8265
+ id: "responsible",
8266
+ label: "Secure and responsible trading",
8267
+ href: "/responsible",
8268
+ external: true
8269
+ }
8270
+ ]
8271
+ };
8272
+ var ExternalLinkIcon2 = () => /* @__PURE__ */ jsx62("svg", { viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", focusable: "false", children: /* @__PURE__ */ jsx62(
8273
+ "path",
8274
+ {
8275
+ d: "M4.5 11.5 11.5 4.5M5.5 4.5h6v6",
8276
+ stroke: "currentColor",
8277
+ strokeWidth: "1.75",
8278
+ strokeLinecap: "round",
8279
+ strokeLinejoin: "round"
8280
+ }
8281
+ ) });
8282
+ var ResourceBanner = ({
8283
+ title = "Section title goes here",
8284
+ description = "Explain how this specific feature helps your user.",
8285
+ links,
8286
+ headingLevel: HeadingTag = "h2",
8287
+ className,
8288
+ ...props
8289
+ }) => {
8290
+ const resolvedLinks = links && links.length > 0 ? links : DEFAULT_LINKS;
8291
+ const rootClass = ["rsb", className].filter(Boolean).join(" ");
8292
+ return /* @__PURE__ */ jsx62("section", { className: rootClass, ...props, children: /* @__PURE__ */ jsx62("div", { className: "rsb__inner", children: /* @__PURE__ */ jsx62("div", { className: "rsb__card", children: /* @__PURE__ */ jsxs58("div", { className: "rsb__grid", children: [
8293
+ /* @__PURE__ */ jsxs58("div", { className: "rsb__content", children: [
8294
+ /* @__PURE__ */ jsx62(HeadingTag, { className: "rsb__title", children: title }),
8295
+ description && /* @__PURE__ */ jsx62("p", { className: "rsb__description", children: description })
8296
+ ] }),
8297
+ /* @__PURE__ */ jsx62("ul", { className: "rsb__links", children: resolvedLinks.map((link, i) => {
8298
+ const isExternal = link.external ?? true;
8299
+ return /* @__PURE__ */ jsx62("li", { className: "rsb__links-item", children: /* @__PURE__ */ jsx62(
8300
+ Link,
8301
+ {
8302
+ className: "rsb__link",
8303
+ colorScheme: "white",
8304
+ href: link.href,
8305
+ label: link.label,
8306
+ icon: isExternal ? /* @__PURE__ */ jsx62(ExternalLinkIcon2, {}) : void 0,
8307
+ iconPosition: "right",
8308
+ showChevron: !isExternal,
8309
+ target: isExternal ? "_blank" : void 0,
8310
+ rel: isExternal ? "noopener noreferrer" : void 0
8311
+ }
8312
+ ) }, link.id ?? i);
8313
+ }) })
8314
+ ] }) }) }) });
8315
+ };
8022
8316
  export {
8023
8317
  AVATAR_DATA,
8024
8318
  Accordion,
@@ -8067,15 +8361,20 @@ export {
8067
8361
  HelpCentreCategories,
8068
8362
  HelpCentreSubCategories,
8069
8363
  Hero,
8364
+ IMAGE_BANNER_CHIPS_DEFAULT_IMAGE,
8070
8365
  ImageBanner,
8071
8366
  Leaders,
8072
8367
  Link,
8073
8368
  LogoMarquee,
8369
+ MasterPartner,
8074
8370
  Navbar,
8075
8371
  PARALLAX_BANNER_TEXT_CONTENT,
8076
8372
  Pagination,
8077
8373
  ParallaxBanner,
8374
+ PartnersPayout,
8078
8375
  PeopleGrid,
8376
+ RESOURCE_BANNER_DERIV_CONTENT,
8377
+ ResourceBanner,
8079
8378
  STEPS_DATA,
8080
8379
  SearchField,
8081
8380
  Stats,
@@ -8090,6 +8389,7 @@ export {
8090
8389
  Testimonial,
8091
8390
  TextField,
8092
8391
  TextScroll,
8392
+ Tiers,
8093
8393
  TradingCalculator,
8094
8394
  TradingCalculatorHowTo,
8095
8395
  dayNightTransitionV2Preset