@deriv-web-design/ui 0.1.6 → 0.1.9

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 +840 -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 +1449 -389
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.mjs +1453 -400
  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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$comment": "Generated by scripts/generate-component-manifest.ts from the TypeScript types. Do not edit by hand. Props inherited from React HTMLAttributes are intentionally omitted. `default` is the value declared in the component's own parameter destructuring; a prop whose effective default is applied further down the tree (e.g. cards[].showLink) has no `default` here — see block-registry.json `fields` for documented effective defaults.",
3
3
  "package": "@deriv-web-design/ui",
4
- "componentCount": 48,
4
+ "componentCount": 52,
5
5
  "components": {
6
6
  "Accordion": {
7
7
  "name": "Accordion",
@@ -1024,6 +1024,45 @@
1024
1024
  }
1025
1025
  }
1026
1026
  },
1027
+ "DynamicTable": {
1028
+ "name": "DynamicTable",
1029
+ "source": "templates/DynamicTable/DynamicTable.tsx",
1030
+ "props": {
1031
+ "columns": {
1032
+ "type": "DynamicTableColumnDef[]",
1033
+ "required": true,
1034
+ "description": "Column definitions (order matters). Extra columns beyond the variant are ignored.",
1035
+ "items": {
1036
+ "header": {
1037
+ "type": "string | string[]",
1038
+ "required": true,
1039
+ "description": "Header label text. Pass an array for multi-line headers (e.g. [\"Spread\", \"reduction\"])."
1040
+ },
1041
+ "key": {
1042
+ "type": "string",
1043
+ "required": true,
1044
+ "description": "Unique key matching the row data field"
1045
+ }
1046
+ }
1047
+ },
1048
+ "rows": {
1049
+ "type": "DynamicTableRowData[]",
1050
+ "required": true,
1051
+ "description": "Row data"
1052
+ },
1053
+ "sectionTitle": {
1054
+ "type": "string",
1055
+ "required": false,
1056
+ "description": "Optional section title rendered above the table"
1057
+ },
1058
+ "variant": {
1059
+ "type": "DynamicTableVariant",
1060
+ "required": false,
1061
+ "description": "Column-count variant. - `Three columns` — one label column + two comparison columns - `Four columns` — one label column + three comparison columns",
1062
+ "default": "Three columns"
1063
+ }
1064
+ }
1065
+ },
1027
1066
  "FaqAccordion": {
1028
1067
  "name": "FaqAccordion",
1029
1068
  "source": "templates/FaqAccordion/FaqAccordion.tsx",
@@ -1651,6 +1690,108 @@
1651
1690
  }
1652
1691
  }
1653
1692
  },
