@pepperui/tokens 1.2.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.
@@ -0,0 +1,819 @@
1
+ """pepper_tokens.py — GENERATED from tokens/*.json, do not edit by hand.
2
+
3
+ Read by pptx_export.py so the PPTX palette stops being a hand-kept copy (G13).
4
+ Index it: TOKENS["color"]["blue"]["400"] -> "#2b25d9".
5
+ """
6
+
7
+ TOKENS = {
8
+ "icon-list": {
9
+ "ink": "#6a66e4"
10
+ },
11
+ "insight": {
12
+ "max-width": "1344px"
13
+ },
14
+ "bullet-list": {
15
+ "gap": "8px"
16
+ },
17
+ "chip": {
18
+ "radius": "9999px"
19
+ },
20
+ "table": {
21
+ "header": {
22
+ "bg": "#0c0b41",
23
+ "pill-tint": "#d4d3f7"
24
+ },
25
+ "row": {
26
+ "selected-bg": "#e9e9fb"
27
+ },
28
+ "divider": "#dad9d9"
29
+ },
30
+ "card": {
31
+ "band": "#dad9d9"
32
+ },
33
+ "avatar": {
34
+ "blue": {
35
+ "bg": "#d4d3f7",
36
+ "fg": "#110e56"
37
+ },
38
+ "red": {
39
+ "bg": "#f9d3d2",
40
+ "fg": "#5b0e0d"
41
+ },
42
+ "yellow": {
43
+ "bg": "#fdf3d3",
44
+ "fg": "#634e0f"
45
+ }
46
+ },
47
+ "toggle": {
48
+ "on": {
49
+ "bg": "#544d4d",
50
+ "fg": "#ffffff"
51
+ }
52
+ },
53
+ "tabs": {
54
+ "track": "#f2f2f2"
55
+ },
56
+ "kpi": {
57
+ "tone": {
58
+ "blue": {
59
+ "bg": "#e9e9fb"
60
+ },
61
+ "red": {
62
+ "bg": "#fce9e8"
63
+ },
64
+ "yellow": {
65
+ "bg": "#fef9e9"
66
+ },
67
+ "neutral": {
68
+ "bg": "#f2f2f2"
69
+ }
70
+ },
71
+ "delta": {
72
+ "ring": "#ffffff"
73
+ }
74
+ },
75
+ "nav": {
76
+ "bg": "#231b1b",
77
+ "item": {
78
+ "fg": "#b5b3b3",
79
+ "fg-active": "#ffffff",
80
+ "bg-hover": "#ffffff14",
81
+ "bg-active": "#ffffff29"
82
+ },
83
+ "section": {
84
+ "fg": "#858080"
85
+ }
86
+ },
87
+ "illustration": {
88
+ "shell": "#ffffff",
89
+ "surface": "#f2f2f7",
90
+ "detail": "#dad9d9",
91
+ "screen": "#fbfbfd",
92
+ "deck": "#ffffff",
93
+ "text": "#0b0202",
94
+ "outline": {
95
+ "color": "#0b0202",
96
+ "opacity": 0.85,
97
+ "width": 0.5
98
+ },
99
+ "connector": {
100
+ "color": "#b5b3b3",
101
+ "radius": 0.028
102
+ },
103
+ "arrow": {
104
+ "color": "#6c6666",
105
+ "width": 3,
106
+ "head": {
107
+ "length": 5,
108
+ "angle": 40
109
+ }
110
+ }
111
+ },
112
+ "color": {
113
+ "neutral": {
114
+ "0": "#ffffff",
115
+ "100": "#f2f2f2",
116
+ "200": "#dad9d9",
117
+ "300": "#b5b3b3",
118
+ "400": "#858080",
119
+ "500": "#6c6666",
120
+ "600": "#544d4d",
121
+ "700": "#3b3333",
122
+ "800": "#231b1b",
123
+ "900": "#0b0202",
124
+ "1000": "#000000"
125
+ },
126
+ "blue": {
127
+ "100": "#e9e9fb",
128
+ "200": "#d4d3f7",
129
+ "300": "#6a66e4",
130
+ "400": "#2b25d9",
131
+ "500": "#221dad",
132
+ "600": "#110e56",
133
+ "700": "#0c0b41"
134
+ },
135
+ "red": {
136
+ "100": "#fce9e8",
137
+ "200": "#f9d3d2",
138
+ "300": "#ec6663",
139
+ "400": "#e42521",
140
+ "500": "#b61d1a",
141
+ "600": "#5b0e0d",
142
+ "700": "#440b09"
143
+ },
144
+ "yellow": {
145
+ "100": "#fef9e9",
146
+ "200": "#fdf3d3",
147
+ "300": "#fad567",
148
+ "400": "#f9c426",
149
+ "500": "#c79c1e",
150
+ "600": "#634e0f",
151
+ "700": "#4a3a0b"
152
+ },
153
+ "green": {
154
+ "100": "#d4f2de",
155
+ "400": "#74af36",
156
+ "600": "#1a6b36"
157
+ },
158
+ "status": {
159
+ "danger": "#da4144"
160
+ },
161
+ "light-blue": {
162
+ "50": "#fbfbfd",
163
+ "100": "#f2f2f7"
164
+ },
165
+ "gradient-stop": {
166
+ "pink": "#f24288",
167
+ "orchid": "#ebb8fc",
168
+ "magenta": "#d947d6"
169
+ },
170
+ "alpha": {
171
+ "neutral-800-50": "#231b1b80",
172
+ "white-8": "#ffffff14",
173
+ "white-16": "#ffffff29",
174
+ "black-7": "#00000012",
175
+ "grey-232-49": "#e8e8e87d",
176
+ "white-71": "#ffffffb5"
177
+ }
178
+ },
179
+ "gradient": {
180
+ "blue": "linear-gradient(112deg, #2B25D9 30.59%, #F24288 125.66%)",
181
+ "yellow": "linear-gradient(311deg, #EBB8FC 19.79%, #F9C426 80.81%)",
182
+ "red": "linear-gradient(101deg, #E42521 26.31%, #D947D6 99.31%)"
183
+ },
184
+ "space": {
185
+ "2": "2px",
186
+ "4": "4px",
187
+ "8": "8px",
188
+ "12": "12px",
189
+ "16": "16px",
190
+ "20": "20px",
191
+ "24": "24px",
192
+ "32": "32px",
193
+ "40": "40px",
194
+ "48": "48px",
195
+ "64": "64px",
196
+ "80": "80px"
197
+ },
198
+ "radius": {
199
+ "4": "4px",
200
+ "8": "8px",
201
+ "16": "16px",
202
+ "32": "32px",
203
+ "64": "64px",
204
+ "full": "9999px"
205
+ },
206
+ "font": {
207
+ "family": {
208
+ "poppins": "Poppins, sans-serif",
209
+ "cyrillic": "Onest, sans-serif"
210
+ },
211
+ "weight": {
212
+ "400": 400,
213
+ "500": 500,
214
+ "600": 600,
215
+ "700": 700
216
+ },
217
+ "size": {
218
+ "12": "12px",
219
+ "13": "13px",
220
+ "14": "14px",
221
+ "15": "15px",
222
+ "16": "16px",
223
+ "18": "18px",
224
+ "20": "20px",
225
+ "22": "22px",
226
+ "24": "24px",
227
+ "25": "25px",
228
+ "26": "26px",
229
+ "28": "28px",
230
+ "32": "32px",
231
+ "36": "36px",
232
+ "40": "40px",
233
+ "41": "41px",
234
+ "45": "45px",
235
+ "46": "46px",
236
+ "48": "48px",
237
+ "64": "64px",
238
+ "65": "65px",
239
+ "66": "66px",
240
+ "92": "92px",
241
+ "117": "117px",
242
+ "148": "148px"
243
+ },
244
+ "line-height": {
245
+ "tight": 1.2,
246
+ "normal": 1.4,
247
+ "relaxed": 1.5,
248
+ "loose": 1.7
249
+ },
250
+ "letter-spacing": {
251
+ "normal": "0px",
252
+ "tight": "-0.01em",
253
+ "wide": "0.06em",
254
+ "wider": "0.1em"
255
+ }
256
+ },
257
+ "shadow": {
258
+ "sm": "0px 1px 2px 0px #0000000d",
259
+ "lg": "0px 24px 48px -12px #0000002e",
260
+ "xl": "0px 24px 64px 0px #1510511f",
261
+ "xxl": "0px 32px 64px 0px #00000024"
262
+ },
263
+ "duration": {
264
+ "instant": "50ms",
265
+ "fast": "150ms",
266
+ "medium": "200ms",
267
+ "slow": "250ms",
268
+ "slower": "300ms"
269
+ },
270
+ "easing": {
271
+ "standard": "cubic-bezier(0.25, 0.1, 0.25, 1)",
272
+ "decelerate": "cubic-bezier(0.16, 1, 0.3, 1)"
273
+ },
274
+ "size": {
275
+ "icon": {
276
+ "16": "16px",
277
+ "24": "24px",
278
+ "32": "32px",
279
+ "48": "48px"
280
+ },
281
+ "control": {
282
+ "small": "28px",
283
+ "medium": "36px",
284
+ "large": "44px"
285
+ }
286
+ },
287
+ "breakpoint": {
288
+ "tablet": "768px",
289
+ "desktop": "1024px"
290
+ },
291
+ "container": {
292
+ "web": "1320px",
293
+ "slide": "1792px"
294
+ },
295
+ "canvas": {
296
+ "slide-width": "1920px",
297
+ "slide-height": "1080px",
298
+ "slide-margin": "64px",
299
+ "slide-margin-top": "42px"
300
+ },
301
+ "blur": {
302
+ "nav": "7.3px",
303
+ "panel": "14.6px",
304
+ "card": "6.8px",
305
+ "blob": "150px"
306
+ },
307
+ "text": {
308
+ "default": "#0b0202",
309
+ "muted": "#544d4d",
310
+ "subtle": "#858080",
311
+ "on-accent": "#ffffff",
312
+ "on-inverse": "#ffffff",
313
+ "link": "#2b25d9",
314
+ "disabled": "#b5b3b3",
315
+ "error": "#e42521",
316
+ "caption": "#544d4d"
317
+ },
318
+ "surface": {
319
+ "page": "#ffffff",
320
+ "card": "#f2f2f7",
321
+ "sunken": "#f2f2f2",
322
+ "inverse": "#231b1b",
323
+ "slot": "#ffffff",
324
+ "glass": "#e8e8e87d",
325
+ "glass-strong": "#ffffffb5"
326
+ },
327
+ "ground": {
328
+ "page": {
329
+ "sunken": "#f2f2f2",
330
+ "track": "#f2f2f2"
331
+ },
332
+ "card": {
333
+ "sunken": "#dad9d9",
334
+ "track": "#ffffff"
335
+ }
336
+ },
337
+ "overlay": {
338
+ "scrim": "#231b1b80"
339
+ },
340
+ "border": {
341
+ "default": "#dad9d9",
342
+ "strong": "#858080",
343
+ "focus": "#6a66e4",
344
+ "error": "#e42521"
345
+ },
346
+ "action": {
347
+ "primary": {
348
+ "bg": "#0b0202",
349
+ "bg-hover": "#3b3333",
350
+ "fg": "#ffffff"
351
+ },
352
+ "secondary": {
353
+ "bg": "#ffffff",
354
+ "bg-hover": "#f2f2f2",
355
+ "fg": "#0b0202",
356
+ "border": "#dad9d9"
357
+ },
358
+ "danger": {
359
+ "bg": "#e42521",
360
+ "bg-hover": "#b61d1a",
361
+ "fg": "#ffffff"
362
+ },
363
+ "disabled": {
364
+ "bg": "#f2f2f2",
365
+ "fg": "#b5b3b3"
366
+ }
367
+ },
368
+ "status": {
369
+ "success": {
370
+ "bg": "#d4f2de",
371
+ "fg": "#1a6b36",
372
+ "solid": "#74af36"
373
+ },
374
+ "danger": {
375
+ "bg": "#fce9e8",
376
+ "fg": "#5b0e0d",
377
+ "solid": "#da4144"
378
+ },
379
+ "warning": {
380
+ "bg": "#fef9e9",
381
+ "fg": "#634e0f",
382
+ "solid": "#f9c426"
383
+ },
384
+ "info": {
385
+ "bg": "#e9e9fb",
386
+ "fg": "#110e56",
387
+ "solid": "#2b25d9"
388
+ }
389
+ },
390
+ "tint": {
391
+ "neutral": {
392
+ "bg": "#dad9d9",
393
+ "fg": "#544d4d"
394
+ },
395
+ "blue": {
396
+ "bg": "#d4d3f7",
397
+ "fg": "#6a66e4"
398
+ },
399
+ "red": {
400
+ "bg": "#f9d3d2",
401
+ "fg": "#ec6663"
402
+ },
403
+ "yellow": {
404
+ "bg": "#fad567",
405
+ "fg": "#634e0f"
406
+ },
407
+ "green": {
408
+ "bg": "#d4f2de",
409
+ "fg": "#1a6b36"
410
+ }
411
+ },
412
+ "accent": {
413
+ "blue": {
414
+ "main": "#2b25d9",
415
+ "light": "#6a66e4",
416
+ "lighter": "#d4d3f7",
417
+ "bg": "#e9e9fb",
418
+ "dark": "#0c0b41",
419
+ "on-accent": "#ffffff",
420
+ "heading": "#6a66e4",
421
+ "icon-ink": "#6a66e4",
422
+ "text": "#2b25d9",
423
+ "selected": "#e9e9fb",
424
+ "pill-tint": "#d4d3f7",
425
+ "chart": {
426
+ "1": "#2b25d9",
427
+ "2": "#6a66e4",
428
+ "3": "#d4d3f7",
429
+ "4": "#b5b3b3",
430
+ "5": "#dad9d9"
431
+ },
432
+ "gradient-far": "#f24288",
433
+ "blob-opacity": 0.2
434
+ },
435
+ "red": {
436
+ "main": "#e42521",
437
+ "light": "#ec6663",
438
+ "lighter": "#f9d3d2",
439
+ "bg": "#fce9e8",
440
+ "dark": "#440b09",
441
+ "on-accent": "#ffffff",
442
+ "heading": "#ec6663",
443
+ "icon-ink": "#ec6663",
444
+ "text": "#e42521",
445
+ "selected": "#fce9e8",
446
+ "pill-tint": "#f9d3d2",
447
+ "chart": {
448
+ "1": "#e42521",
449
+ "2": "#ec6663",
450
+ "3": "#f9d3d2",
451
+ "4": "#b5b3b3",
452
+ "5": "#dad9d9"
453
+ },
454
+ "gradient-far": "#d947d6",
455
+ "blob-opacity": 0.2
456
+ },
457
+ "yellow": {
458
+ "main": "#f9c426",
459
+ "light": "#fad567",
460
+ "lighter": "#fdf3d3",
461
+ "bg": "#fef9e9",
462
+ "dark": "#4a3a0b",
463
+ "on-accent": "#0b0202",
464
+ "heading": "#858080",
465
+ "icon-ink": "#f9c426",
466
+ "text": "#0b0202",
467
+ "selected": "#fef9e9",
468
+ "pill-tint": "#fad567",
469
+ "chart": {
470
+ "1": "#f9c426",
471
+ "2": "#858080",
472
+ "3": "#dad9d9",
473
+ "4": "#fad567",
474
+ "5": "#b5b3b3"
475
+ },
476
+ "gradient-far": "#ebb8fc",
477
+ "blob-opacity": 0.35
478
+ },
479
+ "multicolor": {
480
+ "main": "#e42521",
481
+ "light": "#ec6663",
482
+ "lighter": "#f9d3d2",
483
+ "bg": "#fce9e8",
484
+ "dark": "#231b1b",
485
+ "on-accent": "#ffffff",
486
+ "heading": "#858080",
487
+ "icon-ink": "#ec6663",
488
+ "text": "#e42521",
489
+ "selected": "#dad9d9",
490
+ "pill-tint": "#dad9d9",
491
+ "chart": {
492
+ "1": "#e42521",
493
+ "2": "#f9c426",
494
+ "3": "#2b25d9",
495
+ "4": "#b5b3b3",
496
+ "5": "#ec6663"
497
+ },
498
+ "gradient-far": "#d947d6",
499
+ "blob-opacity": 0.2
500
+ }
501
+ },
502
+ "elevation": {
503
+ "flat": "0px 1px 2px 0px #0000000d",
504
+ "card": "0px 24px 48px -12px #0000002e",
505
+ "floating": "0px 24px 64px 0px #1510511f",
506
+ "modal": "0px 32px 64px 0px #00000024"
507
+ },
508
+ "motion": {
509
+ "state": "150ms",
510
+ "move": "200ms",
511
+ "menu": "250ms",
512
+ "easing": "cubic-bezier(0.25, 0.1, 0.25, 1)",
513
+ "easing-enter": "cubic-bezier(0.16, 1, 0.3, 1)"
514
+ },
515
+ "layout": {
516
+ "gutter": "24px",
517
+ "section-gap": "32px",
518
+ "heading-gap": "64px",
519
+ "card-padding": "20px",
520
+ "card-gap": "12px",
521
+ "bullet-gap": "8px",
522
+ "content-width": "1320px",
523
+ "slide-margin": "64px"
524
+ },
525
+ "chart": {
526
+ "text": "#0b0202",
527
+ "grid": "#00000012",
528
+ "rest": "#dad9d9",
529
+ "on-fill": "#ffffff"
530
+ },
531
+ "type": {
532
+ "web-desktop": {
533
+ "display": {
534
+ "large": {
535
+ "fontFamily": "Poppins, sans-serif",
536
+ "fontSize": "148px",
537
+ "fontWeight": 600,
538
+ "lineHeight": 1.2,
539
+ "letterSpacing": "-0.01em"
540
+ },
541
+ "medium": {
542
+ "fontFamily": "Poppins, sans-serif",
543
+ "fontSize": "117px",
544
+ "fontWeight": 600,
545
+ "lineHeight": 1.2,
546
+ "letterSpacing": "-0.01em"
547
+ },
548
+ "small": {
549
+ "fontFamily": "Poppins, sans-serif",
550
+ "fontSize": "92px",
551
+ "fontWeight": 600,
552
+ "lineHeight": 1.2,
553
+ "letterSpacing": "-0.01em"
554
+ }
555
+ },
556
+ "headline": {
557
+ "large": {
558
+ "fontFamily": "Poppins, sans-serif",
559
+ "fontSize": "65px",
560
+ "fontWeight": 600,
561
+ "lineHeight": 1.2,
562
+ "letterSpacing": "0px"
563
+ },
564
+ "medium": {
565
+ "fontFamily": "Poppins, sans-serif",
566
+ "fontSize": "45px",
567
+ "fontWeight": 600,
568
+ "lineHeight": 1.2,
569
+ "letterSpacing": "0px"
570
+ },
571
+ "small": {
572
+ "fontFamily": "Poppins, sans-serif",
573
+ "fontSize": "40px",
574
+ "fontWeight": 400,
575
+ "lineHeight": 1.2,
576
+ "letterSpacing": "0px"
577
+ }
578
+ },
579
+ "title": {
580
+ "large": {
581
+ "fontFamily": "Poppins, sans-serif",
582
+ "fontSize": "36px",
583
+ "fontWeight": 600,
584
+ "lineHeight": 1.2,
585
+ "letterSpacing": "0px"
586
+ },
587
+ "medium": {
588
+ "fontFamily": "Poppins, sans-serif",
589
+ "fontSize": "32px",
590
+ "fontWeight": 600,
591
+ "lineHeight": 1.2,
592
+ "letterSpacing": "0px"
593
+ },
594
+ "small": {
595
+ "fontFamily": "Poppins, sans-serif",
596
+ "fontSize": "28px",
597
+ "fontWeight": 500,
598
+ "lineHeight": 1.4,
599
+ "letterSpacing": "0px"
600
+ }
601
+ },
602
+ "body": {
603
+ "large": {
604
+ "fontFamily": "Poppins, sans-serif",
605
+ "fontSize": "22px",
606
+ "fontWeight": 400,
607
+ "lineHeight": 1.4,
608
+ "letterSpacing": "0px"
609
+ },
610
+ "medium": {
611
+ "fontFamily": "Poppins, sans-serif",
612
+ "fontSize": "18px",
613
+ "fontWeight": 400,
614
+ "lineHeight": 1.4,
615
+ "letterSpacing": "0px"
616
+ },
617
+ "small": {
618
+ "fontFamily": "Poppins, sans-serif",
619
+ "fontSize": "16px",
620
+ "fontWeight": 400,
621
+ "lineHeight": 1.5,
622
+ "letterSpacing": "0px"
623
+ },
624
+ "x-small": {
625
+ "fontFamily": "Poppins, sans-serif",
626
+ "fontSize": "14px",
627
+ "fontWeight": 400,
628
+ "lineHeight": 1.7,
629
+ "letterSpacing": "0px"
630
+ }
631
+ },
632
+ "label": {
633
+ "medium": {
634
+ "fontFamily": "Poppins, sans-serif",
635
+ "fontSize": "12px",
636
+ "fontWeight": 500,
637
+ "lineHeight": 1.4,
638
+ "letterSpacing": "0.1em"
639
+ }
640
+ }
641
+ },
642
+ "web-mobile": {
643
+ "headline": {
644
+ "large": {
645
+ "fontFamily": "Poppins, sans-serif",
646
+ "fontSize": "48px",
647
+ "fontWeight": 600,
648
+ "lineHeight": 1.2,
649
+ "letterSpacing": "0px"
650
+ },
651
+ "medium": {
652
+ "fontFamily": "Poppins, sans-serif",
653
+ "fontSize": "40px",
654
+ "fontWeight": 600,
655
+ "lineHeight": 1.2,
656
+ "letterSpacing": "0px"
657
+ },
658
+ "small": {
659
+ "fontFamily": "Poppins, sans-serif",
660
+ "fontSize": "32px",
661
+ "fontWeight": 400,
662
+ "lineHeight": 1.2,
663
+ "letterSpacing": "0px"
664
+ }
665
+ },
666
+ "title": {
667
+ "large": {
668
+ "fontFamily": "Poppins, sans-serif",
669
+ "fontSize": "32px",
670
+ "fontWeight": 600,
671
+ "lineHeight": 1.2,
672
+ "letterSpacing": "0px"
673
+ },
674
+ "medium": {
675
+ "fontFamily": "Poppins, sans-serif",
676
+ "fontSize": "28px",
677
+ "fontWeight": 600,
678
+ "lineHeight": 1.2,
679
+ "letterSpacing": "0px"
680
+ },
681
+ "small": {
682
+ "fontFamily": "Poppins, sans-serif",
683
+ "fontSize": "25px",
684
+ "fontWeight": 500,
685
+ "lineHeight": 1.4,
686
+ "letterSpacing": "0px"
687
+ }
688
+ },
689
+ "body": {
690
+ "large": {
691
+ "fontFamily": "Poppins, sans-serif",
692
+ "fontSize": "18px",
693
+ "fontWeight": 400,
694
+ "lineHeight": 1.4,
695
+ "letterSpacing": "0px"
696
+ },
697
+ "medium": {
698
+ "fontFamily": "Poppins, sans-serif",
699
+ "fontSize": "16px",
700
+ "fontWeight": 400,
701
+ "lineHeight": 1.4,
702
+ "letterSpacing": "0px"
703
+ },
704
+ "small": {
705
+ "fontFamily": "Poppins, sans-serif",
706
+ "fontSize": "14px",
707
+ "fontWeight": 400,
708
+ "lineHeight": 1.5,
709
+ "letterSpacing": "0px"
710
+ },
711
+ "x-small": {
712
+ "fontFamily": "Poppins, sans-serif",
713
+ "fontSize": "12px",
714
+ "fontWeight": 400,
715
+ "lineHeight": 1.7,
716
+ "letterSpacing": "0px"
717
+ }
718
+ }
719
+ },
720
+ "slide": {
721
+ "display": {
722
+ "small": {
723
+ "fontFamily": "Poppins, sans-serif",
724
+ "fontSize": "64px",
725
+ "fontWeight": 600,
726
+ "lineHeight": 1.2,
727
+ "letterSpacing": "0px"
728
+ }
729
+ },
730
+ "headline": {
731
+ "large": {
732
+ "fontFamily": "Poppins, sans-serif",
733
+ "fontSize": "66px",
734
+ "fontWeight": 600,
735
+ "lineHeight": 1.2,
736
+ "letterSpacing": "-0.01em"
737
+ },
738
+ "medium": {
739
+ "fontFamily": "Poppins, sans-serif",
740
+ "fontSize": "46px",
741
+ "fontWeight": 500,
742
+ "lineHeight": 1.2,
743
+ "letterSpacing": "-0.01em"
744
+ },
745
+ "small": {
746
+ "fontFamily": "Poppins, sans-serif",
747
+ "fontSize": "41px",
748
+ "fontWeight": 400,
749
+ "lineHeight": 1.5,
750
+ "letterSpacing": "0px"
751
+ }
752
+ },
753
+ "title": {
754
+ "large": {
755
+ "fontFamily": "Poppins, sans-serif",
756
+ "fontSize": "36px",
757
+ "fontWeight": 600,
758
+ "lineHeight": 1.2,
759
+ "letterSpacing": "0px"
760
+ },
761
+ "small": {
762
+ "fontFamily": "Poppins, sans-serif",
763
+ "fontSize": "26px",
764
+ "fontWeight": 500,
765
+ "lineHeight": 1.4,
766
+ "letterSpacing": "0px"
767
+ }
768
+ },
769
+ "body": {
770
+ "large": {
771
+ "fontFamily": "Poppins, sans-serif",
772
+ "fontSize": "26px",
773
+ "fontWeight": 400,
774
+ "lineHeight": 1.4,
775
+ "letterSpacing": "0px"
776
+ },
777
+ "medium": {
778
+ "fontFamily": "Poppins, sans-serif",
779
+ "fontSize": "20px",
780
+ "fontWeight": 400,
781
+ "lineHeight": 1.4,
782
+ "letterSpacing": "0px"
783
+ },
784
+ "small": {
785
+ "fontFamily": "Poppins, sans-serif",
786
+ "fontSize": "18px",
787
+ "fontWeight": 500,
788
+ "lineHeight": 1.4,
789
+ "letterSpacing": "0px"
790
+ }
791
+ },
792
+ "label": {
793
+ "medium": {
794
+ "fontFamily": "Poppins, sans-serif",
795
+ "fontSize": "15px",
796
+ "fontWeight": 400,
797
+ "lineHeight": 1.4,
798
+ "letterSpacing": "0px"
799
+ }
800
+ }
801
+ }
802
+ }
803
+ }
804
+
805
+
806
+ def color(ramp: str, step: str) -> str:
807
+ """TOKENS["color"][ramp][step], with a readable error when it is missing."""
808
+ try:
809
+ return TOKENS["color"][ramp][str(step)]
810
+ except KeyError:
811
+ raise KeyError(f"no such colour: color.{ramp}.{step}") from None
812
+
813
+
814
+ def accent(mode: str, role: str = "main") -> str:
815
+ """One of the four accent modes: accent("yellow", "heading") -> "#858080"."""
816
+ try:
817
+ return TOKENS["accent"][mode][role]
818
+ except KeyError:
819
+ raise KeyError(f"no such accent: accent.{mode}.{role}") from None