@deriv-web-design/ui 0.1.6 → 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.
Files changed (36) hide show
  1. package/block-registry.json +506 -6
  2. package/components.manifest.json +223 -5
  3. package/dist/index.css +836 -23
  4. package/dist/index.css.map +1 -1
  5. package/dist/index.d.mts +312 -7
  6. package/dist/index.d.ts +312 -7
  7. package/dist/index.js +1435 -387
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +1439 -398
  10. package/dist/index.mjs.map +1 -1
  11. package/package.json +1 -1
  12. package/dist/appstore-appgallery-dark-2QPFCM4A.svg +0 -12
  13. package/dist/appstore-appgallery-light-VF62CF5X.svg +0 -19
  14. package/dist/appstore-appstore-dark-FDUROOKK.svg +0 -24
  15. package/dist/appstore-appstore-light-BEVC5PJZ.svg +0 -24
  16. package/dist/appstore-browser-dark-2E6TK6JH.svg +0 -32
  17. package/dist/appstore-browser-light-HBKTW4SI.svg +0 -32
  18. package/dist/appstore-googleplay-dark-HWTOQTL6.svg +0 -14
  19. package/dist/appstore-googleplay-light-W3CS6NAG.svg +0 -14
  20. package/dist/appstore-linux-dark-RVH7CBM4.svg +0 -46
  21. package/dist/appstore-linux-light-WQECAJRC.svg +0 -46
  22. package/dist/appstore-macos-dark-2A3UM5YI.svg +0 -23
  23. package/dist/appstore-macos-light-5LI6ESAV.svg +0 -23
  24. package/dist/appstore-windows-dark-ZDWELB42.svg +0 -31
  25. package/dist/appstore-windows-light-TCALZSJM.svg +0 -31
  26. package/dist/award-leaf-left-HVAB5T5H.png +0 -0
  27. package/dist/award-leaf-right-WR5I37KI.png +0 -0
  28. package/dist/icon-globe-S54WYYEK.svg +0 -10
  29. package/dist/quote-left-63QMW5NQ.webp +0 -0
  30. package/dist/quote-right-W6AS4YHN.webp +0 -0
  31. package/dist/share-facebook-3B3NOC5Q.png +0 -0
  32. package/dist/share-link-QGD6KIDA.png +0 -0
  33. package/dist/share-linkedin-UCIII3JU.png +0 -0
  34. package/dist/share-telegram-QRXGSHQT.png +0 -0
  35. package/dist/share-x-UTEBBL73.png +0 -0
  36. package/dist/trustpilot-rating-badge-D7JOW3KJ.png +0 -0
package/dist/index.d.ts CHANGED
@@ -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>>;
@@ -115,6 +119,17 @@ interface SearchFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "
115
119
  * In controlled mode, update your value state here.
116
120
  * In uncontrolled mode the input is cleared automatically. */
117
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;
118
133
  className?: string;
119
134
  }
120
135
 
@@ -476,6 +491,14 @@ interface FooterAiSummaryProps {
476
491
  /** List of AI app items */
477
492
  items: FooterAiSummaryItem[];
478
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
+ }
479
502
  interface FooterProps extends HTMLAttributes<HTMLElement> {
480
503
  /** Deriv logo image source */
481
504
  logoSrc: string;
@@ -491,10 +514,19 @@ interface FooterProps extends HTMLAttributes<HTMLElement> {
491
514
  socialLinks?: FooterSocialLink[];
492
515
  /** Deriv GO promotion banner */
493
516
  derivGo?: FooterDerivGoProps;
517
+ /** "Trade on TradingView" promotion banner */
518
+ tradingView?: FooterTradeOnProps;
494
519
  /** "Investors in People" badge image source */
495
520
  investorsInPeopleSrc?: string;
496
521
  /** Alt text for the Investors in People badge */
497
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;
498
530
  /** Legal / licence text block (supports ReactNode for inline links) */
499
531
  licenseText?: ReactNode;
500
532
  /** Risk-warning paragraph text */
@@ -508,7 +540,7 @@ interface FooterProps extends HTMLAttributes<HTMLElement> {
508
540
  aiSummary?: FooterAiSummaryProps;
509
541
  }
510
542
 
511
- 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;
512
544
 
513
545
  type HeroVariant = "split" | "centered" | "showcase";
514
546
  interface HeroButtonProps {
@@ -1182,6 +1214,43 @@ interface TableProps extends HTMLAttributes<HTMLDivElement> {
1182
1214
 
1183
1215
  declare const Table: ({ sectionTitle, columns, rows, mainColumnKey, pageSize, searchPlaceholder, infoText, className, ...props }: TableProps) => react_jsx_runtime.JSX.Element;
1184
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
+
1185
1254
  interface PersonItem {
1186
1255
  /** Person's full name */
1187
1256
  name: string;
@@ -1228,10 +1297,12 @@ declare const Leaders: ({ title, description, items, initialVisibleCount, expand
1228
1297
  interface ImageBannerProps extends HTMLAttributes<HTMLElement> {
1229
1298
  /**
1230
1299
  * Layout variant.
1231
- * - `"split"` (default): image fills the right-hand panel; text on the left.
1232
- * - `"full-bg"`: image covers the entire card as a background; text overlaid on top.
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.
1233
1304
  */
1234
- variant?: "split" | "full-bg";
1305
+ variant?: "split-left" | "split-right" | "full-bg-left" | "full-bg-right";
1235
1306
  /** Section headline */
1236
1307
  title?: string;
1237
1308
  /** Supporting body copy beneath the title */
@@ -1244,8 +1315,9 @@ interface ImageBannerProps extends HTMLAttributes<HTMLElement> {
1244
1315
  onCtaClick?: () => void;
1245
1316
  /**
1246
1317
  * URL of the photo.
1247
- * - `"split"`: fills the right-hand panel; stacks below text on mobile.
1248
- * - `"full-bg"`: covers the entire card as a background image.
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.
1249
1321
  */
1250
1322
  imageUrl?: string;
1251
1323
  /** Accessible alt text for the image */
@@ -1799,4 +1871,237 @@ declare const PARALLAX_BANNER_TEXT_CONTENT: {
1799
1871
  declare const DEFAULT_CULTURE_CARDS: ParallaxBannerCultureCard[];
1800
1872
  declare const ParallaxBanner: ({ variant, title, description, ctaLabel, ctaHref, onCtaClick, imageUrl, imageAlt, cards, enableParallax, className, ...props }: ParallaxBannerProps) => react_jsx_runtime.JSX.Element;
1801
1873
 
1802
- 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, 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, DayNightTransition, type DayNightTransitionProps, DotLottieInView, type DotLottieInViewProps, DownloadBadge, type DownloadBadgeColorScheme, type DownloadBadgePlatform, type DownloadBadgeProps, DownloadBanner, type DownloadBannerProps, type DownloadBannerStyle, FEATURE_AWARDS_TEXT_CONTENT, FEATURE_BLOG_CATEGORIES_TEXT_CONTENT, FEATURE_BLOG_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, 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, 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, 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, dayNightTransitionV2Preset };
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 };