1693
+ "FeatureOffices": {
1694
+ "name": "FeatureOffices",
1695
+ "source": "templates/FeatureOffices/FeatureOffices.tsx",
1696
+ "props": {
1697
+ "activeRegionId": {
1698
+ "type": "string",
1699
+ "required": false,
1700
+ "description": "Controlled active region tab id"
1701
+ },
1702
+ "className": {
1703
+ "type": "string",
1704
+ "required": false,
1705
+ "description": "Extra class name merged onto the root `<section>`."
1706
+ },
1707
+ "defaultActiveRegionId": {
1708
+ "type": "string",
1709
+ "required": false,
1710
+ "description": "Initial active tab id for uncontrolled usage (default: `regions[0].id`)"
1711
+ },
1712
+ "linkText": {
1713
+ "type": "string",
1714
+ "required": false,
1715
+ "description": "Default label for each office's \"See location\" link.",
1716
+ "defaultExpression": "FEATURE_OFFICES_TEXT_CONTENT.linkText"
1717
+ },
1718
+ "offices": {
1719
+ "type": "FeatureOffice[]",
1720
+ "required": true,
1721
+ "description": "All offices — filtered client-side by the active region tab.",
1722
+ "items": {
1723
+ "address": {
1724
+ "type": "string",
1725
+ "required": true,
1726
+ "description": "Full postal address. Use \"\\n\" to break the address onto multiple lines."
1727
+ },
1728
+ "city": {
1729
+ "type": "string",
1730
+ "required": true,
1731
+ "description": "City name, e.g. \"London\"."
1732
+ },
1733
+ "country": {
1734
+ "type": "string",
1735
+ "required": true,
1736
+ "description": "Country name, e.g. \"United Kingdom\"."
1737
+ },
1738
+ "flagAlt": {
1739
+ "type": "string",
1740
+ "required": false,
1741
+ "description": "Alt text for the flag image. Defaults to `country` when omitted."
1742
+ },
1743
+ "flagImage": {
1744
+ "type": "string",
1745
+ "required": true,
1746
+ "description": "Flag image shown above the office name (real flag artwork, not an emoji)."
1747
+ },
1748
+ "href": {
1749
+ "type": "string",
1750
+ "required": false,
1751
+ "description": "Destination URL for the \"See location\" link (typically a map link). When omitted, the office card renders with no link."
1752
+ },
1753
+ "linkText": {
1754
+ "type": "string",
1755
+ "required": false,
1756
+ "description": "Overrides the default \"See location\" link label for this office."
1757
+ },
1758
+ "region": {
1759
+ "type": "string",
1760
+ "required": true,
1761
+ "description": "Region tab id this office belongs to (matches a `regions[].id`)."
1762
+ }
1763
+ }
1764
+ },
1765
+ "onRegionChange": {
1766
+ "type": "((id: string) => void)",
1767
+ "required": false,
1768
+ "description": "Called whenever a different region tab is selected"
1769
+ },
1770
+ "regions": {
1771
+ "type": "FeatureOfficeRegion[]",
1772
+ "required": true,
1773
+ "description": "Region tabs, CMS-managed. At least one is required.",
1774
+ "items": {
1775
+ "id": {
1776
+ "type": "string",
1777
+ "required": true,
1778
+ "description": "Stable identifier — must match `FeatureOffice.region` for filtering to work. CMS-managed."
1779
+ },
1780
+ "label": {
1781
+ "type": "string",
1782
+ "required": true,
1783
+ "description": "Tab label shown in the pill row. CMS-managed."
1784
+ }
1785
+ }
1786
+ },
1787
+ "title": {
1788
+ "type": "string",
1789
+ "required": false,
1790
+ "description": "Section heading. Defaults to \"Our offices\".",
1791
+ "defaultExpression": "FEATURE_OFFICES_TEXT_CONTENT.title"
1792
+ }
1793
+ }
1794
+ },
1654
1795
  "FeatureScroll": {
1655
1796
  "name": "FeatureScroll",
1656
1797
  "source": "templates/FeatureScroll/FeatureScroll.tsx",
@@ -1779,6 +1920,12 @@
1779
1920
  "description": "Alt text for the Investors in People badge",
1780
1921
  "default": "Investors in People - Platinum"
1781
1922
  },
1923
+ "investorsInPeopleInHeader": {
1924
+ "type": "boolean",
1925
+ "required": false,
1926
+ "description": "Moves the \"Investors in People\" badge into the header row (desktop only, replacing the AI summary bar's slot) and centers the social icons between the logo and the badge, instead of showing the badge in the sidebar/stacked position below the nav.",
1927
+ "default": false
1928
+ },
1782
1929
  "investorsInPeopleSrc": {
1783
1930
  "type": "string",
1784
1931
  "required": false,
@@ -1815,6 +1962,11 @@
1815
1962
  "required": false,
1816
1963
  "description": "Social media links shown in the header row",
1817
1964
  "default": []
1965
+ },
1966
+ "tradingView": {
1967
+ "type": "FooterTradeOnProps",
1968
+ "required": false,
1969
+ "description": "\"Trade on TradingView\" promotion banner"
1818
1970
  }
1819
1971
  }
1820
1972
  },
@@ -2206,7 +2358,7 @@
2206
2358
  "imageUrl": {
2207
2359
  "type": "string",
2208
2360
  "required": false,
2209
- "description": "URL of the photo. - `\"split\"`: fills the right-hand panel; stacks below text on mobile. - `\"full-bg\"`: covers the entire card as a background image."
2361
+ "description": "URL of the photo. - `\"split-left\"`: fills the right-hand panel; stacks below text on mobile. - `\"split-right\"`: fills the left-hand panel; stacks above text on mobile. - `\"full-bg-left\"` / `\"full-bg-right\"`: covers the entire card as a background image."
2210
2362
  },
2211
2363
  "onCtaClick": {
2212
2364
  "type": "(() => void)",
@@ -2220,10 +2372,10 @@
2220
2372
  "default": "Join our global community"
2221
2373
  },
