@telus-uds/theme-allium 0.0.2-prerelease.3 → 0.1.0-prerelease.0

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/build/theme.js ADDED
@@ -0,0 +1,2978 @@
1
+ /*
2
+ *
3
+ * Do not edit directly
4
+ * Generated on Wed, 29 Dec 2021 09:03:35 GMT
5
+ *
6
+ */
7
+
8
+ const PaletteIconCheckmark = require('@telus-uds/palette-allium/build/rn/icons/Checkmark')
9
+ const PaletteIconArrowLeft = require('@telus-uds/palette-allium/build/rn/icons/ArrowLeft')
10
+ const PaletteIconArrowRight = require('@telus-uds/palette-allium/build/rn/icons/ArrowRight')
11
+ const PaletteIconCaretDown = require('@telus-uds/palette-allium/build/rn/icons/CaretDown')
12
+ const PaletteIconCaretUp = require('@telus-uds/palette-allium/build/rn/icons/CaretUp')
13
+ const PaletteIconStatusSuccess = require('@telus-uds/palette-allium/build/rn/icons/StatusSuccess')
14
+ const PaletteIconStatusError = require('@telus-uds/palette-allium/build/rn/icons/StatusError')
15
+ const PaletteIconClose = require('@telus-uds/palette-allium/build/rn/icons/Close')
16
+ const PaletteIconStatusWarning = require('@telus-uds/palette-allium/build/rn/icons/StatusWarning')
17
+ const PaletteIconTimes = require('@telus-uds/palette-allium/build/rn/icons/Times')
18
+ const PaletteIconSearchBold = require('@telus-uds/palette-allium/build/rn/icons/SearchBold')
19
+ const PaletteIconQuestion = require('@telus-uds/palette-allium/build/rn/icons/Question')
20
+ const PaletteIconAdd = require('@telus-uds/palette-allium/build/rn/icons/Add')
21
+
22
+ module.exports = {
23
+ components: {
24
+ ActivityIndicator: {
25
+ appearances: {
26
+ size: {
27
+ description: 'used for full-screen spinners',
28
+ type: 'variant',
29
+ values: [ 'large' ]
30
+ }
31
+ },
32
+ rules: [ { if: { size: 'large' }, tokens: { size: 40, thickness: 4 } } ],
33
+ tokens: { color: '#2b8000', size: 20, thickness: 2 }
34
+ },
35
+ Box: {
36
+ appearances: {
37
+ background: {
38
+ description: 'Background colour of box. Transparent if not specified.',
39
+ values: [
40
+ 'light', 'lightest',
41
+ 'dark', 'darkest',
42
+ 'critical', 'danger',
43
+ 'warning', 'positive',
44
+ 'brand'
45
+ ]
46
+ }
47
+ },
48
+ rules: [
49
+ {
50
+ if: { background: 'lightest' },
51
+ tokens: { backgroundColor: '#ffffff' }
52
+ },
53
+ {
54
+ if: { background: 'light' },
55
+ tokens: { backgroundColor: '#f4f4f7' }
56
+ },
57
+ {
58
+ if: { background: 'dark' },
59
+ tokens: { backgroundColor: '#414547' }
60
+ },
61
+ {
62
+ if: { background: 'darkest' },
63
+ tokens: { backgroundColor: '#2c2e30' }
64
+ },
65
+ {
66
+ if: { background: 'critical' },
67
+ tokens: { backgroundColor: '#c12335' }
68
+ },
69
+ {
70
+ if: { background: 'danger' },
71
+ tokens: { backgroundColor: '#fff6f8' }
72
+ },
73
+ {
74
+ if: { background: 'warning' },
75
+ tokens: { backgroundColor: '#fff9ee' }
76
+ },
77
+ {
78
+ if: { background: 'positive' },
79
+ tokens: { backgroundColor: '#f4f9f2' }
80
+ },
81
+ {
82
+ if: { background: 'brand' },
83
+ tokens: { backgroundColor: '#4b286d' }
84
+ }
85
+ ],
86
+ tokens: { backgroundColor: null }
87
+ },
88
+ Button: {
89
+ appearances: {
90
+ danger: {
91
+ description: 'Indicates a user action that is destructive and will result in loss of information or cause significant monetary charges. Limit the use of the danger button whenever possible.',
92
+ type: 'variant',
93
+ values: [ true ]
94
+ },
95
+ focus: {
96
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
97
+ type: 'state',
98
+ values: [ true ]
99
+ },
100
+ hover: {
101
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
102
+ type: 'state',
103
+ values: [ true ]
104
+ },
105
+ inactive: {
106
+ description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
107
+ type: 'state',
108
+ values: [ true ]
109
+ },
110
+ inverse: {
111
+ description: 'Use inverse buttons on darker backgrounds. High and low priority buttons, and danger buttons, are available in inverse.',
112
+ type: 'variant',
113
+ values: [ true ]
114
+ },
115
+ pressed: {
116
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
117
+ type: 'state',
118
+ values: [ true ]
119
+ },
120
+ priority: {
121
+ description: 'Indicates the importance of the call-to-action. Limit the amount of high priority buttons on a page to prioritize meaningful user flows. Low priority styles are applied by default.',
122
+ type: 'variant',
123
+ values: [ 'high' ]
124
+ },
125
+ size: { type: 'variant', values: [ 'small' ] },
126
+ width: {
127
+ description: 'Available in default or full-width. Default-width expands based on content Full-width expands to width of the container.',
128
+ type: 'variant',
129
+ values: [ 'full' ]
130
+ }
131
+ },
132
+ rules: [
133
+ { if: { hover: true }, tokens: { borderWidth: 3 } },
134
+ {
135
+ if: { priority: 'high' },
136
+ tokens: {
137
+ backgroundColor: '#2b8000',
138
+ borderWidth: 0,
139
+ color: '#ffffff'
140
+ }
141
+ },
142
+ {
143
+ if: { hover: true, priority: 'high' },
144
+ tokens: { backgroundColor: '#1f5c09' }
145
+ },
146
+ {
147
+ if: { pressed: true },
148
+ tokens: {
149
+ backgroundColor: '#163e06',
150
+ borderWidth: 0,
151
+ color: '#ffffff'
152
+ }
153
+ },
154
+ {
155
+ if: { focus: true },
156
+ tokens: { outerBorderColor: '#2b8000' }
157
+ },
158
+ {
159
+ if: { focus: true, pressed: true },
160
+ tokens: { outerBorderColor: '#163e06' }
161
+ },
162
+ {
163
+ if: { inverse: true },
164
+ tokens: {
165
+ backgroundColor: null,
166
+ borderColor: '#ffffff',
167
+ color: '#ffffff'
168
+ }
169
+ },
170
+ {
171
+ if: { inverse: true, priority: 'high' },
172
+ tokens: { backgroundColor: '#ffffff', color: '#414547' }
173
+ },
174
+ {
175
+ if: { hover: true, inverse: true, priority: 'high' },
176
+ tokens: { backgroundColor: 'rgba(255, 255, 255, 0.8)' }
177
+ },
178
+ {
179
+ if: { inverse: true, pressed: true },
180
+ tokens: {
181
+ backgroundColor: 'rgba(255, 255, 255, 0.6)',
182
+ color: '#414547'
183
+ }
184
+ },
185
+ {
186
+ if: { focus: true, inverse: true },
187
+ tokens: { outerBorderColor: '#ffffff' }
188
+ },
189
+ {
190
+ if: { danger: true, priority: null },
191
+ tokens: { borderColor: '#e12339', color: '#e12339' }
192
+ },
193
+ {
194
+ if: { danger: true, inverse: true, priority: null },
195
+ tokens: { backgroundColor: '#ffffff' }
196
+ },
197
+ {
198
+ if: { danger: true, focus: true, priority: null },
199
+ tokens: { outerBorderColor: '#e12339' }
200
+ },
201
+ {
202
+ if: { danger: true, pressed: true, priority: null },
203
+ tokens: { backgroundColor: '#c12335', color: '#ffffff' }
204
+ },
205
+ {
206
+ if: { danger: true, focus: true, pressed: true, priority: null },
207
+ tokens: { outerBorderColor: '#c12335' }
208
+ },
209
+ { if: { width: 'full' }, tokens: { width: '100%' } },
210
+ {
211
+ if: { size: 'small' },
212
+ tokens: { minWidth: 0, paddingBottom: 4, paddingTop: 4 }
213
+ },
214
+ {
215
+ description: 'Buttons should not be disabled or set as inactive. Use inline (on blur) error messaging to provide feedback when the form is invalid. In exceptional instances where disabled buttons are needed, it must be clear to the user why the button is disabled and what they need to do to enable it.',
216
+ if: { inactive: true },
217
+ tokens: {
218
+ backgroundColor: '#b2b9bf',
219
+ borderWidth: 0,
220
+ color: '#ffffff'
221
+ }
222
+ },
223
+ {
224
+ if: { inactive: true, inverse: true },
225
+ tokens: {
226
+ backgroundColor: 'rgba(255, 255, 255, 0.6)',
227
+ color: '#414547'
228
+ }
229
+ }
230
+ ],
231
+ tokens: {
232
+ alignSelf: 'flex-start',
233
+ backgroundColor: '#ffffff',
234
+ borderColor: '#2b8000',
235
+ borderRadius: 32,
236
+ borderWidth: 1,
237
+ color: '#2b8000',
238
+ fontName: 'HelveticaNow',
239
+ fontSize: 16,
240
+ fontWeight: '700',
241
+ lineHeight: 1.5,
242
+ minWidth: 144,
243
+ opacity: 1,
244
+ outerBackgroundColor: 'rgba(0, 0, 0, 0)',
245
+ outerBorderColor: 'rgba(0, 0, 0, 0)',
246
+ outerBorderGap: 2,
247
+ outerBorderWidth: 2,
248
+ paddingBottom: 12,
249
+ paddingLeft: 32,
250
+ paddingRight: 32,
251
+ paddingTop: 12,
252
+ shadow: null,
253
+ textAlign: 'center',
254
+ width: null
255
+ }
256
+ },
257
+ ButtonGroup: {
258
+ appearances: {
259
+ viewport: {
260
+ description: 'The size label for the current screen viewport based on the current screen width',
261
+ type: 'state',
262
+ values: [ 'xs', 'sm', 'md', 'lg', 'xl' ]
263
+ }
264
+ },
265
+ rules: [ { if: { viewport: [ 'lg', 'xl' ] }, tokens: { space: 3 } } ],
266
+ tokens: {
267
+ alignItems: 'center',
268
+ direction: 'row',
269
+ flexGrow: 0,
270
+ justifyContent: 'flex-start',
271
+ space: 1
272
+ }
273
+ },
274
+ ButtonGroupItem: {
275
+ appearances: {
276
+ focus: {
277
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
278
+ type: 'state',
279
+ values: [ true ]
280
+ },
281
+ hover: {
282
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
283
+ type: 'state',
284
+ values: [ true ]
285
+ },
286
+ inactive: {
287
+ description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
288
+ type: 'state',
289
+ values: [ true ]
290
+ },
291
+ pressed: {
292
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
293
+ type: 'state',
294
+ values: [ true ]
295
+ },
296
+ selected: {
297
+ description: 'Applies while an interactive component is the currently selected one in a set of states or components, for example a button in a `ButtonGroup`.',
298
+ type: 'state',
299
+ values: [ true ]
300
+ }
301
+ },
302
+ rules: [
303
+ {
304
+ if: { pressed: true },
305
+ tokens: {
306
+ backgroundColor: '#676e73',
307
+ borderColor: '#676e73',
308
+ borderWidth: 0,
309
+ color: '#ffffff'
310
+ }
311
+ },
312
+ {
313
+ if: { focus: true },
314
+ tokens: {
315
+ borderColor: '#676e73',
316
+ outerBorderColor: '#676e73',
317
+ outerBorderGap: 2,
318
+ outerBorderWidth: 2
319
+ }
320
+ },
321
+ { if: { hover: true }, tokens: { borderWidth: 3 } },
322
+ {
323
+ if: { selected: true },
324
+ tokens: {
325
+ backgroundColor: '#4b286d',
326
+ borderWidth: 0,
327
+ color: '#ffffff'
328
+ }
329
+ },
330
+ {
331
+ if: { hover: true, selected: true },
332
+ tokens: { backgroundColor: '#7c53a5' }
333
+ },
334
+ {
335
+ if: { pressed: true, selected: true },
336
+ tokens: { backgroundColor: '#3f2a54' }
337
+ },
338
+ {
339
+ if: { focus: true, selected: true },
340
+ tokens: { outerBorderColor: '#4b286d' }
341
+ },
342
+ {
343
+ if: { focus: true, pressed: true, selected: true },
344
+ tokens: { outerBorderColor: '#3f2a54' }
345
+ },
346
+ {
347
+ if: { inactive: true },
348
+ tokens: {
349
+ backgroundColor: '#b2b9bf',
350
+ borderWidth: 0,
351
+ color: '#ffffff'
352
+ }
353
+ }
354
+ ],
355
+ tokens: {
356
+ alignSelf: 'flex-start',
357
+ backgroundColor: '#ffffff',
358
+ borderColor: '#b2b9bf',
359
+ borderRadius: 32,
360
+ borderWidth: 1,
361
+ color: '#676e73',
362
+ fontName: 'HelveticaNow',
363
+ fontSize: 14,
364
+ fontWeight: '700',
365
+ lineHeight: 1.5,
366
+ minWidth: 0,
367
+ opacity: 1,
368
+ outerBackgroundColor: 'rgba(0, 0, 0, 0)',
369
+ outerBorderColor: 'rgba(0, 0, 0, 0)',
370
+ outerBorderGap: 2,
371
+ outerBorderWidth: 2,
372
+ paddingBottom: 8,
373
+ paddingLeft: 16,
374
+ paddingRight: 16,
375
+ paddingTop: 8,
376
+ shadow: null,
377
+ textAlign: 'center',
378
+ width: null
379
+ }
380
+ },
381
+ Card: {
382
+ appearances: {
383
+ background: { type: 'variant', values: [ 'alternative' ] },
384
+ padding: {
385
+ type: 'variant',
386
+ values: [ 'narrow', 'intermediate', 'compact', 'custom' ]
387
+ },
388
+ viewport: {
389
+ description: 'The size label for the current screen viewport based on the current screen width',
390
+ type: 'state',
391
+ values: [ 'xs', 'sm', 'md', 'lg', 'xl' ]
392
+ }
393
+ },
394
+ rules: [
395
+ {
396
+ if: { background: 'alternative' },
397
+ tokens: { backgroundColor: '#f4f4f7' }
398
+ },
399
+ {
400
+ if: { viewport: [ 'md', 'lg', 'xl' ] },
401
+ tokens: {
402
+ paddingBottom: 48,
403
+ paddingLeft: 32,
404
+ paddingRight: 32,
405
+ paddingTop: 48
406
+ }
407
+ },
408
+ {
409
+ if: { padding: 'narrow' },
410
+ tokens: {
411
+ paddingBottom: 24,
412
+ paddingLeft: 16,
413
+ paddingRight: 16,
414
+ paddingTop: 24
415
+ }
416
+ },
417
+ {
418
+ if: { padding: 'narrow', viewport: [ 'md', 'lg', 'xl' ] },
419
+ tokens: {
420
+ paddingBottom: 32,
421
+ paddingLeft: 16,
422
+ paddingRight: 16,
423
+ paddingTop: 32
424
+ }
425
+ },
426
+ {
427
+ if: { padding: 'intermediate' },
428
+ tokens: {
429
+ paddingBottom: 24,
430
+ paddingLeft: 24,
431
+ paddingRight: 24,
432
+ paddingTop: 24
433
+ }
434
+ },
435
+ {
436
+ if: { padding: 'intermediate', viewport: [ 'md', 'lg', 'xl' ] },
437
+ tokens: {
438
+ paddingBottom: 32,
439
+ paddingLeft: 32,
440
+ paddingRight: 32,
441
+ paddingTop: 32
442
+ }
443
+ },
444
+ {
445
+ if: { padding: 'compact' },
446
+ tokens: {
447
+ paddingBottom: 16,
448
+ paddingLeft: 16,
449
+ paddingRight: 16,
450
+ paddingTop: 16
451
+ }
452
+ },
453
+ {
454
+ if: { padding: 'custom' },
455
+ tokens: {
456
+ paddingBottom: 0,
457
+ paddingLeft: 0,
458
+ paddingRight: 0,
459
+ paddingTop: 0
460
+ }
461
+ }
462
+ ],
463
+ tokens: {
464
+ backgroundColor: '#ffffff',
465
+ borderColor: '#e3e6e8',
466
+ borderRadius: 6,
467
+ borderWidth: 1,
468
+ flex: 1,
469
+ minWidth: null,
470
+ paddingBottom: 32,
471
+ paddingLeft: 24,
472
+ paddingRight: 24,
473
+ paddingTop: 32,
474
+ shadow: null
475
+ }
476
+ },
477
+ Checkbox: {
478
+ appearances: {
479
+ checked: {
480
+ description: 'Corresponds to a selected state for a checkbox or radio',
481
+ type: 'state',
482
+ values: [ true ]
483
+ },
484
+ error: { type: 'state', values: [ true ] },
485
+ focus: {
486
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
487
+ type: 'state',
488
+ values: [ true ]
489
+ },
490
+ hover: {
491
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
492
+ type: 'state',
493
+ values: [ true ]
494
+ },
495
+ inactive: {
496
+ description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
497
+ type: 'state',
498
+ values: [ true ]
499
+ }
500
+ },
501
+ rules: [
502
+ {
503
+ if: { error: true },
504
+ tokens: { inputBorderColor: '#e12339' }
505
+ },
506
+ {
507
+ if: { focus: true },
508
+ tokens: { inputBorderColor: '#7c53a5', inputBorderWidth: 3 }
509
+ },
510
+ {
511
+ if: { inactive: true },
512
+ tokens: {
513
+ iconBackgroundColor: '#e3e6e8',
514
+ iconColor: '#676e73',
515
+ inputBackgroundColor: '#e3e6e8',
516
+ inputBorderColor: 'rgba(0, 0, 0, 0)',
517
+ labelColor: '#676e73'
518
+ }
519
+ }
520
+ ],
521
+ tokens: {
522
+ containerBackgroundColor: 'rgba(0, 0, 0, 0)',
523
+ feedbackMarginBottom: 0,
524
+ feedbackMarginTop: 2,
525
+ feedbackPosition: 'bottom',
526
+ icon: PaletteIconCheckmark,
527
+ iconBackgroundColor: '#7c53a5',
528
+ iconColor: '#ffffff',
529
+ iconSize: 16,
530
+ inputBackgroundColor: '#ffffff',
531
+ inputBorderColor: '#676e73',
532
+ inputBorderRadius: 4,
533
+ inputBorderWidth: 1,
534
+ inputHeight: 20,
535
+ inputOutlineColor: null,
536
+ inputOutlineWidth: 0,
537
+ inputShadow: null,
538
+ inputWidth: 20,
539
+ labelColor: '#414547',
540
+ labelFontName: 'HelveticaNow',
541
+ labelFontSize: 16,
542
+ labelFontWeight: '400',
543
+ labelLineHeight: 1.5,
544
+ labelMarginLeft: 10
545
+ }
546
+ },
547
+ CheckboxGroup: { appearances: {}, rules: [], tokens: { fieldSpace: 2, space: 2 } },
548
+ ChevronLink: {
549
+ appearances: {
550
+ hover: {
551
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
552
+ type: 'state',
553
+ values: [ true ]
554
+ }
555
+ },
556
+ rules: [ { if: { hover: true }, tokens: { iconDisplace: 4 } } ],
557
+ tokens: {
558
+ iconDisplace: 0,
559
+ iconSpace: 0,
560
+ leftIcon: PaletteIconArrowLeft,
561
+ rightIcon: PaletteIconArrowRight
562
+ }
563
+ },
564
+ Divider: {
565
+ appearances: {
566
+ decorative: {
567
+ description: 'Use a decorative divider to highlight an element. Non-decorative dividers are for clearly identifying separation of content.',
568
+ type: 'variant',
569
+ values: [ true ]
570
+ },
571
+ inverse: { type: 'variant', values: [ true ] },
572
+ weight: { type: 'variant', values: [ 'thick' ] }
573
+ },
574
+ rules: [
575
+ { if: { weight: 'thick' }, tokens: { width: 2 } },
576
+ { if: { decorative: true }, tokens: { color: '#b2b9bf' } },
577
+ { if: { inverse: true }, tokens: { color: '#ffffff' } }
578
+ ],
579
+ tokens: { color: '#676e73', width: 1 }
580
+ },
581
+ ExpandCollapse: {
582
+ appearances: {},
583
+ rules: [],
584
+ tokens: { borderColor: '#b2b9bf', borderStyle: 'solid', borderWidth: 1 }
585
+ },
586
+ ExpandCollapseControl: {
587
+ appearances: {
588
+ expanded: {
589
+ description: 'Applies when an ExpandCollapse panel is open and the content inside is visible',
590
+ type: 'state',
591
+ values: [ true ]
592
+ }
593
+ },
594
+ rules: [
595
+ {
596
+ if: { expanded: true },
597
+ tokens: { icon: PaletteIconCaretUp }
598
+ }
599
+ ],
600
+ tokens: {
601
+ backgroundColor: 'rgba(0, 0, 0, 0)',
602
+ borderColor: 'rgba(0, 0, 0, 0)',
603
+ borderWidth: 0,
604
+ icon: PaletteIconCaretDown,
605
+ iconColor: '#2b8000',
606
+ iconGap: 8,
607
+ iconPosition: 'left',
608
+ iconSize: 24,
609
+ justifyContent: 'flex-start',
610
+ paddingBottom: 16,
611
+ paddingLeft: 8,
612
+ paddingRight: 16,
613
+ paddingTop: 16,
614
+ verticalAlign: 'top'
615
+ }
616
+ },
617
+ ExpandCollapsePanel: {
618
+ appearances: {},
619
+ rules: [],
620
+ tokens: {
621
+ collapseDuration: 250,
622
+ contentPaddingBottom: 16,
623
+ contentPaddingLeft: 40,
624
+ contentPaddingRight: 16,
625
+ contentPaddingTop: 0,
626
+ expandDuration: 300
627
+ }
628
+ },
629
+ Feedback: {
630
+ appearances: {
631
+ icon: { type: 'variant', values: [ true ] },
632
+ validation: {
633
+ description: 'Validation states for form inputs',
634
+ type: 'state',
635
+ values: [ 'error', 'success' ]
636
+ }
637
+ },
638
+ rules: [
639
+ {
640
+ if: { validation: 'success' },
641
+ tokens: {
642
+ backgroundColor: '#f4f9f2',
643
+ borderColor: '#f4f9f2',
644
+ color: '#163e06'
645
+ }
646
+ },
647
+ {
648
+ if: { validation: 'error' },
649
+ tokens: {
650
+ backgroundColor: '#fff6f8',
651
+ borderColor: '#fff6f8',
652
+ color: '#e12339'
653
+ }
654
+ },
655
+ {
656
+ if: { icon: true, validation: 'success' },
657
+ tokens: { icon: PaletteIconStatusSuccess, iconColor: '#2b8000' }
658
+ },
659
+ {
660
+ if: { icon: true, validation: 'error' },
661
+ tokens: { icon: PaletteIconStatusError, iconColor: '#e12339' }
662
+ }
663
+ ],
664
+ tokens: {
665
+ backgroundColor: '#f4f4f7',
666
+ borderColor: '#e3e6e8',
667
+ borderRadius: 4,
668
+ borderWidth: 1,
669
+ color: '#2c2e30',
670
+ contentFontSize: 14,
671
+ fontName: 'HelveticaNow',
672
+ fontWeight: '400',
673
+ icon: null,
674
+ iconColor: 'rgba(0, 0, 0, 0)',
675
+ iconGap: 8,
676
+ iconSize: 24,
677
+ lineHeight: 1.5,
678
+ paddingBottom: 12,
679
+ paddingLeft: 16,
680
+ paddingRight: 16,
681
+ paddingTop: 12,
682
+ space: 2,
683
+ titleFontSize: 16
684
+ }
685
+ },
686
+ Icon: {
687
+ appearances: {
688
+ rank: { type: 'variant', values: [ 'primary' ] },
689
+ size: { type: 'variant', values: [ 'small' ] }
690
+ },
691
+ rules: [
692
+ { if: { size: 'small' }, tokens: { size: 20 } },
693
+ { if: { rank: 'primary' }, tokens: { color: '#4b286d' } }
694
+ ],
695
+ tokens: {
696
+ color: '#414547',
697
+ scale: 1,
698
+ size: 24,
699
+ translateX: 0,
700
+ translateY: 0
701
+ }
702
+ },
703
+ IconButton: {
704
+ appearances: {
705
+ focus: {
706
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
707
+ type: 'state',
708
+ values: [ true ]
709
+ },
710
+ hover: {
711
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
712
+ type: 'state',
713
+ values: [ true ]
714
+ },
715
+ inverse: {
716
+ description: 'For use on dark backgrounds',
717
+ type: 'variant',
718
+ values: [ true ]
719
+ },
720
+ pressed: {
721
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
722
+ type: 'state',
723
+ values: [ true ]
724
+ },
725
+ raised: {
726
+ description: 'Uses shadow and background colour to appear raised above the page',
727
+ type: 'variant',
728
+ values: [ true ]
729
+ },
730
+ size: { type: 'variant', values: [ 'small', 'large' ] }
731
+ },
732
+ rules: [
733
+ {
734
+ if: { inverse: true },
735
+ tokens: { borderColor: '#ffffff', iconColor: '#ffffff' }
736
+ },
737
+ {
738
+ if: { hover: true },
739
+ tokens: {
740
+ borderColor: '#414547',
741
+ iconColor: '#414547',
742
+ iconScale: 1.1
743
+ }
744
+ },
745
+ {
746
+ if: { hover: true, inverse: true },
747
+ tokens: { borderColor: '#ffffff', iconColor: '#ffffff' }
748
+ },
749
+ {
750
+ if: { focus: true },
751
+ tokens: {
752
+ outerBorderColor: '#676e73',
753
+ outerBorderGap: 4,
754
+ outerBorderWidth: 1
755
+ }
756
+ },
757
+ {
758
+ if: { focus: true, inverse: true },
759
+ tokens: {
760
+ backgroundColor: 'rgba(255, 255, 255, 0.6)',
761
+ borderColor: '#414547',
762
+ iconColor: '#414547',
763
+ outerBorderWidth: 0
764
+ }
765
+ },
766
+ {
767
+ if: { pressed: true },
768
+ tokens: {
769
+ backgroundColor: '#676e73',
770
+ borderColor: '#ffffff',
771
+ iconColor: '#ffffff',
772
+ outerBorderGap: 4
773
+ }
774
+ },
775
+ {
776
+ if: { inverse: true, pressed: true },
777
+ tokens: {
778
+ backgroundColor: 'rgba(255, 255, 255, 0.4)',
779
+ borderColor: '#676e73',
780
+ iconColor: '#676e73'
781
+ }
782
+ },
783
+ {
784
+ if: { size: 'large' },
785
+ tokens: { iconSize: 24, padding: 12 }
786
+ },
787
+ { if: { size: 'small' }, tokens: { padding: 4 } },
788
+ {
789
+ description: 'Raised IconButtons follow different design patterns to other variants',
790
+ if: { raised: true },
791
+ tokens: {
792
+ backgroundColor: '#ffffff',
793
+ borderColor: '#b2b9bf',
794
+ borderWidth: 1,
795
+ outerBorderColor: 'transparent',
796
+ outerBorderGap: 0,
797
+ outerBorderWidth: 0,
798
+ padding: 12,
799
+ shadow: {
800
+ blur: 2,
801
+ color: 'rgba(0, 0, 0, 0.1)',
802
+ inset: false,
803
+ offsetX: 0,
804
+ offsetY: 2,
805
+ spread: 0
806
+ }
807
+ }
808
+ },
809
+ {
810
+ if: { raised: true, size: 'large' },
811
+ tokens: { padding: 16 }
812
+ },
813
+ { if: { raised: true, size: 'small' }, tokens: { padding: 8 } },
814
+ {
815
+ if: { pressed: true, raised: true },
816
+ tokens: { backgroundColor: '#676e73', borderWidth: 0 }
817
+ },
818
+ {
819
+ if: { focus: true, pressed: true, raised: true },
820
+ tokens: { backgroundColor: '#4b286d', borderWidth: 0 }
821
+ },
822
+ {
823
+ if: { hover: true, raised: true },
824
+ tokens: { borderColor: '#b2b9bf', borderWidth: 3 }
825
+ },
826
+ {
827
+ if: { focus: true, raised: true },
828
+ tokens: { borderColor: '#4b286d', borderWidth: 3 }
829
+ }
830
+ ],
831
+ tokens: {
832
+ backgroundColor: 'transparent',
833
+ borderColor: '#676e73',
834
+ borderRadius: 99999999999999,
835
+ borderWidth: 1,
836
+ iconColor: '#676e73',
837
+ iconScale: 1,
838
+ iconSize: 16,
839
+ iconTranslateX: 0,
840
+ iconTranslateY: 0,
841
+ outerBorderColor: 'transparent',
842
+ outerBorderGap: 0,
843
+ outerBorderWidth: 0,
844
+ padding: 8,
845
+ shadow: null
846
+ }
847
+ },
848
+ InputLabel: {
849
+ appearances: {},
850
+ rules: [],
851
+ tokens: {
852
+ color: '#414547',
853
+ fontName: 'HelveticaNow',
854
+ fontSize: 16,
855
+ fontWeight: '700',
856
+ gap: 8,
857
+ hintColor: '#414547',
858
+ hintFontName: 'HelveticaNow',
859
+ hintFontSize: 14,
860
+ hintFontWeight: '400',
861
+ hintLineHeight: 1.4,
862
+ lineHeight: 1.5
863
+ }
864
+ },
865
+ InputSupports: { appearances: {}, rules: [], tokens: { space: 1 } },
866
+ Link: {
867
+ appearances: {
868
+ alternative: {
869
+ description: 'Replaces the default green colour with a more subtle grey.',
870
+ type: 'variant',
871
+ values: [ true ]
872
+ },
873
+ focus: {
874
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
875
+ type: 'state',
876
+ values: [ true ]
877
+ },
878
+ hover: {
879
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
880
+ type: 'state',
881
+ values: [ true ]
882
+ },
883
+ iconPosition: {
884
+ description: 'Theme styles to be applied to icon links depending on where the icon is in relation to the link text',
885
+ type: 'state',
886
+ values: [ 'left', 'right' ]
887
+ },
888
+ inverse: {
889
+ description: 'Styles the link white for use on dark backgrounds.',
890
+ type: 'variant',
891
+ values: [ true ]
892
+ },
893
+ light: {
894
+ description: 'A lighter grey variant, used to lower the emphasis on a given Link (e.g. in Breadcrumbs)',
895
+ type: 'variant',
896
+ values: [ true ]
897
+ },
898
+ pressed: {
899
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
900
+ type: 'state',
901
+ values: [ true ]
902
+ },
903
+ size: {
904
+ description: 'Text sizes for block links; similar but not always identical to Typography sizes.',
905
+ type: 'variant',
906
+ values: [ 'large', 'small', 'micro' ]
907
+ }
908
+ },
909
+ rules: [
910
+ { if: { iconPosition: 'left' }, tokens: { iconSpace: 2 } },
911
+ {
912
+ if: { focus: true },
913
+ tokens: { outerBorderColor: '#2b8000', outerBorderOutline: 'none' }
914
+ },
915
+ {
916
+ if: { hover: true },
917
+ tokens: { color: '#1f5c09', textLine: 'none' }
918
+ },
919
+ {
920
+ if: { pressed: true },
921
+ tokens: { color: '#163e06', textLine: 'none' }
922
+ },
923
+ {
924
+ if: { focus: true, pressed: true },
925
+ tokens: { outerBorderColor: '#163e06' }
926
+ },
927
+ {
928
+ if: { size: 'large' },
929
+ tokens: { blockFontSize: 20, blockLineHeight: 1.6, iconSize: 24 }
930
+ },
931
+ {
932
+ if: { size: 'small' },
933
+ tokens: {
934
+ blockFontSize: 14,
935
+ blockLineHeight: 1.42857142857,
936
+ iconSize: 20
937
+ }
938
+ },
939
+ {
940
+ if: { size: 'micro' },
941
+ tokens: {
942
+ blockFontName: 'HelveticaNow',
943
+ blockFontSize: 12,
944
+ blockFontWeight: '500',
945
+ blockLineHeight: 1.33333333333,
946
+ iconSize: 16
947
+ }
948
+ },
949
+ { if: { alternative: true }, tokens: { color: '#2c2e30' } },
950
+ {
951
+ if: { alternative: true, focus: true },
952
+ tokens: { color: '#414547', outerBorderColor: '#414547' }
953
+ },
954
+ {
955
+ if: { alternative: true, hover: true },
956
+ tokens: { color: '#2c2e30' }
957
+ },
958
+ {
959
+ if: { alternative: true, pressed: true },
960
+ tokens: { color: '#2c2e30' }
961
+ },
962
+ { if: { inverse: true }, tokens: { color: '#ffffff' } },
963
+ {
964
+ if: { hover: true, inverse: true },
965
+ tokens: { color: '#f4f4f7' }
966
+ },
967
+ {
968
+ if: { focus: true, inverse: true },
969
+ tokens: { outerBorderColor: '#ffffff', outerBorderOutline: 'none' }
970
+ },
971
+ {
972
+ if: { inverse: true, pressed: true },
973
+ tokens: { color: '#e3e6e8' }
974
+ },
975
+ {
976
+ if: { focus: true, inverse: true, pressed: true },
977
+ tokens: { color: '#e3e6e8', outerBorderColor: '#e3e6e8' }
978
+ },
979
+ { if: { light: true }, tokens: { color: '#676e73' } },
980
+ {
981
+ if: { focus: true, light: true },
982
+ tokens: { color: '#676e73', outerBorderColor: '#676e73' }
983
+ },
984
+ {
985
+ if: { hover: true, light: true },
986
+ tokens: { color: '#414547', textLine: 'none' }
987
+ }
988
+ ],
989
+ tokens: {
990
+ alignSelf: 'flex-start',
991
+ blockFontName: 'HelveticaNow',
992
+ blockFontSize: 16,
993
+ blockFontWeight: '400',
994
+ blockLineHeight: 1.5,
995
+ borderRadius: 4,
996
+ color: '#2b8000',
997
+ icon: null,
998
+ iconSize: 24,
999
+ iconSpace: 1,
1000
+ iconTranslateX: 0,
1001
+ iconTranslateY: 0,
1002
+ outerBorderColor: 'rgba(0, 0, 0, 0)',
1003
+ outerBorderGap: 2,
1004
+ outerBorderOutline: 'none',
1005
+ outerBorderWidth: 2,
1006
+ textLine: 'underline',
1007
+ textLineStyle: 'solid'
1008
+ }
1009
+ },
1010
+ List: {
1011
+ appearances: {
1012
+ compact: {
1013
+ description: 'When true it will reduce the line height of the list item.',
1014
+ type: 'variant',
1015
+ values: [ true ]
1016
+ },
1017
+ size: {
1018
+ description: 'Indicates list item text size.',
1019
+ type: 'variant',
1020
+ values: [ 'large', 'small' ]
1021
+ }
1022
+ },
1023
+ rules: [
1024
+ {
1025
+ if: { size: 'large' },
1026
+ tokens: { itemFontSize: 20, itemLineHeight: 1.6, listGutter: 12 }
1027
+ },
1028
+ {
1029
+ if: { size: 'small' },
1030
+ tokens: {
1031
+ itemFontSize: 14,
1032
+ itemLineHeight: 1.42857142857,
1033
+ listGutter: 12
1034
+ }
1035
+ },
1036
+ { if: { compact: true }, tokens: { itemLineHeight: 1.25 } },
1037
+ {
1038
+ if: { compact: true, size: 'small' },
1039
+ tokens: { itemLineHeight: 1.14285714286 }
1040
+ },
1041
+ {
1042
+ if: { compact: true, size: 'large' },
1043
+ tokens: { itemLineHeight: 1.2 }
1044
+ }
1045
+ ],
1046
+ tokens: {
1047
+ dividerColor: '#b2b9bf',
1048
+ dividerSize: 1,
1049
+ interItemMargin: 8,
1050
+ interItemMarginWithDivider: 16,
1051
+ itemBulletColor: '#4b286d',
1052
+ itemBulletContainerAlign: 'center',
1053
+ itemBulletContainerWidth: 16,
1054
+ itemBulletHeight: 4,
1055
+ itemBulletWidth: 4,
1056
+ itemFontName: 'HelveticaNow',
1057
+ itemFontSize: 16,
1058
+ itemFontWeight: '400',
1059
+ itemIconColor: '#4b286d',
1060
+ itemIconSize: 16,
1061
+ itemLineHeight: 1.5,
1062
+ listGutter: 12
1063
+ }
1064
+ },
1065
+ Modal: {
1066
+ appearances: {
1067
+ maxWidth: {
1068
+ description: 'Whether a modal should expand responsively to the maximum of 8 layout columns width',
1069
+ type: 'state',
1070
+ values: [ true ]
1071
+ },
1072
+ viewport: {
1073
+ description: 'The size label for the current screen viewport based on the current screen width',
1074
+ type: 'state',
1075
+ values: [ 'xs', 'sm', 'md', 'lg', 'xl' ]
1076
+ }
1077
+ },
1078
+ rules: [
1079
+ {
1080
+ if: { viewport: [ 'xs', 'sm' ] },
1081
+ tokens: { height: '100%' }
1082
+ },
1083
+ {
1084
+ if: { viewport: [ 'md', 'lg', 'xl' ] },
1085
+ tokens: {
1086
+ containerPaddingBottom: 32,
1087
+ containerPaddingTop: 32,
1088
+ maxWidth: 576
1089
+ }
1090
+ },
1091
+ {
1092
+ if: { maxWidth: true, viewport: [ 'md', 'lg', 'xl' ] },
1093
+ tokens: {
1094
+ containerPaddingLeft: 16,
1095
+ containerPaddingRight: 16,
1096
+ maxWidth: '66.67%'
1097
+ }
1098
+ }
1099
+ ],
1100
+ tokens: {
1101
+ backdropColor: 'rgba(244, 244, 247, 0.97)',
1102
+ backdropOpacity: 1,
1103
+ backgroundColor: '#ffffff',
1104
+ borderRadius: 4,
1105
+ closeIcon: PaletteIconClose,
1106
+ closeIconColor: '#414547',
1107
+ closeIconSize: 24,
1108
+ containerPaddingBottom: 0,
1109
+ containerPaddingLeft: 0,
1110
+ containerPaddingRight: 0,
1111
+ containerPaddingTop: 0,
1112
+ height: null,
1113
+ maxWidth: '100%',
1114
+ paddingBottom: 24,
1115
+ paddingLeft: 24,
1116
+ paddingRight: 24,
1117
+ paddingTop: 24,
1118
+ shadow: {
1119
+ blur: 8,
1120
+ color: 'rgba(0, 0, 0, 0.1)',
1121
+ inset: false,
1122
+ offsetX: 0,
1123
+ offsetY: 4,
1124
+ spread: 0
1125
+ }
1126
+ }
1127
+ },
1128
+ Notification: {
1129
+ appearances: {
1130
+ style: { type: 'state', values: [ 'success', 'warning', 'error' ] },
1131
+ system: { type: 'state', values: [ true ] }
1132
+ },
1133
+ rules: [
1134
+ {
1135
+ if: { system: true },
1136
+ tokens: {
1137
+ borderLeftWidth: 0,
1138
+ borderRadius: 0,
1139
+ borderRightWidth: 0,
1140
+ borderTopWidth: 0,
1141
+ iconGap: 12,
1142
+ paddingBottom: 16,
1143
+ paddingLeft: 16,
1144
+ paddingRight: 16,
1145
+ paddingTop: 16
1146
+ }
1147
+ },
1148
+ {
1149
+ if: { style: 'success' },
1150
+ tokens: {
1151
+ backgroundColor: '#f4f9f2',
1152
+ borderColor: '#2b8000',
1153
+ icon: PaletteIconStatusSuccess,
1154
+ iconColor: '#2b8000'
1155
+ }
1156
+ },
1157
+ {
1158
+ if: { style: 'warning' },
1159
+ tokens: {
1160
+ backgroundColor: '#fff9ee',
1161
+ borderColor: '#b4872c',
1162
+ dismissIcon: null,
1163
+ icon: PaletteIconStatusWarning,
1164
+ iconColor: '#b4872c'
1165
+ }
1166
+ },
1167
+ {
1168
+ if: { style: 'error' },
1169
+ tokens: {
1170
+ backgroundColor: '#fff6f8',
1171
+ borderColor: '#e12339',
1172
+ dismissIcon: null,
1173
+ icon: PaletteIconStatusError,
1174
+ iconColor: '#e12339'
1175
+ }
1176
+ }
1177
+ ],
1178
+ tokens: {
1179
+ backgroundColor: '#f4f4f7',
1180
+ borderBottomWidth: 1,
1181
+ borderColor: '#676e73',
1182
+ borderLeftWidth: 1,
1183
+ borderRadius: 6,
1184
+ borderRightWidth: 1,
1185
+ borderTopWidth: 1,
1186
+ color: '#414547',
1187
+ dismissButtonGap: 16,
1188
+ dismissIcon: PaletteIconClose,
1189
+ dismissIconColor: '#414547',
1190
+ dismissIconSize: 24,
1191
+ fontName: 'HelveticaNow',
1192
+ fontSize: 16,
1193
+ fontWeight: '400',
1194
+ icon: null,
1195
+ iconColor: null,
1196
+ iconGap: 16,
1197
+ iconSize: 24,
1198
+ lineHeight: 1.5,
1199
+ paddingBottom: 12,
1200
+ paddingLeft: 12,
1201
+ paddingRight: 12,
1202
+ paddingTop: 12
1203
+ }
1204
+ },
1205
+ Pagination: {
1206
+ appearances: {
1207
+ viewport: {
1208
+ description: 'The size label for the current screen viewport based on the current screen width',
1209
+ type: 'state',
1210
+ values: [ 'xs', 'sm', 'md', 'lg', 'xl' ]
1211
+ }
1212
+ },
1213
+ rules: [
1214
+ {
1215
+ if: { viewport: [ 'md', 'lg', 'xl' ] },
1216
+ tokens: { truncateAbove: 6 }
1217
+ }
1218
+ ],
1219
+ tokens: {
1220
+ color: '#676e73',
1221
+ fontName: 'HelveticaNow',
1222
+ fontSize: 16,
1223
+ fontWeight: '400',
1224
+ gap: 2,
1225
+ lineHeight: 1.5,
1226
+ truncateAbove: 4
1227
+ }
1228
+ },
1229
+ PaginationPageButton: {
1230
+ appearances: {
1231
+ focus: {
1232
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1233
+ type: 'state',
1234
+ values: [ true ]
1235
+ },
1236
+ hover: {
1237
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1238
+ type: 'state',
1239
+ values: [ true ]
1240
+ },
1241
+ pressed: {
1242
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
1243
+ type: 'state',
1244
+ values: [ true ]
1245
+ },
1246
+ selected: {
1247
+ description: 'Applies while an interactive component is the currently selected one in a set of states or components, for example a button in a `ButtonGroup`.',
1248
+ type: 'state',
1249
+ values: [ true ]
1250
+ }
1251
+ },
1252
+ rules: [
1253
+ {
1254
+ if: { hover: true },
1255
+ tokens: { borderColor: '#676e73', textLine: 'none' }
1256
+ },
1257
+ {
1258
+ if: { focus: true },
1259
+ tokens: { borderColor: '#676e73', borderWidth: 3 }
1260
+ },
1261
+ {
1262
+ if: { selected: true },
1263
+ tokens: {
1264
+ backgroundColor: '#676e73',
1265
+ color: '#ffffff',
1266
+ textLine: 'none'
1267
+ }
1268
+ },
1269
+ {
1270
+ if: { pressed: true },
1271
+ tokens: { backgroundColor: '#676e73', color: '#ffffff' }
1272
+ }
1273
+ ],
1274
+ tokens: {
1275
+ backgroundColor: 'rgba(0, 0, 0, 0)',
1276
+ borderColor: 'rgba(0, 0, 0, 0)',
1277
+ borderRadius: 32,
1278
+ borderWidth: 1,
1279
+ color: '#676e73',
1280
+ fontName: 'HelveticaNow',
1281
+ fontSize: 16,
1282
+ fontWeight: '400',
1283
+ lineHeight: 1.5,
1284
+ outerBorderColor: 'rgba(0, 0, 0, 0)',
1285
+ outerBorderGap: 4,
1286
+ outerBorderWidth: 4,
1287
+ paddingBottom: 4,
1288
+ paddingLeft: 8,
1289
+ paddingRight: 8,
1290
+ paddingTop: 4,
1291
+ textAlign: 'center',
1292
+ textLine: 'underline',
1293
+ width: 32
1294
+ }
1295
+ },
1296
+ PaginationSideButton: {
1297
+ appearances: {
1298
+ direction: {
1299
+ description: "Determines which way does the button navigate in Pagination's context",
1300
+ type: 'state',
1301
+ values: [ 'previous', 'next' ]
1302
+ },
1303
+ focus: {
1304
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1305
+ type: 'state',
1306
+ values: [ true ]
1307
+ },
1308
+ hover: {
1309
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1310
+ type: 'state',
1311
+ values: [ true ]
1312
+ },
1313
+ pressed: {
1314
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
1315
+ type: 'state',
1316
+ values: [ true ]
1317
+ },
1318
+ selected: {
1319
+ description: 'Applies while an interactive component is the currently selected one in a set of states or components, for example a button in a `ButtonGroup`.',
1320
+ type: 'state',
1321
+ values: [ true ]
1322
+ },
1323
+ viewport: {
1324
+ description: 'The size label for the current screen viewport based on the current screen width',
1325
+ type: 'state',
1326
+ values: [ 'xs', 'sm', 'md', 'lg', 'xl' ]
1327
+ }
1328
+ },
1329
+ rules: [
1330
+ {
1331
+ if: { viewport: [ 'xs', 'sm' ] },
1332
+ tokens: {
1333
+ borderRadius: 32,
1334
+ paddingBottom: 4,
1335
+ paddingTop: 4,
1336
+ width: 32
1337
+ }
1338
+ },
1339
+ {
1340
+ if: { hover: true },
1341
+ tokens: { borderColor: '#676e73', iconDisplace: 4, textLine: 'none' }
1342
+ },
1343
+ {
1344
+ if: { focus: true },
1345
+ tokens: { borderColor: '#676e73', borderWidth: 3 }
1346
+ },
1347
+ {
1348
+ if: { selected: true },
1349
+ tokens: {
1350
+ backgroundColor: '#676e73',
1351
+ color: '#ffffff',
1352
+ textLine: 'none'
1353
+ }
1354
+ },
1355
+ {
1356
+ if: { pressed: true },
1357
+ tokens: { backgroundColor: '#676e73', color: '#ffffff' }
1358
+ },
1359
+ {
1360
+ if: { direction: 'previous' },
1361
+ tokens: { icon: PaletteIconArrowLeft }
1362
+ },
1363
+ {
1364
+ if: { direction: 'next' },
1365
+ tokens: { icon: PaletteIconArrowRight }
1366
+ }
1367
+ ],
1368
+ tokens: {
1369
+ backgroundColor: 'rgba(0, 0, 0, 0)',
1370
+ borderColor: 'rgba(0, 0, 0, 0)',
1371
+ borderRadius: 4,
1372
+ borderWidth: 1,
1373
+ color: '#676e73',
1374
+ fontName: 'HelveticaNow',
1375
+ fontSize: 16,
1376
+ fontWeight: '400',
1377
+ icon: null,
1378
+ iconDisplace: 0,
1379
+ iconSize: 24,
1380
+ lineHeight: 1.5,
1381
+ outerBorderColor: 'rgba(0, 0, 0, 0)',
1382
+ paddingBottom: 12,
1383
+ paddingLeft: 8,
1384
+ paddingRight: 8,
1385
+ paddingTop: 12,
1386
+ textAlign: 'center',
1387
+ textLine: 'underline',
1388
+ width: null
1389
+ }
1390
+ },
1391
+ Progress: {
1392
+ appearances: { size: { type: 'variant', values: [ 'mini' ] } },
1393
+ rules: [ { if: { size: 'mini' }, tokens: { height: 8 } } ],
1394
+ tokens: {
1395
+ backgroundColor: '#f4f4f7',
1396
+ borderColor: '#b2b9bf',
1397
+ borderRadius: 12,
1398
+ borderWidth: 1,
1399
+ height: 16
1400
+ }
1401
+ },
1402
+ ProgressBar: {
1403
+ appearances: {
1404
+ inactive: {
1405
+ description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
1406
+ type: 'state',
1407
+ values: [ true ]
1408
+ },
1409
+ negative: { type: 'variant', values: [ true ] }
1410
+ },
1411
+ rules: [
1412
+ {
1413
+ if: { inactive: true },
1414
+ tokens: {
1415
+ backgroundColor: '#b2b9bf',
1416
+ gradient: null,
1417
+ outlineColor: '#2c2e30'
1418
+ }
1419
+ },
1420
+ {
1421
+ if: { negative: true },
1422
+ tokens: {
1423
+ backgroundColor: '#c12335',
1424
+ gradient: null,
1425
+ outlineColor: '#c12335'
1426
+ }
1427
+ }
1428
+ ],
1429
+ tokens: {
1430
+ backgroundColor: '#2b8000',
1431
+ borderRadius: 12,
1432
+ gradient: {
1433
+ angle: 135,
1434
+ stops: [
1435
+ { color: '#00784a', stop: 0 },
1436
+ { color: '#66cc00', stop: 1 }
1437
+ ],
1438
+ type: 'linear'
1439
+ },
1440
+ outlineColor: '#2b8000',
1441
+ outlineWidth: 1
1442
+ }
1443
+ },
1444
+ Radio: {
1445
+ appearances: {
1446
+ checked: {
1447
+ description: 'Corresponds to a selected state for a checkbox or radio',
1448
+ type: 'state',
1449
+ values: [ true ]
1450
+ },
1451
+ error: { type: 'state', values: [ true ] },
1452
+ focus: {
1453
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1454
+ type: 'state',
1455
+ values: [ true ]
1456
+ },
1457
+ hover: {
1458
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1459
+ type: 'state',
1460
+ values: [ true ]
1461
+ },
1462
+ inactive: {
1463
+ description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
1464
+ type: 'state',
1465
+ values: [ true ]
1466
+ }
1467
+ },
1468
+ rules: [
1469
+ {
1470
+ if: { error: true },
1471
+ tokens: { inputBorderColor: '#e12339' }
1472
+ },
1473
+ {
1474
+ if: { hover: true },
1475
+ tokens: { outerBorderColor: '#e3e6e8', outerBorderWidth: 2 }
1476
+ },
1477
+ {
1478
+ if: { focus: true },
1479
+ tokens: { inputBorderColor: '#7c53a5', inputBorderWidth: 3 }
1480
+ },
1481
+ {
1482
+ if: { inactive: true },
1483
+ tokens: {
1484
+ inputBackgroundColor: '#e3e6e8',
1485
+ inputBorderColor: 'rgba(0, 0, 0, 0)',
1486
+ labelColor: '#676e73'
1487
+ }
1488
+ }
1489
+ ],
1490
+ tokens: {
1491
+ checkedBackgroundColor: '#7c53a5',
1492
+ checkedSize: 12,
1493
+ containerBackgroundColor: 'rgba(0, 0, 0, 0)',
1494
+ containerBorderRadius: 0,
1495
+ containerOpacity: 1,
1496
+ containerPaddingBottom: 0,
1497
+ containerPaddingLeft: 0,
1498
+ containerPaddingRight: 0,
1499
+ containerPaddingTop: 0,
1500
+ containerShadow: null,
1501
+ descriptionFontSize: 14,
1502
+ descriptionLineHeight: 1.42857142857,
1503
+ descriptionMarginLeft: null,
1504
+ inputBackgroundColor: '#ffffff',
1505
+ inputBorderColor: '#676e73',
1506
+ inputBorderWidth: 1,
1507
+ inputOutlineColor: 'rgba(0, 0, 0, 0)',
1508
+ inputOutlineWidth: 0,
1509
+ inputSize: 20,
1510
+ labelColor: '#414547',
1511
+ labelFontName: 'HelveticaNow',
1512
+ labelFontSize: 16,
1513
+ labelFontWeight: '400',
1514
+ labelLineHeight: 1.5,
1515
+ labelMarginLeft: 10,
1516
+ outerBorderColor: 'transparent',
1517
+ outerBorderGap: 0,
1518
+ outerBorderWidth: 0
1519
+ }
1520
+ },
1521
+ RadioCard: {
1522
+ appearances: {
1523
+ checked: {
1524
+ description: 'Corresponds to a selected state for a checkbox or radio',
1525
+ type: 'state',
1526
+ values: [ true ]
1527
+ },
1528
+ error: { type: 'state', values: [ true ] },
1529
+ focus: {
1530
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1531
+ type: 'state',
1532
+ values: [ true ]
1533
+ },
1534
+ hover: {
1535
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1536
+ type: 'state',
1537
+ values: [ true ]
1538
+ },
1539
+ inactive: {
1540
+ description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
1541
+ type: 'state',
1542
+ values: [ true ]
1543
+ },
1544
+ pressed: {
1545
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
1546
+ type: 'state',
1547
+ values: [ true ]
1548
+ },
1549
+ viewport: {
1550
+ description: 'The size label for the current screen viewport based on the current screen width',
1551
+ type: 'state',
1552
+ values: [ 'xs', 'sm', 'md', 'lg', 'xl' ]
1553
+ }
1554
+ },
1555
+ rules: [
1556
+ {
1557
+ if: { viewport: [ 'lg', 'xl' ] },
1558
+ tokens: {
1559
+ fontSize: 24,
1560
+ lineHeight: 1.33333333333,
1561
+ paddingBottom: 24,
1562
+ paddingLeft: 16,
1563
+ paddingRight: 24,
1564
+ paddingTop: 16
1565
+ }
1566
+ },
1567
+ {
1568
+ if: { hover: true },
1569
+ tokens: {
1570
+ borderColor: '#676e73',
1571
+ outerBorderColor: '#e3e6e8',
1572
+ outerBorderWidth: 2,
1573
+ radioOuterBorderColor: '#e3e6e8',
1574
+ radioOuterBorderWidth: 2
1575
+ }
1576
+ },
1577
+ {
1578
+ description: 'Pressed state matches hover state plus light grey background',
1579
+ if: { pressed: true },
1580
+ tokens: {
1581
+ backgroundColor: '#f4f4f7',
1582
+ borderColor: '#676e73',
1583
+ outerBorderColor: '#e3e6e8',
1584
+ outerBorderWidth: 2
1585
+ }
1586
+ },
1587
+ {
1588
+ if: { focus: true },
1589
+ tokens: {
1590
+ outerBorderColor: '#676e73',
1591
+ outerBorderGap: 2,
1592
+ outerBorderWidth: 2,
1593
+ radioInputBorderColor: '#7c53a5',
1594
+ radioInputBorderWidth: 3
1595
+ }
1596
+ },
1597
+ {
1598
+ if: { inactive: true },
1599
+ tokens: {
1600
+ backgroundColor: '#f4f4f7',
1601
+ borderColor: 'transparent',
1602
+ color: '#676e73',
1603
+ radioInputBackgroundColor: '#e3e6e8',
1604
+ radioInputBorderColor: 'rgba(0, 0, 0, 0)'
1605
+ }
1606
+ },
1607
+ {
1608
+ if: { error: true },
1609
+ tokens: {
1610
+ borderColor: '#e12339',
1611
+ color: '#e12339',
1612
+ radioInputBorderColor: '#e12339'
1613
+ }
1614
+ }
1615
+ ],
1616
+ tokens: {
1617
+ backgroundColor: '#ffffff',
1618
+ borderColor: '#b2b9bf',
1619
+ borderRadius: 6,
1620
+ borderWidth: 1,
1621
+ color: '#2c2e30',
1622
+ contentSpace: 2,
1623
+ flex: 1,
1624
+ fontName: 'HelveticaNow',
1625
+ fontSize: 20,
1626
+ fontWeight: '500',
1627
+ letterSpacing: 0,
1628
+ lineHeight: 1.4,
1629
+ minWidth: 288,
1630
+ outerBorderColor: 'transparent',
1631
+ outerBorderGap: 0,
1632
+ outerBorderWidth: 0,
1633
+ paddingBottom: 16,
1634
+ paddingLeft: 10,
1635
+ paddingRight: 16,
1636
+ paddingTop: 16,
1637
+ radioCheckedBackgroundColor: '#7c53a5',
1638
+ radioCheckedSize: 12,
1639
+ radioInputBackgroundColor: '#ffffff',
1640
+ radioInputBorderColor: '#676e73',
1641
+ radioInputBorderWidth: 1,
1642
+ radioInputOutlineColor: 'rgba(0, 0, 0, 0)',
1643
+ radioInputOutlineWidth: 0,
1644
+ radioInputSize: 20,
1645
+ radioOuterBorderColor: 'transparent',
1646
+ radioOuterBorderGap: 0,
1647
+ radioOuterBorderWidth: 0,
1648
+ radioSpace: 2,
1649
+ shadow: null,
1650
+ textTransform: 'none'
1651
+ }
1652
+ },
1653
+ RadioCardGroup: {
1654
+ appearances: {
1655
+ fullWidth: {
1656
+ description: 'Makes cards always occupy the full width of the parent, regardless of viewport',
1657
+ type: 'variant',
1658
+ values: [ true ]
1659
+ },
1660
+ viewport: {
1661
+ description: 'The size label for the current screen viewport based on the current screen width',
1662
+ type: 'state',
1663
+ values: [ 'xs', 'sm', 'md', 'lg', 'xl' ]
1664
+ }
1665
+ },
1666
+ rules: [
1667
+ {
1668
+ if: { fullWidth: null, viewport: [ 'lg', 'xl' ] },
1669
+ tokens: { direction: 'row', space: 4 }
1670
+ }
1671
+ ],
1672
+ tokens: { direction: 'column', fieldSpace: 3, space: 3 }
1673
+ },
1674
+ RadioGroup: { appearances: {}, rules: [], tokens: { fieldSpace: 2, space: 2 } },
1675
+ Search: {
1676
+ appearances: {
1677
+ focus: {
1678
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1679
+ type: 'state',
1680
+ values: [ true ]
1681
+ },
1682
+ hover: {
1683
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1684
+ type: 'state',
1685
+ values: [ true ]
1686
+ },
1687
+ inactive: {
1688
+ description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
1689
+ type: 'state',
1690
+ values: [ true ]
1691
+ }
1692
+ },
1693
+ rules: [
1694
+ {
1695
+ if: { hover: true, inactive: null },
1696
+ tokens: {
1697
+ outerBackgroundColor: '#e3e6e8',
1698
+ outerBorderColor: '#e3e6e8'
1699
+ }
1700
+ },
1701
+ {
1702
+ if: { focus: true },
1703
+ tokens: { borderColor: '#7c53a5', borderWidth: 3 }
1704
+ },
1705
+ {
1706
+ if: { inactive: true },
1707
+ tokens: { backgroundColor: '#f4f4f7', borderColor: '#f4f4f7' }
1708
+ }
1709
+ ],
1710
+ tokens: {
1711
+ backgroundColor: '#ffffff',
1712
+ borderColor: '#676e73',
1713
+ borderRadius: 32,
1714
+ borderWidth: 1,
1715
+ buttonsGap: 1,
1716
+ clearButtonIcon: PaletteIconTimes,
1717
+ color: '#414547',
1718
+ fontName: 'HelveticaNow',
1719
+ fontSize: 16,
1720
+ fontWeight: '400',
1721
+ lineHeight: 1.5,
1722
+ outerBackgroundColor: 'rgba(0, 0, 0, 0)',
1723
+ outerBorderColor: 'rgba(0, 0, 0, 0)',
1724
+ outerBorderRadius: 32,
1725
+ outerBorderWidth: 2,
1726
+ paddingBottom: 12,
1727
+ paddingLeft: 24,
1728
+ paddingRight: 8,
1729
+ paddingTop: 12,
1730
+ placeholderColor: '#414547',
1731
+ submitButtonIcon: PaletteIconSearchBold
1732
+ }
1733
+ },
1734
+ SearchButton: {
1735
+ appearances: {
1736
+ focus: {
1737
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1738
+ type: 'state',
1739
+ values: [ true ]
1740
+ },
1741
+ hover: {
1742
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1743
+ type: 'state',
1744
+ values: [ true ]
1745
+ },
1746
+ inactive: {
1747
+ description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
1748
+ type: 'state',
1749
+ values: [ true ]
1750
+ },
1751
+ pressed: {
1752
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
1753
+ type: 'state',
1754
+ values: [ true ]
1755
+ },
1756
+ priority: { description: '', type: 'variant', values: [ 'high' ] }
1757
+ },
1758
+ rules: [
1759
+ {
1760
+ if: { priority: 'high' },
1761
+ tokens: { backgroundColor: '#4b286d', iconColor: '#ffffff' }
1762
+ },
1763
+ {
1764
+ if: { hover: true },
1765
+ tokens: {
1766
+ backgroundColor: '#7c53a5',
1767
+ borderWidth: 0,
1768
+ iconColor: '#ffffff'
1769
+ }
1770
+ },
1771
+ {
1772
+ if: { focus: true },
1773
+ tokens: {
1774
+ backgroundColor: 'transparent',
1775
+ borderColor: '#4b286d',
1776
+ borderWidth: 3,
1777
+ iconColor: '#4b286d'
1778
+ }
1779
+ },
1780
+ {
1781
+ if: { pressed: true },
1782
+ tokens: {
1783
+ backgroundColor: '#3f2a54',
1784
+ borderWidth: 0,
1785
+ iconColor: '#ffffff'
1786
+ }
1787
+ },
1788
+ {
1789
+ if: { inactive: true },
1790
+ tokens: {
1791
+ backgroundColor: '#e3e6e8',
1792
+ borderWidth: 0,
1793
+ iconColor: '#676e73'
1794
+ }
1795
+ }
1796
+ ],
1797
+ tokens: {
1798
+ backgroundColor: null,
1799
+ borderColor: 'rgba(0, 0, 0, 0)',
1800
+ borderRadius: 32,
1801
+ borderWidth: 0,
1802
+ iconColor: '#676e73',
1803
+ iconSize: 20,
1804
+ opacity: 1,
1805
+ paddingBottom: 8,
1806
+ paddingLeft: 8,
1807
+ paddingRight: 8,
1808
+ paddingTop: 8,
1809
+ shadow: null
1810
+ }
1811
+ },
1812
+ Select: {
1813
+ appearances: {
1814
+ focus: {
1815
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
1816
+ type: 'state',
1817
+ values: [ true ]
1818
+ },
1819
+ hover: {
1820
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1821
+ type: 'state',
1822
+ values: [ true ]
1823
+ },
1824
+ inactive: {
1825
+ description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
1826
+ type: 'state',
1827
+ values: [ true ]
1828
+ },
1829
+ validation: {
1830
+ description: 'Validation states for form inputs',
1831
+ type: 'state',
1832
+ values: [ 'error', 'success' ]
1833
+ }
1834
+ },
1835
+ rules: [
1836
+ {
1837
+ if: { hover: true, inactive: null },
1838
+ tokens: {
1839
+ outerBackgroundColor: '#e3e6e8',
1840
+ outerBorderColor: '#e3e6e8'
1841
+ }
1842
+ },
1843
+ {
1844
+ if: { validation: 'success' },
1845
+ tokens: {
1846
+ borderColor: '#2b8000',
1847
+ validationIcon: PaletteIconStatusSuccess,
1848
+ validationIconColor: '#2b8000'
1849
+ }
1850
+ },
1851
+ {
1852
+ if: { validation: 'error' },
1853
+ tokens: {
1854
+ borderColor: '#e12339',
1855
+ validationIcon: PaletteIconStatusError,
1856
+ validationIconColor: '#e12339'
1857
+ }
1858
+ },
1859
+ {
1860
+ if: { focus: true },
1861
+ tokens: {
1862
+ borderColor: '#7c53a5',
1863
+ borderWidth: 3,
1864
+ validationIcon: null
1865
+ }
1866
+ },
1867
+ {
1868
+ if: { inactive: true },
1869
+ tokens: { backgroundColor: '#f4f4f7', borderColor: '#f4f4f7' }
1870
+ }
1871
+ ],
1872
+ tokens: {
1873
+ backgroundColor: '#ffffff',
1874
+ borderColor: '#676e73',
1875
+ borderRadius: 4,
1876
+ borderWidth: 1,
1877
+ color: '#414547',
1878
+ fontName: 'HelveticaNow',
1879
+ fontSize: 16,
1880
+ fontWeight: '400',
1881
+ height: 48,
1882
+ icon: PaletteIconCaretDown,
1883
+ iconColor: '#2b8000',
1884
+ iconSize: 24,
1885
+ outerBackgroundColor: 'rgba(0, 0, 0, 0)',
1886
+ outerBorderColor: 'rgba(0, 0, 0, 0)',
1887
+ outerBorderWidth: 2,
1888
+ paddingBottom: 12,
1889
+ paddingLeft: 16,
1890
+ paddingRight: 16,
1891
+ paddingTop: 12,
1892
+ validationIcon: null,
1893
+ validationIconColor: 'rgba(0, 0, 0, 0)',
1894
+ validationIconSize: 24
1895
+ }
1896
+ },
1897
+ SideNav: {
1898
+ appearances: {},
1899
+ rules: [],
1900
+ tokens: { borderColor: '#b2b9bf', borderStyle: 'solid', borderWidth: 1 }
1901
+ },
1902
+ SideNavItem: {
1903
+ appearances: {
1904
+ active: {
1905
+ description: 'Used to mark currently active Item or and ItemGroup containing the currently active Item',
1906
+ type: 'state',
1907
+ values: [ true, false ]
1908
+ },
1909
+ expanded: {
1910
+ description: 'Applies when an ExpandCollapse panel is open and the content inside is visible',
1911
+ type: 'state',
1912
+ values: [ true ]
1913
+ },
1914
+ hover: {
1915
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
1916
+ type: 'state',
1917
+ values: [ true ]
1918
+ },
1919
+ type: {
1920
+ description: '`parent` being the toggle button for an ItemsGroup, and `child` an element of the ItemGroup',
1921
+ type: 'state',
1922
+ values: [ 'child', 'parent' ]
1923
+ }
1924
+ },
1925
+ rules: [
1926
+ {
1927
+ if: { active: true },
1928
+ tokens: {
1929
+ accentBackgroundColor: '#4b286d',
1930
+ color: '#4b286d',
1931
+ fontName: 'HelveticaNow',
1932
+ fontWeight: '700',
1933
+ paddingLeft: 12
1934
+ }
1935
+ },
1936
+ {
1937
+ if: { type: 'child' },
1938
+ tokens: {
1939
+ accentBackgroundColor: '#f4f4f7',
1940
+ accentOffset: 16,
1941
+ borderWidth: 0,
1942
+ fontSize: 14,
1943
+ lineHeight: 1.4,
1944
+ paddingLeft: 36
1945
+ }
1946
+ },
1947
+ {
1948
+ if: { active: true, type: 'parent' },
1949
+ tokens: { paddingLeft: 12 }
1950
+ },
1951
+ {
1952
+ if: { active: true, expanded: true, type: 'parent' },
1953
+ tokens: {
1954
+ accentBackgroundColor: 'rgba(0, 0, 0, 0)',
1955
+ color: '#414547',
1956
+ paddingLeft: 16
1957
+ }
1958
+ },
1959
+ {
1960
+ if: { hover: true },
1961
+ tokens: { backgroundColor: '#f4f4f7', color: '#4b286d' }
1962
+ },
1963
+ {
1964
+ if: { active: true, type: 'child' },
1965
+ tokens: {
1966
+ accentBackgroundColor: '#4b286d',
1967
+ accentPadding: 16,
1968
+ backgroundColor: '#f4f4f7',
1969
+ color: '#4b286d'
1970
+ }
1971
+ },
1972
+ {
1973
+ if: { active: false, hover: true, type: 'child' },
1974
+ tokens: {
1975
+ accentBackgroundColor: '#ffffff',
1976
+ accentOffset: 0,
1977
+ accentWidth: 16,
1978
+ color: '#414547'
1979
+ }
1980
+ }
1981
+ ],
1982
+ tokens: {
1983
+ accentBackgroundColor: 'rgba(0, 0, 0, 0)',
1984
+ accentOffset: 0,
1985
+ accentPadding: 0,
1986
+ accentWidth: 4,
1987
+ backgroundColor: 'rgba(0, 0, 0, 0)',
1988
+ borderColor: '#b2b9bf',
1989
+ borderStyle: 'solid',
1990
+ borderWidth: 1,
1991
+ color: '#414547',
1992
+ fontName: 'HelveticaNow',
1993
+ fontSize: 16,
1994
+ fontWeight: '400',
1995
+ justifyContent: 'space-between',
1996
+ lineHeight: 1.5,
1997
+ paddingBottom: 16,
1998
+ paddingLeft: 16,
1999
+ paddingRight: 16,
2000
+ paddingTop: 16
2001
+ }
2002
+ },
2003
+ SideNavItemsGroup: {
2004
+ appearances: {
2005
+ expanded: {
2006
+ description: 'Applies when an ExpandCollapse panel is open and the content inside is visible',
2007
+ type: 'state',
2008
+ values: [ true ]
2009
+ }
2010
+ },
2011
+ rules: [
2012
+ {
2013
+ if: { expanded: true },
2014
+ tokens: { icon: PaletteIconCaretUp }
2015
+ }
2016
+ ],
2017
+ tokens: {
2018
+ collapseDuration: 250,
2019
+ contentPaddingBottom: 0,
2020
+ contentPaddingLeft: 0,
2021
+ contentPaddingRight: 0,
2022
+ contentPaddingTop: 0,
2023
+ expandDuration: 300,
2024
+ icon: PaletteIconCaretDown,
2025
+ iconColor: '#4b286d',
2026
+ iconGap: 8,
2027
+ iconPosition: 'right',
2028
+ iconSize: 24,
2029
+ justifyContent: 'space-between',
2030
+ verticalAlign: 'middle'
2031
+ }
2032
+ },
2033
+ Skeleton: {
2034
+ appearances: {},
2035
+ rules: [],
2036
+ tokens: {
2037
+ baseWidth: 40,
2038
+ characters: 10,
2039
+ color: '#b2b9bf',
2040
+ radius: 120,
2041
+ size: 3,
2042
+ spaceBetweenLines: 2,
2043
+ squareRadius: 4
2044
+ }
2045
+ },
2046
+ StackView: {
2047
+ appearances: {},
2048
+ rules: [],
2049
+ tokens: {
2050
+ alignItems: 'stretch',
2051
+ flexGrow: 0,
2052
+ justifyContent: 'flex-start'
2053
+ }
2054
+ },
2055
+ StepTracker: {
2056
+ appearances: {
2057
+ viewport: {
2058
+ description: 'The size label for the current screen viewport based on the current screen width',
2059
+ type: 'state',
2060
+ values: [ 'xs', 'sm', 'md', 'lg', 'xl' ]
2061
+ }
2062
+ },
2063
+ rules: [
2064
+ {
2065
+ if: { viewport: [ 'lg', 'xl' ] },
2066
+ tokens: { showStepLabel: true, showStepTrackerLabel: false }
2067
+ }
2068
+ ],
2069
+ tokens: {
2070
+ completedIcon: null,
2071
+ completedIconColor: null,
2072
+ completedIconSize: null,
2073
+ connectorColor: '#676e73',
2074
+ connectorCompletedColor: '#7c53a5',
2075
+ connectorCompletedHeight: 3,
2076
+ connectorHeight: 1,
2077
+ connectorMinWidth: 16,
2078
+ containerPaddingBottom: null,
2079
+ containerPaddingLeft: null,
2080
+ containerPaddingRight: null,
2081
+ containerPaddingTop: null,
2082
+ knobBackgroundColor: 'rgba(0, 0, 0, 0)',
2083
+ knobBorderColor: '#676e73',
2084
+ knobBorderWidth: 1,
2085
+ knobCompletedBackgroundColor: '#7c53a5',
2086
+ knobCompletedBorderColor: '#7c53a5',
2087
+ knobCompletedPaddingLeft: null,
2088
+ knobCompletedPaddingTop: null,
2089
+ knobCurrentBackgroundColor: 'rgba(0, 0, 0, 0)',
2090
+ knobCurrentBorderColor: '#7c53a5',
2091
+ knobCurrentBorderWidth: 2,
2092
+ knobCurrentInnerColor: '#7c53a5',
2093
+ knobCurrentInnerSize: 8,
2094
+ knobCurrentPaddingLeft: 2,
2095
+ knobCurrentPaddingTop: 2,
2096
+ knobSize: 16,
2097
+ labelColor: '#414547',
2098
+ labelCurrentColor: '#7c53a5',
2099
+ labelCurrentFontName: 'HelveticaNow',
2100
+ labelCurrentFontWeight: '700',
2101
+ labelDirection: 'column',
2102
+ labelFontName: 'HelveticaNow',
2103
+ labelFontSize: 16,
2104
+ labelFontWeight: '400',
2105
+ labelGap: 0,
2106
+ labelLineHeight: 1.42857142857,
2107
+ labelMarginTop: 8,
2108
+ labelPaddingLeft: 16,
2109
+ labelPaddingRight: 16,
2110
+ showStepLabel: false,
2111
+ showStepName: true,
2112
+ showStepTrackerLabel: true
2113
+ }
2114
+ },
2115
+ Tabs: {
2116
+ appearances: {},
2117
+ rules: [],
2118
+ tokens: {
2119
+ borderBottomColor: '#676e73',
2120
+ borderBottomWidth: 1,
2121
+ buttonClearance: 16,
2122
+ gutter: 2,
2123
+ nextIcon: PaletteIconArrowRight,
2124
+ previousIcon: PaletteIconArrowLeft,
2125
+ space: 0
2126
+ }
2127
+ },
2128
+ TabsItem: {
2129
+ appearances: {
2130
+ focus: {
2131
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
2132
+ type: 'state',
2133
+ values: [ true ]
2134
+ },
2135
+ hover: {
2136
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
2137
+ type: 'state',
2138
+ values: [ true ]
2139
+ },
2140
+ pressed: {
2141
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
2142
+ type: 'state',
2143
+ values: [ true ]
2144
+ },
2145
+ selected: {
2146
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
2147
+ type: 'state',
2148
+ values: [ true ]
2149
+ }
2150
+ },
2151
+ rules: [
2152
+ {
2153
+ description: "The design uses height of 3: there's (rightly) no '3' in the Allium palette but the effect is 1px above and below a 1px line",
2154
+ if: { selected: true },
2155
+ tokens: {
2156
+ backgroundColor: '#f4f4f7',
2157
+ color: '#4b286d',
2158
+ highlightBarBorderRadius: 32,
2159
+ highlightBarBorderWidth: 1,
2160
+ highlightBarHeight: 1,
2161
+ highlightColor: '#4b286d'
2162
+ }
2163
+ },
2164
+ {
2165
+ if: { hover: true },
2166
+ tokens: { borderColor: '#b2b9bf', borderWidth: 2 }
2167
+ },
2168
+ {
2169
+ if: { focus: true },
2170
+ tokens: { borderColor: '#4b286d', borderWidth: 2, color: '#4b286d' }
2171
+ },
2172
+ {
2173
+ if: { pressed: true },
2174
+ tokens: {
2175
+ backgroundColor: '#676e73',
2176
+ borderColor: 'transparent',
2177
+ borderWidth: 0,
2178
+ color: '#ffffff'
2179
+ }
2180
+ },
2181
+ {
2182
+ if: { focus: true, pressed: true },
2183
+ tokens: { backgroundColor: '#4b286d' }
2184
+ }
2185
+ ],
2186
+ tokens: {
2187
+ backgroundColor: 'transparent',
2188
+ borderColor: 'transparent',
2189
+ borderRadius: 32,
2190
+ borderWidth: 0,
2191
+ color: '#676e73',
2192
+ fontName: 'HelveticaNow',
2193
+ fontScaleCap: 64,
2194
+ fontSize: 14,
2195
+ fontWeight: '700',
2196
+ highlightBarBorderRadius: 0,
2197
+ highlightBarBorderWidth: 0,
2198
+ highlightBarHeight: 0,
2199
+ highlightColor: 'transparent',
2200
+ highlightTriangleSize: 0,
2201
+ letterSpacing: 0,
2202
+ lineHeight: 1.14285714286,
2203
+ maxWidth: 192,
2204
+ paddingHorizontal: 24,
2205
+ paddingVertical: 8,
2206
+ space: 1,
2207
+ textAlign: 'center',
2208
+ textTransform: 'none'
2209
+ }
2210
+ },
2211
+ TabsScrollButton: {
2212
+ appearances: {
2213
+ focus: {
2214
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
2215
+ type: 'state',
2216
+ values: [ true ]
2217
+ },
2218
+ hover: {
2219
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
2220
+ type: 'state',
2221
+ values: [ true ]
2222
+ },
2223
+ pressed: {
2224
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
2225
+ type: 'state',
2226
+ values: [ true ]
2227
+ }
2228
+ },
2229
+ rules: [
2230
+ {
2231
+ if: { hover: true },
2232
+ tokens: { borderColor: '#414547', iconColor: '#414547' }
2233
+ },
2234
+ {
2235
+ if: { pressed: true },
2236
+ tokens: { backgroundColor: '#676e73', iconColor: '#ffffff' }
2237
+ }
2238
+ ],
2239
+ tokens: {
2240
+ backgroundColor: '#ffffff',
2241
+ borderColor: '#b2b9bf',
2242
+ borderRadius: 32,
2243
+ borderWidth: 1,
2244
+ iconColor: '#676e73',
2245
+ iconSize: 32,
2246
+ padding: 0,
2247
+ shadow: {
2248
+ blur: 2,
2249
+ color: 'rgba(0, 0, 0, 0.1)',
2250
+ inset: false,
2251
+ offsetX: 0,
2252
+ offsetY: 2,
2253
+ spread: 0
2254
+ }
2255
+ }
2256
+ },
2257
+ Tags: {
2258
+ appearances: {
2259
+ viewport: {
2260
+ description: 'The size label for the current screen viewport based on the current screen width',
2261
+ type: 'state',
2262
+ values: [ 'xs', 'sm', 'md', 'lg', 'xl' ]
2263
+ }
2264
+ },
2265
+ rules: [ { if: { viewport: [ 'lg', 'xl' ] }, tokens: { space: 3 } } ],
2266
+ tokens: {
2267
+ alignItems: 'center',
2268
+ direction: 'row',
2269
+ flexGrow: 0,
2270
+ justifyContent: 'flex-start',
2271
+ space: 1
2272
+ }
2273
+ },
2274
+ TagsItem: {
2275
+ appearances: {
2276
+ focus: {
2277
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
2278
+ type: 'state',
2279
+ values: [ true ]
2280
+ },
2281
+ hover: {
2282
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
2283
+ type: 'state',
2284
+ values: [ true ]
2285
+ },
2286
+ inactive: {
2287
+ description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
2288
+ type: 'state',
2289
+ values: [ true ]
2290
+ },
2291
+ pressed: {
2292
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
2293
+ type: 'state',
2294
+ values: [ true ]
2295
+ },
2296
+ selected: {
2297
+ description: 'Applies while an interactive component is the currently selected one in a set of states or components, for example a button in a `ButtonGroup`.',
2298
+ type: 'state',
2299
+ values: [ true ]
2300
+ }
2301
+ },
2302
+ rules: [
2303
+ {
2304
+ if: { pressed: true },
2305
+ tokens: {
2306
+ backgroundColor: '#676e73',
2307
+ borderColor: '#676e73',
2308
+ borderWidth: 0,
2309
+ color: '#ffffff',
2310
+ iconBackground: '#414547',
2311
+ iconColor: '#ffffff'
2312
+ }
2313
+ },
2314
+ {
2315
+ if: { focus: true },
2316
+ tokens: {
2317
+ borderColor: '#676e73',
2318
+ outerBorderColor: '#676e73',
2319
+ outerBorderGap: 2,
2320
+ outerBorderWidth: 2
2321
+ }
2322
+ },
2323
+ { if: { hover: true }, tokens: { borderWidth: 3 } },
2324
+ {
2325
+ if: { selected: true },
2326
+ tokens: {
2327
+ backgroundColor: '#4b286d',
2328
+ borderWidth: 0,
2329
+ color: '#ffffff',
2330
+ icon: PaletteIconClose,
2331
+ iconBackground: '#7c53a5',
2332
+ iconColor: '#ffffff'
2333
+ }
2334
+ },
2335
+ {
2336
+ if: { hover: true, selected: true },
2337
+ tokens: { backgroundColor: '#7c53a5', iconBackground: '#4b286d' }
2338
+ },
2339
+ {
2340
+ if: { pressed: true, selected: true },
2341
+ tokens: { backgroundColor: '#3f2a54', iconBackground: '#7c53a5' }
2342
+ },
2343
+ {
2344
+ if: { focus: true, selected: true },
2345
+ tokens: { outerBorderColor: '#4b286d' }
2346
+ },
2347
+ {
2348
+ if: { focus: true, pressed: true, selected: true },
2349
+ tokens: { iconBackground: '#7c53a5', outerBorderColor: '#3f2a54' }
2350
+ },
2351
+ {
2352
+ if: { inactive: true },
2353
+ tokens: {
2354
+ backgroundColor: '#b2b9bf',
2355
+ borderWidth: 0,
2356
+ color: '#ffffff'
2357
+ }
2358
+ }
2359
+ ],
2360
+ tokens: {
2361
+ alignSelf: 'center',
2362
+ backgroundColor: '#ffffff',
2363
+ borderColor: '#b2b9bf',
2364
+ borderRadius: 32,
2365
+ borderWidth: 1,
2366
+ color: '#676e73',
2367
+ fontName: 'HelveticaNow',
2368
+ fontSize: 14,
2369
+ fontWeight: '700',
2370
+ icon: PaletteIconAdd,
2371
+ iconAlignSelf: 'center',
2372
+ iconBackground: '#f4f4f7',
2373
+ iconBorderRadius: 32,
2374
+ iconColor: '#2c2e30',
2375
+ iconPadding: 2,
2376
+ iconPosition: 'right',
2377
+ iconSize: 16,
2378
+ iconSpace: 2,
2379
+ iconTranslateX: 0,
2380
+ iconTranslateY: 0,
2381
+ lineHeight: 1.42857142857,
2382
+ minWidth: 0,
2383
+ opacity: 1,
2384
+ outerBackgroundColor: 'rgba(0, 0, 0, 0)',
2385
+ outerBorderColor: 'rgba(0, 0, 0, 0)',
2386
+ outerBorderGap: 2,
2387
+ outerBorderWidth: 2,
2388
+ paddingBottom: 8,
2389
+ paddingLeft: 16,
2390
+ paddingRight: 8,
2391
+ paddingTop: 8,
2392
+ shadow: null,
2393
+ textAlign: 'center',
2394
+ width: null
2395
+ }
2396
+ },
2397
+ TextArea: {
2398
+ appearances: {},
2399
+ rules: [],
2400
+ tokens: { maxLines: 8, minLines: 5 }
2401
+ },
2402
+ TextInput: {
2403
+ appearances: {
2404
+ focus: {
2405
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
2406
+ type: 'state',
2407
+ values: [ true ]
2408
+ },
2409
+ hover: {
2410
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
2411
+ type: 'state',
2412
+ values: [ true ]
2413
+ },
2414
+ inactive: {
2415
+ description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
2416
+ type: 'state',
2417
+ values: [ true ]
2418
+ },
2419
+ validation: {
2420
+ description: 'Validation states for form inputs',
2421
+ type: 'state',
2422
+ values: [ 'error', 'success' ]
2423
+ }
2424
+ },
2425
+ rules: [
2426
+ {
2427
+ if: { hover: true, inactive: null },
2428
+ tokens: {
2429
+ outerBackgroundColor: '#e3e6e8',
2430
+ outerBorderColor: '#e3e6e8'
2431
+ }
2432
+ },
2433
+ {
2434
+ if: { validation: 'success' },
2435
+ tokens: {
2436
+ borderColor: '#2b8000',
2437
+ icon: PaletteIconStatusSuccess,
2438
+ iconColor: '#2b8000'
2439
+ }
2440
+ },
2441
+ {
2442
+ if: { validation: 'error' },
2443
+ tokens: {
2444
+ borderColor: '#e12339',
2445
+ icon: PaletteIconStatusError,
2446
+ iconColor: '#e12339'
2447
+ }
2448
+ },
2449
+ {
2450
+ if: { focus: true },
2451
+ tokens: { borderColor: '#7c53a5', borderWidth: 3, icon: null }
2452
+ },
2453
+ {
2454
+ if: { inactive: true },
2455
+ tokens: { backgroundColor: '#f4f4f7', borderColor: '#f4f4f7' }
2456
+ }
2457
+ ],
2458
+ tokens: {
2459
+ backgroundColor: '#ffffff',
2460
+ borderColor: '#676e73',
2461
+ borderRadius: 4,
2462
+ borderWidth: 1,
2463
+ color: '#414547',
2464
+ fontName: 'HelveticaNow',
2465
+ fontSize: 16,
2466
+ fontWeight: '400',
2467
+ icon: null,
2468
+ iconColor: 'rgba(0, 0, 0, 0)',
2469
+ iconSize: 24,
2470
+ lineHeight: 1.5,
2471
+ outerBackgroundColor: 'rgba(0, 0, 0, 0)',
2472
+ outerBorderColor: 'rgba(0, 0, 0, 0)',
2473
+ outerBorderWidth: 2,
2474
+ paddingBottom: 12,
2475
+ paddingLeft: 16,
2476
+ paddingRight: 16,
2477
+ paddingTop: 12
2478
+ }
2479
+ },
2480
+ ToggleSwitch: {
2481
+ appearances: {
2482
+ focus: {
2483
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
2484
+ type: 'state',
2485
+ values: [ true ]
2486
+ },
2487
+ hover: {
2488
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
2489
+ type: 'state',
2490
+ values: [ true ]
2491
+ },
2492
+ inactive: {
2493
+ description: 'Prevents an interactive component from being interacted with and applies accessibility attributes to indicate to the user that this component cannot be used.',
2494
+ type: 'state',
2495
+ values: [ true ]
2496
+ },
2497
+ pressed: {
2498
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
2499
+ type: 'state',
2500
+ values: [ true ]
2501
+ },
2502
+ selected: {
2503
+ description: 'Applies while an interactive component is the currently selected one in a set of states or components, for example a button in a `ButtonGroup`.',
2504
+ type: 'state',
2505
+ values: [ true ]
2506
+ }
2507
+ },
2508
+ rules: [
2509
+ { if: { hover: true }, tokens: { backgroundColor: '#414547' } },
2510
+ {
2511
+ if: { pressed: true },
2512
+ tokens: { backgroundColor: '#2c2e30' }
2513
+ },
2514
+ {
2515
+ if: { focus: true },
2516
+ tokens: {
2517
+ outerBackgroundColor: '#ffffff',
2518
+ outerBorderColor: '#676e73',
2519
+ outerBorderGap: 3,
2520
+ outerBorderWidth: 2
2521
+ }
2522
+ },
2523
+ {
2524
+ if: { focus: true, pressed: true },
2525
+ tokens: { outerBorderColor: '#2c2e30' }
2526
+ },
2527
+ {
2528
+ if: { selected: true },
2529
+ tokens: {
2530
+ backgroundColor: '#2b8000',
2531
+ icon: PaletteIconCheckmark,
2532
+ iconColor: '#2b8000'
2533
+ }
2534
+ },
2535
+ {
2536
+ if: { hover: true, selected: true },
2537
+ tokens: { backgroundColor: '#1f5c09', iconColor: '#1f5c09' }
2538
+ },
2539
+ {
2540
+ if: { pressed: true, selected: true },
2541
+ tokens: { backgroundColor: '#163e06', iconColor: '#163e06' }
2542
+ },
2543
+ {
2544
+ if: { focus: true, selected: true },
2545
+ tokens: { outerBorderColor: '#2b8000' }
2546
+ },
2547
+ {
2548
+ if: { focus: true, pressed: true, selected: true },
2549
+ tokens: { outerBorderColor: '#163e06' }
2550
+ },
2551
+ {
2552
+ if: { inactive: true },
2553
+ tokens: {
2554
+ backgroundColor: '#b2b9bf',
2555
+ iconColor: '#676e73',
2556
+ outerBorderColor: '#b2b9bf'
2557
+ }
2558
+ }
2559
+ ],
2560
+ tokens: {
2561
+ alignSelf: 'flex-start',
2562
+ backgroundColor: '#676e73',
2563
+ borderColor: 'rgba(0, 0, 0, 0)',
2564
+ borderRadius: 32,
2565
+ borderWidth: 0,
2566
+ icon: null,
2567
+ iconColor: '#676e73',
2568
+ iconSize: 12,
2569
+ opacity: 1,
2570
+ outerBackgroundColor: 'rgba(0, 0, 0, 0)',
2571
+ outerBorderColor: 'rgba(0, 0, 0, 0)',
2572
+ outerBorderGap: 0,
2573
+ outerBorderWidth: 0,
2574
+ paddingBottom: 0,
2575
+ paddingLeft: 0,
2576
+ paddingRight: 0,
2577
+ paddingTop: 0,
2578
+ shadow: {
2579
+ blur: 2,
2580
+ color: 'rgba(0, 0, 0, 0.1)',
2581
+ inset: true,
2582
+ offsetX: 0,
2583
+ offsetY: 2,
2584
+ spread: 0
2585
+ },
2586
+ switchBorderColor: 'rgba(0, 0, 0, 0)',
2587
+ switchBorderRadius: 32,
2588
+ switchBorderWidth: 0,
2589
+ switchColor: '#ffffff',
2590
+ switchShadow: {
2591
+ blur: 2,
2592
+ color: 'rgba(0, 0, 0, 0.1)',
2593
+ inset: false,
2594
+ offsetX: 0,
2595
+ offsetY: 2,
2596
+ spread: 0
2597
+ },
2598
+ switchSize: 16,
2599
+ trackBorderColor: 'rgba(0, 0, 0, 0)',
2600
+ trackBorderRadius: 32,
2601
+ trackBorderWidth: 3,
2602
+ width: 40
2603
+ }
2604
+ },
2605
+ Tooltip: {
2606
+ appearances: { inverse: { type: 'variant', values: [ true ] } },
2607
+ rules: [
2608
+ {
2609
+ if: { inverse: true },
2610
+ tokens: { backgroundColor: '#ffffff', color: '#414547' }
2611
+ }
2612
+ ],
2613
+ tokens: {
2614
+ arrowBorderRadius: 1,
2615
+ arrowOffset: 4,
2616
+ arrowWidth: 16,
2617
+ backgroundColor: '#2c2e30',
2618
+ borderRadius: 8,
2619
+ color: '#ffffff',
2620
+ fontName: 'HelveticaNow',
2621
+ fontSize: 14,
2622
+ fontWeight: '400',
2623
+ lineHeight: 1.5,
2624
+ paddingBottom: 8,
2625
+ paddingLeft: 16,
2626
+ paddingRight: 16,
2627
+ paddingTop: 8,
2628
+ shadow: {
2629
+ blur: 8,
2630
+ color: 'rgba(0, 0, 0, 0.1)',
2631
+ inset: false,
2632
+ offsetX: 0,
2633
+ offsetY: 4,
2634
+ spread: 0
2635
+ }
2636
+ }
2637
+ },
2638
+ TooltipButton: {
2639
+ appearances: {
2640
+ focus: {
2641
+ description: "Currently only web has good support for this. Applies when an interactive component's focus handler is triggered, such as keyboard tabbing or selection.",
2642
+ type: 'state',
2643
+ values: [ true ]
2644
+ },
2645
+ hover: {
2646
+ description: "Currently web only. Applies when an interactive component's hover handler is triggered, such as on mouseover.",
2647
+ type: 'state',
2648
+ values: [ true ]
2649
+ },
2650
+ inverse: { type: 'variant', values: [ true ] },
2651
+ pressed: {
2652
+ description: 'Applies while an interactive component is being physically pressed. Most visible on touchscreen taps; in React Native Web, this is visible on web mouse clicks only if the pressable is held down.',
2653
+ type: 'state',
2654
+ values: [ true ]
2655
+ }
2656
+ },
2657
+ rules: [
2658
+ { if: { inverse: true }, tokens: { iconColor: '#ffffff' } },
2659
+ { if: { hover: true }, tokens: { iconScale: 1.25 } },
2660
+ { if: { pressed: true }, tokens: { iconColor: '#676e73' } },
2661
+ {
2662
+ if: { inverse: true, pressed: true },
2663
+ tokens: { iconColor: '#b2b9bf' }
2664
+ },
2665
+ {
2666
+ if: { focus: true },
2667
+ tokens: { outerBorderColor: '#676e73' }
2668
+ },
2669
+ {
2670
+ if: { focus: true, inverse: true },
2671
+ tokens: { outerBorderColor: '#b2b9bf' }
2672
+ }
2673
+ ],
2674
+ tokens: {
2675
+ borderRadius: 32,
2676
+ icon: PaletteIconQuestion,
2677
+ iconColor: '#2c2e30',
2678
+ iconScale: 1,
2679
+ iconSize: 16,
2680
+ outerBorderColor: 'rgba(0, 0, 0, 0)',
2681
+ outerBorderGap: 4,
2682
+ outerBorderWidth: 1,
2683
+ width: 16
2684
+ }
2685
+ },
2686
+ Typography: {
2687
+ appearances: {
2688
+ bold: {
2689
+ description: 'Sets the font weight, to bold on some body text styles. Does not change accessibility properties.',
2690
+ type: 'variant',
2691
+ values: [ true ]
2692
+ },
2693
+ colour: {
2694
+ description: 'Each typography variant has a default color, and at least a secondary color variant. In exceptional cases where a different colour is needed,\n' +
2695
+ ' use the tokens prop.',
2696
+ type: 'variant',
2697
+ values: [ 'secondary', 'tertiary' ]
2698
+ },
2699
+ compact: {
2700
+ description: 'Reduces line height on some body text styles. For data-rich content, not for flow content',
2701
+ type: 'variant',
2702
+ values: [ true ]
2703
+ },
2704
+ inverse: {
2705
+ description: 'Styles the link white for use on dark backgrounds.',
2706
+ type: 'variant',
2707
+ values: [ true ]
2708
+ },
2709
+ size: {
2710
+ description: 'Styles text as body or heading text with a given size. Smaller numbers indicate larger sizes,\n' +
2711
+ '"display" headings are larger than "h" headings. Default is medium size body text. Does not change\n' +
2712
+ 'accessibility or SEO-related properties; use the heading prop if text should be treated semantically as a heading.',
2713
+ type: 'variant',
2714
+ values: [
2715
+ 'micro', 'small',
2716
+ 'large', 'eyebrow',
2717
+ 'h1', 'h2',
2718
+ 'h3', 'h4',
2719
+ 'h5', 'h6',
2720
+ 'display1', 'display2'
2721
+ ]
2722
+ },
2723
+ viewport: {
2724
+ description: 'The size label for the current screen viewport based on the current screen width',
2725
+ type: 'state',
2726
+ values: [ 'xs', 'sm', 'md', 'lg', 'xl' ]
2727
+ }
2728
+ },
2729
+ rules: [
2730
+ { if: { colour: 'secondary' }, tokens: { color: '#414547' } },
2731
+ {
2732
+ if: { size: [ 'display1', 'display2', 'h1', 'h2', 'h3' ] },
2733
+ tokens: { color: '#4b286d' }
2734
+ },
2735
+ {
2736
+ if: {
2737
+ colour: 'secondary',
2738
+ size: [ 'display1', 'display2', 'h1', 'h2', 'h3' ]
2739
+ },
2740
+ tokens: { color: '#2c2e30' }
2741
+ },
2742
+ {
2743
+ if: { colour: 'tertiary', size: 'h6' },
2744
+ tokens: { color: '#676e73' }
2745
+ },
2746
+ { if: { size: 'eyebrow' }, tokens: { color: '#414547' } },
2747
+ {
2748
+ if: { colour: 'secondary', size: 'eyebrow' },
2749
+ tokens: { color: '#4b286d' }
2750
+ },
2751
+ { if: { inverse: true }, tokens: { color: '#ffffff' } },
2752
+ {
2753
+ if: { size: 'display1' },
2754
+ tokens: {
2755
+ fontName: 'HelveticaNow',
2756
+ fontSize: 40,
2757
+ fontWeight: '300',
2758
+ letterSpacing: -0.035,
2759
+ lineHeight: 1.2
2760
+ }
2761
+ },
2762
+ {
2763
+ if: { size: 'display1', viewport: [ 'lg', 'xl' ] },
2764
+ tokens: { fontSize: 64, lineHeight: 1.125 }
2765
+ },
2766
+ {
2767
+ if: { size: 'display2' },
2768
+ tokens: {
2769
+ fontName: 'HelveticaNow',
2770
+ fontSize: 36,
2771
+ fontWeight: '400',
2772
+ letterSpacing: -0.035,
2773
+ lineHeight: 1.22222222222
2774
+ }
2775
+ },
2776
+ {
2777
+ if: { size: 'display2', viewport: [ 'lg', 'xl' ] },
2778
+ tokens: {
2779
+ fontName: 'HelveticaNow',
2780
+ fontSize: 56,
2781
+ fontWeight: '300',
2782
+ letterSpacing: -0.039,
2783
+ lineHeight: 1.14285714286
2784
+ }
2785
+ },
2786
+ {
2787
+ if: { size: 'h1' },
2788
+ tokens: {
2789
+ fontSize: 28,
2790
+ letterSpacing: -0.017,
2791
+ lineHeight: 1.28571428571
2792
+ }
2793
+ },
2794
+ {
2795
+ if: { size: 'h1', viewport: [ 'lg', 'xl' ] },
2796
+ tokens: {
2797
+ fontName: 'HelveticaNow',
2798
+ fontSize: 40,
2799
+ fontWeight: '300',
2800
+ letterSpacing: -0.035,
2801
+ lineHeight: 1.2
2802
+ }
2803
+ },
2804
+ {
2805
+ if: { size: 'h2' },
2806
+ tokens: {
2807
+ fontName: 'HelveticaNow',
2808
+ fontSize: 24,
2809
+ fontWeight: '500',
2810
+ lineHeight: 1.33333333333
2811
+ }
2812
+ },
2813
+ {
2814
+ if: { size: 'h2', viewport: [ 'lg', 'xl' ] },
2815
+ tokens: {
2816
+ fontSize: 28,
2817
+ letterSpacing: -0.017,
2818
+ lineHeight: 1.28571428571
2819
+ }
2820
+ },
2821
+ {
2822
+ if: { size: 'h3' },
2823
+ tokens: {
2824
+ fontName: 'HelveticaNow',
2825
+ fontSize: 20,
2826
+ fontWeight: '500',
2827
+ lineHeight: 1.4
2828
+ }
2829
+ },
2830
+ {
2831
+ if: { size: 'h3', viewport: [ 'lg', 'xl' ] },
2832
+ tokens: { fontSize: 24, lineHeight: 1.33333333333 }
2833
+ },
2834
+ {
2835
+ if: { size: 'h4' },
2836
+ tokens: {
2837
+ fontName: 'HelveticaNow',
2838
+ fontSize: 16,
2839
+ fontWeight: '500',
2840
+ lineHeight: 1.5
2841
+ }
2842
+ },
2843
+ {
2844
+ if: { size: 'h5' },
2845
+ tokens: {
2846
+ fontName: 'HelveticaNow',
2847
+ fontSize: 14,
2848
+ fontWeight: '500',
2849
+ lineHeight: 1.28571428571
2850
+ }
2851
+ },
2852
+ {
2853
+ if: { size: 'h6' },
2854
+ tokens: {
2855
+ fontName: 'HelveticaNow',
2856
+ fontSize: 12,
2857
+ fontWeight: '700',
2858
+ lineHeight: 1.33333333333
2859
+ }
2860
+ },
2861
+ {
2862
+ if: { size: 'large' },
2863
+ tokens: { fontSize: 20, lineHeight: 1.6 }
2864
+ },
2865
+ {
2866
+ if: { compact: true, size: 'large' },
2867
+ tokens: { lineHeight: 1.2 }
2868
+ },
2869
+ {
2870
+ description: "The compact line height for the 'default' font size, but doesn't apply for any other styles",
2871
+ if: { compact: true, size: null },
2872
+ tokens: { lineHeight: 1.25 }
2873
+ },
2874
+ {
2875
+ if: { size: 'small' },
2876
+ tokens: { fontSize: 14, lineHeight: 1.42857142857 }
2877
+ },
2878
+ {
2879
+ if: { compact: true, size: 'small' },
2880
+ tokens: { lineHeight: 1.14285714286 }
2881
+ },
2882
+ {
2883
+ if: { size: 'micro' },
2884
+ tokens: {
2885
+ fontName: 'HelveticaNow',
2886
+ fontSize: 12,
2887
+ fontWeight: '500',
2888
+ lineHeight: 1.33333333333
2889
+ }
2890
+ },
2891
+ {
2892
+ if: { size: 'eyebrow' },
2893
+ tokens: {
2894
+ fontName: 'HelveticaNow',
2895
+ fontSize: 14,
2896
+ fontWeight: '700',
2897
+ lineHeight: 1.28571428571,
2898
+ textTransform: 'uppercase'
2899
+ }
2900
+ },
2901
+ {
2902
+ description: 'Bold is only available on body text styles, not headings',
2903
+ if: { bold: true, size: [ 'large', null, 'small', 'micro' ] },
2904
+ tokens: { fontName: 'HelveticaNow', fontWeight: '700' }
2905
+ }
2906
+ ],
2907
+ tokens: {
2908
+ color: '#2c2e30',
2909
+ fontName: 'HelveticaNow',
2910
+ fontScaleCap: 64,
2911
+ fontSize: 16,
2912
+ fontWeight: '400',
2913
+ letterSpacing: 0,
2914
+ lineHeight: 1.5,
2915
+ textTransform: 'none'
2916
+ }
2917
+ },
2918
+ spacingScale: {
2919
+ appearances: {
2920
+ space: {
2921
+ description: 'Index of the intended position on the spacing scale',
2922
+ type: 'state',
2923
+ values: [
2924
+ 0, 1, 2, 3, 4,
2925
+ 5, 6, 7, 8, 9,
2926
+ 10, 11
2927
+ ]
2928
+ },
2929
+ viewport: {
2930
+ description: 'The size label for the current screen viewport based on the current screen width',
2931
+ type: 'state',
2932
+ values: [ 'xs', 'sm', 'md', 'lg', 'xl' ]
2933
+ }
2934
+ },
2935
+ rules: [
2936
+ { if: { viewport: [ 'lg', 'xl' ] }, tokens: { size: 120 } },
2937
+ { if: { space: 11 }, tokens: { size: 96 } },
2938
+ { if: { space: 10 }, tokens: { size: 80 } },
2939
+ { if: { space: 9 }, tokens: { size: 64 } },
2940
+ { if: { space: 8 }, tokens: { size: 48 } },
2941
+ { if: { space: 7 }, tokens: { size: 40 } },
2942
+ { if: { space: 6 }, tokens: { size: 36 } },
2943
+ { if: { space: 5 }, tokens: { size: 32 } },
2944
+ { if: { space: 4 }, tokens: { size: 24 } },
2945
+ { if: { space: 3 }, tokens: { size: 16 } },
2946
+ { if: { space: 2 }, tokens: { size: 8 } },
2947
+ { if: { space: 1 }, tokens: { size: 4 } },
2948
+ {
2949
+ if: { space: 11, viewport: [ 'lg', 'xl' ] },
2950
+ tokens: { size: 120 }
2951
+ },
2952
+ {
2953
+ if: { space: 10, viewport: [ 'lg', 'xl' ] },
2954
+ tokens: { size: 96 }
2955
+ },
2956
+ {
2957
+ if: { space: 9, viewport: [ 'lg', 'xl' ] },
2958
+ tokens: { size: 72 }
2959
+ },
2960
+ {
2961
+ if: { space: 8, viewport: [ 'lg', 'xl' ] },
2962
+ tokens: { size: 64 }
2963
+ },
2964
+ {
2965
+ if: { space: 7, viewport: [ 'lg', 'xl' ] },
2966
+ tokens: { size: 48 }
2967
+ },
2968
+ {
2969
+ if: { space: 6, viewport: [ 'lg', 'xl' ] },
2970
+ tokens: { size: 40 }
2971
+ },
2972
+ { if: { space: 0 }, tokens: { size: 0 } }
2973
+ ],
2974
+ tokens: { size: 96 }
2975
+ }
2976
+ },
2977
+ metadata: { name: 'allium', package: '@telus-uds/theme-allium' }
2978
+ }