@deriv-web-design/ui 0.1.5 → 0.1.8
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 +1363 -67
- package/components.manifest.json +699 -11
- package/dist/index.css +2022 -145
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +608 -19
- package/dist/index.d.ts +608 -19
- package/dist/index.js +2231 -344
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2231 -359
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/appstore-appgallery-dark-2QPFCM4A.svg +0 -12
- package/dist/appstore-appgallery-light-VF62CF5X.svg +0 -19
- package/dist/appstore-appstore-dark-FDUROOKK.svg +0 -24
- package/dist/appstore-appstore-light-BEVC5PJZ.svg +0 -24
- package/dist/appstore-browser-dark-2E6TK6JH.svg +0 -32
- package/dist/appstore-browser-light-HBKTW4SI.svg +0 -32
- package/dist/appstore-googleplay-dark-HWTOQTL6.svg +0 -14
- package/dist/appstore-googleplay-light-W3CS6NAG.svg +0 -14
- package/dist/appstore-linux-dark-RVH7CBM4.svg +0 -46
- package/dist/appstore-linux-light-WQECAJRC.svg +0 -46
- package/dist/appstore-macos-dark-2A3UM5YI.svg +0 -23
- package/dist/appstore-macos-light-5LI6ESAV.svg +0 -23
- package/dist/appstore-windows-dark-ZDWELB42.svg +0 -31
- package/dist/appstore-windows-light-TCALZSJM.svg +0 -31
- package/dist/award-leaf-left-HVAB5T5H.png +0 -0
- package/dist/award-leaf-right-WR5I37KI.png +0 -0
- package/dist/icon-globe-S54WYYEK.svg +0 -10
- package/dist/quote-left-63QMW5NQ.webp +0 -0
- package/dist/quote-right-W6AS4YHN.webp +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react from 'react';
|
|
3
|
-
import { ButtonHTMLAttributes, ReactNode, AnchorHTMLAttributes, HTMLAttributes, InputHTMLAttributes, MouseEvent, ComponentProps } from 'react';
|
|
3
|
+
import { ButtonHTMLAttributes, ReactNode, AnchorHTMLAttributes, HTMLAttributes, InputHTMLAttributes, MouseEvent, ChangeEvent, ComponentProps } from 'react';
|
|
4
4
|
import { DotLottieReact } from '@lottiefiles/dotlottie-react';
|
|
5
5
|
|
|
6
6
|
type ButtonColorScheme = "coral" | "black" | "white";
|
|
@@ -96,6 +96,10 @@ interface TextFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "cl
|
|
|
96
96
|
status?: TextFieldStatus;
|
|
97
97
|
/** Applied to the outermost field container */
|
|
98
98
|
className?: string;
|
|
99
|
+
/** Optional label rendered inside the field box, stacked above the
|
|
100
|
+
* input (rather than as a separate element above the box). Omit for
|
|
101
|
+
* the default single-row field with no in-box label. */
|
|
102
|
+
label?: ReactNode;
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
declare const TextField: react.ForwardRefExoticComponent<TextFieldProps & react.RefAttributes<HTMLInputElement>>;
|
|
@@ -107,10 +111,25 @@ interface SearchFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "
|
|
|
107
111
|
variant?: SearchFieldVariant;
|
|
108
112
|
/** Visual validation state. Defaults to "neutral". */
|
|
109
113
|
status?: SearchFieldStatus;
|
|
114
|
+
/** Shows the leading search (magnifying-glass) icon. Defaults to `true`.
|
|
115
|
+
* Set to `false` for icon-less search bars (e.g. a Help Centre style
|
|
116
|
+
* search field where the placeholder text alone signals its purpose). */
|
|
117
|
+
showSearchIcon?: boolean;
|
|
110
118
|
/** Called when the clear (×) button is clicked.
|
|
111
119
|
* In controlled mode, update your value state here.
|
|
112
120
|
* In uncontrolled mode the input is cleared automatically. */
|
|
113
121
|
onClear?: () => void;
|
|
122
|
+
/** Optional label rendered inside the field box, stacked above the
|
|
123
|
+
* input (rather than as a separate element above the box). Omit for
|
|
124
|
+
* the default single-row field with no in-box label. */
|
|
125
|
+
label?: ReactNode;
|
|
126
|
+
/** Optional trailing content rendered after the input/clear button —
|
|
127
|
+
* e.g. a chevron when this field doubles as a combobox trigger. */
|
|
128
|
+
trailingSlot?: ReactNode;
|
|
129
|
+
/** Suppresses the built-in clear (×) button regardless of value —
|
|
130
|
+
* useful when `trailingSlot` already conveys the field's affordance
|
|
131
|
+
* (e.g. a combobox chevron) and a clear control isn't wanted. */
|
|
132
|
+
hideClearButton?: boolean;
|
|
114
133
|
className?: string;
|
|
115
134
|
}
|
|
116
135
|
|
|
@@ -472,6 +491,14 @@ interface FooterAiSummaryProps {
|
|
|
472
491
|
/** List of AI app items */
|
|
473
492
|
items: FooterAiSummaryItem[];
|
|
474
493
|
}
|
|
494
|
+
interface FooterTradeOnProps {
|
|
495
|
+
/** Badge image source — a self-contained graphic (background + logo + wordmark baked in) */
|
|
496
|
+
imageSrc: string;
|
|
497
|
+
/** Image alt text */
|
|
498
|
+
imageAlt: string;
|
|
499
|
+
/** Link href */
|
|
500
|
+
href?: string;
|
|
501
|
+
}
|
|
475
502
|
interface FooterProps extends HTMLAttributes<HTMLElement> {
|
|
476
503
|
/** Deriv logo image source */
|
|
477
504
|
logoSrc: string;
|
|
@@ -487,10 +514,19 @@ interface FooterProps extends HTMLAttributes<HTMLElement> {
|
|
|
487
514
|
socialLinks?: FooterSocialLink[];
|
|
488
515
|
/** Deriv GO promotion banner */
|
|
489
516
|
derivGo?: FooterDerivGoProps;
|
|
517
|
+
/** "Trade on TradingView" promotion banner */
|
|
518
|
+
tradingView?: FooterTradeOnProps;
|
|
490
519
|
/** "Investors in People" badge image source */
|
|
491
520
|
investorsInPeopleSrc?: string;
|
|
492
521
|
/** Alt text for the Investors in People badge */
|
|
493
522
|
investorsInPeopleAlt?: string;
|
|
523
|
+
/**
|
|
524
|
+
* Moves the "Investors in People" badge into the header row (desktop
|
|
525
|
+
* only, replacing the AI summary bar's slot) and centers the social
|
|
526
|
+
* icons between the logo and the badge, instead of showing the badge
|
|
527
|
+
* in the sidebar/stacked position below the nav.
|
|
528
|
+
*/
|
|
529
|
+
investorsInPeopleInHeader?: boolean;
|
|
494
530
|
/** Legal / licence text block (supports ReactNode for inline links) */
|
|
495
531
|
licenseText?: ReactNode;
|
|
496
532
|
/** Risk-warning paragraph text */
|
|
@@ -504,7 +540,7 @@ interface FooterProps extends HTMLAttributes<HTMLElement> {
|
|
|
504
540
|
aiSummary?: FooterAiSummaryProps;
|
|
505
541
|
}
|
|
506
542
|
|
|
507
|
-
declare const Footer: ({ logoSrc, logoAlt, navColumns, socialLinks, derivGo, investorsInPeopleSrc, investorsInPeopleAlt, licenseText, riskWarningText, aiSummary, className, ...props }: FooterProps) => react_jsx_runtime.JSX.Element;
|
|
543
|
+
declare const Footer: ({ logoSrc, logoAlt, navColumns, socialLinks, derivGo, tradingView, investorsInPeopleSrc, investorsInPeopleAlt, investorsInPeopleInHeader, licenseText, riskWarningText, aiSummary, className, ...props }: FooterProps) => react_jsx_runtime.JSX.Element;
|
|
508
544
|
|
|
509
545
|
type HeroVariant = "split" | "centered" | "showcase";
|
|
510
546
|
interface HeroButtonProps {
|
|
@@ -565,7 +601,7 @@ interface HeroProps extends HTMLAttributes<HTMLElement> {
|
|
|
565
601
|
|
|
566
602
|
declare const Hero: ({ variant, subtitle, title, description, primaryButton, secondaryButton, backgroundImageSrc, heroImage, productImage, floatingImage, className, ...props }: HeroProps) => react_jsx_runtime.JSX.Element;
|
|
567
603
|
|
|
568
|
-
type HeaderVariant = "visuals" | "minimal";
|
|
604
|
+
type HeaderVariant = "visuals" | "minimal" | "dark" | "dark-search";
|
|
569
605
|
interface HeaderButtonProps {
|
|
570
606
|
/** Button label text */
|
|
571
607
|
label: string;
|
|
@@ -574,13 +610,30 @@ interface HeaderButtonProps {
|
|
|
574
610
|
/** Link href — renders an anchor if provided */
|
|
575
611
|
href?: string;
|
|
576
612
|
}
|
|
613
|
+
interface HeaderSearchProps {
|
|
614
|
+
/** Placeholder text for the search input. Defaults to "Search". */
|
|
615
|
+
placeholder?: string;
|
|
616
|
+
/** Controlled input value */
|
|
617
|
+
value?: string;
|
|
618
|
+
/** Change handler for controlled usage */
|
|
619
|
+
onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
|
|
620
|
+
/** Called when the clear (×) button is pressed */
|
|
621
|
+
onClear?: () => void;
|
|
622
|
+
/** Called on Enter keypress with the current input value */
|
|
623
|
+
onSubmit?: (value: string) => void;
|
|
624
|
+
}
|
|
577
625
|
interface HeaderProps extends HTMLAttributes<HTMLElement> {
|
|
578
626
|
/**
|
|
579
627
|
* Layout variant:
|
|
580
628
|
*
|
|
581
|
-
* - "visuals"
|
|
582
|
-
*
|
|
583
|
-
* - "minimal"
|
|
629
|
+
* - "visuals" — light grey bg + SVG grid, center-aligned text, floating visuals left & right,
|
|
630
|
+
* parallax scroll effect on visuals, min-height 540px
|
|
631
|
+
* - "minimal" — same as visuals but without the floating graphics
|
|
632
|
+
* - "dark" — dark navy bg + SVG grid, center-aligned text, no floating visuals,
|
|
633
|
+
* min-height 420px on mobile/tablet, 460px on desktop (shorter than
|
|
634
|
+
* the light variants)
|
|
635
|
+
* - "dark-search" — same as "dark" plus a search field below the text, for pages such as
|
|
636
|
+
* the Help Centre index
|
|
584
637
|
*/
|
|
585
638
|
variant: HeaderVariant;
|
|
586
639
|
/** Optional eyebrow / subtitle above the title */
|
|
@@ -591,27 +644,32 @@ interface HeaderProps extends HTMLAttributes<HTMLElement> {
|
|
|
591
644
|
description?: string;
|
|
592
645
|
/**
|
|
593
646
|
* Primary CTA button (coral).
|
|
594
|
-
* Shown on
|
|
647
|
+
* Shown on all variants.
|
|
595
648
|
*/
|
|
596
649
|
primaryButton?: HeaderButtonProps;
|
|
597
650
|
/**
|
|
598
651
|
* Secondary CTA button (white outline).
|
|
599
|
-
* Shown on
|
|
652
|
+
* Shown on all variants.
|
|
600
653
|
*/
|
|
601
654
|
secondaryButton?: HeaderButtonProps;
|
|
602
655
|
/**
|
|
603
|
-
* Left floating visual for the
|
|
656
|
+
* Left floating visual for the "visuals" variant.
|
|
604
657
|
* Accepts a ReactNode or image URL string.
|
|
605
658
|
*/
|
|
606
659
|
leftVisual?: ReactNode | string;
|
|
607
660
|
/**
|
|
608
|
-
* Right floating visual for the
|
|
661
|
+
* Right floating visual for the "visuals" variant.
|
|
609
662
|
* Accepts a ReactNode or image URL string.
|
|
610
663
|
*/
|
|
611
664
|
rightVisual?: ReactNode | string;
|
|
665
|
+
/**
|
|
666
|
+
* Search field configuration for the "dark-search" variant (e.g. Help Centre header).
|
|
667
|
+
* The field always renders for that variant; this prop only customises it.
|
|
668
|
+
*/
|
|
669
|
+
search?: HeaderSearchProps;
|
|
612
670
|
}
|
|
613
671
|
|
|
614
|
-
declare const Header: ({ variant, subtitle, title, description, primaryButton, secondaryButton, leftVisual, rightVisual, className, ...props }: HeaderProps) => react_jsx_runtime.JSX.Element;
|
|
672
|
+
declare const Header: ({ variant, subtitle, title, description, primaryButton, secondaryButton, leftVisual, rightVisual, search, className, ...props }: HeaderProps) => react_jsx_runtime.JSX.Element;
|
|
615
673
|
|
|
616
674
|
interface StatItem {
|
|
617
675
|
/** Numeric or short display value, e.g. "2.5M+" */
|
|
@@ -1156,6 +1214,43 @@ interface TableProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
1156
1214
|
|
|
1157
1215
|
declare const Table: ({ sectionTitle, columns, rows, mainColumnKey, pageSize, searchPlaceholder, infoText, className, ...props }: TableProps) => react_jsx_runtime.JSX.Element;
|
|
1158
1216
|
|
|
1217
|
+
/** Visual column-count variant */
|
|
1218
|
+
type DynamicTableVariant = "Three columns" | "Four columns";
|
|
1219
|
+
/** Single column definition */
|
|
1220
|
+
interface DynamicTableColumnDef {
|
|
1221
|
+
/** Unique key matching the row data field */
|
|
1222
|
+
key: string;
|
|
1223
|
+
/**
|
|
1224
|
+
* Header label text.
|
|
1225
|
+
* Pass an array for multi-line headers (e.g. ["Spread", "reduction"]).
|
|
1226
|
+
*/
|
|
1227
|
+
header: string | string[];
|
|
1228
|
+
}
|
|
1229
|
+
/**
|
|
1230
|
+
* A single row of table data.
|
|
1231
|
+
* Values are plain strings, newline-separated strings, or string arrays
|
|
1232
|
+
* (each item renders on its own line).
|
|
1233
|
+
*/
|
|
1234
|
+
interface DynamicTableRowData {
|
|
1235
|
+
[key: string]: string | string[] | undefined;
|
|
1236
|
+
}
|
|
1237
|
+
interface DynamicTableProps extends HTMLAttributes<HTMLElement> {
|
|
1238
|
+
/** Optional section title rendered above the table */
|
|
1239
|
+
sectionTitle?: string;
|
|
1240
|
+
/**
|
|
1241
|
+
* Column-count variant.
|
|
1242
|
+
* - `Three columns` — one label column + two comparison columns
|
|
1243
|
+
* - `Four columns` — one label column + three comparison columns
|
|
1244
|
+
*/
|
|
1245
|
+
variant?: DynamicTableVariant;
|
|
1246
|
+
/** Column definitions (order matters). Extra columns beyond the variant are ignored. */
|
|
1247
|
+
columns: DynamicTableColumnDef[];
|
|
1248
|
+
/** Row data */
|
|
1249
|
+
rows: DynamicTableRowData[];
|
|
1250
|
+
}
|
|
1251
|
+
|
|
1252
|
+
declare const DynamicTable: ({ sectionTitle, variant, columns, rows, className, ...props }: DynamicTableProps) => react_jsx_runtime.JSX.Element;
|
|
1253
|
+
|
|
1159
1254
|
interface PersonItem {
|
|
1160
1255
|
/** Person's full name */
|
|
1161
1256
|
name: string;
|
|
@@ -1202,10 +1297,12 @@ declare const Leaders: ({ title, description, items, initialVisibleCount, expand
|
|
|
1202
1297
|
interface ImageBannerProps extends HTMLAttributes<HTMLElement> {
|
|
1203
1298
|
/**
|
|
1204
1299
|
* Layout variant.
|
|
1205
|
-
* - `"split"` (default): image fills the right-hand panel
|
|
1206
|
-
* - `"
|
|
1300
|
+
* - `"split-left"` (default): text on the left; image fills the right-hand panel.
|
|
1301
|
+
* - `"split-right"`: image fills the left-hand panel; text on the right.
|
|
1302
|
+
* - `"full-bg-left"`: image covers the entire card as a background; text overlaid on the left.
|
|
1303
|
+
* - `"full-bg-right"`: image covers the entire card as a background; text overlaid on the right.
|
|
1207
1304
|
*/
|
|
1208
|
-
variant?: "split" | "full-bg";
|
|
1305
|
+
variant?: "split-left" | "split-right" | "full-bg-left" | "full-bg-right";
|
|
1209
1306
|
/** Section headline */
|
|
1210
1307
|
title?: string;
|
|
1211
1308
|
/** Supporting body copy beneath the title */
|
|
@@ -1218,8 +1315,9 @@ interface ImageBannerProps extends HTMLAttributes<HTMLElement> {
|
|
|
1218
1315
|
onCtaClick?: () => void;
|
|
1219
1316
|
/**
|
|
1220
1317
|
* URL of the photo.
|
|
1221
|
-
* - `"split"`: fills the right-hand panel; stacks below text on mobile.
|
|
1222
|
-
* - `"
|
|
1318
|
+
* - `"split-left"`: fills the right-hand panel; stacks below text on mobile.
|
|
1319
|
+
* - `"split-right"`: fills the left-hand panel; stacks above text on mobile.
|
|
1320
|
+
* - `"full-bg-left"` / `"full-bg-right"`: covers the entire card as a background image.
|
|
1223
1321
|
*/
|
|
1224
1322
|
imageUrl?: string;
|
|
1225
1323
|
/** Accessible alt text for the image */
|
|
@@ -1239,17 +1337,43 @@ interface TestimonialItem {
|
|
|
1239
1337
|
authorLocation?: string;
|
|
1240
1338
|
/** Optional author avatar image URL */
|
|
1241
1339
|
avatarUrl?: string;
|
|
1340
|
+
/**
|
|
1341
|
+
* `trustpilot` variant only — star rating out of 5 shown on the card.
|
|
1342
|
+
* Supports halves (e.g. `4.5`). Defaults to `5`.
|
|
1343
|
+
*/
|
|
1344
|
+
rating?: number;
|
|
1345
|
+
/**
|
|
1346
|
+
* `trustpilot` variant only — link to the full review on Trustpilot.
|
|
1347
|
+
* When omitted, the card links to `trustpilotUrl` instead.
|
|
1348
|
+
*/
|
|
1349
|
+
reviewUrl?: string;
|
|
1242
1350
|
}
|
|
1243
1351
|
interface TestimonialProps {
|
|
1244
1352
|
/** Section heading */
|
|
1245
1353
|
title?: string;
|
|
1246
|
-
/** Array of testimonial items to display
|
|
1354
|
+
/** Array of testimonial items to display */
|
|
1247
1355
|
items: TestimonialItem[];
|
|
1248
1356
|
/** Optional CSS class name applied to the outer section */
|
|
1249
1357
|
className?: string;
|
|
1358
|
+
/**
|
|
1359
|
+
* Visual style.
|
|
1360
|
+
* - `default` (default): single-slide auto-advancing quote carousel with dot pagination.
|
|
1361
|
+
* - `trustpilot`: horizontally-scrollable row of star-rated review cards, a "Trustpilot"
|
|
1362
|
+
* rating badge, and prev/next controls — modeled after deriv.com's homepage
|
|
1363
|
+
* "What our customers say" section.
|
|
1364
|
+
*/
|
|
1365
|
+
variant?: "default" | "trustpilot";
|
|
1366
|
+
/**
|
|
1367
|
+
* `trustpilot` variant only — URL to the brand's Trustpilot profile page.
|
|
1368
|
+
* Used by the footer rating badge link, and as the fallback link for any
|
|
1369
|
+
* item without its own `reviewUrl`.
|
|
1370
|
+
*/
|
|
1371
|
+
trustpilotUrl?: string;
|
|
1372
|
+
/** `trustpilot` variant only — overall TrustScore shown in the footer badge (out of 5). */
|
|
1373
|
+
trustpilotScore?: number;
|
|
1250
1374
|
}
|
|
1251
1375
|
|
|
1252
|
-
declare const Testimonial: (
|
|
1376
|
+
declare const Testimonial: (props: TestimonialProps) => react_jsx_runtime.JSX.Element | null;
|
|
1253
1377
|
|
|
1254
1378
|
interface ArticleHeroArticle {
|
|
1255
1379
|
/** Article title */
|
|
@@ -1399,6 +1523,113 @@ declare const FEATURE_AWARDS_TEXT_CONTENT: {
|
|
|
1399
1523
|
declare const DEFAULT_AWARDS: AwardItem[];
|
|
1400
1524
|
declare const FeatureAwards: ({ title, awards, autoScrollDuration, className, ...props }: FeatureAwardsProps) => react_jsx_runtime.JSX.Element | null;
|
|
1401
1525
|
|
|
1526
|
+
interface FeatureBlogPost {
|
|
1527
|
+
/** Post headline */
|
|
1528
|
+
title: string;
|
|
1529
|
+
/** Post summary / dek text */
|
|
1530
|
+
summary: string;
|
|
1531
|
+
/** Card thumbnail image */
|
|
1532
|
+
thumbnail: string;
|
|
1533
|
+
thumbnailAlt?: string;
|
|
1534
|
+
/** Publish date label, e.g. "July 24, 2026" */
|
|
1535
|
+
date?: string;
|
|
1536
|
+
/** Category label, e.g. "Company" */
|
|
1537
|
+
category?: string;
|
|
1538
|
+
/** Link target — wraps the card in an anchor when set */
|
|
1539
|
+
href?: string;
|
|
1540
|
+
/** Click handler — used when `href` is not set */
|
|
1541
|
+
onClick?: () => void;
|
|
1542
|
+
}
|
|
1543
|
+
interface FeatureBlogProps extends HTMLAttributes<HTMLElement> {
|
|
1544
|
+
/** Section heading. Defaults to "Deriv press releases". */
|
|
1545
|
+
title?: string;
|
|
1546
|
+
/** Posts rendered as a responsive card grid. */
|
|
1547
|
+
posts: FeatureBlogPost[];
|
|
1548
|
+
/** Show the "See all" link below the grid (default: true) */
|
|
1549
|
+
showLink?: boolean;
|
|
1550
|
+
/** Label for the "See all" link (default: "See all press releases") */
|
|
1551
|
+
linkText?: string;
|
|
1552
|
+
/** Href for the "See all" link */
|
|
1553
|
+
linkHref?: string;
|
|
1554
|
+
onLinkClick?: () => void;
|
|
1555
|
+
/** Extra class name merged onto the root `<section>`. */
|
|
1556
|
+
className?: string;
|
|
1557
|
+
}
|
|
1558
|
+
|
|
1559
|
+
declare const FEATURE_BLOG_TEXT_CONTENT: {
|
|
1560
|
+
title: string;
|
|
1561
|
+
linkText: string;
|
|
1562
|
+
};
|
|
1563
|
+
declare const FeatureBlog: ({ title, posts, showLink, linkText, linkHref, onLinkClick, className, ...props }: FeatureBlogProps) => react_jsx_runtime.JSX.Element | null;
|
|
1564
|
+
|
|
1565
|
+
interface FeatureBlogCategoryTab {
|
|
1566
|
+
/** Stable identifier — must match `FeatureBlogCategoryPost.category` for filtering to work. CMS-managed. */
|
|
1567
|
+
id: string;
|
|
1568
|
+
/** Tab label shown in the pill row. CMS-managed. */
|
|
1569
|
+
label: string;
|
|
1570
|
+
}
|
|
1571
|
+
interface FeatureBlogCategoryPost {
|
|
1572
|
+
/** Post headline */
|
|
1573
|
+
title: string;
|
|
1574
|
+
/** Post summary / dek text */
|
|
1575
|
+
summary: string;
|
|
1576
|
+
/** Card thumbnail image */
|
|
1577
|
+
thumbnail: string;
|
|
1578
|
+
thumbnailAlt?: string;
|
|
1579
|
+
/** Publish date label, e.g. "July 24, 2026" */
|
|
1580
|
+
date?: string;
|
|
1581
|
+
/** Category tab id this post belongs to (matches a `categories[].id`). Posts also always match the "all" tab. */
|
|
1582
|
+
category: string;
|
|
1583
|
+
/** Category chip label shown on the card. Defaults to the matching tab's `label` when omitted. */
|
|
1584
|
+
categoryLabel?: string;
|
|
1585
|
+
/**
|
|
1586
|
+
* Destination URL. Absolute `http(s)://` URLs are treated as external and
|
|
1587
|
+
* open in a new tab (`target="_blank" rel="noopener noreferrer"`);
|
|
1588
|
+
* relative/internal paths (e.g. "/newsroom/my-article") navigate as a
|
|
1589
|
+
* normal same-tab inner-page link.
|
|
1590
|
+
*/
|
|
1591
|
+
href?: string;
|
|
1592
|
+
/** Click handler — used when `href` is not set (renders a `<button>`) */
|
|
1593
|
+
onClick?: () => void;
|
|
1594
|
+
}
|
|
1595
|
+
interface FeatureBlogCategoriesProps extends HTMLAttributes<HTMLElement> {
|
|
1596
|
+
/** Section heading. Defaults to "Deriv press releases". */
|
|
1597
|
+
title?: string;
|
|
1598
|
+
/** Category tabs, CMS-managed. An "all" tab is always prepended automatically. */
|
|
1599
|
+
categories: FeatureBlogCategoryTab[];
|
|
1600
|
+
/** Id used internally for the auto-prepended "show everything" tab (default: "all") */
|
|
1601
|
+
allCategoryId?: string;
|
|
1602
|
+
/** Label for the auto-prepended "show everything" tab (default: "View all") */
|
|
1603
|
+
allCategoryLabel?: string;
|
|
1604
|
+
/** Controlled active category tab id */
|
|
1605
|
+
activeCategoryId?: string;
|
|
1606
|
+
/** Initial active tab id for uncontrolled usage (default: `allCategoryId`) */
|
|
1607
|
+
defaultActiveCategoryId?: string;
|
|
1608
|
+
/** Called whenever a different tab is selected */
|
|
1609
|
+
onCategoryChange?: (id: string) => void;
|
|
1610
|
+
/** All posts — filtered client-side by the active tab and search query */
|
|
1611
|
+
posts: FeatureBlogCategoryPost[];
|
|
1612
|
+
/** Placeholder text for the search field (default: "Search") */
|
|
1613
|
+
searchPlaceholder?: string;
|
|
1614
|
+
/** Accessible label for the search field (defaults to `searchPlaceholder`) */
|
|
1615
|
+
searchAriaLabel?: string;
|
|
1616
|
+
/** Called on every keystroke in the search field with the current value */
|
|
1617
|
+
onSearchChange?: (value: string) => void;
|
|
1618
|
+
/** Message shown when no posts match the active tab + search query */
|
|
1619
|
+
emptyStateText?: string;
|
|
1620
|
+
/** Extra class name merged onto the root `<section>`. */
|
|
1621
|
+
className?: string;
|
|
1622
|
+
}
|
|
1623
|
+
|
|
1624
|
+
declare const FEATURE_BLOG_CATEGORIES_TEXT_CONTENT: {
|
|
1625
|
+
title: string;
|
|
1626
|
+
allCategoryId: string;
|
|
1627
|
+
allCategoryLabel: string;
|
|
1628
|
+
searchPlaceholder: string;
|
|
1629
|
+
emptyStateText: string;
|
|
1630
|
+
};
|
|
1631
|
+
declare const FeatureBlogCategories: ({ title, categories, allCategoryId, allCategoryLabel, activeCategoryId, defaultActiveCategoryId, onCategoryChange, posts, searchPlaceholder, searchAriaLabel, onSearchChange, emptyStateText, className, ...props }: FeatureBlogCategoriesProps) => react_jsx_runtime.JSX.Element;
|
|
1632
|
+
|
|
1402
1633
|
interface HelpCentreCategoryItem {
|
|
1403
1634
|
/** Stable identifier for the category (e.g. used for anchors or filtering) */
|
|
1404
1635
|
id?: string;
|
|
@@ -1515,4 +1746,362 @@ interface HelpCenterPageProps {
|
|
|
1515
1746
|
|
|
1516
1747
|
declare const HelpCenterPage: ({ categoryTitle, questions, activeQuestionId, defaultActiveQuestionId, onQuestionSelect, contentTitle, content, searchPlaceholder, searchAriaLabel, onSearchChange, searchNoResultsText, articlesSheetTitle, className, }: HelpCenterPageProps) => react_jsx_runtime.JSX.Element;
|
|
1517
1748
|
|
|
1518
|
-
|
|
1749
|
+
type FeatureBlogContentBlockType = "heading" | "paragraph" | "list" | "quote" | "image";
|
|
1750
|
+
interface FeatureBlogContentBlock {
|
|
1751
|
+
/** Block kind — "heading"/"paragraph"/"quote" use `text`, "list" uses `items`, "image" uses `image` */
|
|
1752
|
+
type: FeatureBlogContentBlockType;
|
|
1753
|
+
/** Text content for "heading" / "paragraph" / "quote" blocks */
|
|
1754
|
+
text?: string;
|
|
1755
|
+
/**
|
|
1756
|
+
* Heading level for "heading" blocks (default: 2). Only level-2 headings
|
|
1757
|
+
* are collected into the table of contents — level-3 headings render
|
|
1758
|
+
* inline as sub-sections but are not listed.
|
|
1759
|
+
*/
|
|
1760
|
+
level?: 2 | 3;
|
|
1761
|
+
/** Stable anchor id for a "heading" block; auto-generated (slugified) from `text` when omitted */
|
|
1762
|
+
id?: string;
|
|
1763
|
+
/** List entries for "list" blocks */
|
|
1764
|
+
items?: string[];
|
|
1765
|
+
/** Render a "list" block as `<ol>` instead of `<ul>` (default: false) */
|
|
1766
|
+
ordered?: boolean;
|
|
1767
|
+
/** Citation / source line for "quote" blocks */
|
|
1768
|
+
cite?: string;
|
|
1769
|
+
/** Image source for "image" blocks */
|
|
1770
|
+
image?: string;
|
|
1771
|
+
imageAlt?: string;
|
|
1772
|
+
/** Optional caption rendered below an "image" block */
|
|
1773
|
+
caption?: string;
|
|
1774
|
+
}
|
|
1775
|
+
type FeatureBlogSharePlatform = "facebook" | "twitter" | "linkedin" | "telegram";
|
|
1776
|
+
interface FeatureBlogAuthor {
|
|
1777
|
+
/** Author display name */
|
|
1778
|
+
name: string;
|
|
1779
|
+
/** Author avatar image */
|
|
1780
|
+
avatar?: string;
|
|
1781
|
+
avatarAlt?: string;
|
|
1782
|
+
}
|
|
1783
|
+
interface FeatureBlogPageProps {
|
|
1784
|
+
/** Small category label rendered above the title (e.g. "Press releases") */
|
|
1785
|
+
category?: string;
|
|
1786
|
+
/** Article headline, rendered as the page's `<h1>` (required) */
|
|
1787
|
+
title: string;
|
|
1788
|
+
/** Publish date label shown in the meta row (e.g. "July 24, 2026") */
|
|
1789
|
+
publishDate?: string;
|
|
1790
|
+
/** Article author, shown in the meta row next to the publish date */
|
|
1791
|
+
author?: FeatureBlogAuthor;
|
|
1792
|
+
/** Hero image rendered below the title / meta row */
|
|
1793
|
+
heroImage?: string;
|
|
1794
|
+
heroImageAlt?: string;
|
|
1795
|
+
/** Main article body, rendered from plain data blocks (required, at least 1 item) */
|
|
1796
|
+
content: FeatureBlogContentBlock[];
|
|
1797
|
+
/** Table of contents card heading (default: "Contents") */
|
|
1798
|
+
tocTitle?: string;
|
|
1799
|
+
/** Whether the table of contents starts expanded (default: true) */
|
|
1800
|
+
tocDefaultOpen?: boolean;
|
|
1801
|
+
/** Hide the table of contents entirely (default: false) — e.g. for very short articles with no level-2 headings */
|
|
1802
|
+
hideToc?: boolean;
|
|
1803
|
+
/** "Share article" label above the share icons (default: "Share article") */
|
|
1804
|
+
shareTitle?: string;
|
|
1805
|
+
/** Canonical URL used to build every share link and for "copy link"; sharing is hidden when omitted */
|
|
1806
|
+
shareUrl?: string;
|
|
1807
|
+
/** Text passed to platforms that accept share text (X/Twitter, Telegram); defaults to `title` */
|
|
1808
|
+
shareText?: string;
|
|
1809
|
+
/** Which social platforms to show, in order (default: all four) */
|
|
1810
|
+
sharePlatforms?: FeatureBlogSharePlatform[];
|
|
1811
|
+
/** Hide the share row entirely (default: false) */
|
|
1812
|
+
hideShare?: boolean;
|
|
1813
|
+
/** Fired whenever a share icon (including "copy link") is activated */
|
|
1814
|
+
onShare?: (platform: FeatureBlogSharePlatform | "copy") => void;
|
|
1815
|
+
/** Label shown briefly after "copy link" succeeds (default: "Copied!") */
|
|
1816
|
+
copiedLabel?: string;
|
|
1817
|
+
/** Additional CSS class on the outer `<section>` */
|
|
1818
|
+
className?: string;
|
|
1819
|
+
}
|
|
1820
|
+
|
|
1821
|
+
declare const FeatureBlogPage: ({ category, title, publishDate, author, heroImage, heroImageAlt, content, tocTitle, tocDefaultOpen, hideToc, shareTitle, shareUrl, shareText, sharePlatforms, hideShare, onShare, copiedLabel, className, }: FeatureBlogPageProps) => react_jsx_runtime.JSX.Element;
|
|
1822
|
+
|
|
1823
|
+
interface ParallaxBannerCultureCard {
|
|
1824
|
+
/** Card heading, e.g. "Integrity" */
|
|
1825
|
+
title: string;
|
|
1826
|
+
/** Supporting copy beneath the title */
|
|
1827
|
+
description: string;
|
|
1828
|
+
}
|
|
1829
|
+
interface ParallaxBannerProps extends HTMLAttributes<HTMLElement> {
|
|
1830
|
+
/**
|
|
1831
|
+
* Layout variant.
|
|
1832
|
+
* - `"default"`: banner card plus a grid of culture/value cards beneath it.
|
|
1833
|
+
* - `"banner-only"`: just the banner card — no cards grid.
|
|
1834
|
+
*/
|
|
1835
|
+
variant?: "default" | "banner-only";
|
|
1836
|
+
/** Banner headline. Defaults to "Our culture". */
|
|
1837
|
+
title?: string;
|
|
1838
|
+
/** Supporting copy beneath the headline */
|
|
1839
|
+
description?: string;
|
|
1840
|
+
/** CTA link label. Defaults to "Culture at Deriv". */
|
|
1841
|
+
ctaLabel?: string;
|
|
1842
|
+
/** CTA link href */
|
|
1843
|
+
ctaHref?: string;
|
|
1844
|
+
/** Callback fired when the CTA link is clicked */
|
|
1845
|
+
onCtaClick?: () => void;
|
|
1846
|
+
/** URL of the photo shown in the banner's image panel */
|
|
1847
|
+
imageUrl?: string;
|
|
1848
|
+
/** Accessible alt text for the banner photo */
|
|
1849
|
+
imageAlt?: string;
|
|
1850
|
+
/**
|
|
1851
|
+
* Four (or more) short value/culture cards rendered in a grid below the
|
|
1852
|
+
* banner. Ignored when `variant` is `"banner-only"`. Defaults to
|
|
1853
|
+
* `DEFAULT_CULTURE_CARDS`.
|
|
1854
|
+
*/
|
|
1855
|
+
cards?: ParallaxBannerCultureCard[];
|
|
1856
|
+
/**
|
|
1857
|
+
* Enables the subtle scroll-linked parallax on the banner photo.
|
|
1858
|
+
* Automatically disabled when the user has `prefers-reduced-motion` set.
|
|
1859
|
+
* Defaults to `true`.
|
|
1860
|
+
*/
|
|
1861
|
+
enableParallax?: boolean;
|
|
1862
|
+
/** Extra class name merged onto the root `<section>` */
|
|
1863
|
+
className?: string;
|
|
1864
|
+
}
|
|
1865
|
+
|
|
1866
|
+
declare const PARALLAX_BANNER_TEXT_CONTENT: {
|
|
1867
|
+
title: string;
|
|
1868
|
+
description: string;
|
|
1869
|
+
ctaLabel: string;
|
|
1870
|
+
};
|
|
1871
|
+
declare const DEFAULT_CULTURE_CARDS: ParallaxBannerCultureCard[];
|
|
1872
|
+
declare const ParallaxBanner: ({ variant, title, description, ctaLabel, ctaHref, onCtaClick, imageUrl, imageAlt, cards, enableParallax, className, ...props }: ParallaxBannerProps) => react_jsx_runtime.JSX.Element;
|
|
1873
|
+
|
|
1874
|
+
/**
|
|
1875
|
+
* One instrument's live trading specification, in the shape returned by
|
|
1876
|
+
* Deriv's public `dynamic_trading_specs.json` feed. Only the fields the
|
|
1877
|
+
* calculator actually reads are declared; the feed includes more (index
|
|
1878
|
+
* signature keeps those from causing type errors when passed straight
|
|
1879
|
+
* through from `fetch`).
|
|
1880
|
+
*/
|
|
1881
|
+
interface TradingSymbolSpec {
|
|
1882
|
+
/** Trading symbol code, e.g. "EURUSD", "1HZ100V", "AAPL.US". */
|
|
1883
|
+
symbol: string;
|
|
1884
|
+
/** Human-readable instrument name, e.g. "Euro vs US Dollar". */
|
|
1885
|
+
description: string;
|
|
1886
|
+
/** Grouping used for the symbol dropdown, e.g. "Forex - Major". */
|
|
1887
|
+
asset_class: string;
|
|
1888
|
+
/** Broad market bucket, e.g. "forex", "synthetic_index", "stocks". */
|
|
1889
|
+
market: string;
|
|
1890
|
+
/** Currency the contract size is denominated in. */
|
|
1891
|
+
base_currency: string;
|
|
1892
|
+
/** Currency profit/loss (and swap) is settled in. */
|
|
1893
|
+
profit_currency: string;
|
|
1894
|
+
/** Units of the underlying per 1 lot. */
|
|
1895
|
+
contract_size: number;
|
|
1896
|
+
/** Minimum price increment shown to traders (pip). */
|
|
1897
|
+
pip_size: number;
|
|
1898
|
+
/** Smallest raw price increment (point). */
|
|
1899
|
+
point_size: number;
|
|
1900
|
+
/** Effective leverage, e.g. `500` for "1 : 500". */
|
|
1901
|
+
effective_leverage: number;
|
|
1902
|
+
/** How swap/rollover is charged, e.g. "In points" or a percentage-terms mode. */
|
|
1903
|
+
swap_mode: string;
|
|
1904
|
+
/** Long-position swap rate, unit depends on `swap_mode`. */
|
|
1905
|
+
swap_rate_long: number;
|
|
1906
|
+
/** Short-position swap rate, unit depends on `swap_mode`. */
|
|
1907
|
+
swap_rate_short: number;
|
|
1908
|
+
/** Weekday that charges a triple ("three-day") swap, if any. */
|
|
1909
|
+
three_day_swap?: string;
|
|
1910
|
+
/** Whether swap is charged over weekends. */
|
|
1911
|
+
weekend_swaps?: string;
|
|
1912
|
+
/** Most recent traded/ask price — used to prefill "Asset price". */
|
|
1913
|
+
ask_last: number;
|
|
1914
|
+
/** Minimum tradable volume, in lots. */
|
|
1915
|
+
volume_min: number;
|
|
1916
|
+
/** Maximum tradable volume, in lots. */
|
|
1917
|
+
volume_limit: number;
|
|
1918
|
+
[key: string]: unknown;
|
|
1919
|
+
}
|
|
1920
|
+
/** Computed output of a single "Calculate" run. */
|
|
1921
|
+
interface TradingCalculatorResults {
|
|
1922
|
+
marginRequired: number;
|
|
1923
|
+
tradeVolume: number;
|
|
1924
|
+
pipValue: number;
|
|
1925
|
+
/** `null` when the instrument's `swap_mode` isn't one the formulas cover ("N/A"). */
|
|
1926
|
+
swapChargeLong: number | null;
|
|
1927
|
+
swapChargeShort: number | null;
|
|
1928
|
+
}
|
|
1929
|
+
/**
|
|
1930
|
+
* Which deriv.com/trading-calculators page this instance mirrors. All four
|
|
1931
|
+
* variants share the same "Calculator" inputs, the same live data sources,
|
|
1932
|
+
* and the same underlying formulas — they only differ in which result(s) the
|
|
1933
|
+
* "Results" panel surfaces, matching each reference page's own focused
|
|
1934
|
+
* results panel:
|
|
1935
|
+
* - `"main"` — every result (margin, trade volume, pip value, long/short
|
|
1936
|
+
* swap) in one combined panel, for a general-purpose "Trading calculators"
|
|
1937
|
+
* page that covers all three calculations at once.
|
|
1938
|
+
* - `"margin"` — only "Margin Required", mirroring
|
|
1939
|
+
* https://deriv.com/trading-calculators/margin-calculator
|
|
1940
|
+
* - `"pip"` — only "Pip value", mirroring
|
|
1941
|
+
* https://deriv.com/trading-calculators/pip-calculator
|
|
1942
|
+
* - `"swap"` — only "Swap Charge Long"/"Swap Charge Short" plus the swap
|
|
1943
|
+
* rate/type/three-day/weekend info rows, mirroring
|
|
1944
|
+
* https://deriv.com/trading-calculators/swap-calculator
|
|
1945
|
+
*/
|
|
1946
|
+
type TradingCalculatorVariant = "main" | "margin" | "pip" | "swap";
|
|
1947
|
+
interface TradingCalculatorProps extends HTMLAttributes<HTMLElement> {
|
|
1948
|
+
/**
|
|
1949
|
+
* Which single-purpose calculator page this instance mirrors — controls
|
|
1950
|
+
* which result(s) the "Results" panel shows. See
|
|
1951
|
+
* `TradingCalculatorVariant` for what each value maps to.
|
|
1952
|
+
* @default "main"
|
|
1953
|
+
*/
|
|
1954
|
+
variant?: TradingCalculatorVariant;
|
|
1955
|
+
/**
|
|
1956
|
+
* Live instrument specs (contract size, leverage, swap rates, live price...).
|
|
1957
|
+
* When omitted, the component fetches them itself from `symbolsEndpoint` on
|
|
1958
|
+
* mount. Pass this to supply your own data — tests, Storybook, SSR, or a
|
|
1959
|
+
* project-side proxy/cache in front of the feed.
|
|
1960
|
+
*/
|
|
1961
|
+
symbols?: TradingSymbolSpec[];
|
|
1962
|
+
/**
|
|
1963
|
+
* JSON endpoint returning an array of `TradingSymbolSpec`. This is Deriv's
|
|
1964
|
+
* own public, unauthenticated feed — the same one deriv.com/trading-calculators
|
|
1965
|
+
* uses — refreshed continuously server-side.
|
|
1966
|
+
* @default "https://deriv-static-pricingfeedv2.firebaseio.com/n8n/row/prod/dynamic_trading_specs.json"
|
|
1967
|
+
*/
|
|
1968
|
+
symbolsEndpoint?: string;
|
|
1969
|
+
/**
|
|
1970
|
+
* Deriv's public WebSocket API endpoint, used to fetch live USD exchange
|
|
1971
|
+
* rates when a selected instrument's base/profit currency isn't already
|
|
1972
|
+
* USD. `app_id=1089` is Deriv's public demo app id (safe to ship — it is
|
|
1973
|
+
* not a secret, only a rate-limited API client identifier); register your
|
|
1974
|
+
* own at https://api.deriv.com for production traffic volumes. Pass `null`
|
|
1975
|
+
* to disable live conversion — non-USD instruments then show "N/A" for any
|
|
1976
|
+
* value that would have required it, instead of a silently wrong number.
|
|
1977
|
+
* @default "wss://ws.derivws.com/websockets/v3?app_id=1089"
|
|
1978
|
+
*/
|
|
1979
|
+
exchangeRateWsUrl?: string | null;
|
|
1980
|
+
/** Symbol code to preselect on mount once symbols have loaded, e.g. "EURUSD". */
|
|
1981
|
+
defaultSymbol?: string;
|
|
1982
|
+
/** Extra class name merged onto the root `<section>`. */
|
|
1983
|
+
className?: string;
|
|
1984
|
+
}
|
|
1985
|
+
|
|
1986
|
+
declare const DEFAULT_SYMBOLS_ENDPOINT = "https://deriv-static-pricingfeedv2.firebaseio.com/n8n/row/prod/dynamic_trading_specs.json";
|
|
1987
|
+
declare const DEFAULT_EXCHANGE_RATE_WS_URL = "wss://ws.derivws.com/websockets/v3?app_id=1089";
|
|
1988
|
+
declare const TradingCalculator: ({ variant, symbols: symbolsProp, symbolsEndpoint, exchangeRateWsUrl, defaultSymbol, className, ...props }: TradingCalculatorProps) => react_jsx_runtime.JSX.Element;
|
|
1989
|
+
|
|
1990
|
+
/**
|
|
1991
|
+
* Which deriv.com/trading-calculators "How to calculate…" explainer this
|
|
1992
|
+
* instance mirrors:
|
|
1993
|
+
* - `"margin"` — https://deriv.com/trading-calculators/margin-calculator
|
|
1994
|
+
* - `"pip"` — https://deriv.com/trading-calculators/pip-calculator
|
|
1995
|
+
* - `"swap-points"` / `"swap-percentage"` —
|
|
1996
|
+
* https://deriv.com/trading-calculators/swap-calculator, which itself
|
|
1997
|
+
* ships two formulas behind an "In points" / "In percentage" tab switch.
|
|
1998
|
+
* Both variants render that same interactive tab switch (a visitor can
|
|
1999
|
+
* still click between the two after load) — they only differ in which
|
|
2000
|
+
* formula is shown/active first.
|
|
2001
|
+
*/
|
|
2002
|
+
type TradingCalculatorHowToVariant = "margin" | "pip" | "swap-points" | "swap-percentage";
|
|
2003
|
+
/** Which of the swap variants' two formulas is active. Mirrors the `swap-*` half of `TradingCalculatorHowToVariant`. */
|
|
2004
|
+
type SwapCalculationMode = "points" | "percentage";
|
|
2005
|
+
/**
|
|
2006
|
+
* One token inside a calculation strip (the boxed row of numbers that walks
|
|
2007
|
+
* through an example calculation, e.g. "0.25 x 100,000 x 1.10634 = 27,658.5").
|
|
2008
|
+
* Plain connective text — operators (`"x"`, `"÷"`), `"="`, or bracket
|
|
2009
|
+
* fragments (`"[0.2"`) — omits `label`. A value that should show a connector
|
|
2010
|
+
* dot + caption underneath (matching the reference page's annotated
|
|
2011
|
+
* calculation graphic) sets one, e.g. `{ text: "0.25", label: "Lots" }`.
|
|
2012
|
+
*/
|
|
2013
|
+
interface CalculationToken {
|
|
2014
|
+
/** Text rendered for this token, e.g. "0.25", "x", "=", "27,658.5". */
|
|
2015
|
+
text: string;
|
|
2016
|
+
/** Caption shown below this token, connected by a small dot + line. */
|
|
2017
|
+
label?: string;
|
|
2018
|
+
}
|
|
2019
|
+
/** One block of the "Formula" column, rendered in order. */
|
|
2020
|
+
type FormulaBlock =
|
|
2021
|
+
/** A regular paragraph, e.g. "Volume is calculated based on the following formula:". */
|
|
2022
|
+
{
|
|
2023
|
+
type: "text";
|
|
2024
|
+
content: string;
|
|
2025
|
+
}
|
|
2026
|
+
/** A smaller, muted footnote paragraph, e.g. definitions marked with `*`/`**`. */
|
|
2027
|
+
| {
|
|
2028
|
+
type: "footnote";
|
|
2029
|
+
content: string;
|
|
2030
|
+
}
|
|
2031
|
+
/** A labelled bullet list, e.g. "Forex: Lots x Contract size x BSE/USD*". */
|
|
2032
|
+
| {
|
|
2033
|
+
type: "bullets";
|
|
2034
|
+
items: {
|
|
2035
|
+
term: string;
|
|
2036
|
+
content: string;
|
|
2037
|
+
}[];
|
|
2038
|
+
};
|
|
2039
|
+
interface TradingCalculatorHowToProps extends HTMLAttributes<HTMLElement> {
|
|
2040
|
+
/**
|
|
2041
|
+
* Which deriv.com "How to calculate…" page this instance mirrors.
|
|
2042
|
+
* @default "margin"
|
|
2043
|
+
*/
|
|
2044
|
+
variant?: TradingCalculatorHowToVariant;
|
|
2045
|
+
/** Section heading. Defaults to the canonical heading for `variant`, e.g. "How to calculate margin requirements". */
|
|
2046
|
+
title?: string;
|
|
2047
|
+
/** Section description, shown under the title. Defaults to the canonical copy for `variant`. */
|
|
2048
|
+
description?: string;
|
|
2049
|
+
/** Extra class name merged onto the root `<section>`. */
|
|
2050
|
+
className?: string;
|
|
2051
|
+
}
|
|
2052
|
+
|
|
2053
|
+
declare const TradingCalculatorHowTo: ({ variant, title, description, className, ...props }: TradingCalculatorHowToProps) => react_jsx_runtime.JSX.Element;
|
|
2054
|
+
|
|
2055
|
+
interface FeatureOfficeRegion {
|
|
2056
|
+
/** Stable identifier — must match `FeatureOffice.region` for filtering to work. CMS-managed. */
|
|
2057
|
+
id: string;
|
|
2058
|
+
/** Tab label shown in the pill row. CMS-managed. */
|
|
2059
|
+
label: string;
|
|
2060
|
+
}
|
|
2061
|
+
interface FeatureOffice {
|
|
2062
|
+
/** Region tab id this office belongs to (matches a `regions[].id`). */
|
|
2063
|
+
region: string;
|
|
2064
|
+
/** Flag image shown above the office name (real flag artwork, not an emoji). */
|
|
2065
|
+
flagImage: string;
|
|
2066
|
+
/** Alt text for the flag image. Defaults to `country` when omitted. */
|
|
2067
|
+
flagAlt?: string;
|
|
2068
|
+
/** City name, e.g. "London". */
|
|
2069
|
+
city: string;
|
|
2070
|
+
/** Country name, e.g. "United Kingdom". */
|
|
2071
|
+
country: string;
|
|
2072
|
+
/** Full postal address. Use "\n" to break the address onto multiple lines. */
|
|
2073
|
+
address: string;
|
|
2074
|
+
/**
|
|
2075
|
+
* Destination URL for the "See location" link (typically a map link).
|
|
2076
|
+
* When omitted, the office card renders with no link.
|
|
2077
|
+
*/
|
|
2078
|
+
href?: string;
|
|
2079
|
+
/** Overrides the default "See location" link label for this office. */
|
|
2080
|
+
linkText?: string;
|
|
2081
|
+
}
|
|
2082
|
+
interface FeatureOfficesProps extends HTMLAttributes<HTMLElement> {
|
|
2083
|
+
/** Section heading. Defaults to "Our offices". */
|
|
2084
|
+
title?: string;
|
|
2085
|
+
/** Region tabs, CMS-managed. At least one is required. */
|
|
2086
|
+
regions: FeatureOfficeRegion[];
|
|
2087
|
+
/** Controlled active region tab id */
|
|
2088
|
+
activeRegionId?: string;
|
|
2089
|
+
/** Initial active tab id for uncontrolled usage (default: `regions[0].id`) */
|
|
2090
|
+
defaultActiveRegionId?: string;
|
|
2091
|
+
/** Called whenever a different region tab is selected */
|
|
2092
|
+
onRegionChange?: (id: string) => void;
|
|
2093
|
+
/** All offices — filtered client-side by the active region tab. */
|
|
2094
|
+
offices: FeatureOffice[];
|
|
2095
|
+
/** Default label for each office's "See location" link. */
|
|
2096
|
+
linkText?: string;
|
|
2097
|
+
/** Extra class name merged onto the root `<section>`. */
|
|
2098
|
+
className?: string;
|
|
2099
|
+
}
|
|
2100
|
+
|
|
2101
|
+
declare const FEATURE_OFFICES_TEXT_CONTENT: {
|
|
2102
|
+
title: string;
|
|
2103
|
+
linkText: string;
|
|
2104
|
+
};
|
|
2105
|
+
declare const FeatureOffices: ({ title, regions, activeRegionId, defaultActiveRegionId, onRegionChange, offices, linkText, className, ...props }: FeatureOfficesProps) => react_jsx_runtime.JSX.Element;
|
|
2106
|
+
|
|
2107
|
+
export { AVATAR_DATA, Accordion, type AccordionProps, ArticleHero, type ArticleHeroArticle, type ArticleHeroColumn, type ArticleHeroProps, ArticleSection, type ArticleSectionItem, type ArticleSectionProps, type ArticleSectionVariant, AvatarGrid, type AvatarGridProps, type AvatarItem, type AvatarPosition, type AwardItem, BottomSheet, type BottomSheetAction, type BottomSheetProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, type BreadcrumbSize, Button, type ButtonColorScheme, type ButtonIconPosition, type ButtonProps, type ButtonVariant, COL_ONE_LOGOS, COL_TWO_LOGOS, CORAL_BANNER_DERIV_SLIDES, CTABanner, type CTABannerProps, type CalculationToken, Card, type CardPrimaryStyle, type CardProps, type CardTag, type CardThumbnailType, Chip, ChipDropdown, type ChipDropdownOption, type ChipDropdownProps, type ChipProps, type ChipSize, CoralBanner, type CoralBannerButton, type CoralBannerProps, type CoralBannerSlide, DEFAULT_AWARDS, DEFAULT_CULTURE_CARDS, DEFAULT_EXCHANGE_RATE_WS_URL, DEFAULT_SYMBOLS_ENDPOINT, DayNightTransition, type DayNightTransitionProps, DotLottieInView, type DotLottieInViewProps, DownloadBadge, type DownloadBadgeColorScheme, type DownloadBadgePlatform, type DownloadBadgeProps, DownloadBanner, type DownloadBannerProps, type DownloadBannerStyle, DynamicTable, type DynamicTableColumnDef, type DynamicTableProps, type DynamicTableRowData, type DynamicTableVariant, FEATURE_AWARDS_TEXT_CONTENT, FEATURE_BLOG_CATEGORIES_TEXT_CONTENT, FEATURE_BLOG_TEXT_CONTENT, FEATURE_OFFICES_TEXT_CONTENT, FEATURE_SCROLL_DATA, FaqAccordion, type FaqAccordionColorScheme, type FaqAccordionProps, type FaqItem, FeatureAwards, type FeatureAwardsProps, FeatureBlog, type FeatureBlogAuthor, FeatureBlogCategories, type FeatureBlogCategoriesProps, type FeatureBlogCategoryPost, type FeatureBlogCategoryTab, type FeatureBlogContentBlock, type FeatureBlogContentBlockType, FeatureBlogPage, type FeatureBlogPageProps, type FeatureBlogPost, type FeatureBlogProps, type FeatureBlogSharePlatform, FeatureBullets, type FeatureBulletsProps, type FeatureCardIconItem, type FeatureCardItem, FeatureCards, FeatureCardsIcon, type FeatureCardsIconProps, type FeatureCardsProps, type FeatureOffice, type FeatureOfficeRegion, FeatureOffices, type FeatureOfficesProps, FeatureScroll, type FeatureScrollItem, type FeatureScrollProps, FeatureSplit, type FeatureSplitImagePosition, type FeatureSplitProps, Footer, type FooterAiSummaryItem, type FooterAiSummaryProps, type FooterAppBadge, type FooterDerivGoProps, type FooterLinkItem, type FooterNavSection, type FooterProps, type FooterSocialLink, type FormulaBlock, Header, type HeaderButtonProps, type HeaderProps, type HeaderVariant, type HelpCenterContentBlock, type HelpCenterContentBlockType, HelpCenterPage, type HelpCenterPageProps, type HelpCenterQuestionItem, HelpCentreCategories, type HelpCentreCategoriesProps, type HelpCentreCategoryItem, HelpCentreSubCategories, type HelpCentreSubCategoriesProps, type HelpCentreSubCategoryItem, Hero, type HeroButtonProps, type HeroProps, type HeroVariant, ImageBanner, type ImageBannerProps, type LanguageItem, type LeaderItem, Leaders, type LeadersProps, Link, type LinkColorScheme, type LinkProps, type LogoItem, LogoMarquee, type LogoMarqueeProps, type NavDropdownColumn, type NavDropdownFeature, type NavDropdownItem, type NavItem, Navbar, type NavbarProps, PARALLAX_BANNER_TEXT_CONTENT, Pagination, type PaginationProps, ParallaxBanner, type ParallaxBannerCultureCard, type ParallaxBannerProps, PeopleGrid, type PeopleGridProps, type PersonItem, STEPS_DATA, SearchField, type SearchFieldProps, type SearchFieldStatus, type StatItem, Stats, type StatsAward, type StatsProps, StatsSimple, type StatsSimpleProps, type StepItem, Steps, type StepsImagePosition, type StepsProps, type StickyCardItem, type StickyCardTheme, type StickyMarketCardItem, type StickyMarketCardTheme, StickyMarketCards, type StickyMarketCardsProps, StickyStackedCards, type StickyStackedCardsProps, type SwapCalculationMode, TEXT_CONTENT, type TabItem, Table, type TableColumnDef, type TableColumnWidth, type TableProps, type TableRowData, Tabs, type TabsProps, Tag, type TagFontWeight, type TagProps, type TagSize, type TagVariant, Testimonial, type TestimonialItem, type TestimonialProps, TextField, type TextFieldProps, type TextFieldStatus, type TextFieldVariant, TextScroll, type TextScrollProps, TradingCalculator, TradingCalculatorHowTo, type TradingCalculatorHowToProps, type TradingCalculatorHowToVariant, type TradingCalculatorProps, type TradingCalculatorResults, type TradingCalculatorVariant, type TradingSymbolSpec, dayNightTransitionV2Preset };
|