2222
2374
  "variant": {
2223
- "type": "\"split\" | \"full-bg\"",
2375
+ "type": "\"split-left\" | \"split-right\" | \"full-bg-left\" | \"full-bg-right\"",
2224
2376
  "required": false,
2225
- "description": "Layout variant. - `\"split\"` (default): image fills the right-hand panel; text on the left. - `\"full-bg\"`: image covers the entire card as a background; text overlaid on top.",
2226
- "default": "split"
2377
+ "description": "Layout variant. - `\"split-left\"` (default): text on the left; image fills the right-hand panel. - `\"split-right\"`: image fills the left-hand panel; text on the right. - `\"full-bg-left\"`: image covers the entire card as a background; text overlaid on the left. - `\"full-bg-right\"`: image covers the entire card as a background; text overlaid on the right.",
2378
+ "default": "split-left"
2227
2379
  }
2228
2380
  }
2229
2381
  },
@@ -2887,6 +3039,72 @@
2887
3039
  "description": "The large body copy that animates word-by-word on scroll"
2888
3040
  }
2889
3041
  }
3042
+ },
3043
+ "TradingCalculator": {
3044
+ "name": "TradingCalculator",
3045
+ "source": "templates/TradingCalculator/TradingCalculator.tsx",
3046
+ "props": {
3047
+ "className": {
3048
+ "type": "string",
3049
+ "required": false,
3050
+ "description": "Extra class name merged onto the root `<section>`."
3051
+ },
3052
+ "defaultSymbol": {
3053
+ "type": "string",
3054
+ "required": false,
3055
+ "description": "Symbol code to preselect on mount once symbols have loaded, e.g. \"EURUSD\"."
3056
+ },
3057
+ "exchangeRateWsUrl": {
3058
+ "type": "string | null",
3059
+ "required": false,
3060
+ "description": "Deriv's public WebSocket API endpoint, used to fetch live USD exchange rates when a selected instrument's base/profit currency isn't already USD. `app_id=1089` is Deriv's public demo app id (safe to ship — it is not a secret, only a rate-limited API client identifier); register your own at https://api.deriv.com for production traffic volumes. Pass `null` to disable live conversion — non-USD instruments then show \"N/A\" for any value that would have required it, instead of a silently wrong number.",
3061
+ "defaultExpression": "DEFAULT_EXCHANGE_RATE_WS_URL"
3062
+ },
3063
+ "symbols": {
3064
+ "type": "TradingSymbolSpec[]",
3065
+ "required": false,
3066
+ "description": "Live instrument specs (contract size, leverage, swap rates, live price...). When omitted, the component fetches them itself from `symbolsEndpoint` on mount. Pass this to supply your own data — tests, Storybook, SSR, or a project-side proxy/cache in front of the feed."
3067
+ },
3068
+ "symbolsEndpoint": {
3069
+ "type": "string",
3070
+ "required": false,
3071
+ "description": "JSON endpoint returning an array of `TradingSymbolSpec`. This is Deriv's own public, unauthenticated feed — the same one deriv.com/trading-calculators uses — refreshed continuously server-side.",
3072
+ "defaultExpression": "DEFAULT_SYMBOLS_ENDPOINT"
3073
+ },
3074
+ "variant": {
3075
+ "type": "TradingCalculatorVariant",
3076
+ "required": false,
3077
+ "description": "Which single-purpose calculator page this instance mirrors — controls which result(s) the \"Results\" panel shows. See `TradingCalculatorVariant` for what each value maps to.",
3078
+ "default": "main"
3079
+ }
3080
+ }
3081
+ },
3082
+ "TradingCalculatorHowTo": {
3083
+ "name": "TradingCalculatorHowTo",
3084
+ "source": "templates/TradingCalculatorHowTo/TradingCalculatorHowTo.tsx",
3085
+ "props": {
3086
+ "className": {
3087
+ "type": "string",
3088
+ "required": false,
3089
+ "description": "Extra class name merged onto the root `<section>`."
3090
+ },
3091
+ "description": {
3092
+ "type": "string",
3093
+ "required": false,
3094
+ "description": "Section description, shown under the title. Defaults to the canonical copy for `variant`."
3095
+ },
3096
+ "title": {
3097
+ "type": "string",
3098
+ "required": false,
3099
+ "description": "Section heading. Defaults to the canonical heading for `variant`, e.g. \"How to calculate margin requirements\"."
3100
+ },
3101
+ "variant": {
3102
+ "type": "TradingCalculatorHowToVariant",
3103
+ "required": false,
3104
+ "description": "Which deriv.com \"How to calculate…\" page this instance mirrors.",
3105
+ "default": "margin"
3106
+ }
3107
+ }
2890
3108
  }
2891
3109
  },
2892
3110
  "aliases": {