@deriv-web-design/ui 0.1.33 → 0.1.35

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.
@@ -504,6 +504,121 @@
504
504
  }
505
505
  }
506
506
  },
507
+ "comparison-cards": {
508
+ "id": "comparison-cards",
509
+ "name": "Comparison Cards",
510
+ "component": "ComparisonCards",
511
+ "category": "feature",
512
+ "description": "Centred section header above two or three equal-height comparison cards. Each card repeats its own label/value rows on an independent light or dark surface, with an optional per-card footnote.",
513
+ "purpose": "An authored marketing band with a section heading and supporting copy above two or three equal-height comparison cards. Each card is an independent light or dark surface that repeats its own label/value rows. Optional footnotes belong to a specific card — never the section header. This is a separate block from `DynamicTable` and `FeatureCards` so Raven can map a 2–3 option card band with repeated spec rows without a route-specific hack.",
514
+ "keywords": [
515
+ "comparison",
516
+ "cards",
517
+ "spot",
518
+ "futures",
519
+ "specs",
520
+ "what-you-can-trade",
521
+ "options",
522
+ "marketing",
523
+ "trading",
524
+ "deriv",
525
+ "light-dark"
526
+ ],
527
+ "sectionType": "feature",
528
+ "global": false,
529
+ "requiredFields": [
530
+ "title",
531
+ "cards"
532
+ ],
533
+ "optionalFields": [
534
+ "description"
535
+ ],
536
+ "variants": [
537
+ "default"
538
+ ],
539
+ "recommendedPosition": 5,
540
+ "placement": [
541
+ "middle"
542
+ ],
543
+ "layout": {
544
+ "alignment": "center",
545
+ "gridColumns": "2",
546
+ "contentWidth": "large",
547
+ "background": false,
548
+ "overlay": false
549
+ },
550
+ "supports": {
551
+ "backgroundImage": false,
552
+ "backgroundVideo": false,
553
+ "foregroundImage": false,
554
+ "primaryButton": false,
555
+ "secondaryButton": false,
556
+ "sectionLink": false,
557
+ "cardLink": false,
558
+ "icons": false
559
+ },
560
+ "imageRoles": [],
561
+ "defaultValues": {},
562
+ "fields": {
563
+ "cards": {
564
+ "type": "array",
565
+ "required": true,
566
+ "itemFields": {
567
+ "description": {
568
+ "type": "string",
569
+ "required": true,
570
+ "maxLength": 280
571
+ },
572
+ "footnote": {
573
+ "type": "string",
574
+ "required": false,
575
+ "maxLength": 280,
576
+ "description": "Optional disclaimer belonging to this card only — not the section header."
577
+ },
578
+ "rows": {
579
+ "type": "array",
580
+ "required": true,
581
+ "itemFields": {
582
+ "label": {
583
+ "type": "string",
584
+ "required": true,
585
+ "maxLength": 60
586
+ },
587
+ "value": {
588
+ "type": "string",
589
+ "required": true,
590
+ "maxLength": 80
591
+ }
592
+ }
593
+ },
594
+ "theme": {
595
+ "type": "string",
596
+ "required": false,
597
+ "enum": [
598
+ "light",
599
+ "dark"
600
+ ],
601
+ "description": "Card surface. When omitted, cards cycle light → dark."
602
+ },
603
+ "title": {
604
+ "type": "string",
605
+ "required": true,
606
+ "maxLength": 80
607
+ }
608
+ }
609
+ },
610
+ "description": {
611
+ "type": "string",
612
+ "required": false,
613
+ "maxLength": 240
614
+ },
615
+ "title": {
616
+ "type": "string",
617
+ "required": true,
618
+ "maxLength": 80
619
+ }
620
+ }
621
+ },
507
622
  "coral-banner-static": {
508
623
  "id": "coral-banner-static",
509
624
  "name": "Coral Banner",
@@ -777,6 +892,189 @@
777
892
  }
778
893
  }
779
894
  },
