@deriv-web-design/ui 0.1.4 → 0.1.6
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 +3237 -140
- package/components.manifest.json +2902 -0
- package/dist/award-leaf-left-HVAB5T5H.png +0 -0
- package/dist/award-leaf-right-WR5I37KI.png +0 -0
- package/dist/index.css +1941 -5
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +494 -13
- package/dist/index.d.ts +494 -13
- package/dist/index.js +1435 -19
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1420 -20
- package/dist/index.mjs.map +1 -1
- package/dist/share-facebook-3B3NOC5Q.png +0 -0
- package/dist/share-link-QGD6KIDA.png +0 -0
- package/dist/share-linkedin-UCIII3JU.png +0 -0
- package/dist/share-telegram-QRXGSHQT.png +0 -0
- package/dist/share-x-UTEBBL73.png +0 -0
- package/dist/trustpilot-rating-badge-D7JOW3KJ.png +0 -0
- package/package.json +21 -5
|
@@ -0,0 +1,2902 @@
|
|
|
1
|
+
{
|
|
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
|
+
"package": "@deriv-web-design/ui",
|
|
4
|
+
"componentCount": 48,
|
|
5
|
+
"components": {
|
|
6
|
+
"Accordion": {
|
|
7
|
+
"name": "Accordion",
|
|
8
|
+
"source": "components/Accordion/Accordion.tsx",
|
|
9
|
+
"props": {
|
|
10
|
+
"children": {
|
|
11
|
+
"type": "ReactNode",
|
|
12
|
+
"required": false,
|
|
13
|
+
"description": "Body content revealed when expanded"
|
|
14
|
+
},
|
|
15
|
+
"className": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"required": false
|
|
18
|
+
},
|
|
19
|
+
"defaultOpen": {
|
|
20
|
+
"type": "boolean",
|
|
21
|
+
"required": false,
|
|
22
|
+
"description": "Initial open state for uncontrolled usage",
|
|
23
|
+
"default": false
|
|
24
|
+
},
|
|
25
|
+
"onToggle": {
|
|
26
|
+
"type": "((open: boolean) => void)",
|
|
27
|
+
"required": false,
|
|
28
|
+
"description": "Called when the accordion is toggled"
|
|
29
|
+
},
|
|
30
|
+
"open": {
|
|
31
|
+
"type": "boolean",
|
|
32
|
+
"required": false,
|
|
33
|
+
"description": "Controlled open state"
|
|
34
|
+
},
|
|
35
|
+
"showBottomDivider": {
|
|
36
|
+
"type": "boolean",
|
|
37
|
+
"required": false,
|
|
38
|
+
"description": "Show the bottom divider line (default: true)",
|
|
39
|
+
"default": true
|
|
40
|
+
},
|
|
41
|
+
"showFocusRing": {
|
|
42
|
+
"type": "boolean",
|
|
43
|
+
"required": false,
|
|
44
|
+
"description": "Render a visible focus-ring overlay (Storybook demo)",
|
|
45
|
+
"default": false
|
|
46
|
+
},
|
|
47
|
+
"showTopDivider": {
|
|
48
|
+
"type": "boolean",
|
|
49
|
+
"required": false,
|
|
50
|
+
"description": "Show the top divider line (default: true)",
|
|
51
|
+
"default": true
|
|
52
|
+
},
|
|
53
|
+
"title": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"required": true,
|
|
56
|
+
"description": "Accordion header title"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"ArticleHero": {
|
|
61
|
+
"name": "ArticleHero",
|
|
62
|
+
"source": "templates/ArticleHero/ArticleHero.tsx",
|
|
63
|
+
"props": {
|
|
64
|
+
"className": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"required": false,
|
|
67
|
+
"description": "Additional CSS class"
|
|
68
|
+
},
|
|
69
|
+
"featured": {
|
|
70
|
+
"type": "ArticleHeroArticle",
|
|
71
|
+
"required": true,
|
|
72
|
+
"description": "The featured/hero article displayed prominently in the center",
|
|
73
|
+
"objectFields": {
|
|
74
|
+
"onClick": {
|
|
75
|
+
"type": "(() => void)",
|
|
76
|
+
"required": false,
|
|
77
|
+
"description": "Click handler for the article"
|
|
78
|
+
},
|
|
79
|
+
"summary": {
|
|
80
|
+
"type": "string",
|
|
81
|
+
"required": false,
|
|
82
|
+
"description": "Article summary/description"
|
|
83
|
+
},
|
|
84
|
+
"tags": {
|
|
85
|
+
"type": "string[]",
|
|
86
|
+
"required": false,
|
|
87
|
+
"description": "Tags displayed below the content (e.g. date, category)"
|
|
88
|
+
},
|
|
89
|
+
"thumbnail": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"required": false,
|
|
92
|
+
"description": "Thumbnail image URL"
|
|
93
|
+
},
|
|
94
|
+
"thumbnailAlt": {
|
|
95
|
+
"type": "string",
|
|
96
|
+
"required": false
|
|
97
|
+
},
|
|
98
|
+
"title": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"required": true,
|
|
101
|
+
"description": "Article title"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"featuredFooter": {
|
|
106
|
+
"type": "ArticleHeroArticle[]",
|
|
107
|
+
"required": false,
|
|
108
|
+
"description": "Small cards displayed below the featured article (max 2)",
|
|
109
|
+
"default": []
|
|
110
|
+
},
|
|
111
|
+
"leftColumn": {
|
|
112
|
+
"type": "ArticleHeroColumn",
|
|
113
|
+
"required": true,
|
|
114
|
+
"description": "Left sidebar column",
|
|
115
|
+
"objectFields": {
|
|
116
|
+
"articles": {
|
|
117
|
+
"type": "ArticleHeroArticle[]",
|
|
118
|
+
"required": true,
|
|
119
|
+
"description": "List of articles in this column",
|
|
120
|
+
"items": {
|
|
121
|
+
"onClick": {
|
|
122
|
+
"type": "(() => void)",
|
|
123
|
+
"required": false,
|
|
124
|
+
"description": "Click handler for the article"
|
|
125
|
+
},
|
|
126
|
+
"summary": {
|
|
127
|
+
"type": "string",
|
|
128
|
+
"required": false,
|
|
129
|
+
"description": "Article summary/description"
|
|
130
|
+
},
|
|
131
|
+
"tags": {
|
|
132
|
+
"type": "string[]",
|
|
133
|
+
"required": false,
|
|
134
|
+
"description": "Tags displayed below the content (e.g. date, category)"
|
|
135
|
+
},
|
|
136
|
+
"thumbnail": {
|
|
137
|
+
"type": "string",
|
|
138
|
+
"required": false,
|
|
139
|
+
"description": "Thumbnail image URL"
|
|
140
|
+
},
|
|
141
|
+
"thumbnailAlt": {
|
|
142
|
+
"type": "string",
|
|
143
|
+
"required": false
|
|
144
|
+
},
|
|
145
|
+
"title": {
|
|
146
|
+
"type": "string",
|
|
147
|
+
"required": true,
|
|
148
|
+
"description": "Article title"
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
"label": {
|
|
153
|
+
"type": "string",
|
|
154
|
+
"required": false,
|
|
155
|
+
"description": "Section label displayed with a horizontal line (e.g. \"Today's pick\", \"Trending stories\")"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"rightColumn": {
|
|
160
|
+
"type": "ArticleHeroColumn",
|
|
161
|
+
"required": true,
|
|
162
|
+
"description": "Right sidebar column",
|
|
163
|
+
"objectFields": {
|
|
164
|
+
"articles": {
|
|
165
|
+
"type": "ArticleHeroArticle[]",
|
|
166
|
+
"required": true,
|
|
167
|
+
"description": "List of articles in this column",
|
|
168
|
+
"items": {
|
|
169
|
+
"onClick": {
|
|
170
|
+
"type": "(() => void)",
|
|
171
|
+
"required": false,
|
|
172
|
+
"description": "Click handler for the article"
|
|
173
|
+
},
|
|
174
|
+
"summary": {
|
|
175
|
+
"type": "string",
|
|
176
|
+
"required": false,
|
|
177
|
+
"description": "Article summary/description"
|
|
178
|
+
},
|
|
179
|
+
"tags": {
|
|
180
|
+
"type": "string[]",
|
|
181
|
+
"required": false,
|
|
182
|
+
"description": "Tags displayed below the content (e.g. date, category)"
|
|
183
|
+
},
|
|
184
|
+
"thumbnail": {
|
|
185
|
+
"type": "string",
|
|
186
|
+
"required": false,
|
|
187
|
+
"description": "Thumbnail image URL"
|
|
188
|
+
},
|
|
189
|
+
"thumbnailAlt": {
|
|
190
|
+
"type": "string",
|
|
191
|
+
"required": false
|
|
192
|
+
},
|
|
193
|
+
"title": {
|
|
194
|
+
"type": "string",
|
|
195
|
+
"required": true,
|
|
196
|
+
"description": "Article title"
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"label": {
|
|
201
|
+
"type": "string",
|
|
202
|
+
"required": false,
|
|
203
|
+
"description": "Section label displayed with a horizontal line (e.g. \"Today's pick\", \"Trending stories\")"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"ArticleSection": {
|
|
210
|
+
"name": "ArticleSection",
|
|
211
|
+
"source": "templates/ArticleSection/ArticleSection.tsx",
|
|
212
|
+
"props": {
|
|
213
|
+
"articles": {
|
|
214
|
+
"type": "ArticleSectionItem[]",
|
|
215
|
+
"required": true,
|
|
216
|
+
"description": "List of smaller articles",
|
|
217
|
+
"items": {
|
|
218
|
+
"onClick": {
|
|
219
|
+
"type": "(() => void)",
|
|
220
|
+
"required": false,
|
|
221
|
+
"description": "Click handler"
|
|
222
|
+
},
|
|
223
|
+
"summary": {
|
|
224
|
+
"type": "string",
|
|
225
|
+
"required": false,
|
|
226
|
+
"description": "Article summary/description"
|
|
227
|
+
},
|
|
228
|
+
"tags": {
|
|
229
|
+
"type": "string[]",
|
|
230
|
+
"required": false,
|
|
231
|
+
"description": "Tags displayed below the content (e.g. category, date)"
|
|
232
|
+
},
|
|
233
|
+
"thumbnail": {
|
|
234
|
+
"type": "string",
|
|
235
|
+
"required": false,
|
|
236
|
+
"description": "Thumbnail image URL"
|
|
237
|
+
},
|
|
238
|
+
"thumbnailAlt": {
|
|
239
|
+
"type": "string",
|
|
240
|
+
"required": false
|
|
241
|
+
},
|
|
242
|
+
"title": {
|
|
243
|
+
"type": "string",
|
|
244
|
+
"required": true,
|
|
245
|
+
"description": "Article title"
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
"className": {
|
|
250
|
+
"type": "string",
|
|
251
|
+
"required": false,
|
|
252
|
+
"description": "Additional CSS class"
|
|
253
|
+
},
|
|
254
|
+
"featured": {
|
|
255
|
+
"type": "ArticleSectionItem",
|
|
256
|
+
"required": false,
|
|
257
|
+
"description": "The featured article (large card) — not used in \"grid\" variant"
|
|
258
|
+
},
|
|
259
|
+
"linkText": {
|
|
260
|
+
"type": "string",
|
|
261
|
+
"required": false,
|
|
262
|
+
"description": "\"View all\" link text",
|
|
263
|
+
"default": "View all articles"
|
|
264
|
+
},
|
|
265
|
+
"onLinkClick": {
|
|
266
|
+
"type": "(() => void)",
|
|
267
|
+
"required": false,
|
|
268
|
+
"description": "\"View all\" link click handler"
|
|
269
|
+
},
|
|
270
|
+
"sectionTitle": {
|
|
271
|
+
"type": "string",
|
|
272
|
+
"required": true,
|
|
273
|
+
"description": "Section heading"
|
|
274
|
+
},
|
|
275
|
+
"variant": {
|
|
276
|
+
"type": "ArticleSectionVariant",
|
|
277
|
+
"required": false,
|
|
278
|
+
"description": "Layout variant — \"featured\" shows a large horizontal hero card + text-only grid; \"showcase\" shows a vertical featured card + horizontal-reverse card columns; \"grid\" shows a 4-column card grid (horizontal scroll on mobile)",
|
|
279
|
+
"default": "featured"
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
"AvatarGrid": {
|
|
284
|
+
"name": "AvatarGrid",
|
|
285
|
+
"source": "templates/Leaders/Leaders.tsx",
|
|
286
|
+
"props": {
|
|
287
|
+
"className": {
|
|
288
|
+
"type": "string",
|
|
289
|
+
"required": false,
|
|
290
|
+
"description": "Optional CSS class name"
|
|
291
|
+
},
|
|
292
|
+
"collapseText": {
|
|
293
|
+
"type": "string",
|
|
294
|
+
"required": false,
|
|
295
|
+
"description": "Text for the collapse button (default: \"View less\")",
|
|
296
|
+
"default": "View less"
|
|
297
|
+
},
|
|
298
|
+
"description": {
|
|
299
|
+
"type": "string",
|
|
300
|
+
"required": false,
|
|
301
|
+
"description": "Optional description text rendered below the title"
|
|
302
|
+
},
|
|
303
|
+
"expandText": {
|
|
304
|
+
"type": "string",
|
|
305
|
+
"required": false,
|
|
306
|
+
"description": "Text for the expand button (default: \"View all\")",
|
|
307
|
+
"default": "View all"
|
|
308
|
+
},
|
|
309
|
+
"initialVisibleCount": {
|
|
310
|
+
"type": "number",
|
|
311
|
+
"required": false,
|
|
312
|
+
"description": "Number of items to show initially before expanding (default: 4)",
|
|
313
|
+
"default": 4
|
|
314
|
+
},
|
|
315
|
+
"items": {
|
|
316
|
+
"type": "PersonItem[]",
|
|
317
|
+
"required": true,
|
|
318
|
+
"description": "Array of person data objects",
|
|
319
|
+
"items": {
|
|
320
|
+
"imageUrl": {
|
|
321
|
+
"type": "string",
|
|
322
|
+
"required": true,
|
|
323
|
+
"description": "URL to the person's profile image"
|
|
324
|
+
},
|
|
325
|
+
"linkIcon": {
|
|
326
|
+
"type": "ReactNode",
|
|
327
|
+
"required": false,
|
|
328
|
+
"description": "Optional icon element to render inside the link"
|
|
329
|
+
},
|
|
330
|
+
"linkLabel": {
|
|
331
|
+
"type": "string",
|
|
332
|
+
"required": false,
|
|
333
|
+
"description": "Accessible label for the link (e.g. \"LinkedIn\", \"Website\") — defaults to \"Profile\""
|
|
334
|
+
},
|
|
335
|
+
"linkUrl": {
|
|
336
|
+
"type": "string",
|
|
337
|
+
"required": false,
|
|
338
|
+
"description": "Optional URL for a profile link (e.g. LinkedIn, personal page)"
|
|
339
|
+
},
|
|
340
|
+
"name": {
|
|
341
|
+
"type": "string",
|
|
342
|
+
"required": true,
|
|
343
|
+
"description": "Person's full name"
|
|
344
|
+
},
|
|
345
|
+
"role": {
|
|
346
|
+
"type": "string",
|
|
347
|
+
"required": true,
|
|
348
|
+
"description": "Person's job title or role"
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
},
|
|
352
|
+
"title": {
|
|
353
|
+
"type": "string",
|
|
354
|
+
"required": false,
|
|
355
|
+
"description": "Section title"
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
"BottomSheet": {
|
|
360
|
+
"name": "BottomSheet",
|
|
361
|
+
"source": "components/BottomSheet/BottomSheet.tsx",
|
|
362
|
+
"props": {
|
|
363
|
+
"children": {
|
|
364
|
+
"type": "ReactNode",
|
|
365
|
+
"required": false,
|
|
366
|
+
"description": "Flexible body content — list items, form fields, etc."
|
|
367
|
+
},
|
|
368
|
+
"onClose": {
|
|
369
|
+
"type": "() => void",
|
|
370
|
+
"required": true,
|
|
371
|
+
"description": "Called when the user dismisses the sheet (overlay click, close button, or Escape key)"
|
|
372
|
+
},
|
|
373
|
+
"open": {
|
|
374
|
+
"type": "boolean",
|
|
375
|
+
"required": true,
|
|
376
|
+
"description": "Whether the sheet is visible"
|
|
377
|
+
},
|
|
378
|
+
"primaryAction": {
|
|
379
|
+
"type": "BottomSheetAction",
|
|
380
|
+
"required": false,
|
|
381
|
+
"description": "Primary action button rendered at the bottom of the sheet"
|
|
382
|
+
},
|
|
383
|
+
"secondaryAction": {
|
|
384
|
+
"type": "BottomSheetAction",
|
|
385
|
+
"required": false,
|
|
386
|
+
"description": "Secondary action button rendered below the primary"
|
|
387
|
+
},
|
|
388
|
+
"showHandleBar": {
|
|
389
|
+
"type": "boolean",
|
|
390
|
+
"required": false,
|
|
391
|
+
"description": "Show the drag handle bar at the top. Default: true",
|
|
392
|
+
"default": true
|
|
393
|
+
},
|
|
394
|
+
"showHeader": {
|
|
395
|
+
"type": "boolean",
|
|
396
|
+
"required": false,
|
|
397
|
+
"description": "Show the header row (title + close button). Default: true",
|
|
398
|
+
"default": true
|
|
399
|
+
},
|
|
400
|
+
"title": {
|
|
401
|
+
"type": "string",
|
|
402
|
+
"required": false,
|
|
403
|
+
"description": "Title displayed in the header"
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
},
|
|
407
|
+
"Breadcrumb": {
|
|
408
|
+
"name": "Breadcrumb",
|
|
409
|
+
"source": "components/Breadcrumb/Breadcrumb.tsx",
|
|
410
|
+
"props": {
|
|
411
|
+
"collapsible": {
|
|
412
|
+
"type": "boolean",
|
|
413
|
+
"required": false,
|
|
414
|
+
"description": "Collapse middle items into \"…\" on mobile when items > 3. Defaults to true.",
|
|
415
|
+
"default": true
|
|
416
|
+
},
|
|
417
|
+
"items": {
|
|
418
|
+
"type": "BreadcrumbItem[]",
|
|
419
|
+
"required": true,
|
|
420
|
+
"items": {
|
|
421
|
+
"href": {
|
|
422
|
+
"type": "string",
|
|
423
|
+
"required": false
|
|
424
|
+
},
|
|
425
|
+
"label": {
|
|
426
|
+
"type": "string",
|
|
427
|
+
"required": true
|
|
428
|
+
},
|
|
429
|
+
"onClick": {
|
|
430
|
+
"type": "((event: MouseEvent<HTMLAnchorElement, MouseEvent>) => void)",
|
|
431
|
+
"required": false
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
},
|
|
435
|
+
"size": {
|
|
436
|
+
"type": "BreadcrumbSize",
|
|
437
|
+
"required": false,
|
|
438
|
+
"default": "md"
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
},
|
|
442
|
+
"Button": {
|
|
443
|
+
"name": "Button",
|
|
444
|
+
"source": "components/Button/Button.tsx",
|
|
445
|
+
"props": {
|
|
446
|
+
"colorScheme": {
|
|
447
|
+
"type": "ButtonColorScheme",
|
|
448
|
+
"required": false,
|
|
449
|
+
"description": "Color scheme — coral (brand), black, or white (for dark backgrounds)",
|
|
450
|
+
"default": "coral"
|
|
451
|
+
},
|
|
452
|
+
"fullWidth": {
|
|
453
|
+
"type": "boolean",
|
|
454
|
+
"required": false,
|
|
455
|
+
"description": "Stretch the button to fill its container",
|
|
456
|
+
"default": false
|
|
457
|
+
},
|
|
458
|
+
"icon": {
|
|
459
|
+
"type": "ReactNode",
|
|
460
|
+
"required": false,
|
|
461
|
+
"description": "Icon node to render"
|
|
462
|
+
},
|
|
463
|
+
"iconPosition": {
|
|
464
|
+
"type": "ButtonIconPosition",
|
|
465
|
+
"required": false,
|
|
466
|
+
"description": "Icon placement relative to the label",
|
|
467
|
+
"default": "none"
|
|
468
|
+
},
|
|
469
|
+
"label": {
|
|
470
|
+
"type": "string",
|
|
471
|
+
"required": false,
|
|
472
|
+
"description": "Button label text"
|
|
473
|
+
},
|
|
474
|
+
"showFocusRing": {
|
|
475
|
+
"type": "boolean",
|
|
476
|
+
"required": false,
|
|
477
|
+
"description": "Render a visible focus-ring overlay (keyboard / accessibility demos)",
|
|
478
|
+
"default": false
|
|
479
|
+
},
|
|
480
|
+
"variant": {
|
|
481
|
+
"type": "ButtonVariant",
|
|
482
|
+
"required": false,
|
|
483
|
+
"description": "Visual style variant",
|
|
484
|
+
"default": "primary"
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
},
|
|
488
|
+
"CTABanner": {
|
|
489
|
+
"name": "CTABanner",
|
|
490
|
+
"source": "templates/CTABanner/CTABanner.tsx",
|
|
491
|
+
"props": {
|
|
492
|
+
"avatars": {
|
|
493
|
+
"type": "AvatarItem[]",
|
|
494
|
+
"required": false,
|
|
495
|
+
"description": "Override the default avatar array"
|
|
496
|
+
},
|
|
497
|
+
"ctaHref": {
|
|
498
|
+
"type": "string",
|
|
499
|
+
"required": false,
|
|
500
|
+
"description": "CTA button href",
|
|
501
|
+
"default": "#"
|
|
502
|
+
},
|
|
503
|
+
"ctaLabel": {
|
|
504
|
+
"type": "string",
|
|
505
|
+
"required": false,
|
|
506
|
+
"description": "CTA button label",
|
|
507
|
+
"default": "Open account"
|
|
508
|
+
},
|
|
509
|
+
"headline": {
|
|
510
|
+
"type": "string",
|
|
511
|
+
"required": false,
|
|
512
|
+
"description": "Section headline",
|
|
513
|
+
"default": "Short section title goes here"
|
|
514
|
+
},
|
|
515
|
+
"variant": {
|
|
516
|
+
"type": "\"standard\" | \"compact\"",
|
|
517
|
+
"required": false,
|
|
518
|
+
"description": "Layout variant. - `standard` (default): 12 avatars, taller section (864px desktop) - `compact`: 7 avatars, section height matches stage (680px desktop)",
|
|
519
|
+
"default": "standard"
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
},
|
|
523
|
+
"Card": {
|
|
524
|
+
"name": "Card",
|
|
525
|
+
"source": "components/Card/Card.tsx",
|
|
526
|
+
"props": {
|
|
527
|
+
"articles": {
|
|
528
|
+
"type": "CardCategoryArticle[]",
|
|
529
|
+
"required": true,
|
|
530
|
+
"description": "List of articles under this category",
|
|
531
|
+
"items": {
|
|
532
|
+
"date": {
|
|
533
|
+
"type": "string",
|
|
534
|
+
"required": false,
|
|
535
|
+
"description": "Date or tag label"
|
|
536
|
+
},
|
|
537
|
+
"onClick": {
|
|
538
|
+
"type": "(() => void)",
|
|
539
|
+
"required": false,
|
|
540
|
+
"description": "Click handler"
|
|
541
|
+
},
|
|
542
|
+
"title": {
|
|
543
|
+
"type": "string",
|
|
544
|
+
"required": true,
|
|
545
|
+
"description": "Article title"
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
},
|
|
549
|
+
"avatar": {
|
|
550
|
+
"type": "string",
|
|
551
|
+
"required": false,
|
|
552
|
+
"description": "Author avatar (article type only)"
|
|
553
|
+
},
|
|
554
|
+
"avatarAlt": {
|
|
555
|
+
"type": "string",
|
|
556
|
+
"required": false
|
|
557
|
+
},
|
|
558
|
+
"colorScheme": {
|
|
559
|
+
"type": "CardPrimaryStyle",
|
|
560
|
+
"required": false,
|
|
561
|
+
"description": "Visual variant — controls background, text and link colours"
|
|
562
|
+
},
|
|
563
|
+
"description": {
|
|
564
|
+
"type": "string",
|
|
565
|
+
"required": true,
|
|
566
|
+
"description": "Card body text"
|
|
567
|
+
},
|
|
568
|
+
"hideAvatar": {
|
|
569
|
+
"type": "boolean",
|
|
570
|
+
"required": false,
|
|
571
|
+
"description": "Hide the author avatar (default: false)"
|
|
572
|
+
},
|
|
573
|
+
"hideTags": {
|
|
574
|
+
"type": "boolean",
|
|
575
|
+
"required": false,
|
|
576
|
+
"description": "Hide the tag pills"
|
|
577
|
+
},
|
|
578
|
+
"hideThumbnail": {
|
|
579
|
+
"type": "boolean",
|
|
580
|
+
"required": false,
|
|
581
|
+
"description": "Hide the thumbnail image"
|
|
582
|
+
},
|
|
583
|
+
"icon": {
|
|
584
|
+
"type": "ReactNode",
|
|
585
|
+
"required": false,
|
|
586
|
+
"description": "Icon rendered above the title"
|
|
587
|
+
},
|
|
588
|
+
"image": {
|
|
589
|
+
"type": "string",
|
|
590
|
+
"required": false,
|
|
591
|
+
"description": "Card image source"
|
|
592
|
+
},
|
|
593
|
+
"imageAlt": {
|
|
594
|
+
"type": "string",
|
|
595
|
+
"required": false
|
|
596
|
+
},
|
|
597
|
+
"layout": {
|
|
598
|
+
"type": "CardThumbnailLayout",
|
|
599
|
+
"required": false,
|
|
600
|
+
"description": "Layout direction — \"vertical\" stacks thumbnail above content, \"horizontal\" places them side by side"
|
|
601
|
+
},
|
|
602
|
+
"linkText": {
|
|
603
|
+
"type": "string",
|
|
604
|
+
"required": false,
|
|
605
|
+
"description": "Link label text (default: \"Learn more\")"
|
|
606
|
+
},
|
|
607
|
+
"onCopyLink": {
|
|
608
|
+
"type": "(() => void)",
|
|
609
|
+
"required": false
|
|
610
|
+
},
|
|
611
|
+
"onHeaderClick": {
|
|
612
|
+
"type": "(() => void)",
|
|
613
|
+
"required": false,
|
|
614
|
+
"description": "Click handler for the title + thumbnail area"
|
|
615
|
+
},
|
|
616
|
+
"onLinkClick": {
|
|
617
|
+
"type": "(() => void)",
|
|
618
|
+
"required": false
|
|
619
|
+
},
|
|
620
|
+
"showCopyLink": {
|
|
621
|
+
"type": "boolean",
|
|
622
|
+
"required": false,
|
|
623
|
+
"description": "Show the copy-link pill button"
|
|
624
|
+
},
|
|
625
|
+
"showIcon": {
|
|
626
|
+
"type": "boolean",
|
|
627
|
+
"required": false,
|
|
628
|
+
"description": "Show or hide the icon (default: true)"
|
|
629
|
+
},
|
|
630
|
+
"showLink": {
|
|
631
|
+
"type": "boolean",
|
|
632
|
+
"required": false,
|
|
633
|
+
"description": "Show the \"Learn more\" inline link (default: true)"
|
|
634
|
+
},
|
|
635
|
+
"summary": {
|
|
636
|
+
"type": "string",
|
|
637
|
+
"required": true,
|
|
638
|
+
"description": "Card body text"
|
|
639
|
+
},
|
|
640
|
+
"tags": {
|
|
641
|
+
"type": "CardTag[]",
|
|
642
|
+
"required": false,
|
|
643
|
+
"description": "Label tags rendered in the meta row"
|
|
644
|
+
},
|
|
645
|
+
"thumbnail": {
|
|
646
|
+
"type": "string",
|
|
647
|
+
"required": false,
|
|
648
|
+
"description": "Hero image for the category"
|
|
649
|
+
},
|
|
650
|
+
"thumbnailAlt": {
|
|
651
|
+
"type": "string",
|
|
652
|
+
"required": false
|
|
653
|
+
},
|
|
654
|
+
"title": {
|
|
655
|
+
"type": "string",
|
|
656
|
+
"required": true,
|
|
657
|
+
"description": "Category heading"
|
|
658
|
+
},
|
|
659
|
+
"type": {
|
|
660
|
+
"type": "CardThumbnailType",
|
|
661
|
+
"required": false,
|
|
662
|
+
"description": "Thumbnail variant — \"video\" shows a play button, \"article\" shows an optional avatar"
|
|
663
|
+
},
|
|
664
|
+
"variant": {
|
|
665
|
+
"type": "\"category\"",
|
|
666
|
+
"required": true
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
},
|
|
670
|
+
"Chip": {
|
|
671
|
+
"name": "Chip",
|
|
672
|
+
"source": "components/Chip/Chip.tsx",
|
|
673
|
+
"props": {
|
|
674
|
+
"icon": {
|
|
675
|
+
"type": "ReactNode",
|
|
676
|
+
"required": false
|
|
677
|
+
},
|
|
678
|
+
"label": {
|
|
679
|
+
"type": "string",
|
|
680
|
+
"required": false
|
|
681
|
+
},
|
|
682
|
+
"selected": {
|
|
683
|
+
"type": "boolean",
|
|
684
|
+
"required": false,
|
|
685
|
+
"default": false
|
|
686
|
+
},
|
|
687
|
+
"showFocusRing": {
|
|
688
|
+
"type": "boolean",
|
|
689
|
+
"required": false,
|
|
690
|
+
"default": false
|
|
691
|
+
},
|
|
692
|
+
"size": {
|
|
693
|
+
"type": "ChipSize",
|
|
694
|
+
"required": false,
|
|
695
|
+
"default": "md"
|
|
696
|
+
},
|
|
697
|
+
"tag": {
|
|
698
|
+
"type": "string",
|
|
699
|
+
"required": false,
|
|
700
|
+
"description": "Optional bold secondary label displayed after the main label"
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
},
|
|
704
|
+
"ChipDropdown": {
|
|
705
|
+
"name": "ChipDropdown",
|
|
706
|
+
"source": "components/ChipDropdown/ChipDropdown.tsx",
|
|
707
|
+
"props": {
|
|
708
|
+
"icon": {
|
|
709
|
+
"type": "ReactNode",
|
|
710
|
+
"required": false,
|
|
711
|
+
"description": "Optional leading icon inside the chip trigger"
|
|
712
|
+
},
|
|
713
|
+
"label": {
|
|
714
|
+
"type": "string",
|
|
715
|
+
"required": true,
|
|
716
|
+
"description": "Placeholder label shown when no value is selected"
|
|
717
|
+
},
|
|
718
|
+
"onChange": {
|
|
719
|
+
"type": "((value: string) => void)",
|
|
720
|
+
"required": false,
|
|
721
|
+
"description": "Called when the user selects an option"
|
|
722
|
+
},
|
|
723
|
+
"options": {
|
|
724
|
+
"type": "ChipDropdownOption[]",
|
|
725
|
+
"required": true,
|
|
726
|
+
"description": "Selectable options rendered in the dropdown list",
|
|
727
|
+
"items": {
|
|
728
|
+
"label": {
|
|
729
|
+
"type": "string",
|
|
730
|
+
"required": true
|
|
731
|
+
},
|
|
732
|
+
"value": {
|
|
733
|
+
"type": "string",
|
|
734
|
+
"required": true
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
},
|
|
738
|
+
"size": {
|
|
739
|
+
"type": "\"sm\" | \"md\"",
|
|
740
|
+
"required": false,
|
|
741
|
+
"description": "Trigger chip size — sm (24px) or md (32px)",
|
|
742
|
+
"default": "md"
|
|
743
|
+
},
|
|
744
|
+
"tag": {
|
|
745
|
+
"type": "string",
|
|
746
|
+
"required": false,
|
|
747
|
+
"description": "Optional bold secondary label shown after main label"
|
|
748
|
+
},
|
|
749
|
+
"value": {
|
|
750
|
+
"type": "string | null",
|
|
751
|
+
"required": false,
|
|
752
|
+
"description": "Currently selected option value"
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
},
|
|
756
|
+
"CoralBanner": {
|
|
757
|
+
"name": "CoralBanner",
|
|
758
|
+
"source": "templates/CoralBanner/CoralBanner.tsx",
|
|
759
|
+
"props": {
|
|
760
|
+
"autoplay": {
|
|
761
|
+
"type": "boolean",
|
|
762
|
+
"required": false,
|
|
763
|
+
"description": "Auto-advance slides (carousel only)",
|
|
764
|
+
"default": true
|
|
765
|
+
},
|
|
766
|
+
"autoplayDelay": {
|
|
767
|
+
"type": "number",
|
|
768
|
+
"required": false,
|
|
769
|
+
"description": "Milliseconds between auto-advances (carousel only). Reference site uses `2000`.",
|
|
770
|
+
"default": 2000
|
|
771
|
+
},
|
|
772
|
+
"infinite": {
|
|
773
|
+
"type": "boolean",
|
|
774
|
+
"required": false,
|
|
775
|
+
"description": "Loop back to the first slide after the last (carousel only)",
|
|
776
|
+
"default": true
|
|
777
|
+
},
|
|
778
|
+
"showArrows": {
|
|
779
|
+
"type": "boolean",
|
|
780
|
+
"required": false,
|
|
781
|
+
"description": "Show the prev/next arrow controls (carousel only, 2+ slides)",
|
|
782
|
+
"default": true
|
|
783
|
+
},
|
|
784
|
+
"showDots": {
|
|
785
|
+
"type": "boolean",
|
|
786
|
+
"required": false,
|
|
787
|
+
"description": "Show the dot pagination (carousel only, 2+ slides)",
|
|
788
|
+
"default": true
|
|
789
|
+
},
|
|
790
|
+
"slides": {
|
|
791
|
+
"type": "CoralBannerSlide[]",
|
|
792
|
+
"required": false,
|
|
793
|
+
"description": "Slide content. `static` variant renders only `slides[0]`."
|
|
794
|
+
},
|
|
795
|
+
"transitionDuration": {
|
|
796
|
+
"type": "number",
|
|
797
|
+
"required": false,
|
|
798
|
+
"description": "Slide transition duration in ms. Reference site uses `330`.",
|
|
799
|
+
"default": 330
|
|
800
|
+
},
|
|
801
|
+
"variant": {
|
|
802
|
+
"type": "\"static\" | \"carousel\"",
|
|
803
|
+
"required": false,
|
|
804
|
+
"description": "`static` — renders a single, non-interactive slide (no arrows/dots/autoplay). `carousel` — renders `slides` in a swipeable, auto-advancing slider (horizontal slide transition, dot pagination, prev/next arrows), matching the banner used on deriv.com and deriv.com/markets/forex.",
|
|
805
|
+
"default": "static"
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
},
|
|
809
|
+
"DayNightTransition": {
|
|
810
|
+
"name": "DayNightTransition",
|
|
811
|
+
"source": "templates/DayNightTransition/DayNightTransition.tsx",
|
|
812
|
+
"props": {
|
|
813
|
+
"ctaHref": {
|
|
814
|
+
"type": "string",
|
|
815
|
+
"required": false,
|
|
816
|
+
"description": "href for the CTA button",
|
|
817
|
+
"default": "#"
|
|
818
|
+
},
|
|
819
|
+
"ctaLabel": {
|
|
820
|
+
"type": "string",
|
|
821
|
+
"required": false,
|
|
822
|
+
"description": "Label for the CTA button",
|
|
823
|
+
"default": "Get started"
|
|
824
|
+
},
|
|
825
|
+
"dayDescription": {
|
|
826
|
+
"type": "string",
|
|
827
|
+
"required": false,
|
|
828
|
+
"description": "Description shown in the day state",
|
|
829
|
+
"default": "Description goes here. Description goes here. Description goes here."
|
|
830
|
+
},
|
|
831
|
+
"dayHeadline": {
|
|
832
|
+
"type": "string",
|
|
833
|
+
"required": false,
|
|
834
|
+
"description": "Headline shown in the day state",
|
|
835
|
+
"default": "Medium length section title goes here"
|
|
836
|
+
},
|
|
837
|
+
"dayImageUrl": {
|
|
838
|
+
"type": "string",
|
|
839
|
+
"required": true,
|
|
840
|
+
"description": "URL for the daytime background image"
|
|
841
|
+
},
|
|
842
|
+
"descriptionLevel": {
|
|
843
|
+
"type": "\"body-md\" | \"body-lg\"",
|
|
844
|
+
"required": false,
|
|
845
|
+
"description": "Description typography scale — maps to `--typography-body-md-*` or `--typography-body-lg-*` tokens.",
|
|
846
|
+
"default": "body-md"
|
|
847
|
+
},
|
|
848
|
+
"headlineLevel": {
|
|
849
|
+
"type": "\"h1\" | \"h2\"",
|
|
850
|
+
"required": false,
|
|
851
|
+
"description": "Headline typography scale — maps to global `--typography-h1-*` or `--typography-h2-*` tokens.",
|
|
852
|
+
"default": "h2"
|
|
853
|
+
},
|
|
854
|
+
"hideCta": {
|
|
855
|
+
"type": "boolean",
|
|
856
|
+
"required": false,
|
|
857
|
+
"description": "When true, the CTA button is omitted (e.g. hero blocks that end on copy only).",
|
|
858
|
+
"default": false
|
|
859
|
+
},
|
|
860
|
+
"inlineDayNightHeadline": {
|
|
861
|
+
"type": "{ prefix: string; dayWord: string; nightWord: string; }",
|
|
862
|
+
"required": false,
|
|
863
|
+
"description": "Webflow-style headline: fixed `prefix` plus `dayWord` / `nightWord` overlaid and scroll-crossfaded (same pattern as `DayNightTransitionV2` HTML: “Trade all ” + day + night)."
|
|
864
|
+
},
|
|
865
|
+
"nightDescription": {
|
|
866
|
+
"type": "string",
|
|
867
|
+
"required": false,
|
|
868
|
+
"description": "Description shown in the night state",
|
|
869
|
+
"default": "Description goes here. Description goes here. Description goes here."
|
|
870
|
+
},
|
|
871
|
+
"nightHeadline": {
|
|
872
|
+
"type": "string",
|
|
873
|
+
"required": false,
|
|
874
|
+
"description": "Headline shown in the night state",
|
|
875
|
+
"default": "Medium length section title goes here"
|
|
876
|
+
},
|
|
877
|
+
"nightImageUrl": {
|
|
878
|
+
"type": "string",
|
|
879
|
+
"required": true,
|
|
880
|
+
"description": "URL for the nighttime background image"
|
|
881
|
+
},
|
|
882
|
+
"scrollPreset": {
|
|
883
|
+
"type": "\"default\" | \"webflow-day-night-v2\"",
|
|
884
|
+
"required": false,
|
|
885
|
+
"description": "`\"webflow-day-night-v2\"` replays IX2 scroll curves from Webflow export `DayNightTransitionV2` (`SCROLLING_IN_VIEW` + `SCROLL_PROGRESS` actionLists `a` / `a-2` in `js/webflow.js`).",
|
|
886
|
+
"default": "default"
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
},
|
|
890
|
+
"DotLottieInView": {
|
|
891
|
+
"name": "DotLottieInView",
|
|
892
|
+
"source": "components/DotLottieInView/DotLottieInView.tsx",
|
|
893
|
+
"props": {},
|
|
894
|
+
"description": "Plays a .lottie once when it scrolls into view. Stops and resets when it leaves view. When it enters view again, it plays once more. Set `enabled={false}` to force stop (e.g. hidden slides) without relying on geometry alone."
|
|
895
|
+
},
|
|
896
|
+
"DownloadBadge": {
|
|
897
|
+
"name": "DownloadBadge",
|
|
898
|
+
"source": "components/DownloadBadge/DownloadBadge.tsx",
|
|
899
|
+
"props": {
|
|
900
|
+
"colorScheme": {
|
|
901
|
+
"type": "DownloadBadgeColorScheme",
|
|
902
|
+
"required": false,
|
|
903
|
+
"description": "Colour scheme — use \"light\" on light backgrounds, \"dark\" on dark backgrounds.",
|
|
904
|
+
"default": "light"
|
|
905
|
+
},
|
|
906
|
+
"href": {
|
|
907
|
+
"type": "string",
|
|
908
|
+
"required": false,
|
|
909
|
+
"description": "Destination URL"
|
|
910
|
+
},
|
|
911
|
+
"platform": {
|
|
912
|
+
"type": "DownloadBadgePlatform",
|
|
913
|
+
"required": true,
|
|
914
|
+
"description": "Which platform badge to render"
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
},
|
|
918
|
+
"DownloadBanner": {
|
|
919
|
+
"name": "DownloadBanner",
|
|
920
|
+
"source": "templates/DownloadBanner/DownloadBanner.tsx",
|
|
921
|
+
"props": {
|
|
922
|
+
"appGalleryHref": {
|
|
923
|
+
"type": "string",
|
|
924
|
+
"required": false
|
|
925
|
+
},
|
|
926
|
+
"appStoreHref": {
|
|
927
|
+
"type": "string",
|
|
928
|
+
"required": false
|
|
929
|
+
},
|
|
930
|
+
"disclaimer": {
|
|
931
|
+
"type": "string",
|
|
932
|
+
"required": false,
|
|
933
|
+
"description": "Optional small-print disclaimer shown below the QR text"
|
|
934
|
+
},
|
|
935
|
+
"googlePlayHref": {
|
|
936
|
+
"type": "string",
|
|
937
|
+
"required": false
|
|
938
|
+
},
|
|
939
|
+
"linuxHref": {
|
|
940
|
+
"type": "string",
|
|
941
|
+
"required": false
|
|
942
|
+
},
|
|
943
|
+
"macOSHref": {
|
|
944
|
+
"type": "string",
|
|
945
|
+
"required": false
|
|
946
|
+
},
|
|
947
|
+
"mobileTitle": {
|
|
948
|
+
"type": "string",
|
|
949
|
+
"required": false,
|
|
950
|
+
"description": "Heading shown on mobile above the badge grid (default: \"Available on\")",
|
|
951
|
+
"default": "Available on"
|
|
952
|
+
},
|
|
953
|
+
"qrCodeAlt": {
|
|
954
|
+
"type": "string",
|
|
955
|
+
"required": false,
|
|
956
|
+
"description": "Accessible alt text for the QR code image",
|
|
957
|
+
"default": "QR code to download the app"
|
|
958
|
+
},
|
|
959
|
+
"qrCodeImage": {
|
|
960
|
+
"type": "string",
|
|
961
|
+
"required": false,
|
|
962
|
+
"description": "QR code image URL. When provided the QR block is shown on desktop."
|
|
963
|
+
},
|
|
964
|
+
"qrSubtitle": {
|
|
965
|
+
"type": "string",
|
|
966
|
+
"required": false,
|
|
967
|
+
"description": "Second line of text beside the QR code (default: \"Android & iOS\")",
|
|
968
|
+
"default": "Android & iOS"
|
|
969
|
+
},
|
|
970
|
+
"qrTitle": {
|
|
971
|
+
"type": "string",
|
|
972
|
+
"required": false,
|
|
973
|
+
"description": "First line of text beside the QR code (default: \"Scan to download\")",
|
|
974
|
+
"default": "Scan to download"
|
|
975
|
+
},
|
|
976
|
+
"showAppGallery": {
|
|
977
|
+
"type": "boolean",
|
|
978
|
+
"required": false,
|
|
979
|
+
"default": true
|
|
980
|
+
},
|
|
981
|
+
"showAppStore": {
|
|
982
|
+
"type": "boolean",
|
|
983
|
+
"required": false,
|
|
984
|
+
"default": true
|
|
985
|
+
},
|
|
986
|
+
"showGooglePlay": {
|
|
987
|
+
"type": "boolean",
|
|
988
|
+
"required": false,
|
|
989
|
+
"default": true
|
|
990
|
+
},
|
|
991
|
+
"showLinux": {
|
|
992
|
+
"type": "boolean",
|
|
993
|
+
"required": false,
|
|
994
|
+
"default": true
|
|
995
|
+
},
|
|
996
|
+
"showMacOS": {
|
|
997
|
+
"type": "boolean",
|
|
998
|
+
"required": false,
|
|
999
|
+
"default": true
|
|
1000
|
+
},
|
|
1001
|
+
"showWeb": {
|
|
1002
|
+
"type": "boolean",
|
|
1003
|
+
"required": false,
|
|
1004
|
+
"default": true
|
|
1005
|
+
},
|
|
1006
|
+
"showWindows": {
|
|
1007
|
+
"type": "boolean",
|
|
1008
|
+
"required": false,
|
|
1009
|
+
"default": true
|
|
1010
|
+
},
|
|
1011
|
+
"style": {
|
|
1012
|
+
"type": "DownloadBannerStyle",
|
|
1013
|
+
"required": false,
|
|
1014
|
+
"description": "Visual style of the inner card. - \"light\" → slate-100 outer section, white inner card - \"light-2\" → white outer section, slate-100 inner card (default) - \"dark\" → white outer section, slate-1200 inner card",
|
|
1015
|
+
"default": "light-2"
|
|
1016
|
+
},
|
|
1017
|
+
"webHref": {
|
|
1018
|
+
"type": "string",
|
|
1019
|
+
"required": false
|
|
1020
|
+
},
|
|
1021
|
+
"windowsHref": {
|
|
1022
|
+
"type": "string",
|
|
1023
|
+
"required": false
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
},
|
|
1027
|
+
"FaqAccordion": {
|
|
1028
|
+
"name": "FaqAccordion",
|
|
1029
|
+
"source": "templates/FaqAccordion/FaqAccordion.tsx",
|
|
1030
|
+
"props": {
|
|
1031
|
+
"colorScheme": {
|
|
1032
|
+
"type": "FaqAccordionColorScheme",
|
|
1033
|
+
"required": false,
|
|
1034
|
+
"description": "Background color scheme (default: \"white\")",
|
|
1035
|
+
"default": "white"
|
|
1036
|
+
},
|
|
1037
|
+
"items": {
|
|
1038
|
+
"type": "FaqItem[]",
|
|
1039
|
+
"required": true,
|
|
1040
|
+
"description": "FAQ items",
|
|
1041
|
+
"items": {
|
|
1042
|
+
"answer": {
|
|
1043
|
+
"type": "string",
|
|
1044
|
+
"required": true,
|
|
1045
|
+
"description": "The answer revealed when expanded"
|
|
1046
|
+
},
|
|
1047
|
+
"question": {
|
|
1048
|
+
"type": "string",
|
|
1049
|
+
"required": true,
|
|
1050
|
+
"description": "The question shown in the accordion header"
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
},
|
|
1054
|
+
"title": {
|
|
1055
|
+
"type": "string",
|
|
1056
|
+
"required": true,
|
|
1057
|
+
"description": "Section headline"
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1060
|
+
},
|
|
1061
|
+
"FeatureAwards": {
|
|
1062
|
+
"name": "FeatureAwards",
|
|
1063
|
+
"source": "templates/FeatureAwards/FeatureAwards.tsx",
|
|
1064
|
+
"props": {
|
|
1065
|
+
"autoScrollDuration": {
|
|
1066
|
+
"type": "number",
|
|
1067
|
+
"required": false,
|
|
1068
|
+
"description": "Seconds for one full auto-scroll loop on mobile (< 768px) — lower is faster. Mobile always auto-scrolls; this only tunes the speed. Defaults to `32`.",
|
|
1069
|
+
"default": 32
|
|
1070
|
+
},
|
|
1071
|
+
"awards": {
|
|
1072
|
+
"type": "AwardItem[]",
|
|
1073
|
+
"required": false,
|
|
1074
|
+
"description": "Ordered list of awards to display. Defaults to `DEFAULT_AWARDS`.",
|
|
1075
|
+
"defaultExpression": "DEFAULT_AWARDS"
|
|
1076
|
+
},
|
|
1077
|
+
"className": {
|
|
1078
|
+
"type": "string",
|
|
1079
|
+
"required": false,
|
|
1080
|
+
"description": "Extra class name merged onto the root `<section>`."
|
|
1081
|
+
},
|
|
1082
|
+
"title": {
|
|
1083
|
+
"type": "string",
|
|
1084
|
+
"required": false,
|
|
1085
|
+
"description": "Section heading. Defaults to \"Our awards\".",
|
|
1086
|
+
"defaultExpression": "FEATURE_AWARDS_TEXT_CONTENT.title"
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
},
|
|
1090
|
+
"FeatureBlog": {
|
|
1091
|
+
"name": "FeatureBlog",
|
|
1092
|
+
"source": "templates/FeatureBlog/FeatureBlog.tsx",
|
|
1093
|
+
"props": {
|
|
1094
|
+
"className": {
|
|
1095
|
+
"type": "string",
|
|
1096
|
+
"required": false,
|
|
1097
|
+
"description": "Extra class name merged onto the root `<section>`."
|
|
1098
|
+
},
|
|
1099
|
+
"linkHref": {
|
|
1100
|
+
"type": "string",
|
|
1101
|
+
"required": false,
|
|
1102
|
+
"description": "Href for the \"See all\" link"
|
|
1103
|
+
},
|
|
1104
|
+
"linkText": {
|
|
1105
|
+
"type": "string",
|
|
1106
|
+
"required": false,
|
|
1107
|
+
"description": "Label for the \"See all\" link (default: \"See all press releases\")",
|
|
1108
|
+
"defaultExpression": "FEATURE_BLOG_TEXT_CONTENT.linkText"
|
|
1109
|
+
},
|
|
1110
|
+
"onLinkClick": {
|
|
1111
|
+
"type": "(() => void)",
|
|
1112
|
+
"required": false
|
|
1113
|
+
},
|
|
1114
|
+
"posts": {
|
|
1115
|
+
"type": "FeatureBlogPost[]",
|
|
1116
|
+
"required": true,
|
|
1117
|
+
"description": "Posts rendered as a responsive card grid.",
|
|
1118
|
+
"items": {
|
|
1119
|
+
"category": {
|
|
1120
|
+
"type": "string",
|
|
1121
|
+
"required": false,
|
|
1122
|
+
"description": "Category label, e.g. \"Company\""
|
|
1123
|
+
},
|
|
1124
|
+
"date": {
|
|
1125
|
+
"type": "string",
|
|
1126
|
+
"required": false,
|
|
1127
|
+
"description": "Publish date label, e.g. \"July 24, 2026\""
|
|
1128
|
+
},
|
|
1129
|
+
"href": {
|
|
1130
|
+
"type": "string",
|
|
1131
|
+
"required": false,
|
|
1132
|
+
"description": "Link target — wraps the card in an anchor when set"
|
|
1133
|
+
},
|
|
1134
|
+
"onClick": {
|
|
1135
|
+
"type": "(() => void)",
|
|
1136
|
+
"required": false,
|
|
1137
|
+
"description": "Click handler — used when `href` is not set"
|
|
1138
|
+
},
|
|
1139
|
+
"summary": {
|
|
1140
|
+
"type": "string",
|
|
1141
|
+
"required": true,
|
|
1142
|
+
"description": "Post summary / dek text"
|
|
1143
|
+
},
|
|
1144
|
+
"thumbnail": {
|
|
1145
|
+
"type": "string",
|
|
1146
|
+
"required": true,
|
|
1147
|
+
"description": "Card thumbnail image"
|
|
1148
|
+
},
|
|
1149
|
+
"thumbnailAlt": {
|
|
1150
|
+
"type": "string",
|
|
1151
|
+
"required": false
|
|
1152
|
+
},
|
|
1153
|
+
"title": {
|
|
1154
|
+
"type": "string",
|
|
1155
|
+
"required": true,
|
|
1156
|
+
"description": "Post headline"
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1159
|
+
},
|
|
1160
|
+
"showLink": {
|
|
1161
|
+
"type": "boolean",
|
|
1162
|
+
"required": false,
|
|
1163
|
+
"description": "Show the \"See all\" link below the grid (default: true)",
|
|
1164
|
+
"default": true
|
|
1165
|
+
},
|
|
1166
|
+
"title": {
|
|
1167
|
+
"type": "string",
|
|
1168
|
+
"required": false,
|
|
1169
|
+
"description": "Section heading. Defaults to \"Deriv press releases\".",
|
|
1170
|
+
"defaultExpression": "FEATURE_BLOG_TEXT_CONTENT.title"
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
},
|
|
1174
|
+
"FeatureBlogCategories": {
|
|
1175
|
+
"name": "FeatureBlogCategories",
|
|
1176
|
+
"source": "templates/FeatureBlogCategories/FeatureBlogCategories.tsx",
|
|
1177
|
+
"props": {
|
|
1178
|
+
"activeCategoryId": {
|
|
1179
|
+
"type": "string",
|
|
1180
|
+
"required": false,
|
|
1181
|
+
"description": "Controlled active category tab id"
|
|
1182
|
+
},
|
|
1183
|
+
"allCategoryId": {
|
|
1184
|
+
"type": "string",
|
|
1185
|
+
"required": false,
|
|
1186
|
+
"description": "Id used internally for the auto-prepended \"show everything\" tab (default: \"all\")",
|
|
1187
|
+
"defaultExpression": "FEATURE_BLOG_CATEGORIES_TEXT_CONTENT.allCategoryId"
|
|
1188
|
+
},
|
|
1189
|
+
"allCategoryLabel": {
|
|
1190
|
+
"type": "string",
|
|
1191
|
+
"required": false,
|
|
1192
|
+
"description": "Label for the auto-prepended \"show everything\" tab (default: \"View all\")",
|
|
1193
|
+
"defaultExpression": "FEATURE_BLOG_CATEGORIES_TEXT_CONTENT.allCategoryLabel"
|
|
1194
|
+
},
|
|
1195
|
+
"categories": {
|
|
1196
|
+
"type": "FeatureBlogCategoryTab[]",
|
|
1197
|
+
"required": true,
|
|
1198
|
+
"description": "Category tabs, CMS-managed. An \"all\" tab is always prepended automatically.",
|
|
1199
|
+
"items": {
|
|
1200
|
+
"id": {
|
|
1201
|
+
"type": "string",
|
|
1202
|
+
"required": true,
|
|
1203
|
+
"description": "Stable identifier — must match `FeatureBlogCategoryPost.category` for filtering to work. CMS-managed."
|
|
1204
|
+
},
|
|
1205
|
+
"label": {
|
|
1206
|
+
"type": "string",
|
|
1207
|
+
"required": true,
|
|
1208
|
+
"description": "Tab label shown in the pill row. CMS-managed."
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
},
|
|
1212
|
+
"className": {
|
|
1213
|
+
"type": "string",
|
|
1214
|
+
"required": false,
|
|
1215
|
+
"description": "Extra class name merged onto the root `<section>`."
|
|
1216
|
+
},
|
|
1217
|
+
"defaultActiveCategoryId": {
|
|
1218
|
+
"type": "string",
|
|
1219
|
+
"required": false,
|
|
1220
|
+
"description": "Initial active tab id for uncontrolled usage (default: `allCategoryId`)"
|
|
1221
|
+
},
|
|
1222
|
+
"emptyStateText": {
|
|
1223
|
+
"type": "string",
|
|
1224
|
+
"required": false,
|
|
1225
|
+
"description": "Message shown when no posts match the active tab + search query",
|
|
1226
|
+
"defaultExpression": "FEATURE_BLOG_CATEGORIES_TEXT_CONTENT.emptyStateText"
|
|
1227
|
+
},
|
|
1228
|
+
"onCategoryChange": {
|
|
1229
|
+
"type": "((id: string) => void)",
|
|
1230
|
+
"required": false,
|
|
1231
|
+
"description": "Called whenever a different tab is selected"
|
|
1232
|
+
},
|
|
1233
|
+
"onSearchChange": {
|
|
1234
|
+
"type": "((value: string) => void)",
|
|
1235
|
+
"required": false,
|
|
1236
|
+
"description": "Called on every keystroke in the search field with the current value"
|
|
1237
|
+
},
|
|
1238
|
+
"posts": {
|
|
1239
|
+
"type": "FeatureBlogCategoryPost[]",
|
|
1240
|
+
"required": true,
|
|
1241
|
+
"description": "All posts — filtered client-side by the active tab and search query",
|
|
1242
|
+
"items": {
|
|
1243
|
+
"category": {
|
|
1244
|
+
"type": "string",
|
|
1245
|
+
"required": true,
|
|
1246
|
+
"description": "Category tab id this post belongs to (matches a `categories[].id`). Posts also always match the \"all\" tab."
|
|
1247
|
+
},
|
|
1248
|
+
"categoryLabel": {
|
|
1249
|
+
"type": "string",
|
|
1250
|
+
"required": false,
|
|
1251
|
+
"description": "Category chip label shown on the card. Defaults to the matching tab's `label` when omitted."
|
|
1252
|
+
},
|
|
1253
|
+
"date": {
|
|
1254
|
+
"type": "string",
|
|
1255
|
+
"required": false,
|
|
1256
|
+
"description": "Publish date label, e.g. \"July 24, 2026\""
|
|
1257
|
+
},
|
|
1258
|
+
"href": {
|
|
1259
|
+
"type": "string",
|
|
1260
|
+
"required": false,
|
|
1261
|
+
"description": "Destination URL. Absolute `http(s)://` URLs are treated as external and open in a new tab (`target=\"_blank\" rel=\"noopener noreferrer\"`); relative/internal paths (e.g. \"/newsroom/my-article\") navigate as a normal same-tab inner-page link."
|
|
1262
|
+
},
|
|
1263
|
+
"onClick": {
|
|
1264
|
+
"type": "(() => void)",
|
|
1265
|
+
"required": false,
|
|
1266
|
+
"description": "Click handler — used when `href` is not set (renders a `<button>`)"
|
|
1267
|
+
},
|
|
1268
|
+
"summary": {
|
|
1269
|
+
"type": "string",
|
|
1270
|
+
"required": true,
|
|
1271
|
+
"description": "Post summary / dek text"
|
|
1272
|
+
},
|
|
1273
|
+
"thumbnail": {
|
|
1274
|
+
"type": "string",
|
|
1275
|
+
"required": true,
|
|
1276
|
+
"description": "Card thumbnail image"
|
|
1277
|
+
},
|
|
1278
|
+
"thumbnailAlt": {
|
|
1279
|
+
"type": "string",
|
|
1280
|
+
"required": false
|
|
1281
|
+
},
|
|
1282
|
+
"title": {
|
|
1283
|
+
"type": "string",
|
|
1284
|
+
"required": true,
|
|
1285
|
+
"description": "Post headline"
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
},
|
|
1289
|
+
"searchAriaLabel": {
|
|
1290
|
+
"type": "string",
|
|
1291
|
+
"required": false,
|
|
1292
|
+
"description": "Accessible label for the search field (defaults to `searchPlaceholder`)"
|
|
1293
|
+
},
|
|
1294
|
+
"searchPlaceholder": {
|
|
1295
|
+
"type": "string",
|
|
1296
|
+
"required": false,
|
|
1297
|
+
"description": "Placeholder text for the search field (default: \"Search\")",
|
|
1298
|
+
"defaultExpression": "FEATURE_BLOG_CATEGORIES_TEXT_CONTENT.searchPlaceholder"
|
|
1299
|
+
},
|
|
1300
|
+
"title": {
|
|
1301
|
+
"type": "string",
|
|
1302
|
+
"required": false,
|
|
1303
|
+
"description": "Section heading. Defaults to \"Deriv press releases\".",
|
|
1304
|
+
"defaultExpression": "FEATURE_BLOG_CATEGORIES_TEXT_CONTENT.title"
|
|
1305
|
+
}
|
|
1306
|
+
}
|
|
1307
|
+
},
|
|
1308
|
+
"FeatureBlogPage": {
|
|
1309
|
+
"name": "FeatureBlogPage",
|
|
1310
|
+
"source": "templates/FeatureBlogPage/FeatureBlogPage.tsx",
|
|
1311
|
+
"props": {
|
|
1312
|
+
"author": {
|
|
1313
|
+
"type": "FeatureBlogAuthor",
|
|
1314
|
+
"required": false,
|
|
1315
|
+
"description": "Article author, shown in the meta row next to the publish date"
|
|
1316
|
+
},
|
|
1317
|
+
"category": {
|
|
1318
|
+
"type": "string",
|
|
1319
|
+
"required": false,
|
|
1320
|
+
"description": "Small category label rendered above the title (e.g. \"Press releases\")"
|
|
1321
|
+
},
|
|
1322
|
+
"className": {
|
|
1323
|
+
"type": "string",
|
|
1324
|
+
"required": false,
|
|
1325
|
+
"description": "Additional CSS class on the outer `<section>`"
|
|
1326
|
+
},
|
|
1327
|
+
"content": {
|
|
1328
|
+
"type": "FeatureBlogContentBlock[]",
|
|
1329
|
+
"required": true,
|
|
1330
|
+
"description": "Main article body, rendered from plain data blocks (required, at least 1 item)",
|
|
1331
|
+
"items": {
|
|
1332
|
+
"caption": {
|
|
1333
|
+
"type": "string",
|
|
1334
|
+
"required": false,
|
|
1335
|
+
"description": "Optional caption rendered below an \"image\" block"
|
|
1336
|
+
},
|
|
1337
|
+
"cite": {
|
|
1338
|
+
"type": "string",
|
|
1339
|
+
"required": false,
|
|
1340
|
+
"description": "Citation / source line for \"quote\" blocks"
|
|
1341
|
+
},
|
|
1342
|
+
"id": {
|
|
1343
|
+
"type": "string",
|
|
1344
|
+
"required": false,
|
|
1345
|
+
"description": "Stable anchor id for a \"heading\" block; auto-generated (slugified) from `text` when omitted"
|
|
1346
|
+
},
|
|
1347
|
+
"image": {
|
|
1348
|
+
"type": "string",
|
|
1349
|
+
"required": false,
|
|
1350
|
+
"description": "Image source for \"image\" blocks"
|
|
1351
|
+
},
|
|
1352
|
+
"imageAlt": {
|
|
1353
|
+
"type": "string",
|
|
1354
|
+
"required": false
|
|
1355
|
+
},
|
|
1356
|
+
"items": {
|
|
1357
|
+
"type": "string[]",
|
|
1358
|
+
"required": false,
|
|
1359
|
+
"description": "List entries for \"list\" blocks"
|
|
1360
|
+
},
|
|
1361
|
+
"level": {
|
|
1362
|
+
"type": "2 | 3",
|
|
1363
|
+
"required": false,
|
|
1364
|
+
"description": "Heading level for \"heading\" blocks (default: 2). Only level-2 headings are collected into the table of contents — level-3 headings render inline as sub-sections but are not listed."
|
|
1365
|
+
},
|
|
1366
|
+
"ordered": {
|
|
1367
|
+
"type": "boolean",
|
|
1368
|
+
"required": false,
|
|
1369
|
+
"description": "Render a \"list\" block as `<ol>` instead of `<ul>` (default: false)"
|
|
1370
|
+
},
|
|
1371
|
+
"text": {
|
|
1372
|
+
"type": "string",
|
|
1373
|
+
"required": false,
|
|
1374
|
+
"description": "Text content for \"heading\" / \"paragraph\" / \"quote\" blocks"
|
|
1375
|
+
},
|
|
1376
|
+
"type": {
|
|
1377
|
+
"type": "FeatureBlogContentBlockType",
|
|
1378
|
+
"required": true,
|
|
1379
|
+
"description": "Block kind — \"heading\"/\"paragraph\"/\"quote\" use `text`, \"list\" uses `items`, \"image\" uses `image`"
|
|
1380
|
+
}
|
|
1381
|
+
}
|
|
1382
|
+
},
|
|
1383
|
+
"copiedLabel": {
|
|
1384
|
+
"type": "string",
|
|
1385
|
+
"required": false,
|
|
1386
|
+
"description": "Label shown briefly after \"copy link\" succeeds (default: \"Copied!\")",
|
|
1387
|
+
"default": "Copied!"
|
|
1388
|
+
},
|
|
1389
|
+
"heroImage": {
|
|
1390
|
+
"type": "string",
|
|
1391
|
+
"required": false,
|
|
1392
|
+
"description": "Hero image rendered below the title / meta row"
|
|
1393
|
+
},
|
|
1394
|
+
"heroImageAlt": {
|
|
1395
|
+
"type": "string",
|
|
1396
|
+
"required": false
|
|
1397
|
+
},
|
|
1398
|
+
"hideShare": {
|
|
1399
|
+
"type": "boolean",
|
|
1400
|
+
"required": false,
|
|
1401
|
+
"description": "Hide the share row entirely (default: false)",
|
|
1402
|
+
"default": false
|
|
1403
|
+
},
|
|
1404
|
+
"hideToc": {
|
|
1405
|
+
"type": "boolean",
|
|
1406
|
+
"required": false,
|
|
1407
|
+
"description": "Hide the table of contents entirely (default: false) — e.g. for very short articles with no level-2 headings",
|
|
1408
|
+
"default": false
|
|
1409
|
+
},
|
|
1410
|
+
"onShare": {
|
|
1411
|
+
"type": "((platform: FeatureBlogSharePlatform | \"copy\") => void)",
|
|
1412
|
+
"required": false,
|
|
1413
|
+
"description": "Fired whenever a share icon (including \"copy link\") is activated"
|
|
1414
|
+
},
|
|
1415
|
+
"publishDate": {
|
|
1416
|
+
"type": "string",
|
|
1417
|
+
"required": false,
|
|
1418
|
+
"description": "Publish date label shown in the meta row (e.g. \"July 24, 2026\")"
|
|
1419
|
+
},
|
|
1420
|
+
"sharePlatforms": {
|
|
1421
|
+
"type": "FeatureBlogSharePlatform[]",
|
|
1422
|
+
"required": false,
|
|
1423
|
+
"description": "Which social platforms to show, in order (default: all four)",
|
|
1424
|
+
"defaultExpression": "[\"facebook\", \"twitter\", \"telegram\", \"linkedin\"]"
|
|
1425
|
+
},
|
|
1426
|
+
"shareText": {
|
|
1427
|
+
"type": "string",
|
|
1428
|
+
"required": false,
|
|
1429
|
+
"description": "Text passed to platforms that accept share text (X/Twitter, Telegram); defaults to `title`"
|
|
1430
|
+
},
|
|
1431
|
+
"shareTitle": {
|
|
1432
|
+
"type": "string",
|
|
1433
|
+
"required": false,
|
|
1434
|
+
"description": "\"Share article\" label above the share icons (default: \"Share article\")",
|
|
1435
|
+
"default": "Share article"
|
|
1436
|
+
},
|
|
1437
|
+
"shareUrl": {
|
|
1438
|
+
"type": "string",
|
|
1439
|
+
"required": false,
|
|
1440
|
+
"description": "Canonical URL used to build every share link and for \"copy link\"; sharing is hidden when omitted"
|
|
1441
|
+
},
|
|
1442
|
+
"title": {
|
|
1443
|
+
"type": "string",
|
|
1444
|
+
"required": true,
|
|
1445
|
+
"description": "Article headline, rendered as the page's `<h1>` (required)"
|
|
1446
|
+
},
|
|
1447
|
+
"tocDefaultOpen": {
|
|
1448
|
+
"type": "boolean",
|
|
1449
|
+
"required": false,
|
|
1450
|
+
"description": "Whether the table of contents starts expanded (default: true)",
|
|
1451
|
+
"default": true
|
|
1452
|
+
},
|
|
1453
|
+
"tocTitle": {
|
|
1454
|
+
"type": "string",
|
|
1455
|
+
"required": false,
|
|
1456
|
+
"description": "Table of contents card heading (default: \"Contents\")",
|
|
1457
|
+
"default": "Contents"
|
|
1458
|
+
}
|
|
1459
|
+
}
|
|
1460
|
+
},
|
|
1461
|
+
"FeatureBullets": {
|
|
1462
|
+
"name": "FeatureBullets",
|
|
1463
|
+
"source": "templates/FeatureBullets/FeatureBullets.tsx",
|
|
1464
|
+
"props": {
|
|
1465
|
+
"bullets": {
|
|
1466
|
+
"type": "string[]",
|
|
1467
|
+
"required": true,
|
|
1468
|
+
"description": "Array of bullet points to display"
|
|
1469
|
+
},
|
|
1470
|
+
"image": {
|
|
1471
|
+
"type": "string",
|
|
1472
|
+
"required": true,
|
|
1473
|
+
"description": "URL for the image"
|
|
1474
|
+
},
|
|
1475
|
+
"imageAlt": {
|
|
1476
|
+
"type": "string",
|
|
1477
|
+
"required": false,
|
|
1478
|
+
"description": "Alt text for the image",
|
|
1479
|
+
"default": ""
|
|
1480
|
+
},
|
|
1481
|
+
"imagePosition": {
|
|
1482
|
+
"type": "\"left\" | \"right\"",
|
|
1483
|
+
"required": false,
|
|
1484
|
+
"description": "Position of the image relative to the text on desktop",
|
|
1485
|
+
"default": "right"
|
|
1486
|
+
},
|
|
1487
|
+
"title": {
|
|
1488
|
+
"type": "string",
|
|
1489
|
+
"required": true,
|
|
1490
|
+
"description": "Title of the section"
|
|
1491
|
+
}
|
|
1492
|
+
}
|
|
1493
|
+
},
|
|
1494
|
+
"FeatureCards": {
|
|
1495
|
+
"name": "FeatureCards",
|
|
1496
|
+
"source": "templates/FeatureCards/FeatureCards.tsx",
|
|
1497
|
+
"props": {
|
|
1498
|
+
"cardColorScheme": {
|
|
1499
|
+
"type": "CardPrimaryStyle",
|
|
1500
|
+
"required": false,
|
|
1501
|
+
"description": "Controls the visual style of all cards in the default grid",
|
|
1502
|
+
"default": "image"
|
|
1503
|
+
},
|
|
1504
|
+
"cards": {
|
|
1505
|
+
"type": "FeatureCardItem[]",
|
|
1506
|
+
"required": true,
|
|
1507
|
+
"items": {
|
|
1508
|
+
"colorScheme": {
|
|
1509
|
+
"type": "CardPrimaryStyle",
|
|
1510
|
+
"required": false
|
|
1511
|
+
},
|
|
1512
|
+
"description": {
|
|
1513
|
+
"type": "string",
|
|
1514
|
+
"required": true
|
|
1515
|
+
},
|
|
1516
|
+
"image": {
|
|
1517
|
+
"type": "string",
|
|
1518
|
+
"required": false
|
|
1519
|
+
},
|
|
1520
|
+
"imageAlt": {
|
|
1521
|
+
"type": "string",
|
|
1522
|
+
"required": false
|
|
1523
|
+
},
|
|
1524
|
+
"linkHref": {
|
|
1525
|
+
"type": "string",
|
|
1526
|
+
"required": false,
|
|
1527
|
+
"description": "Two Cards / One Card variants: main CTA href"
|
|
1528
|
+
},
|
|
1529
|
+
"linkText": {
|
|
1530
|
+
"type": "string",
|
|
1531
|
+
"required": false
|
|
1532
|
+
},
|
|
1533
|
+
"onLinkClick": {
|
|
1534
|
+
"type": "(() => void)",
|
|
1535
|
+
"required": false
|
|
1536
|
+
},
|
|
1537
|
+
"platforms": {
|
|
1538
|
+
"type": "FeatureCardPlatformLink[]",
|
|
1539
|
+
"required": false,
|
|
1540
|
+
"description": "Two Cards / One Card variants: platform links under the CTA"
|
|
1541
|
+
},
|
|
1542
|
+
"platformsHeading": {
|
|
1543
|
+
"type": "string",
|
|
1544
|
+
"required": false,
|
|
1545
|
+
"description": "Two Cards / One Card variants: label above platform row (default: \"Available on\")"
|
|
1546
|
+
},
|
|
1547
|
+
"showLink": {
|
|
1548
|
+
"type": "boolean",
|
|
1549
|
+
"required": false
|
|
1550
|
+
},
|
|
1551
|
+
"title": {
|
|
1552
|
+
"type": "string",
|
|
1553
|
+
"required": true
|
|
1554
|
+
},
|
|
1555
|
+
"twoTone": {
|
|
1556
|
+
"type": "FeatureCardTwoTone",
|
|
1557
|
+
"required": false,
|
|
1558
|
+
"description": "Two Cards variant: light or dark card shell"
|
|
1559
|
+
}
|
|
1560
|
+
}
|
|
1561
|
+
},
|
|
1562
|
+
"linkText": {
|
|
1563
|
+
"type": "string",
|
|
1564
|
+
"required": false,
|
|
1565
|
+
"default": "Learn more"
|
|
1566
|
+
},
|
|
1567
|
+
"onLinkClick": {
|
|
1568
|
+
"type": "(() => void)",
|
|
1569
|
+
"required": false
|
|
1570
|
+
},
|
|
1571
|
+
"sectionDescription": {
|
|
1572
|
+
"type": "string",
|
|
1573
|
+
"required": false
|
|
1574
|
+
},
|
|
1575
|
+
"sectionTitle": {
|
|
1576
|
+
"type": "string",
|
|
1577
|
+
"required": true
|
|
1578
|
+
},
|
|
1579
|
+
"showLink": {
|
|
1580
|
+
"type": "boolean",
|
|
1581
|
+
"required": false,
|
|
1582
|
+
"default": false
|
|
1583
|
+
},
|
|
1584
|
+
"variant": {
|
|
1585
|
+
"type": "FeatureCardsLayoutVariant",
|
|
1586
|
+
"required": false,
|
|
1587
|
+
"description": "Default: primary card grid. twoCards / oneCard: large feature blocks with optional platform links and image.",
|
|
1588
|
+
"default": "default"
|
|
1589
|
+
}
|
|
1590
|
+
}
|
|
1591
|
+
},
|
|
1592
|
+
"FeatureCardsIcon": {
|
|
1593
|
+
"name": "FeatureCardsIcon",
|
|
1594
|
+
"source": "templates/FeatureCardsIcon/FeatureCardsIcon.tsx",
|
|
1595
|
+
"props": {
|
|
1596
|
+
"cards": {
|
|
1597
|
+
"type": "FeatureCardIconItem[]",
|
|
1598
|
+
"required": true,
|
|
1599
|
+
"items": {
|
|
1600
|
+
"description": {
|
|
1601
|
+
"type": "string",
|
|
1602
|
+
"required": true
|
|
1603
|
+
},
|
|
1604
|
+
"icon": {
|
|
1605
|
+
"type": "ReactNode",
|
|
1606
|
+
"required": false
|
|
1607
|
+
},
|
|
1608
|
+
"linkText": {
|
|
1609
|
+
"type": "string",
|
|
1610
|
+
"required": false
|
|
1611
|
+
},
|
|
1612
|
+
"onLinkClick": {
|
|
1613
|
+
"type": "(() => void)",
|
|
1614
|
+
"required": false
|
|
1615
|
+
},
|
|
1616
|
+
"showIcon": {
|
|
1617
|
+
"type": "boolean",
|
|
1618
|
+
"required": false
|
|
1619
|
+
},
|
|
1620
|
+
"showLink": {
|
|
1621
|
+
"type": "boolean",
|
|
1622
|
+
"required": false
|
|
1623
|
+
},
|
|
1624
|
+
"title": {
|
|
1625
|
+
"type": "string",
|
|
1626
|
+
"required": true
|
|
1627
|
+
}
|
|
1628
|
+
}
|
|
1629
|
+
},
|
|
1630
|
+
"linkText": {
|
|
1631
|
+
"type": "string",
|
|
1632
|
+
"required": false,
|
|
1633
|
+
"default": "Learn more"
|
|
1634
|
+
},
|
|
1635
|
+
"onLinkClick": {
|
|
1636
|
+
"type": "(() => void)",
|
|
1637
|
+
"required": false
|
|
1638
|
+
},
|
|
1639
|
+
"sectionDescription": {
|
|
1640
|
+
"type": "string",
|
|
1641
|
+
"required": false
|
|
1642
|
+
},
|
|
1643
|
+
"sectionTitle": {
|
|
1644
|
+
"type": "string",
|
|
1645
|
+
"required": true
|
|
1646
|
+
},
|
|
1647
|
+
"showLink": {
|
|
1648
|
+
"type": "boolean",
|
|
1649
|
+
"required": false,
|
|
1650
|
+
"default": false
|
|
1651
|
+
}
|
|
1652
|
+
}
|
|
1653
|
+
},
|
|
1654
|
+
"FeatureScroll": {
|
|
1655
|
+
"name": "FeatureScroll",
|
|
1656
|
+
"source": "templates/FeatureScroll/FeatureScroll.tsx",
|
|
1657
|
+
"props": {
|
|
1658
|
+
"header": {
|
|
1659
|
+
"type": "string",
|
|
1660
|
+
"required": true,
|
|
1661
|
+
"description": "Section heading rendered as an H2"
|
|
1662
|
+
},
|
|
1663
|
+
"items": {
|
|
1664
|
+
"type": "FeatureScrollItem[]",
|
|
1665
|
+
"required": true,
|
|
1666
|
+
"description": "Ordered list of feature items. Drives both the desktop scroll-driven layout and the mobile stacked layout.",
|
|
1667
|
+
"items": {
|
|
1668
|
+
"description": {
|
|
1669
|
+
"type": "string",
|
|
1670
|
+
"required": true,
|
|
1671
|
+
"description": "Body copy below the title"
|
|
1672
|
+
},
|
|
1673
|
+
"link": {
|
|
1674
|
+
"type": "string",
|
|
1675
|
+
"required": true,
|
|
1676
|
+
"description": "URL the link points to"
|
|
1677
|
+
},
|
|
1678
|
+
"linkLabel": {
|
|
1679
|
+
"type": "string",
|
|
1680
|
+
"required": true,
|
|
1681
|
+
"description": "Visible label on the link, e.g. \"Learn more\""
|
|
1682
|
+
},
|
|
1683
|
+
"mediaType": {
|
|
1684
|
+
"type": "\"image\" | \"lottie\"",
|
|
1685
|
+
"required": false,
|
|
1686
|
+
"description": "Optional override for media rendering. When omitted the component auto-detects based on the URL extension: *.lottie → DotLottie animation player everything else (png, jpg, svg, webp…) → <img>"
|
|
1687
|
+
},
|
|
1688
|
+
"mediaUrl": {
|
|
1689
|
+
"type": "string",
|
|
1690
|
+
"required": true,
|
|
1691
|
+
"description": "URL to the .lottie file or any image asset (png, jpg, svg, webp…)"
|
|
1692
|
+
},
|
|
1693
|
+
"title": {
|
|
1694
|
+
"type": "string",
|
|
1695
|
+
"required": true,
|
|
1696
|
+
"description": "Short feature name, e.g. \"Forex\""
|
|
1697
|
+
}
|
|
1698
|
+
}
|
|
1699
|
+
},
|
|
1700
|
+
"variant": {
|
|
1701
|
+
"type": "\"media-left\" | \"media-right\"",
|
|
1702
|
+
"required": false,
|
|
1703
|
+
"description": "Controls which side the sticky media column sits on.",
|
|
1704
|
+
"default": "media-right"
|
|
1705
|
+
}
|
|
1706
|
+
}
|
|
1707
|
+
},
|
|
1708
|
+
"FeatureSplit": {
|
|
1709
|
+
"name": "FeatureSplit",
|
|
1710
|
+
"source": "templates/FeatureSplit/FeatureSplit.tsx",
|
|
1711
|
+
"props": {
|
|
1712
|
+
"description": {
|
|
1713
|
+
"type": "string",
|
|
1714
|
+
"required": false,
|
|
1715
|
+
"description": "Body paragraph beneath the title"
|
|
1716
|
+
},
|
|
1717
|
+
"image": {
|
|
1718
|
+
"type": "string",
|
|
1719
|
+
"required": false,
|
|
1720
|
+
"description": "Image source URL"
|
|
1721
|
+
},
|
|
1722
|
+
"imageAlt": {
|
|
1723
|
+
"type": "string",
|
|
1724
|
+
"required": false,
|
|
1725
|
+
"default": ""
|
|
1726
|
+
},
|
|
1727
|
+
"imagePosition": {
|
|
1728
|
+
"type": "FeatureSplitImagePosition",
|
|
1729
|
+
"required": false,
|
|
1730
|
+
"description": "Which side the image sits on (default: \"right\")",
|
|
1731
|
+
"default": "right"
|
|
1732
|
+
},
|
|
1733
|
+
"linkText": {
|
|
1734
|
+
"type": "string",
|
|
1735
|
+
"required": false,
|
|
1736
|
+
"description": "CTA link label (default: \"Learn more\")",
|
|
1737
|
+
"default": "Learn more"
|
|
1738
|
+
},
|
|
1739
|
+
"onLinkClick": {
|
|
1740
|
+
"type": "(() => void)",
|
|
1741
|
+
"required": false
|
|
1742
|
+
},
|
|
1743
|
+
"showDescription": {
|
|
1744
|
+
"type": "boolean",
|
|
1745
|
+
"required": false,
|
|
1746
|
+
"description": "Show or hide the description (default: true)",
|
|
1747
|
+
"default": true
|
|
1748
|
+
},
|
|
1749
|
+
"showLink": {
|
|
1750
|
+
"type": "boolean",
|
|
1751
|
+
"required": false,
|
|
1752
|
+
"description": "Show or hide the link (default: true)",
|
|
1753
|
+
"default": true
|
|
1754
|
+
},
|
|
1755
|
+
"title": {
|
|
1756
|
+
"type": "string",
|
|
1757
|
+
"required": true,
|
|
1758
|
+
"description": "Section headline"
|
|
1759
|
+
}
|
|
1760
|
+
}
|
|
1761
|
+
},
|
|
1762
|
+
"Footer": {
|
|
1763
|
+
"name": "Footer",
|
|
1764
|
+
"source": "components/Footer/Footer.tsx",
|
|
1765
|
+
"props": {
|
|
1766
|
+
"aiSummary": {
|
|
1767
|
+
"type": "FooterAiSummaryProps",
|
|
1768
|
+
"required": false,
|
|
1769
|
+
"description": "AI summary section. Desktop: rendered inline inside the header row. Mobile: rendered as a standalone card below the header. Tablet: hidden."
|
|
1770
|
+
},
|
|
1771
|
+
"derivGo": {
|
|
1772
|
+
"type": "FooterDerivGoProps",
|
|
1773
|
+
"required": false,
|
|
1774
|
+
"description": "Deriv GO promotion banner"
|
|
1775
|
+
},
|
|
1776
|
+
"investorsInPeopleAlt": {
|
|
1777
|
+
"type": "string",
|
|
1778
|
+
"required": false,
|
|
1779
|
+
"description": "Alt text for the Investors in People badge",
|
|
1780
|
+
"default": "Investors in People - Platinum"
|
|
1781
|
+
},
|
|
1782
|
+
"investorsInPeopleSrc": {
|
|
1783
|
+
"type": "string",
|
|
1784
|
+
"required": false,
|
|
1785
|
+
"description": "\"Investors in People\" badge image source"
|
|
1786
|
+
},
|
|
1787
|
+
"licenseText": {
|
|
1788
|
+
"type": "ReactNode",
|
|
1789
|
+
"required": false,
|
|
1790
|
+
"description": "Legal / licence text block (supports ReactNode for inline links)"
|
|
1791
|
+
},
|
|
1792
|
+
"logoAlt": {
|
|
1793
|
+
"type": "string",
|
|
1794
|
+
"required": false,
|
|
1795
|
+
"description": "Alt text for the logo",
|
|
1796
|
+
"default": "Deriv"
|
|
1797
|
+
},
|
|
1798
|
+
"logoSrc": {
|
|
1799
|
+
"type": "string",
|
|
1800
|
+
"required": true,
|
|
1801
|
+
"description": "Deriv logo image source"
|
|
1802
|
+
},
|
|
1803
|
+
"navColumns": {
|
|
1804
|
+
"type": "FooterNavSection[][]",
|
|
1805
|
+
"required": true,
|
|
1806
|
+
"description": "Navigation structure. Outer array = columns (desktop grid), inner array = sections per column. On mobile/tablet all sections are flattened into an accordion list."
|
|
1807
|
+
},
|
|
1808
|
+
"riskWarningText": {
|
|
1809
|
+
"type": "ReactNode",
|
|
1810
|
+
"required": false,
|
|
1811
|
+
"description": "Risk-warning paragraph text"
|
|
1812
|
+
},
|
|
1813
|
+
"socialLinks": {
|
|
1814
|
+
"type": "FooterSocialLink[]",
|
|
1815
|
+
"required": false,
|
|
1816
|
+
"description": "Social media links shown in the header row",
|
|
1817
|
+
"default": []
|
|
1818
|
+
}
|
|
1819
|
+
}
|
|
1820
|
+
},
|
|
1821
|
+
"Header": {
|
|
1822
|
+
"name": "Header",
|
|
1823
|
+
"source": "templates/Header/Header.tsx",
|
|
1824
|
+
"props": {
|
|
1825
|
+
"description": {
|
|
1826
|
+
"type": "string",
|
|
1827
|
+
"required": false,
|
|
1828
|
+
"description": "Body copy below the title"
|
|
1829
|
+
},
|
|
1830
|
+
"leftVisual": {
|
|
1831
|
+
"type": "ReactNode",
|
|
1832
|
+
"required": false,
|
|
1833
|
+
"description": "Left floating visual for the \"visuals\" variant. Accepts a ReactNode or image URL string."
|
|
1834
|
+
},
|
|
1835
|
+
"primaryButton": {
|
|
1836
|
+
"type": "HeaderButtonProps",
|
|
1837
|
+
"required": false,
|
|
1838
|
+
"description": "Primary CTA button (coral). Shown on all variants."
|
|
1839
|
+
},
|
|
1840
|
+
"rightVisual": {
|
|
1841
|
+
"type": "ReactNode",
|
|
1842
|
+
"required": false,
|
|
1843
|
+
"description": "Right floating visual for the \"visuals\" variant. Accepts a ReactNode or image URL string."
|
|
1844
|
+
},
|
|
1845
|
+
"search": {
|
|
1846
|
+
"type": "HeaderSearchProps",
|
|
1847
|
+
"required": false,
|
|
1848
|
+
"description": "Search field configuration for the \"dark-search\" variant (e.g. Help Centre header). The field always renders for that variant; this prop only customises it."
|
|
1849
|
+
},
|
|
1850
|
+
"secondaryButton": {
|
|
1851
|
+
"type": "HeaderButtonProps",
|
|
1852
|
+
"required": false,
|
|
1853
|
+
"description": "Secondary CTA button (white outline). Shown on all variants."
|
|
1854
|
+
},
|
|
1855
|
+
"subtitle": {
|
|
1856
|
+
"type": "string",
|
|
1857
|
+
"required": false,
|
|
1858
|
+
"description": "Optional eyebrow / subtitle above the title"
|
|
1859
|
+
},
|
|
1860
|
+
"title": {
|
|
1861
|
+
"type": "string",
|
|
1862
|
+
"required": true,
|
|
1863
|
+
"description": "Main heading"
|
|
1864
|
+
},
|
|
1865
|
+
"variant": {
|
|
1866
|
+
"type": "HeaderVariant",
|
|
1867
|
+
"required": true,
|
|
1868
|
+
"description": "Layout variant: - \"visuals\" — light grey bg + SVG grid, center-aligned text, floating visuals left & right, parallax scroll effect on visuals, min-height 540px - \"minimal\" — same as visuals but without the floating graphics - \"dark\" — dark navy bg + SVG grid, center-aligned text, no floating visuals, min-height 420px on mobile/tablet, 460px on desktop (shorter than the light variants) - \"dark-search\" — same as \"dark\" plus a search field below the text, for pages such as the Help Centre index"
|
|
1869
|
+
}
|
|
1870
|
+
}
|
|
1871
|
+
},
|
|
1872
|
+
"HelpCenterPage": {
|
|
1873
|
+
"name": "HelpCenterPage",
|
|
1874
|
+
"source": "templates/HelpCenterPage/HelpCenterPage.tsx",
|
|
1875
|
+
"props": {
|
|
1876
|
+
"activeQuestionId": {
|
|
1877
|
+
"type": "string",
|
|
1878
|
+
"required": false,
|
|
1879
|
+
"description": "Controlled id of the currently selected/highlighted question"
|
|
1880
|
+
},
|
|
1881
|
+
"articlesSheetTitle": {
|
|
1882
|
+
"type": "string",
|
|
1883
|
+
"required": false,
|
|
1884
|
+
"description": "Title of the mobile \"browse questions\" bottom sheet (default: \"Articles in this section\")",
|
|
1885
|
+
"default": "Articles in this section"
|
|
1886
|
+
},
|
|
1887
|
+
"categoryTitle": {
|
|
1888
|
+
"type": "string",
|
|
1889
|
+
"required": true,
|
|
1890
|
+
"description": "Category name shown above the question table and on the mobile dropdown trigger (e.g. \"Account\")"
|
|
1891
|
+
},
|
|
1892
|
+
"className": {
|
|
1893
|
+
"type": "string",
|
|
1894
|
+
"required": false,
|
|
1895
|
+
"description": "Additional CSS class on the outer section"
|
|
1896
|
+
},
|
|
1897
|
+
"content": {
|
|
1898
|
+
"type": "HelpCenterContentBlock[]",
|
|
1899
|
+
"required": true,
|
|
1900
|
+
"description": "Main content column body (CMS-supplied rich content, rendered from plain data blocks)",
|
|
1901
|
+
"items": {
|
|
1902
|
+
"items": {
|
|
1903
|
+
"type": "string[]",
|
|
1904
|
+
"required": false,
|
|
1905
|
+
"description": "List entries for \"list\" blocks"
|
|
1906
|
+
},
|
|
1907
|
+
"level": {
|
|
1908
|
+
"type": "2 | 3",
|
|
1909
|
+
"required": false,
|
|
1910
|
+
"description": "Heading level for \"heading\" blocks (default: 2 — the page title itself is always the `<h1>`)"
|
|
1911
|
+
},
|
|
1912
|
+
"ordered": {
|
|
1913
|
+
"type": "boolean",
|
|
1914
|
+
"required": false,
|
|
1915
|
+
"description": "Render a \"list\" block as `<ol>` instead of `<ul>` (default: false)"
|
|
1916
|
+
},
|
|
1917
|
+
"text": {
|
|
1918
|
+
"type": "string",
|
|
1919
|
+
"required": false,
|
|
1920
|
+
"description": "Text content for \"heading\" / \"paragraph\" blocks"
|
|
1921
|
+
},
|
|
1922
|
+
"type": {
|
|
1923
|
+
"type": "HelpCenterContentBlockType",
|
|
1924
|
+
"required": true,
|
|
1925
|
+
"description": "Block kind — \"heading\" and \"paragraph\" use `text`, \"list\" uses `items`"
|
|
1926
|
+
}
|
|
1927
|
+
}
|
|
1928
|
+
},
|
|
1929
|
+
"contentTitle": {
|
|
1930
|
+
"type": "string",
|
|
1931
|
+
"required": true,
|
|
1932
|
+
"description": "Main content column heading (CMS-supplied answer title, rendered as the page's `<h1>`)"
|
|
1933
|
+
},
|
|
1934
|
+
"defaultActiveQuestionId": {
|
|
1935
|
+
"type": "string",
|
|
1936
|
+
"required": false,
|
|
1937
|
+
"description": "Initial selected question id for uncontrolled usage (default: first item in `questions`)"
|
|
1938
|
+
},
|
|
1939
|
+
"onQuestionSelect": {
|
|
1940
|
+
"type": "((id: string) => void)",
|
|
1941
|
+
"required": false,
|
|
1942
|
+
"description": "Called whenever a different question is selected (click on a row without `href`, or via keyboard)"
|
|
1943
|
+
},
|
|
1944
|
+
"onSearchChange": {
|
|
1945
|
+
"type": "((value: string) => void)",
|
|
1946
|
+
"required": false,
|
|
1947
|
+
"description": "Called on every keystroke in the search field with the current value"
|
|
1948
|
+
},
|
|
1949
|
+
"questions": {
|
|
1950
|
+
"type": "HelpCenterQuestionItem[]",
|
|
1951
|
+
"required": true,
|
|
1952
|
+
"description": "Every question belonging to this category, rendered as a single-select table/list",
|
|
1953
|
+
"items": {
|
|
1954
|
+
"content": {
|
|
1955
|
+
"type": "HelpCenterContentBlock[]",
|
|
1956
|
+
"required": false,
|
|
1957
|
+
"description": "Optional per-question content blocks, used to swap the main content column in-place when no `href` is given"
|
|
1958
|
+
},
|
|
1959
|
+
"contentTitle": {
|
|
1960
|
+
"type": "string",
|
|
1961
|
+
"required": false,
|
|
1962
|
+
"description": "Optional per-question title, used to swap the main content column in-place when no `href` is given"
|
|
1963
|
+
},
|
|
1964
|
+
"href": {
|
|
1965
|
+
"type": "string",
|
|
1966
|
+
"required": false,
|
|
1967
|
+
"description": "Destination URL — renders the row as a link (real multi-page navigation)"
|
|
1968
|
+
},
|
|
1969
|
+
"id": {
|
|
1970
|
+
"type": "string",
|
|
1971
|
+
"required": true,
|
|
1972
|
+
"description": "Stable identifier for the question — used as the React key and for active-state matching"
|
|
1973
|
+
},
|
|
1974
|
+
"onClick": {
|
|
1975
|
+
"type": "(() => void)",
|
|
1976
|
+
"required": false,
|
|
1977
|
+
"description": "Click handler, called in addition to selecting the row"
|
|
1978
|
+
},
|
|
1979
|
+
"question": {
|
|
1980
|
+
"type": "string",
|
|
1981
|
+
"required": true,
|
|
1982
|
+
"description": "The FAQ question shown in the sidebar table / mobile sheet"
|
|
1983
|
+
}
|
|
1984
|
+
}
|
|
1985
|
+
},
|
|
1986
|
+
"searchAriaLabel": {
|
|
1987
|
+
"type": "string",
|
|
1988
|
+
"required": false,
|
|
1989
|
+
"description": "Accessible label for the search field (defaults to `searchPlaceholder`)"
|
|
1990
|
+
},
|
|
1991
|
+
"searchNoResultsText": {
|
|
1992
|
+
"type": "string",
|
|
1993
|
+
"required": false,
|
|
1994
|
+
"description": "Message shown when a search query matches no questions. `{query}` is replaced with the current search text. Default: `No results found for \"{query}\"`",
|
|
1995
|
+
"default": "No results found for \"{query}\""
|
|
1996
|
+
},
|
|
1997
|
+
"searchPlaceholder": {
|
|
1998
|
+
"type": "string",
|
|
1999
|
+
"required": false,
|
|
2000
|
+
"description": "Placeholder text for the top search field (default: \"Search\")",
|
|
2001
|
+
"default": "Search"
|
|
2002
|
+
}
|
|
2003
|
+
}
|
|
2004
|
+
},
|
|
2005
|
+
"HelpCentreCategories": {
|
|
2006
|
+
"name": "HelpCentreCategories",
|
|
2007
|
+
"source": "templates/HelpCentreCategories/HelpCentreCategories.tsx",
|
|
2008
|
+
"props": {
|
|
2009
|
+
"categories": {
|
|
2010
|
+
"type": "HelpCentreCategoryItem[]",
|
|
2011
|
+
"required": true,
|
|
2012
|
+
"description": "Category tiles",
|
|
2013
|
+
"items": {
|
|
2014
|
+
"href": {
|
|
2015
|
+
"type": "string",
|
|
2016
|
+
"required": false,
|
|
2017
|
+
"description": "Destination URL — renders the tile as a link"
|
|
2018
|
+
},
|
|
2019
|
+
"icon": {
|
|
2020
|
+
"type": "ReactNode",
|
|
2021
|
+
"required": false,
|
|
2022
|
+
"description": "Icon shown above the title — an image URL or a custom ReactNode (e.g. inline SVG)"
|
|
2023
|
+
},
|
|
2024
|
+
"iconAlt": {
|
|
2025
|
+
"type": "string",
|
|
2026
|
+
"required": false,
|
|
2027
|
+
"description": "Alt text when `icon` is an image URL (default: \"\")"
|
|
2028
|
+
},
|
|
2029
|
+
"id": {
|
|
2030
|
+
"type": "string",
|
|
2031
|
+
"required": false,
|
|
2032
|
+
"description": "Stable identifier for the category (e.g. used for anchors or filtering)"
|
|
2033
|
+
},
|
|
2034
|
+
"onClick": {
|
|
2035
|
+
"type": "(() => void)",
|
|
2036
|
+
"required": false,
|
|
2037
|
+
"description": "Click handler — renders the tile as a button when no `href` is given"
|
|
2038
|
+
},
|
|
2039
|
+
"title": {
|
|
2040
|
+
"type": "string",
|
|
2041
|
+
"required": true,
|
|
2042
|
+
"description": "Category label shown under the icon"
|
|
2043
|
+
}
|
|
2044
|
+
}
|
|
2045
|
+
},
|
|
2046
|
+
"sectionDescription": {
|
|
2047
|
+
"type": "string",
|
|
2048
|
+
"required": false,
|
|
2049
|
+
"description": "Optional copy under the heading"
|
|
2050
|
+
},
|
|
2051
|
+
"sectionTitle": {
|
|
2052
|
+
"type": "string",
|
|
2053
|
+
"required": false,
|
|
2054
|
+
"description": "Optional H2 heading above the grid"
|
|
2055
|
+
}
|
|
2056
|
+
}
|
|
2057
|
+
},
|
|
2058
|
+
"HelpCentreSubCategories": {
|
|
2059
|
+
"name": "HelpCentreSubCategories",
|
|
2060
|
+
"source": "templates/HelpCentreSubCategories/HelpCentreSubCategories.tsx",
|
|
2061
|
+
"props": {
|
|
2062
|
+
"items": {
|
|
2063
|
+
"type": "HelpCentreSubCategoryItem[]",
|
|
2064
|
+
"required": true,
|
|
2065
|
+
"description": "FAQ question cards for this category (at least 1 item)",
|
|
2066
|
+
"items": {
|
|
2067
|
+
"href": {
|
|
2068
|
+
"type": "string",
|
|
2069
|
+
"required": false,
|
|
2070
|
+
"description": "Destination URL — renders the card as a link"
|
|
2071
|
+
},
|
|
2072
|
+
"id": {
|
|
2073
|
+
"type": "string",
|
|
2074
|
+
"required": false,
|
|
2075
|
+
"description": "Stable identifier for the question (e.g. used as the React key)"
|
|
2076
|
+
},
|
|
2077
|
+
"onClick": {
|
|
2078
|
+
"type": "(() => void)",
|
|
2079
|
+
"required": false,
|
|
2080
|
+
"description": "Click handler — renders the card as a button when no `href` is given"
|
|
2081
|
+
},
|
|
2082
|
+
"question": {
|
|
2083
|
+
"type": "string",
|
|
2084
|
+
"required": true,
|
|
2085
|
+
"description": "The FAQ question shown on the card"
|
|
2086
|
+
}
|
|
2087
|
+
}
|
|
2088
|
+
},
|
|
2089
|
+
"noResultsText": {
|
|
2090
|
+
"type": "string",
|
|
2091
|
+
"required": false,
|
|
2092
|
+
"description": "Message shown when a search query matches no items. `{query}` is replaced with the current search text. Default: `No results found for \"{query}\"`",
|
|
2093
|
+
"default": "No results found for \"{query}\""
|
|
2094
|
+
},
|
|
2095
|
+
"onSearchChange": {
|
|
2096
|
+
"type": "((value: string) => void)",
|
|
2097
|
+
"required": false,
|
|
2098
|
+
"description": "Called whenever the search input value changes"
|
|
2099
|
+
},
|
|
2100
|
+
"searchAriaLabel": {
|
|
2101
|
+
"type": "string",
|
|
2102
|
+
"required": false,
|
|
2103
|
+
"description": "Accessible label for the search field (default: matches `searchPlaceholder`)"
|
|
2104
|
+
},
|
|
2105
|
+
"searchPlaceholder": {
|
|
2106
|
+
"type": "string",
|
|
2107
|
+
"required": false,
|
|
2108
|
+
"description": "Placeholder text for the search field (default: \"Search\")",
|
|
2109
|
+
"default": "Search"
|
|
2110
|
+
},
|
|
2111
|
+
"title": {
|
|
2112
|
+
"type": "string",
|
|
2113
|
+
"required": true,
|
|
2114
|
+
"description": "Large H1 category title shown above the search field (e.g. \"Account\")"
|
|
2115
|
+
}
|
|
2116
|
+
}
|
|
2117
|
+
},
|
|
2118
|
+
"Hero": {
|
|
2119
|
+
"name": "Hero",
|
|
2120
|
+
"source": "templates/Hero/Hero.tsx",
|
|
2121
|
+
"props": {
|
|
2122
|
+
"backgroundImageSrc": {
|
|
2123
|
+
"type": "string",
|
|
2124
|
+
"required": false,
|
|
2125
|
+
"description": "Background image URL. Used as the full-bleed background behind the overlay on all three variants."
|
|
2126
|
+
},
|
|
2127
|
+
"description": {
|
|
2128
|
+
"type": "string",
|
|
2129
|
+
"required": false,
|
|
2130
|
+
"description": "Body copy below the title"
|
|
2131
|
+
},
|
|
2132
|
+
"floatingImage": {
|
|
2133
|
+
"type": "ReactNode",
|
|
2134
|
+
"required": false,
|
|
2135
|
+
"description": "Smaller floating image shown below the productImage in the Showcase variant. Accepts a ReactNode or image URL string."
|
|
2136
|
+
},
|
|
2137
|
+
"heroImage": {
|
|
2138
|
+
"type": "ReactNode",
|
|
2139
|
+
"required": false,
|
|
2140
|
+
"description": "Right-side hero image for the Split variant. Accepts a ReactNode (e.g. <img>) or an image URL string."
|
|
2141
|
+
},
|
|
2142
|
+
"primaryButton": {
|
|
2143
|
+
"type": "HeroButtonProps",
|
|
2144
|
+
"required": false,
|
|
2145
|
+
"description": "Primary CTA button (coral). Shown on all variants."
|
|
2146
|
+
},
|
|
2147
|
+
"productImage": {
|
|
2148
|
+
"type": "ReactNode",
|
|
2149
|
+
"required": false,
|
|
2150
|
+
"description": "Large product image shown centered below the CTA buttons in the Showcase variant. Accepts a ReactNode or image URL string."
|
|
2151
|
+
},
|
|
2152
|
+
"secondaryButton": {
|
|
2153
|
+
"type": "HeroButtonProps",
|
|
2154
|
+
"required": false,
|
|
2155
|
+
"description": "Secondary CTA button (white outline). Shown on all variants."
|
|
2156
|
+
},
|
|
2157
|
+
"subtitle": {
|
|
2158
|
+
"type": "string",
|
|
2159
|
+
"required": false,
|
|
2160
|
+
"description": "Optional eyebrow / subtitle above the title"
|
|
2161
|
+
},
|
|
2162
|
+
"title": {
|
|
2163
|
+
"type": "string",
|
|
2164
|
+
"required": true,
|
|
2165
|
+
"description": "Main heading"
|
|
2166
|
+
},
|
|
2167
|
+
"variant": {
|
|
2168
|
+
"type": "HeroVariant",
|
|
2169
|
+
"required": true,
|
|
2170
|
+
"description": "Layout variant: - \"split\" — dark bg, left-aligned text, right-side hero image, 100vh - \"centered\" — full background image, center-aligned text, 100vh - \"showcase\" — dark bg + full-bleed bg image, center-aligned text, large product image below buttons, smaller floating image below that."
|
|
2171
|
+
}
|
|
2172
|
+
}
|
|
2173
|
+
},
|
|
2174
|
+
"ImageBanner": {
|
|
2175
|
+
"name": "ImageBanner",
|
|
2176
|
+
"source": "templates/ImageBanner/ImageBanner.tsx",
|
|
2177
|
+
"props": {
|
|
2178
|
+
"className": {
|
|
2179
|
+
"type": "string",
|
|
2180
|
+
"required": false,
|
|
2181
|
+
"description": "Optional extra CSS class on the root element"
|
|
2182
|
+
},
|
|
2183
|
+
"ctaHref": {
|
|
2184
|
+
"type": "string",
|
|
2185
|
+
"required": false,
|
|
2186
|
+
"description": "CTA link href"
|
|
2187
|
+
},
|
|
2188
|
+
"ctaLabel": {
|
|
2189
|
+
"type": "string",
|
|
2190
|
+
"required": false,
|
|
2191
|
+
"description": "CTA link label",
|
|
2192
|
+
"default": "Trader's Hub"
|
|
2193
|
+
},
|
|
2194
|
+
"description": {
|
|
2195
|
+
"type": "string",
|
|
2196
|
+
"required": false,
|
|
2197
|
+
"description": "Supporting body copy beneath the title",
|
|
2198
|
+
"default": "Connect with traders around the world to exchange insights, explore portfolios, and gain valuable expertise."
|
|
2199
|
+
},
|
|
2200
|
+
"imageAlt": {
|
|
2201
|
+
"type": "string",
|
|
2202
|
+
"required": false,
|
|
2203
|
+
"description": "Accessible alt text for the image",
|
|
2204
|
+
"default": ""
|
|
2205
|
+
},
|
|
2206
|
+
"imageUrl": {
|
|
2207
|
+
"type": "string",
|
|
2208
|
+
"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."
|
|
2210
|
+
},
|
|
2211
|
+
"onCtaClick": {
|
|
2212
|
+
"type": "(() => void)",
|
|
2213
|
+
"required": false,
|
|
2214
|
+
"description": "Callback fired when the CTA link is clicked"
|
|
2215
|
+
},
|
|
2216
|
+
"title": {
|
|
2217
|
+
"type": "string",
|
|
2218
|
+
"required": false,
|
|
2219
|
+
"description": "Section headline",
|
|
2220
|
+
"default": "Join our global community"
|
|
2221
|
+
},
|
|
2222
|
+
"variant": {
|
|
2223
|
+
"type": "\"split\" | \"full-bg\"",
|
|
2224
|
+
"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"
|
|
2227
|
+
}
|
|
2228
|
+
}
|
|
2229
|
+
},
|
|
2230
|
+
"Link": {
|
|
2231
|
+
"name": "Link",
|
|
2232
|
+
"source": "components/Link/Link.tsx",
|
|
2233
|
+
"props": {
|
|
2234
|
+
"colorScheme": {
|
|
2235
|
+
"type": "LinkColorScheme",
|
|
2236
|
+
"required": false,
|
|
2237
|
+
"description": "Color scheme — coral (brand), black, or white (for dark backgrounds)",
|
|
2238
|
+
"default": "coral"
|
|
2239
|
+
},
|
|
2240
|
+
"disabled": {
|
|
2241
|
+
"type": "boolean",
|
|
2242
|
+
"required": false,
|
|
2243
|
+
"description": "Disabled state — prevents interaction and reduces opacity",
|
|
2244
|
+
"default": false
|
|
2245
|
+
},
|
|
2246
|
+
"icon": {
|
|
2247
|
+
"type": "ReactNode",
|
|
2248
|
+
"required": false,
|
|
2249
|
+
"description": "Optional left icon. When provided, the chevron is hidden and the label underlines on hover/active."
|
|
2250
|
+
},
|
|
2251
|
+
"label": {
|
|
2252
|
+
"type": "string",
|
|
2253
|
+
"required": false,
|
|
2254
|
+
"description": "Link label text"
|
|
2255
|
+
},
|
|
2256
|
+
"showChevron": {
|
|
2257
|
+
"type": "boolean",
|
|
2258
|
+
"required": false,
|
|
2259
|
+
"description": "Show trailing chevron arrow. Active only when no icon is provided.",
|
|
2260
|
+
"default": true
|
|
2261
|
+
}
|
|
2262
|
+
}
|
|
2263
|
+
},
|
|
2264
|
+
"LogoMarquee": {
|
|
2265
|
+
"name": "LogoMarquee",
|
|
2266
|
+
"source": "templates/LogoMarquee/LogoMarquee.tsx",
|
|
2267
|
+
"props": {
|
|
2268
|
+
"body": {
|
|
2269
|
+
"type": "string",
|
|
2270
|
+
"required": false,
|
|
2271
|
+
"defaultExpression": "TEXT_CONTENT.body"
|
|
2272
|
+
},
|
|
2273
|
+
"col1Logos": {
|
|
2274
|
+
"type": "LogoItem[]",
|
|
2275
|
+
"required": false,
|
|
2276
|
+
"defaultExpression": "COL_ONE_LOGOS"
|
|
2277
|
+
},
|
|
2278
|
+
"col2Logos": {
|
|
2279
|
+
"type": "LogoItem[]",
|
|
2280
|
+
"required": false,
|
|
2281
|
+
"defaultExpression": "COL_TWO_LOGOS"
|
|
2282
|
+
},
|
|
2283
|
+
"ctaHref": {
|
|
2284
|
+
"type": "string",
|
|
2285
|
+
"required": false,
|
|
2286
|
+
"defaultExpression": "TEXT_CONTENT.ctaHref"
|
|
2287
|
+
},
|
|
2288
|
+
"ctaLabel": {
|
|
2289
|
+
"type": "string",
|
|
2290
|
+
"required": false,
|
|
2291
|
+
"defaultExpression": "TEXT_CONTENT.ctaLabel"
|
|
2292
|
+
},
|
|
2293
|
+
"disclaimer": {
|
|
2294
|
+
"type": "string",
|
|
2295
|
+
"required": false,
|
|
2296
|
+
"defaultExpression": "TEXT_CONTENT.disclaimer"
|
|
2297
|
+
},
|
|
2298
|
+
"headline": {
|
|
2299
|
+
"type": "string",
|
|
2300
|
+
"required": false,
|
|
2301
|
+
"defaultExpression": "TEXT_CONTENT.headline"
|
|
2302
|
+
}
|
|
2303
|
+
}
|
|
2304
|
+
},
|
|
2305
|
+
"Navbar": {
|
|
2306
|
+
"name": "Navbar",
|
|
2307
|
+
"source": "components/Navbar/Navbar.tsx",
|
|
2308
|
+
"props": {
|
|
2309
|
+
"activeLanguageCode": {
|
|
2310
|
+
"type": "string",
|
|
2311
|
+
"required": false,
|
|
2312
|
+
"description": "Highlights the active language in the dropdown (matched by `LanguageItem.code`)"
|
|
2313
|
+
},
|
|
2314
|
+
"ctaHref": {
|
|
2315
|
+
"type": "string",
|
|
2316
|
+
"required": false,
|
|
2317
|
+
"description": "Destination for the CTA button"
|
|
2318
|
+
},
|
|
2319
|
+
"ctaLabel": {
|
|
2320
|
+
"type": "string",
|
|
2321
|
+
"required": false,
|
|
2322
|
+
"description": "Label for the primary \"Open account\" button",
|
|
2323
|
+
"default": "Open account"
|
|
2324
|
+
},
|
|
2325
|
+
"languageItems": {
|
|
2326
|
+
"type": "LanguageItem[]",
|
|
2327
|
+
"required": false,
|
|
2328
|
+
"description": "Languages for the hover-triggered dropdown grid. When provided, a dropdown is shown instead of calling `onLanguageClick`."
|
|
2329
|
+
},
|
|
2330
|
+
"languageLabel": {
|
|
2331
|
+
"type": "string",
|
|
2332
|
+
"required": false,
|
|
2333
|
+
"description": "Language label rendered next to the globe icon, e.g. \"EN\""
|
|
2334
|
+
},
|
|
2335
|
+
"loginHref": {
|
|
2336
|
+
"type": "string",
|
|
2337
|
+
"required": false,
|
|
2338
|
+
"description": "Destination for the Log in button"
|
|
2339
|
+
},
|
|
2340
|
+
"loginLabel": {
|
|
2341
|
+
"type": "string",
|
|
2342
|
+
"required": false,
|
|
2343
|
+
"description": "Label for the \"Log in\" outlined button",
|
|
2344
|
+
"default": "Log in"
|
|
2345
|
+
},
|
|
2346
|
+
"logoHref": {
|
|
2347
|
+
"type": "string",
|
|
2348
|
+
"required": false,
|
|
2349
|
+
"description": "Wraps the logo in an anchor tag",
|
|
2350
|
+
"default": "/"
|
|
2351
|
+
},
|
|
2352
|
+
"logoSrc": {
|
|
2353
|
+
"type": "string",
|
|
2354
|
+
"required": true,
|
|
2355
|
+
"description": "Logo image URL used when `theme=\"dark\"` (light-coloured logo)"
|
|
2356
|
+
},
|
|
2357
|
+
"logoSrcDark": {
|
|
2358
|
+
"type": "string",
|
|
2359
|
+
"required": false,
|
|
2360
|
+
"description": "Logo image URL used when `theme=\"light\"` (dark-coloured logo). Falls back to `logoSrc` when omitted."
|
|
2361
|
+
},
|
|
2362
|
+
"navItems": {
|
|
2363
|
+
"type": "NavItem[]",
|
|
2364
|
+
"required": false,
|
|
2365
|
+
"description": "Navigation items — each may be a plain link, external link, or dropdown trigger",
|
|
2366
|
+
"default": []
|
|
2367
|
+
},
|
|
2368
|
+
"onLanguageClick": {
|
|
2369
|
+
"type": "(() => void)",
|
|
2370
|
+
"required": false,
|
|
2371
|
+
"description": "Called when the language button is clicked (used when `languageItems` is NOT provided)"
|
|
2372
|
+
},
|
|
2373
|
+
"onLanguageSelect": {
|
|
2374
|
+
"type": "((code: string) => void)",
|
|
2375
|
+
"required": false,
|
|
2376
|
+
"description": "Called when a language is picked from the dropdown"
|
|
2377
|
+
},
|
|
2378
|
+
"theme": {
|
|
2379
|
+
"type": "\"light\" | \"dark\"",
|
|
2380
|
+
"required": false,
|
|
2381
|
+
"description": "`dark` — hero beneath has a dark / image background; pill uses white/24 tint, text is white. `light` — hero beneath has a white background; pill uses white/88 tint, text is slate.",
|
|
2382
|
+
"default": "dark"
|
|
2383
|
+
}
|
|
2384
|
+
}
|
|
2385
|
+
},
|
|
2386
|
+
"Pagination": {
|
|
2387
|
+
"name": "Pagination",
|
|
2388
|
+
"source": "components/Pagination/Pagination.tsx",
|
|
2389
|
+
"props": {
|
|
2390
|
+
"className": {
|
|
2391
|
+
"type": "string",
|
|
2392
|
+
"required": false,
|
|
2393
|
+
"description": "Optional extra class name for the root element"
|
|
2394
|
+
},
|
|
2395
|
+
"currentPage": {
|
|
2396
|
+
"type": "number",
|
|
2397
|
+
"required": true,
|
|
2398
|
+
"description": "The currently active page (1-based)"
|
|
2399
|
+
},
|
|
2400
|
+
"onPageChange": {
|
|
2401
|
+
"type": "(page: number) => void",
|
|
2402
|
+
"required": true,
|
|
2403
|
+
"description": "Callback fired when the user navigates to a different page"
|
|
2404
|
+
},
|
|
2405
|
+
"totalPages": {
|
|
2406
|
+
"type": "number",
|
|
2407
|
+
"required": true,
|
|
2408
|
+
"description": "Total number of pages"
|
|
2409
|
+
}
|
|
2410
|
+
}
|
|
2411
|
+
},
|
|
2412
|
+
"ParallaxBanner": {
|
|
2413
|
+
"name": "ParallaxBanner",
|
|
2414
|
+
"source": "templates/ParallaxBanner/ParallaxBanner.tsx",
|
|
2415
|
+
"props": {
|
|
2416
|
+
"cards": {
|
|
2417
|
+
"type": "ParallaxBannerCultureCard[]",
|
|
2418
|
+
"required": false,
|
|
2419
|
+
"description": "Four (or more) short value/culture cards rendered in a grid below the banner. Ignored when `variant` is `\"banner-only\"`. Defaults to `DEFAULT_CULTURE_CARDS`.",
|
|
2420
|
+
"defaultExpression": "DEFAULT_CULTURE_CARDS"
|
|
2421
|
+
},
|
|
2422
|
+
"className": {
|
|
2423
|
+
"type": "string",
|
|
2424
|
+
"required": false,
|
|
2425
|
+
"description": "Extra class name merged onto the root `<section>`"
|
|
2426
|
+
},
|
|
2427
|
+
"ctaHref": {
|
|
2428
|
+
"type": "string",
|
|
2429
|
+
"required": false,
|
|
2430
|
+
"description": "CTA link href"
|
|
2431
|
+
},
|
|
2432
|
+
"ctaLabel": {
|
|
2433
|
+
"type": "string",
|
|
2434
|
+
"required": false,
|
|
2435
|
+
"description": "CTA link label. Defaults to \"Culture at Deriv\".",
|
|
2436
|
+
"defaultExpression": "PARALLAX_BANNER_TEXT_CONTENT.ctaLabel"
|
|
2437
|
+
},
|
|
2438
|
+
"description": {
|
|
2439
|
+
"type": "string",
|
|
2440
|
+
"required": false,
|
|
2441
|
+
"description": "Supporting copy beneath the headline",
|
|
2442
|
+
"defaultExpression": "PARALLAX_BANNER_TEXT_CONTENT.description"
|
|
2443
|
+
},
|
|
2444
|
+
"enableParallax": {
|
|
2445
|
+
"type": "boolean",
|
|
2446
|
+
"required": false,
|
|
2447
|
+
"description": "Enables the subtle scroll-linked parallax on the banner photo. Automatically disabled when the user has `prefers-reduced-motion` set. Defaults to `true`.",
|
|
2448
|
+
"default": true
|
|
2449
|
+
},
|
|
2450
|
+
"imageAlt": {
|
|
2451
|
+
"type": "string",
|
|
2452
|
+
"required": false,
|
|
2453
|
+
"description": "Accessible alt text for the banner photo",
|
|
2454
|
+
"default": ""
|
|
2455
|
+
},
|
|
2456
|
+
"imageUrl": {
|
|
2457
|
+
"type": "string",
|
|
2458
|
+
"required": false,
|
|
2459
|
+
"description": "URL of the photo shown in the banner's image panel",
|
|
2460
|
+
"defaultExpression": "PLACEHOLDER_IMAGE"
|
|
2461
|
+
},
|
|
2462
|
+
"onCtaClick": {
|
|
2463
|
+
"type": "(() => void)",
|
|
2464
|
+
"required": false,
|
|
2465
|
+
"description": "Callback fired when the CTA link is clicked"
|
|
2466
|
+
},
|
|
2467
|
+
"title": {
|
|
2468
|
+
"type": "string",
|
|
2469
|
+
"required": false,
|
|
2470
|
+
"description": "Banner headline. Defaults to \"Our culture\".",
|
|
2471
|
+
"defaultExpression": "PARALLAX_BANNER_TEXT_CONTENT.title"
|
|
2472
|
+
},
|
|
2473
|
+
"variant": {
|
|
2474
|
+
"type": "\"default\" | \"banner-only\"",
|
|
2475
|
+
"required": false,
|
|
2476
|
+
"description": "Layout variant. - `\"default\"`: banner card plus a grid of culture/value cards beneath it. - `\"banner-only\"`: just the banner card — no cards grid.",
|
|
2477
|
+
"default": "default"
|
|
2478
|
+
}
|
|
2479
|
+
}
|
|
2480
|
+
},
|
|
2481
|
+
"Stats": {
|
|
2482
|
+
"name": "Stats",
|
|
2483
|
+
"source": "templates/Stats/StatsV2.tsx",
|
|
2484
|
+
"props": {
|
|
2485
|
+
"description": {
|
|
2486
|
+
"type": "string",
|
|
2487
|
+
"required": false,
|
|
2488
|
+
"description": "Optional supporting copy below the heading"
|
|
2489
|
+
},
|
|
2490
|
+
"leftAwards": {
|
|
2491
|
+
"type": "StatsAward[]",
|
|
2492
|
+
"required": false,
|
|
2493
|
+
"description": "Award badges shown in the left column on desktop and as the first group on the mobile grid. Visually top-aligned on desktop.",
|
|
2494
|
+
"default": []
|
|
2495
|
+
},
|
|
2496
|
+
"rightAwards": {
|
|
2497
|
+
"type": "StatsAward[]",
|
|
2498
|
+
"required": false,
|
|
2499
|
+
"description": "Award badges shown in the right column on desktop and as the second group on the mobile grid. Bottom-aligned on desktop.",
|
|
2500
|
+
"default": []
|
|
2501
|
+
},
|
|
2502
|
+
"stats": {
|
|
2503
|
+
"type": "StatItem[]",
|
|
2504
|
+
"required": true,
|
|
2505
|
+
"description": "Ordered list of stats displayed in the centre carousel card. The carousel auto-rotates and never stops; provide ≥ 2 items to enable the animation.",
|
|
2506
|
+
"items": {
|
|
2507
|
+
"label": {
|
|
2508
|
+
"type": "string",
|
|
2509
|
+
"required": true,
|
|
2510
|
+
"description": "Descriptive label below the value, e.g. \"customers worldwide\""
|
|
2511
|
+
},
|
|
2512
|
+
"value": {
|
|
2513
|
+
"type": "string",
|
|
2514
|
+
"required": true,
|
|
2515
|
+
"description": "Numeric or short display value, e.g. \"2.5M+\""
|
|
2516
|
+
}
|
|
2517
|
+
}
|
|
2518
|
+
},
|
|
2519
|
+
"title": {
|
|
2520
|
+
"type": "string",
|
|
2521
|
+
"required": true,
|
|
2522
|
+
"description": "Section heading (H2)"
|
|
2523
|
+
}
|
|
2524
|
+
}
|
|
2525
|
+
},
|
|
2526
|
+
"StatsSimple": {
|
|
2527
|
+
"name": "StatsSimple",
|
|
2528
|
+
"source": "templates/Stats/StatsSimple.tsx",
|
|
2529
|
+
"props": {
|
|
2530
|
+
"stats": {
|
|
2531
|
+
"type": "StatItem[]",
|
|
2532
|
+
"required": true,
|
|
2533
|
+
"description": "Ordered list of stat items to display in the horizontal grid.",
|
|
2534
|
+
"items": {
|
|
2535
|
+
"label": {
|
|
2536
|
+
"type": "string",
|
|
2537
|
+
"required": true,
|
|
2538
|
+
"description": "Descriptive label below the value, e.g. \"customers worldwide\""
|
|
2539
|
+
},
|
|
2540
|
+
"value": {
|
|
2541
|
+
"type": "string",
|
|
2542
|
+
"required": true,
|
|
2543
|
+
"description": "Numeric or short display value, e.g. \"2.5M+\""
|
|
2544
|
+
}
|
|
2545
|
+
}
|
|
2546
|
+
}
|
|
2547
|
+
}
|
|
2548
|
+
},
|
|
2549
|
+
"Steps": {
|
|
2550
|
+
"name": "Steps",
|
|
2551
|
+
"source": "templates/Steps/Steps.tsx",
|
|
2552
|
+
"props": {
|
|
2553
|
+
"image": {
|
|
2554
|
+
"type": "string",
|
|
2555
|
+
"required": false,
|
|
2556
|
+
"description": "Image source URL"
|
|
2557
|
+
},
|
|
2558
|
+
"imageAlt": {
|
|
2559
|
+
"type": "string",
|
|
2560
|
+
"required": false,
|
|
2561
|
+
"description": "Accessible alt text for the image",
|
|
2562
|
+
"default": ""
|
|
2563
|
+
},
|
|
2564
|
+
"imagePosition": {
|
|
2565
|
+
"type": "StepsImagePosition",
|
|
2566
|
+
"required": false,
|
|
2567
|
+
"description": "Which side the image sits on (default: \"left\"). On mobile the image always stacks above the content.",
|
|
2568
|
+
"default": "left"
|
|
2569
|
+
},
|
|
2570
|
+
"steps": {
|
|
2571
|
+
"type": "StepItem[]",
|
|
2572
|
+
"required": true,
|
|
2573
|
+
"description": "Ordered list of steps",
|
|
2574
|
+
"items": {
|
|
2575
|
+
"description": {
|
|
2576
|
+
"type": "string",
|
|
2577
|
+
"required": true,
|
|
2578
|
+
"description": "Step body copy"
|
|
2579
|
+
},
|
|
2580
|
+
"title": {
|
|
2581
|
+
"type": "string",
|
|
2582
|
+
"required": true,
|
|
2583
|
+
"description": "Step title"
|
|
2584
|
+
}
|
|
2585
|
+
}
|
|
2586
|
+
},
|
|
2587
|
+
"title": {
|
|
2588
|
+
"type": "string",
|
|
2589
|
+
"required": true,
|
|
2590
|
+
"description": "Section headline (H2)"
|
|
2591
|
+
}
|
|
2592
|
+
}
|
|
2593
|
+
},
|
|
2594
|
+
"StickyMarketCards": {
|
|
2595
|
+
"name": "StickyMarketCards",
|
|
2596
|
+
"source": "templates/StickyMarketCards/StickyMarketCards.tsx",
|
|
2597
|
+
"props": {
|
|
2598
|
+
"items": {
|
|
2599
|
+
"type": "StickyMarketCardItem[]",
|
|
2600
|
+
"required": true,
|
|
2601
|
+
"description": "Ordered list of cards (first item = back of stack, last = front).",
|
|
2602
|
+
"items": {
|
|
2603
|
+
"description": {
|
|
2604
|
+
"type": "string",
|
|
2605
|
+
"required": true,
|
|
2606
|
+
"description": "Body copy below the title"
|
|
2607
|
+
},
|
|
2608
|
+
"imageUrl": {
|
|
2609
|
+
"type": "string",
|
|
2610
|
+
"required": false,
|
|
2611
|
+
"description": "URL of the card's hero image."
|
|
2612
|
+
},
|
|
2613
|
+
"theme": {
|
|
2614
|
+
"type": "StickyMarketCardTheme",
|
|
2615
|
+
"required": false,
|
|
2616
|
+
"description": "Background / text colour theme. light → slate-75 bg + dark text coral → coral-500 bg + white text dark → slate-1200 bg + white text"
|
|
2617
|
+
},
|
|
2618
|
+
"title": {
|
|
2619
|
+
"type": "string",
|
|
2620
|
+
"required": true,
|
|
2621
|
+
"description": "Card heading"
|
|
2622
|
+
}
|
|
2623
|
+
}
|
|
2624
|
+
},
|
|
2625
|
+
"sectionDescription": {
|
|
2626
|
+
"type": "string",
|
|
2627
|
+
"required": false,
|
|
2628
|
+
"description": "Optional section description"
|
|
2629
|
+
},
|
|
2630
|
+
"sectionTitle": {
|
|
2631
|
+
"type": "string",
|
|
2632
|
+
"required": true,
|
|
2633
|
+
"description": "Section heading rendered as H2"
|
|
2634
|
+
}
|
|
2635
|
+
}
|
|
2636
|
+
},
|
|
2637
|
+
"StickyStackedCards": {
|
|
2638
|
+
"name": "StickyStackedCards",
|
|
2639
|
+
"source": "templates/StickyStackedCards/StickyStackedCards.tsx",
|
|
2640
|
+
"props": {
|
|
2641
|
+
"header": {
|
|
2642
|
+
"type": "string",
|
|
2643
|
+
"required": true,
|
|
2644
|
+
"description": "Section heading rendered as H2"
|
|
2645
|
+
},
|
|
2646
|
+
"items": {
|
|
2647
|
+
"type": "StickyCardItem[]",
|
|
2648
|
+
"required": true,
|
|
2649
|
+
"description": "Ordered list of cards. On desktop each card is position:sticky and slides over the previous one. On mobile they render as a plain vertical stack.",
|
|
2650
|
+
"items": {
|
|
2651
|
+
"description": {
|
|
2652
|
+
"type": "string",
|
|
2653
|
+
"required": true,
|
|
2654
|
+
"description": "Body copy below the title"
|
|
2655
|
+
},
|
|
2656
|
+
"imageUrl": {
|
|
2657
|
+
"type": "string",
|
|
2658
|
+
"required": true,
|
|
2659
|
+
"description": "URL of the card's hero image (webp, png, jpg, etc.)"
|
|
2660
|
+
},
|
|
2661
|
+
"theme": {
|
|
2662
|
+
"type": "StickyCardTheme",
|
|
2663
|
+
"required": false,
|
|
2664
|
+
"description": "Background / text colour theme. light → slate-75 bg + dark text coral → coral-500 bg + white text dark → slate-1200 bg + white text"
|
|
2665
|
+
},
|
|
2666
|
+
"title": {
|
|
2667
|
+
"type": "string",
|
|
2668
|
+
"required": true,
|
|
2669
|
+
"description": "Card heading"
|
|
2670
|
+
}
|
|
2671
|
+
}
|
|
2672
|
+
}
|
|
2673
|
+
}
|
|
2674
|
+
},
|
|
2675
|
+
"Table": {
|
|
2676
|
+
"name": "Table",
|
|
2677
|
+
"source": "templates/Table/Table.tsx",
|
|
2678
|
+
"props": {
|
|
2679
|
+
"columns": {
|
|
2680
|
+
"type": "TableColumnDef[]",
|
|
2681
|
+
"required": true,
|
|
2682
|
+
"description": "Column definitions (order matters)",
|
|
2683
|
+
"items": {
|
|
2684
|
+
"header": {
|
|
2685
|
+
"type": "string | string[]",
|
|
2686
|
+
"required": true,
|
|
2687
|
+
"description": "Header label text. Pass an array for multi-line headers (e.g. [\"Contract\", \"size\"])."
|
|
2688
|
+
},
|
|
2689
|
+
"key": {
|
|
2690
|
+
"type": "string",
|
|
2691
|
+
"required": true,
|
|
2692
|
+
"description": "Unique key matching the row data field"
|
|
2693
|
+
},
|
|
2694
|
+
"tooltip": {
|
|
2695
|
+
"type": "{ heading: string; description: string; }",
|
|
2696
|
+
"required": false,
|
|
2697
|
+
"description": "Tooltip shown on header hover"
|
|
2698
|
+
},
|
|
2699
|
+
"width": {
|
|
2700
|
+
"type": "TableColumnWidth",
|
|
2701
|
+
"required": false,
|
|
2702
|
+
"description": "Column width variant: main → first/instrument column (wider, sticky, icon support) normal → default column big → wide column (e.g. Trading hours)"
|
|
2703
|
+
}
|
|
2704
|
+
}
|
|
2705
|
+
},
|
|
2706
|
+
"infoText": {
|
|
2707
|
+
"type": "string",
|
|
2708
|
+
"required": false,
|
|
2709
|
+
"description": "Optional info text shown next to pagination"
|
|
2710
|
+
},
|
|
2711
|
+
"mainColumnKey": {
|
|
2712
|
+
"type": "string",
|
|
2713
|
+
"required": false,
|
|
2714
|
+
"description": "Key of the main (instrument) column. Defaults to the first column with width \"main\", or the first column."
|
|
2715
|
+
},
|
|
2716
|
+
"pageSize": {
|
|
2717
|
+
"type": "number",
|
|
2718
|
+
"required": false,
|
|
2719
|
+
"description": "Rows displayed per page (default: 10)",
|
|
2720
|
+
"default": 10
|
|
2721
|
+
},
|
|
2722
|
+
"rows": {
|
|
2723
|
+
"type": "TableRowData[]",
|
|
2724
|
+
"required": true,
|
|
2725
|
+
"description": "Row data"
|
|
2726
|
+
},
|
|
2727
|
+
"searchPlaceholder": {
|
|
2728
|
+
"type": "string",
|
|
2729
|
+
"required": false,
|
|
2730
|
+
"description": "Search input placeholder (default: \"Search\")",
|
|
2731
|
+
"default": "Search"
|
|
2732
|
+
},
|
|
2733
|
+
"sectionTitle": {
|
|
2734
|
+
"type": "string",
|
|
2735
|
+
"required": false,
|
|
2736
|
+
"description": "Optional section title rendered above the table"
|
|
2737
|
+
}
|
|
2738
|
+
}
|
|
2739
|
+
},
|
|
2740
|
+
"Tabs": {
|
|
2741
|
+
"name": "Tabs",
|
|
2742
|
+
"source": "components/Tabs/Tabs.tsx",
|
|
2743
|
+
"props": {
|
|
2744
|
+
"activeId": {
|
|
2745
|
+
"type": "string",
|
|
2746
|
+
"required": true,
|
|
2747
|
+
"description": "The currently active tab ID"
|
|
2748
|
+
},
|
|
2749
|
+
"className": {
|
|
2750
|
+
"type": "string",
|
|
2751
|
+
"required": false,
|
|
2752
|
+
"description": "Optional CSS class name"
|
|
2753
|
+
},
|
|
2754
|
+
"items": {
|
|
2755
|
+
"type": "TabItem[]",
|
|
2756
|
+
"required": true,
|
|
2757
|
+
"description": "Array of tab items to display",
|
|
2758
|
+
"items": {
|
|
2759
|
+
"id": {
|
|
2760
|
+
"type": "string",
|
|
2761
|
+
"required": true,
|
|
2762
|
+
"description": "Unique identifier for the tab"
|
|
2763
|
+
},
|
|
2764
|
+
"label": {
|
|
2765
|
+
"type": "string",
|
|
2766
|
+
"required": true,
|
|
2767
|
+
"description": "Display label for the tab"
|
|
2768
|
+
}
|
|
2769
|
+
}
|
|
2770
|
+
},
|
|
2771
|
+
"onChange": {
|
|
2772
|
+
"type": "(id: string) => void",
|
|
2773
|
+
"required": true,
|
|
2774
|
+
"description": "Callback fired when a tab is clicked"
|
|
2775
|
+
}
|
|
2776
|
+
}
|
|
2777
|
+
},
|
|
2778
|
+
"Tag": {
|
|
2779
|
+
"name": "Tag",
|
|
2780
|
+
"source": "components/Tag/Tag.tsx",
|
|
2781
|
+
"props": {
|
|
2782
|
+
"fontWeight": {
|
|
2783
|
+
"type": "TagFontWeight",
|
|
2784
|
+
"required": false,
|
|
2785
|
+
"default": "regular"
|
|
2786
|
+
},
|
|
2787
|
+
"icon": {
|
|
2788
|
+
"type": "ReactNode",
|
|
2789
|
+
"required": false
|
|
2790
|
+
},
|
|
2791
|
+
"label": {
|
|
2792
|
+
"type": "string",
|
|
2793
|
+
"required": false
|
|
2794
|
+
},
|
|
2795
|
+
"size": {
|
|
2796
|
+
"type": "TagSize",
|
|
2797
|
+
"required": false,
|
|
2798
|
+
"default": "sm"
|
|
2799
|
+
},
|
|
2800
|
+
"variant": {
|
|
2801
|
+
"type": "TagVariant",
|
|
2802
|
+
"required": false,
|
|
2803
|
+
"default": "fill"
|
|
2804
|
+
}
|
|
2805
|
+
}
|
|
2806
|
+
},
|
|
2807
|
+
"Testimonial": {
|
|
2808
|
+
"name": "Testimonial",
|
|
2809
|
+
"source": "templates/Testimonial/Testimonial.tsx",
|
|
2810
|
+
"props": {
|
|
2811
|
+
"className": {
|
|
2812
|
+
"type": "string",
|
|
2813
|
+
"required": false,
|
|
2814
|
+
"description": "Optional CSS class name applied to the outer section"
|
|
2815
|
+
},
|
|
2816
|
+
"items": {
|
|
2817
|
+
"type": "TestimonialItem[]",
|
|
2818
|
+
"required": true,
|
|
2819
|
+
"description": "Array of testimonial items to display",
|
|
2820
|
+
"items": {
|
|
2821
|
+
"authorLocation": {
|
|
2822
|
+
"type": "string",
|
|
2823
|
+
"required": false,
|
|
2824
|
+
"description": "Author location or subtitle (e.g. \"Sri Lanka\")"
|
|
2825
|
+
},
|
|
2826
|
+
"authorName": {
|
|
2827
|
+
"type": "string",
|
|
2828
|
+
"required": true,
|
|
2829
|
+
"description": "Author name or label (e.g. \"Deriv partner\")"
|
|
2830
|
+
},
|
|
2831
|
+
"avatarUrl": {
|
|
2832
|
+
"type": "string",
|
|
2833
|
+
"required": false,
|
|
2834
|
+
"description": "Optional author avatar image URL"
|
|
2835
|
+
},
|
|
2836
|
+
"quote": {
|
|
2837
|
+
"type": "string",
|
|
2838
|
+
"required": true,
|
|
2839
|
+
"description": "The testimonial quote text"
|
|
2840
|
+
},
|
|
2841
|
+
"rating": {
|
|
2842
|
+
"type": "number",
|
|
2843
|
+
"required": false,
|
|
2844
|
+
"description": "`trustpilot` variant only — star rating out of 5 shown on the card. Supports halves (e.g. `4.5`). Defaults to `5`."
|
|
2845
|
+
},
|
|
2846
|
+
"reviewUrl": {
|
|
2847
|
+
"type": "string",
|
|
2848
|
+
"required": false,
|
|
2849
|
+
"description": "`trustpilot` variant only — link to the full review on Trustpilot. When omitted, the card links to `trustpilotUrl` instead."
|
|
2850
|
+
}
|
|
2851
|
+
}
|
|
2852
|
+
},
|
|
2853
|
+
"title": {
|
|
2854
|
+
"type": "string",
|
|
2855
|
+
"required": false,
|
|
2856
|
+
"description": "Section heading"
|
|
2857
|
+
},
|
|
2858
|
+
"trustpilotScore": {
|
|
2859
|
+
"type": "number",
|
|
2860
|
+
"required": false,
|
|
2861
|
+
"description": "`trustpilot` variant only — overall TrustScore shown in the footer badge (out of 5)."
|
|
2862
|
+
},
|
|
2863
|
+
"trustpilotUrl": {
|
|
2864
|
+
"type": "string",
|
|
2865
|
+
"required": false,
|
|
2866
|
+
"description": "`trustpilot` variant only — URL to the brand's Trustpilot profile page. Used by the footer rating badge link, and as the fallback link for any item without its own `reviewUrl`."
|
|
2867
|
+
},
|
|
2868
|
+
"variant": {
|
|
2869
|
+
"type": "\"default\" | \"trustpilot\"",
|
|
2870
|
+
"required": false,
|
|
2871
|
+
"description": "Visual style. - `default` (default): single-slide auto-advancing quote carousel with dot pagination. - `trustpilot`: horizontally-scrollable row of star-rated review cards, a \"Trustpilot\" rating badge, and prev/next controls — modeled after deriv.com's homepage \"What our customers say\" section."
|
|
2872
|
+
}
|
|
2873
|
+
}
|
|
2874
|
+
},
|
|
2875
|
+
"TextScroll": {
|
|
2876
|
+
"name": "TextScroll",
|
|
2877
|
+
"source": "templates/TextScroll/TextScroll.tsx",
|
|
2878
|
+
"props": {
|
|
2879
|
+
"className": {
|
|
2880
|
+
"type": "string",
|
|
2881
|
+
"required": false,
|
|
2882
|
+
"description": "Additional class names forwarded to the section root"
|
|
2883
|
+
},
|
|
2884
|
+
"text": {
|
|
2885
|
+
"type": "string",
|
|
2886
|
+
"required": true,
|
|
2887
|
+
"description": "The large body copy that animates word-by-word on scroll"
|
|
2888
|
+
}
|
|
2889
|
+
}
|
|
2890
|
+
}
|
|
2891
|
+
},
|
|
2892
|
+
"aliases": {
|
|
2893
|
+
"Leaders": {
|
|
2894
|
+
"aliasOf": "AvatarGrid",
|
|
2895
|
+
"deprecated": "Use AvatarGrid instead"
|
|
2896
|
+
},
|
|
2897
|
+
"PeopleGrid": {
|
|
2898
|
+
"aliasOf": "AvatarGrid",
|
|
2899
|
+
"deprecated": "Use AvatarGrid instead"
|
|
2900
|
+
}
|
|
2901
|
+
}
|
|
2902
|
+
}
|