895
+ "crypto-markets-table": {
896
+ "id": "crypto-markets-table",
897
+ "name": "CryptoMarketsTable",
898
+ "component": "CryptoMarketsTable",
899
+ "category": "markets",
900
+ "description": "Self-sourcing spot/futures markets table for Deriv Crypto Exchange. Streams public tickers and hourly klines, shows price, 1h/24h change, and a 7-day sparkline. No authentication required.",
901
+ "purpose": "A self-sourcing markets table for Deriv Crypto Exchange. Streams public spot or futures tickers plus hourly klines to show price, 1h %, 24h %, and a 7-day sparkline. Quote-currency tabs are generated from discovered markets.",
902
+ "keywords": [
903
+ "crypto",
904
+ "exchange",
905
+ "markets",
906
+ "table",
907
+ "spot",
908
+ "futures",
909
+ "sparkline",
910
+ "deriv crypto exchange",
911
+ "explore markets"
912
+ ],
913
+ "sectionType": "table",
914
+ "global": false,
915
+ "requiredFields": [],
916
+ "optionalFields": [
917
+ "variant",
918
+ "initialMarket",
919
+ "initialQuoteCurrency",
920
+ "apiOrigin",
921
+ "maxRows"
922
+ ],
923
+ "variants": [
924
+ "default"
925
+ ],
926
+ "recommendedPosition": 3,
927
+ "placement": [
928
+ "middle"
929
+ ],
930
+ "layout": {
931
+ "alignment": "center",
932
+ "carousel": false,
933
+ "contentWidth": "large",
934
+ "background": false,
935
+ "overlay": false
936
+ },
937
+ "supports": {
938
+ "backgroundImage": false,
939
+ "liveData": true,
940
+ "form": false,
941
+ "primaryButton": false,
942
+ "secondaryButton": false,
943
+ "badge": false
944
+ },
945
+ "imageRoles": [],
946
+ "defaultValues": {
947
+ "variant": "default",
948
+ "initialMarket": "spot",
949
+ "initialQuoteCurrency": "USDT",
950
+ "apiOrigin": "https://deriv.exchange"
951
+ },
952
+ "fields": {
953
+ "apiOrigin": {
954
+ "type": "string",
955
+ "required": false
956
+ },
957
+ "initialMarket": {
958
+ "type": "string",
959
+ "required": false,
960
+ "enum": [
961
+ "spot",
962
+ "futures"
963
+ ],
964
+ "default": "spot"
965
+ },
966
+ "initialQuoteCurrency": {
967
+ "type": "string",
968
+ "required": false,
969
+ "maxLength": 12,
970
+ "default": "USDT"
971
+ },
972
+ "maxRows": {
973
+ "type": "number",
974
+ "required": false,
975
+ "min": 1,
976
+ "max": 500
977
+ },
978
+ "variant": {
979
+ "type": "string",
980
+ "required": false,
981
+ "enum": [
982
+ "default"
983
+ ],
984
+ "default": "default"
985
+ }
986
+ }
987
+ },
988
+ "crypto-trade-converter": {
989
+ "id": "crypto-trade-converter",
990
+ "name": "CryptoTradeConverter",
991
+ "component": "CryptoTradeConverter",
992
+ "category": "tools",
993
+ "description": "Self-sourcing Buy/Sell crypto converter for Deriv Crypto Exchange. Streams public spot prices, keeps pay/receive amounts synchronized, and links to the exchange. No authentication, balances, or order placement.",
994
+ "purpose": "A self-sourcing Buy/Sell converter for Deriv Crypto Exchange marketing pages. Streams public spot prices at runtime, keeps pay/receive amounts synchronized to the live mid price, and links traders to the exchange. Authoring fields are configuration only — never live prices.",
995
+ "keywords": [
996
+ "crypto",
997
+ "exchange",
998
+ "converter",
999
+ "buy sell",
1000
+ "spot",
1001
+ "btc",
1002
+ "usdt",
1003
+ "deriv crypto exchange",
1004
+ "trade converter"
1005
+ ],
1006
+ "sectionType": "converter",
1007
+ "global": false,
1008
+ "requiredFields": [],
1009
+ "optionalFields": [
1010
+ "variant",
1011
+ "market",
1012
+ "defaultPair",
1013
+ "tradeHref",
1014
+ "apiOrigin"
1015
+ ],
1016
+ "variants": [
1017
+ "default"
1018
+ ],
1019
+ "recommendedPosition": 2,
1020
+ "placement": [
1021
+ "middle"
1022
+ ],
1023
+ "layout": {
1024
+ "alignment": "center",
1025
+ "carousel": false,
1026
+ "contentWidth": "large",
1027
+ "background": false,
1028
+ "overlay": false
1029
+ },
1030
+ "supports": {
1031
+ "backgroundImage": false,
1032
+ "liveData": true,
1033
+ "form": true,
1034
+ "primaryButton": true,
1035
+ "secondaryButton": false,
1036
+ "badge": false
1037
+ },
1038
+ "imageRoles": [],
1039
+ "defaultValues": {
1040
+ "variant": "default",
1041
+ "market": "spot",
1042
+ "defaultPair": "BTC/USDT",
1043
+ "tradeHref": "https://deriv.exchange",
1044
+ "apiOrigin": "https://deriv.exchange"
1045
+ },
1046
+ "fields": {
1047
+ "apiOrigin": {
1048
+ "type": "string",
1049
+ "required": false
1050
+ },
1051
+ "defaultPair": {
1052
+ "type": "string",
1053
+ "required": false,
1054
+ "maxLength": 40
1055
+ },
1056
+ "market": {
1057
+ "type": "string",
1058
+ "required": false,
1059
+ "enum": [
1060
+ "spot"
1061
+ ],
1062
+ "default": "spot"
1063
+ },
1064
+ "tradeHref": {
1065
+ "type": "string",
1066
+ "required": false
1067
+ },
1068
+ "variant": {
1069
+ "type": "string",
1070
+ "required": false,
1071
+ "enum": [
1072
+ "default"
1073
+ ],
1074
+ "default": "default"
1075
+ }
1076
+ }
1077
+ },
780
1078
  "cta-banner-standard": {
781
1079
  "id": "cta-banner-standard",
782
1080
  "name": "CTA Banner Standard",
@@ -2739,6 +3037,173 @@
2739
3037
  }
2740
3038
  }
2741
3039
  },
3040
+ "feature-cards-carousel": {
3041
+ "id": "feature-cards-carousel",
3042
+ "name": "Feature Cards Carousel",
3043
+ "component": "FeatureCardsCarousel",
3044
+ "category": "feature",
3045
+ "description": "Centred section header above a swipeable, peeking feature-card carousel with prev/next controls and pagination dots.",
3046
+ "purpose": "A marketing feature band with a section heading and supporting copy above a swipeable, peeking card carousel. Each slide carries a title, body, optional artwork, optional CTA, and a coral / dark / light surface tone. This is a separate block from `FeatureCards` so page builders can map a multi-slide feature band without choosing among static grid variants.",
3047
+ "keywords": [
3048
+ "feature",
3049
+ "carousel",
3050
+ "slider",
3051
+ "cards",
3052
+ "benefits",
3053
+ "showcase",
3054
+ "what-you-get",
3055
+ "swipe",
3056
+ "marketing",
3057
+ "trading",
3058
+ "deriv"
3059
+ ],
3060
+ "sectionType": "feature",
3061
+ "global": false,
3062
+ "requiredFields": [
3063
+ "title",
3064
+ "items"
3065
+ ],
3066
+ "optionalFields": [
3067
+ "description",
3068
+ "defaultActiveIndex",
3069
+ "autoplay",
3070
+ "autoplayDelay",
3071
+ "showArrows",
3072
+ "showDots"
3073
+ ],
3074
+ "variants": [
3075
+ "default"
3076
+ ],
3077
+ "recommendedPosition": 4,
3078
+ "placement": [
3079
+ "middle"
3080
+ ],
3081
+ "layout": {
3082
+ "alignment": "center",
3083
+ "gridColumns": "1",
3084
+ "contentWidth": "large",
3085
+ "background": false,
3086
+ "overlay": false
3087
+ },
3088
+ "supports": {
3089
+ "backgroundImage": false,
3090
+ "backgroundVideo": false,
3091
+ "foregroundImage": true,
3092
+ "primaryButton": false,
3093
+ "secondaryButton": false,
3094
+ "sectionLink": false,
3095
+ "cardLink": true,
3096
+ "icons": false
3097
+ },
3098
+ "imageRoles": [
3099
+ "slide-image"
3100
+ ],
3101
+ "defaultValues": {
3102
+ "defaultActiveIndex": 0,
3103
+ "autoplay": false,
3104
+ "autoplayDelay": 5000,
3105
+ "showArrows": true,
3106
+ "showDots": true
3107
+ },
3108
+ "fields": {
3109
+ "autoplay": {
3110
+ "type": "boolean",
3111
+ "required": false,
3112
+ "default": false,
3113
+ "description": "Advance slides automatically. Off by default. When on, autoplay pauses on hover, focus, and prefers-reduced-motion."
3114
+ },
3115
+ "autoplayDelay": {
3116
+ "type": "number",
3117
+ "required": false,
3118
+ "default": 5000,
3119
+ "description": "Milliseconds between autoplay advances."
3120
+ },
3121
+ "defaultActiveIndex": {
3122
+ "type": "number",
3123
+ "required": false,
3124
+ "default": 0,
3125
+ "description": "Zero-based index of the initially active slide."
3126
+ },
3127
+ "description": {
3128
+ "type": "string",
3129
+ "required": false,
3130
+ "maxLength": 240
3131
+ },
3132
+ "items": {
3133
+ "type": "array",
3134
+ "required": true,
3135
+ "itemFields": {
3136
+ "ctaHref": {
3137
+ "type": "url",
3138
+ "required": false
3139
+ },
3140
+ "ctaLabel": {
3141
+ "type": "string",
3142
+ "required": false,
3143
+ "maxLength": 40
3144
+ },
3145
+ "description": {
3146
+ "type": "string",
3147
+ "required": true,
3148
+ "maxLength": 280
3149
+ },
3150
+ "image": {
3151
+ "type": "image",
3152
+ "required": false
3153
+ },
3154
+ "imageAlt": {
3155
+ "type": "string",
3156
+ "required": false,
3157
+ "default": "",
3158
+ "defaultSource": "effective",
3159
+ "maxLength": 125,
3160
+ "description": "Alt text for the slide image. Defaults to an empty string (decorative)."
3161
+ },
3162
+ "imageFit": {
3163
+ "type": "string",
3164
+ "required": false,
3165
+ "default": "media",
3166
+ "defaultSource": "effective",
3167
+ "enum": [
3168
+ "media",
3169
+ "cover"
3170
+ ],
3171
+ "description": "Artwork layout. \"media\" places a strip under the copy; \"cover\" fills the card behind the copy."
3172
+ },
3173
+ "title": {
3174
+ "type": "string",
3175
+ "required": true,
3176
+ "maxLength": 80
3177
+ },
3178
+ "tone": {
3179
+ "type": "string",
3180
+ "required": false,
3181
+ "enum": [
3182
+ "coral",
3183
+ "dark",
3184
+ "light"
3185
+ ],
3186
+ "description": "Card surface. When omitted, slides cycle coral → dark → light."
3187
+ }
3188
+ }
3189
+ },
3190
+ "showArrows": {
3191
+ "type": "boolean",
3192
+ "required": false,
3193
+ "default": true
3194
+ },
3195
+ "showDots": {
3196
+ "type": "boolean",
3197
+ "required": false,
3198
+ "default": true
3199
+ },
3200
+ "title": {
3201
+ "type": "string",
3202
+ "required": true,
3203
+ "maxLength": 80
3204
+ }
3205
+ }
3206
+ },
2742
3207
  "feature-cards-icon": {
2743
3208
  "id": "feature-cards-icon",
2744
3209
  "name": "Feature Cards Icon",
@@ -3992,6 +4457,7 @@
3992
4457
  "optionalFields": [
3993
4458
  "subtitle",
3994
4459
  "description",
4460
+ "headingLevel",
3995
4461
  "primaryButton",
3996
4462
  "secondaryButton",
3997
4463
  "backgroundImageSrc",
@@ -4030,7 +4496,9 @@
4030
4496
  "product-image",
4031
4497
  "floating-image"
4032
4498
  ],
4033
- "defaultValues": {},
4499
+ "defaultValues": {
4500
+ "headingLevel": 1
4501
+ },
4034
4502
  "fields": {
4035
4503
  "backgroundImageSrc": {
4036
4504
  "type": "image",
@@ -4053,6 +4521,16 @@
4053
4521
  ],
4054
4522
  "description": "Secondary foreground image. In Showcase it sits below productImage, cropped to 1:1. In Split it is a small layer anchored to the hero's lower inline-end, painted behind heroImage and hidden below 992px; portrait assets keep their natural aspect ratio. Accepts a ReactNode in code; page builders should pass an image URL string."
4055
4523
  },
4524
+ "headingLevel": {
4525
+ "type": "number",
4526
+ "required": false,
4527
+ "default": 1,
4528
+ "enum": [
4529
+ 1,
4530
+ 2
4531
+ ],
4532
+ "description": "Semantic heading level for the title. Defaults to 1 (<h1>). Pass 2 when the Hero is not the page’s primary heading. Styling is unchanged."
4533
+ },
4056
4534
  "heroImage": {
4057
4535
  "type": "image",
4058
4536
  "required": false,