@putdotio/design 2.0.2 → 3.0.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/DESIGN.md CHANGED
@@ -66,6 +66,18 @@ put.io is a content-agnostic cloud file product. The interface should feel premi
66
66
 
67
67
  The canonical source for tokens is DTCG-compatible JSON in `tokens/`. Generated artifacts in `dist/` and `system/tokens.css` are outputs. This file explains how to use those tokens.
68
68
 
69
+ ## Binding Tiers
70
+
71
+ A web-rendered mock is never a native spec. Every surface binds to the system at one of five tiers, and every specimen card in `system/preview/` declares its tier in a strip above the artboard (`system/preview/_tier.css`; if the wording here changes, change that file in the same PR).
72
+
73
+ - **Tier 0 — Foundations.** The token graph. Binds every tier, values only, never a component recipe.
74
+ - **Tier 1 — www · app · auth.** The full design system: the component library and `system/components.css` recipes. The recipes are the contract here, and only here.
75
+ - **Tier 2 — iOS · iPadOS · tvOS · watchOS · Android · Android TV.** Tokens only. Every component, composition, and page comes from the platform's human interface guidelines; the cards document how a stock control receives put.io tokens, never how to rebuild one.
76
+ - **Tier 3 — Roku.** Tier-2 token inheritance, plus room for put.io conventions in custom SceneGraph components.
77
+ - **Tier 4 — tv.put.io · Tizen · webOS.** The design system as on web, restrained to a generic, calm, list-first 10-foot interface.
78
+
79
+ A tier-1/3/4 card is a Component — put.io owns the recipe. A tier-2 card is an Element — the platform owns the control. Per-platform binding contracts live in `platforms/<platform>/DESIGN.md`. One rule holds on every tier: every file-type icon is brand yellow, Phosphor, never a text glyph.
80
+
69
81
  ## Colors
70
82
 
71
83
  Yellow `#FDCE45` is the resting `--yellow-solid` brand value in both light and dark modes. Use it for the put.io brand mark, primary action fill, folder/file emphasis, progress, and focus affordances. Use `--yellow-solid-hover` for primary button hover feedback; do not invent alternate yellows, gradient yellow into a different accent, or use yellow as foreground text on light surfaces.
@@ -104,6 +116,18 @@ TV is the exception: every 10-foot surface — list rows, buttons, sheets, cards
104
116
 
105
117
  ## Components
106
118
 
119
+ The component recipes below and in `system/components.css` are the **web
120
+ binding** of the token graph, and they bind the web surfaces in full. The other
121
+ tiers inherit differently: native apps (SwiftUI, Compose) consume the token
122
+ *values* and build every component from their platform's human interface
123
+ guidelines — stock controls themed with these tokens, never re-drawn web
124
+ recipes (first adopter: `DESIGN.md` in
125
+ [putio-ios](https://github.com/putdotio/putio-ios)); Roku inherits the tokens
126
+ with more room for put.io conventions in custom SceneGraph components; the
127
+ web-based TV app applies this system restrained to the product's generic
128
+ list-first 10-foot interface, which every TV surface — including the native
129
+ ones, within their platform conventions — treats as the shared family look.
130
+
107
131
  Buttons have three tiers on one axis: emphasis. **Primary** is the brand fill — `--button-primary-bg` at rest, `--button-primary-bg-hover` on hover so the CTA never feels inert, label `--button-primary-fg`. Yellow is reserved for primary commands, and an action group carries at most one. **Secondary** is a quiet fill: `--button-default-bg` (aliased as `--button-secondary-bg`) plus a border at `--border`, with hover stepping both (`--button-default-bg-hover`, `--border-hover`). Because it fills, it reads to a hard edge exactly like the primary, so the two compare safely side by side. **Ghost** is text only — no fill, no border. `--button-ghost-fg` at rest; hover paints `--button-ghost-bg-hover` behind the label and lifts it to `--button-ghost-fg-hover`. The label lift is mandatory: the faint fill is never the only hover cue. Disabled drops the colour to `--solid` at full opacity rather than fading the box. Use ghost for anything quieter than a filled secondary — a header `Log in`, toolbar text actions, `Cancel` beside a filled confirm. An icon-only ghost is the quiet icon button, on the same tokens.
108
132
 
109
133
  Outline is not a tier. The system ships no transparent-background bordered button, and consumers must not hand-roll one. The pairing rule behind that: never place a border-only button in the same action group as a solid fill. At identical box heights the outlined shape reads smaller, because a solid resolves to a hard edge while a low-contrast hairline resolves to a soft one, and the eye compares the two extents differently. It is worst on dark surfaces, where a 15%-white hairline is barely visible at all. If a bordered treatment must sit near a fill, it must itself fill — the secondary tier — and carry its border at `--border`-step contrast, never a sub-20% hairline on transparent.
@@ -118,7 +142,7 @@ Form fields use the shared `--field-*` aliases: `--field-bg` for the fill, `--fi
118
142
 
119
143
  TV components are list-first and focus-first. A TV app is still a file browser, not a poster wall. Roku, native Apple, Android, and web TV repos should consume the generic tokens and generate their own platform bindings.
120
144
 
121
- TV surfaces are solid token colors — no translucent materials and no blur. Focus is expressed as a fill, never a lift: rows go transparent to `--component-bg-active`, and buttons step both their fill and their border. Navigation is a Home hub that pushes full screens onto a stack; there is no tab bar. Menus are centred modals, not popovers anchored to a trigger.
145
+ TV surfaces are solid token colors — no translucent materials and no blur. Focus is expressed as a fill, never a lift: rows go transparent to `--component-bg-active`, and buttons step both their fill and their border. Navigation is a Home hub that pushes full screens onto a stack; there is no tab bar. Menus are centred modals, not popovers anchored to a trigger. These focus and material rules bind the web TV and Roku surfaces; a native TV binding follows its platform's own control conventions where the platform owns focus — Apple tvOS buttons use the system focus treatment (adopted 2026-08) while non-control TV surfaces stay solid everywhere.
122
146
 
123
147
  The 10-foot scale lives in the `tv` token group — type steps, spacing ramp, overscan ratios, radius, and z-indices — carried as data for platform adapters rather than emitted into web CSS. Overscan ratios declare their viewport axis: multiply `tv.overscan.x` by viewport width and `tv.overscan.y` by viewport height, then compose screen padding locally with the spacing tokens. Two rules do not cross over: TV has no mono face, and TV stacks `tv.z.overlay` above `tv.z.toast`, the reverse of the web `--z-*` order. Emit the two scales separately. Cite the `tv` group by its graph path, never as `--tv-*`: those names are read from the DTCG artifacts by platform adapters and are deliberately absent from `dist/css/tokens.css`, so CSS-variable syntax would promise a `var()` that resolves to nothing.
124
148
 
@@ -96,6 +96,34 @@
96
96
  --sheet-border: hsl(0, 0%, 88.7%);
97
97
  --sheet-shadow: 0 16px 40px hsla(0, 0%, 0%, 0.12);
98
98
  --sheet-scrim: hsla(0, 0%, 0%, 0.439);
99
+ --alert-info-bg: hsl(0, 0%, 97.3%);
100
+ --alert-info-border: hsl(0, 0%, 88.7%);
101
+ --alert-info-text: hsl(0, 0%, 9.0%);
102
+ --alert-info-body: hsl(0, 0%, 43.5%);
103
+ --alert-info-icon: hsl(0, 0%, 43.5%);
104
+ --alert-brand-bg: hsl(52, 100%, 88%);
105
+ --alert-brand-border: hsl(45, 67%, 67%);
106
+ --alert-brand-text: hsl(43, 32%, 21%);
107
+ --alert-brand-body: hsl(46, 100%, 27%);
108
+ --alert-brand-icon: hsl(46, 100%, 27%);
109
+ --alert-success-bg: hsl(135, 53%, 93%);
110
+ --alert-success-border: hsl(140, 39%, 68%);
111
+ --alert-success-text: hsl(146, 35%, 17%);
112
+ --alert-success-body: hsl(155, 100%, 25%);
113
+ --alert-success-icon: hsl(155, 100%, 25%);
114
+ --alert-danger-bg: hsl(2, 100%, 96%);
115
+ --alert-danger-border: hsl(2, 81%, 80%);
116
+ --alert-danger-text: hsl(358, 62%, 24%);
117
+ --alert-danger-body: hsl(355, 64%, 49%);
118
+ --alert-danger-icon: hsl(355, 64%, 49%);
119
+ --slider-track: hsl(0, 0%, 90.9%);
120
+ --slider-buffer: hsl(0, 0%, 85.8%);
121
+ --slider-fill-disabled: hsl(0, 0%, 43.5%);
122
+ --pagination-item-text: hsl(0, 0%, 43.5%);
123
+ --pagination-item-text-active: hsl(0, 0%, 9.0%);
124
+ --pagination-item-bg-hover: hsl(0, 0%, 93.0%);
125
+ --pagination-item-bg-active: hsl(0, 0%, 90.9%);
126
+ --pagination-item-border-active: hsl(0, 0%, 85.8%);
99
127
  --bg: hsl(0, 0%, 99.0%);
100
128
  --bg-secondary: hsl(0, 0%, 97.3%);
101
129
  --component-bg: hsl(0, 0%, 95.1%);
@@ -197,12 +225,30 @@
197
225
  --destructive-foreground: hsl(0, 0%, 100%);
198
226
  --ring: hsla(47, 100%, 65%, 0.35);
199
227
  --file-row-icon: hsl(44.7, 97.9%, 63.1%);
228
+ --notification-badge-bg: hsl(358, 70%, 45%);
229
+ --notification-badge-fg: hsl(0, 0%, 100%);
200
230
  --menu-radius: 8px;
201
231
  --menu-item-height: 32px;
202
232
  --palette-width: 560px;
203
233
  --palette-input-height: 48px;
204
234
  --palette-item-height: 36px;
205
235
  --sheet-width: 380px;
236
+ --avatar-yellow: hsl(44.7, 97.9%, 63.1%);
237
+ --avatar-green: hsl(151, 55%, 33%);
238
+ --avatar-red: hsl(358, 55%, 46%);
239
+ --avatar-blue: hsl(211, 55%, 46%);
240
+ --avatar-purple: hsl(280, 48%, 46%);
241
+ --avatar-teal: hsl(168, 55%, 33%);
242
+ --avatar-orange: hsl(28, 80%, 55%);
243
+ --avatar-fg: hsl(0, 0%, 100%);
244
+ --avatar-fg-warm: hsl(38, 65%, 10%);
245
+ --alert-radius: 6px;
246
+ --slider-fill: hsl(44.7, 97.9%, 63.1%);
247
+ --slider-knob: hsl(44.7, 97.9%, 63.1%);
248
+ --slider-track-height: 4px;
249
+ --slider-knob-size: 14px;
250
+ --slider-hit-height: 20px;
251
+ --pagination-item-size: 30px;
206
252
  --yellow-solid: hsl(44.7, 97.9%, 63.1%);
207
253
  --shadow-color: hsl(0, 0%, 78.0%);
208
254
  --shadow: hsl(0, 0%, 78.0%);
@@ -357,6 +403,34 @@
357
403
  --sheet-border: hsl(0, 0%, 20.5%);
358
404
  --sheet-shadow: 0 16px 40px hsla(0, 0%, 0%, 0.6);
359
405
  --sheet-scrim: hsla(0, 0%, 0%, 0.565);
406
+ --alert-info-bg: hsl(0, 0%, 11.0%);
407
+ --alert-info-border: hsl(0, 0%, 20.5%);
408
+ --alert-info-text: hsl(0, 0%, 93.0%);
409
+ --alert-info-body: hsl(0, 0%, 62.8%);
410
+ --alert-info-icon: hsl(0, 0%, 62.8%);
411
+ --alert-brand-bg: hsl(45, 70%, 9%);
412
+ --alert-brand-border: hsl(45, 53%, 26%);
413
+ --alert-brand-text: hsl(46, 89%, 86%);
414
+ --alert-brand-body: hsl(45, 100%, 64%);
415
+ --alert-brand-icon: hsl(45, 100%, 64%);
416
+ --alert-success-bg: hsl(151, 35%, 13%);
417
+ --alert-success-border: hsl(146, 41%, 29%);
418
+ --alert-success-text: hsl(142, 71%, 82%);
419
+ --alert-success-body: hsl(146, 56%, 60%);
420
+ --alert-success-icon: hsl(146, 56%, 60%);
421
+ --alert-danger-bg: hsl(0, 55%, 15%);
422
+ --alert-danger-border: hsl(0, 46%, 38%);
423
+ --alert-danger-text: hsl(5, 100%, 91%);
424
+ --alert-danger-body: hsl(2, 100%, 77%);
425
+ --alert-danger-icon: hsl(2, 100%, 77%);
426
+ --slider-track: hsl(0, 0%, 17.9%);
427
+ --slider-buffer: hsl(0, 0%, 24.3%);
428
+ --slider-fill-disabled: hsl(0, 0%, 62.8%);
429
+ --pagination-item-text: hsl(0, 0%, 62.8%);
430
+ --pagination-item-text-active: hsl(0, 0%, 93.0%);
431
+ --pagination-item-bg-hover: hsl(0, 0%, 15.8%);
432
+ --pagination-item-bg-active: hsl(0, 0%, 17.9%);
433
+ --pagination-item-border-active: hsl(0, 0%, 24.3%);
360
434
  --bg: hsl(0, 0%, 8.5%);
361
435
  --bg-secondary: hsl(0, 0%, 11.0%);
362
436
  --component-bg: hsl(0, 0%, 13.6%);
@@ -315,6 +315,15 @@
315
315
  "dangerForeground": {
316
316
  "$type": "color",
317
317
  "$value": "hsl(358, 62%, 24%)"
318
+ },
319
+ "badgeBackground": {
320
+ "$type": "color",
321
+ "$value": "hsl(358, 70%, 45%)",
322
+ "$description": "Unread count disc — darkened red so white numerals clear AA at 9px. Fixed in both modes."
323
+ },
324
+ "badgeForeground": {
325
+ "$type": "color",
326
+ "$value": "hsl(0, 0%, 100%)"
318
327
  }
319
328
  },
320
329
  "menu": {
@@ -426,6 +435,197 @@
426
435
  "$value": "380px",
427
436
  "$description": "Fixed on web. Touch surfaces use a bottom sheet instead."
428
437
  }
438
+ },
439
+ "avatar": {
440
+ "yellow": {
441
+ "$type": "color",
442
+ "$value": "hsl(44.7, 97.9%, 63.1%)",
443
+ "$description": "Initial-on-color avatar palette. Fixed in both modes; the chip carries its own contrast."
444
+ },
445
+ "green": {
446
+ "$type": "color",
447
+ "$value": "hsl(151, 55%, 33%)"
448
+ },
449
+ "red": {
450
+ "$type": "color",
451
+ "$value": "hsl(358, 55%, 46%)"
452
+ },
453
+ "blue": {
454
+ "$type": "color",
455
+ "$value": "hsl(211, 55%, 46%)"
456
+ },
457
+ "purple": {
458
+ "$type": "color",
459
+ "$value": "hsl(280, 48%, 46%)"
460
+ },
461
+ "teal": {
462
+ "$type": "color",
463
+ "$value": "hsl(168, 55%, 33%)"
464
+ },
465
+ "orange": {
466
+ "$type": "color",
467
+ "$value": "hsl(28, 80%, 55%)"
468
+ },
469
+ "foreground": {
470
+ "$type": "color",
471
+ "$value": "hsl(0, 0%, 100%)",
472
+ "$description": "White initials — every palette entry except yellow and orange."
473
+ },
474
+ "foregroundWarm": {
475
+ "$type": "color",
476
+ "$value": "hsl(38, 65%, 10%)",
477
+ "$description": "Warm dark initials on yellow and orange."
478
+ }
479
+ },
480
+ "alert": {
481
+ "radius": {
482
+ "$type": "dimension",
483
+ "$value": "6px",
484
+ "$description": "Inline, in-page messaging. Persists until the condition clears — a toast does not."
485
+ },
486
+ "infoBackground": {
487
+ "$type": "color",
488
+ "$value": "hsl(0, 0%, 97.3%)"
489
+ },
490
+ "infoBorder": {
491
+ "$type": "color",
492
+ "$value": "hsl(0, 0%, 88.7%)"
493
+ },
494
+ "infoText": {
495
+ "$type": "color",
496
+ "$value": "hsl(0, 0%, 9.0%)"
497
+ },
498
+ "infoBody": {
499
+ "$type": "color",
500
+ "$value": "hsl(0, 0%, 43.5%)"
501
+ },
502
+ "infoIcon": {
503
+ "$type": "color",
504
+ "$value": "hsl(0, 0%, 43.5%)"
505
+ },
506
+ "brandBackground": {
507
+ "$type": "color",
508
+ "$value": "hsl(52, 100%, 88%)"
509
+ },
510
+ "brandBorder": {
511
+ "$type": "color",
512
+ "$value": "hsl(45, 67%, 67%)"
513
+ },
514
+ "brandText": {
515
+ "$type": "color",
516
+ "$value": "hsl(43, 32%, 21%)"
517
+ },
518
+ "brandBody": {
519
+ "$type": "color",
520
+ "$value": "hsl(46, 100%, 27%)"
521
+ },
522
+ "brandIcon": {
523
+ "$type": "color",
524
+ "$value": "hsl(46, 100%, 27%)"
525
+ },
526
+ "successBackground": {
527
+ "$type": "color",
528
+ "$value": "hsl(135, 53%, 93%)"
529
+ },
530
+ "successBorder": {
531
+ "$type": "color",
532
+ "$value": "hsl(140, 39%, 68%)"
533
+ },
534
+ "successText": {
535
+ "$type": "color",
536
+ "$value": "hsl(146, 35%, 17%)"
537
+ },
538
+ "successBody": {
539
+ "$type": "color",
540
+ "$value": "hsl(155, 100%, 25%)"
541
+ },
542
+ "successIcon": {
543
+ "$type": "color",
544
+ "$value": "hsl(155, 100%, 25%)"
545
+ },
546
+ "dangerBackground": {
547
+ "$type": "color",
548
+ "$value": "hsl(2, 100%, 96%)"
549
+ },
550
+ "dangerBorder": {
551
+ "$type": "color",
552
+ "$value": "hsl(2, 81%, 80%)"
553
+ },
554
+ "dangerText": {
555
+ "$type": "color",
556
+ "$value": "hsl(358, 62%, 24%)"
557
+ },
558
+ "dangerBody": {
559
+ "$type": "color",
560
+ "$value": "hsl(355, 64%, 49%)"
561
+ },
562
+ "dangerIcon": {
563
+ "$type": "color",
564
+ "$value": "hsl(355, 64%, 49%)"
565
+ }
566
+ },
567
+ "slider": {
568
+ "track": {
569
+ "$type": "color",
570
+ "$value": "hsl(0, 0%, 90.9%)",
571
+ "$description": "Seek, volume, stepped numeric. The buffered band is what makes it a scrubber."
572
+ },
573
+ "buffer": {
574
+ "$type": "color",
575
+ "$value": "hsl(0, 0%, 85.8%)"
576
+ },
577
+ "fill": {
578
+ "$type": "color",
579
+ "$value": "hsl(44.7, 97.9%, 63.1%)"
580
+ },
581
+ "knob": {
582
+ "$type": "color",
583
+ "$value": "hsl(44.7, 97.9%, 63.1%)"
584
+ },
585
+ "fillDisabled": {
586
+ "$type": "color",
587
+ "$value": "hsl(0, 0%, 43.5%)"
588
+ },
589
+ "trackHeight": {
590
+ "$type": "dimension",
591
+ "$value": "4px"
592
+ },
593
+ "knobSize": {
594
+ "$type": "dimension",
595
+ "$value": "14px"
596
+ },
597
+ "hitHeight": {
598
+ "$type": "dimension",
599
+ "$value": "20px",
600
+ "$description": "44px on touch — the knob grows, the track does not."
601
+ }
602
+ },
603
+ "pagination": {
604
+ "itemSize": {
605
+ "$type": "dimension",
606
+ "$value": "30px",
607
+ "$description": "Numbered paging. Load-more and infinite scroll carry no chrome of their own."
608
+ },
609
+ "itemText": {
610
+ "$type": "color",
611
+ "$value": "hsl(0, 0%, 43.5%)"
612
+ },
613
+ "itemTextActive": {
614
+ "$type": "color",
615
+ "$value": "hsl(0, 0%, 9.0%)"
616
+ },
617
+ "itemBackgroundHover": {
618
+ "$type": "color",
619
+ "$value": "hsl(0, 0%, 93.0%)"
620
+ },
621
+ "itemBackgroundActive": {
622
+ "$type": "color",
623
+ "$value": "hsl(0, 0%, 90.9%)"
624
+ },
625
+ "itemBorderActive": {
626
+ "$type": "color",
627
+ "$value": "hsl(0, 0%, 85.8%)"
628
+ }
429
629
  }
430
630
  },
431
631
  "color": {
package/dist/tokens.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  // Do not edit directly. Generated from tokens/**/*.tokens.json.
2
2
 
3
- export type PutioTokenName = "component.button.primary.background" | "component.button.primary.backgroundHover" | "component.button.primary.backgroundHoverDark" | "component.button.primary.foreground" | "component.button.primary.radius" | "component.button.secondary.background" | "component.button.secondary.backgroundDark" | "component.button.secondary.foreground" | "component.button.secondary.foregroundDark" | "component.button.secondary.backgroundHover" | "component.button.secondary.backgroundHoverDark" | "component.button.success.background" | "component.button.success.backgroundDark" | "component.button.success.backgroundHover" | "component.button.success.backgroundHoverDark" | "component.button.success.foreground" | "component.button.danger.background" | "component.button.danger.backgroundDark" | "component.button.danger.backgroundHover" | "component.button.danger.backgroundHoverDark" | "component.button.danger.foreground" | "component.button.info.background" | "component.button.info.backgroundDark" | "component.button.info.backgroundHover" | "component.button.info.backgroundHoverDark" | "component.button.info.foreground" | "component.button.info.foregroundDark" | "component.button.default.background" | "component.button.default.backgroundDark" | "component.button.default.backgroundHover" | "component.button.default.backgroundHoverDark" | "component.button.default.foreground" | "component.button.default.foregroundDark" | "component.button.ghost.background" | "component.button.ghost.foreground" | "component.button.ghost.foregroundDark" | "component.button.ghost.foregroundHover" | "component.button.ghost.foregroundHoverDark" | "component.button.ghost.backgroundHover" | "component.button.ghost.backgroundHoverDark" | "component.button.height" | "component.button.heightMd" | "component.button.heightSm" | "component.button.heightXs" | "component.button.paddingX" | "component.button.paddingXXs" | "component.button.labelSize" | "component.button.labelSizeXs" | "component.button.tracking" | "component.button.trackingMd" | "component.button.trackingSm" | "component.button.trackingXs" | "component.button.iconSize" | "component.button.gap" | "component.nav.height" | "component.nav.heightCompact" | "component.nav.ctaHeight" | "component.input.background" | "component.input.backgroundDark" | "component.input.border" | "component.input.borderDark" | "component.input.radius" | "component.input.borderHover" | "component.input.borderHoverDark" | "component.input.borderFocus" | "component.input.borderFocusDark" | "component.input.ring" | "component.input.ringDark" | "component.input.text" | "component.input.textDark" | "component.input.placeholder" | "component.input.placeholderDark" | "component.field.background" | "component.field.backgroundDark" | "component.field.backgroundDisabled" | "component.field.backgroundDisabledDark" | "component.field.border" | "component.field.borderDark" | "component.field.borderHover" | "component.field.borderHoverDark" | "component.field.borderFocus" | "component.field.borderFocusDark" | "component.field.text" | "component.field.textDark" | "component.field.placeholder" | "component.field.placeholderDark" | "component.field.radius" | "component.field.ring" | "component.field.ringDark" | "component.panel.background" | "component.panel.backgroundDark" | "component.panel.border" | "component.panel.borderDark" | "component.panel.radius" | "component.panel.shadow" | "component.panel.shadowDark" | "component.alias.background" | "component.alias.backgroundDark" | "component.alias.foreground" | "component.alias.foregroundDark" | "component.alias.foregroundMuted" | "component.alias.foregroundMutedDark" | "component.alias.primary" | "component.alias.primaryForeground" | "component.alias.success" | "component.alias.successDark" | "component.alias.successForeground" | "component.alias.destructive" | "component.alias.destructiveDark" | "component.alias.destructiveForeground" | "component.alias.invertForeground" | "component.alias.invertForegroundDark" | "component.alias.solidForeground" | "component.alias.solidForegroundDark" | "component.alias.muted" | "component.alias.mutedDark" | "component.alias.mutedForeground" | "component.alias.mutedForegroundDark" | "component.alias.accent" | "component.alias.accentDark" | "component.alias.accentForeground" | "component.alias.accentForegroundDark" | "component.alias.card" | "component.alias.cardDark" | "component.alias.cardForeground" | "component.alias.cardForegroundDark" | "component.alias.popover" | "component.alias.popoverDark" | "component.alias.popoverForeground" | "component.alias.popoverForegroundDark" | "component.alias.input" | "component.alias.inputDark" | "component.alias.ring" | "component.fileRow.background" | "component.fileRow.backgroundDark" | "component.fileRow.hoverBackground" | "component.fileRow.hoverBackgroundDark" | "component.fileRow.activeBackground" | "component.fileRow.activeBackgroundDark" | "component.fileRow.border" | "component.fileRow.borderDark" | "component.fileRow.icon" | "component.notification.infoBackground" | "component.notification.infoBackgroundDark" | "component.notification.dangerBackground" | "component.notification.dangerBackgroundDark" | "component.notification.background" | "component.notification.backgroundDark" | "component.notification.border" | "component.notification.borderDark" | "component.notification.foreground" | "component.notification.foregroundDark" | "component.notification.icon" | "component.notification.iconDark" | "component.notification.successBackground" | "component.notification.successBackgroundDark" | "component.notification.successBorder" | "component.notification.successBorderDark" | "component.notification.successForeground" | "component.notification.successForegroundDark" | "component.notification.dangerBorder" | "component.notification.dangerBorderDark" | "component.notification.dangerForeground" | "component.notification.dangerForegroundDark" | "component.menu.background" | "component.menu.backgroundDark" | "component.menu.border" | "component.menu.borderDark" | "component.menu.radius" | "component.menu.shadow" | "component.menu.shadowDark" | "component.menu.itemBackgroundHover" | "component.menu.itemBackgroundHoverDark" | "component.menu.itemText" | "component.menu.itemTextDark" | "component.menu.itemIcon" | "component.menu.itemIconDark" | "component.menu.itemShortcut" | "component.menu.itemShortcutDark" | "component.menu.itemDangerText" | "component.menu.itemDangerTextDark" | "component.menu.itemDangerBackgroundHover" | "component.menu.itemDangerBackgroundHoverDark" | "component.menu.itemHeight" | "component.menu.separator" | "component.menu.separatorDark" | "component.menu.label" | "component.menu.labelDark" | "component.palette.background" | "component.palette.backgroundDark" | "component.palette.border" | "component.palette.borderDark" | "component.palette.shadow" | "component.palette.shadowDark" | "component.palette.scrim" | "component.palette.scrimDark" | "component.palette.width" | "component.palette.inputHeight" | "component.palette.itemHeight" | "component.palette.itemBackgroundActive" | "component.palette.itemBackgroundActiveDark" | "component.palette.groupLabel" | "component.palette.groupLabelDark" | "component.palette.itemMeta" | "component.palette.itemMetaDark" | "component.sheet.background" | "component.sheet.backgroundDark" | "component.sheet.border" | "component.sheet.borderDark" | "component.sheet.shadow" | "component.sheet.shadowDark" | "component.sheet.scrim" | "component.sheet.scrimDark" | "component.sheet.width" | "context.tv.text.primary" | "context.tv.text.secondary" | "context.tv.text.tertiary" | "context.tv.channelArt.production.posterBackground" | "context.tv.channelArt.production.splashBackground" | "context.tv.channelArt.development.background" | "context.tv.channelArt.development.accent" | "context.tv.channelArt.development.grid" | "context.tv.channelArt.lab.background" | "context.tv.channelArt.lab.foreground" | "context.tv.channelArt.lab.accent" | "tv.text.heading" | "tv.text.label" | "tv.text.body" | "tv.text.caption" | "tv.text.smol" | "tv.fontWeight.regular" | "tv.fontWeight.medium" | "tv.space.xxs" | "tv.space.xs" | "tv.space.sm" | "tv.space.md" | "tv.space.lg" | "tv.space.xl" | "tv.space.xxl" | "tv.overscan.x" | "tv.overscan.y" | "tv.radius" | "tv.z.modal" | "tv.z.toast" | "tv.z.overlay" | "color.brand.yellow" | "color.neutral.light.bg" | "color.neutral.light.bgSecondary" | "color.neutral.light.componentBg" | "color.neutral.light.componentBgHover" | "color.neutral.light.componentBgActive" | "color.neutral.light.line" | "color.neutral.light.border" | "color.neutral.light.borderHover" | "color.neutral.light.solid" | "color.neutral.light.solidHover" | "color.neutral.light.textSecondary" | "color.neutral.light.text" | "color.neutral.dark.bg" | "color.neutral.dark.bgSecondary" | "color.neutral.dark.componentBg" | "color.neutral.dark.componentBgHover" | "color.neutral.dark.componentBgActive" | "color.neutral.dark.line" | "color.neutral.dark.border" | "color.neutral.dark.borderHover" | "color.neutral.dark.solid" | "color.neutral.dark.solidHover" | "color.neutral.dark.textSecondary" | "color.neutral.dark.text" | "color.green.light.bg" | "color.green.light.bgSecondary" | "color.green.light.componentBg" | "color.green.light.componentBgHover" | "color.green.light.componentBgActive" | "color.green.light.line" | "color.green.light.border" | "color.green.light.borderHover" | "color.green.light.solid" | "color.green.light.solidHover" | "color.green.light.textSecondary" | "color.green.light.text" | "color.green.dark.bg" | "color.green.dark.bgSecondary" | "color.green.dark.componentBg" | "color.green.dark.componentBgHover" | "color.green.dark.componentBgActive" | "color.green.dark.line" | "color.green.dark.border" | "color.green.dark.borderHover" | "color.green.dark.solid" | "color.green.dark.solidHover" | "color.green.dark.textSecondary" | "color.green.dark.text" | "color.red.light.bg" | "color.red.light.bgSecondary" | "color.red.light.componentBg" | "color.red.light.componentBgHover" | "color.red.light.componentBgActive" | "color.red.light.line" | "color.red.light.border" | "color.red.light.borderHover" | "color.red.light.solid" | "color.red.light.solidHover" | "color.red.light.textSecondary" | "color.red.light.text" | "color.red.dark.bg" | "color.red.dark.bgSecondary" | "color.red.dark.componentBg" | "color.red.dark.componentBgHover" | "color.red.dark.componentBgActive" | "color.red.dark.line" | "color.red.dark.border" | "color.red.dark.borderHover" | "color.red.dark.solid" | "color.red.dark.solidHover" | "color.red.dark.textSecondary" | "color.red.dark.text" | "color.yellow.light.bg" | "color.yellow.light.bgSecondary" | "color.yellow.light.componentBg" | "color.yellow.light.componentBgHover" | "color.yellow.light.componentBgActive" | "color.yellow.light.line" | "color.yellow.light.border" | "color.yellow.light.borderHover" | "color.yellow.light.solidHover" | "color.yellow.light.textSecondary" | "color.yellow.light.text" | "color.yellow.dark.bg" | "color.yellow.dark.bgSecondary" | "color.yellow.dark.componentBg" | "color.yellow.dark.componentBgHover" | "color.yellow.dark.componentBgActive" | "color.yellow.dark.line" | "color.yellow.dark.border" | "color.yellow.dark.borderHover" | "color.yellow.dark.solidHover" | "color.yellow.dark.textSecondary" | "color.yellow.dark.text" | "color.transfer.light.lime3" | "color.transfer.dark.lime3" | "elevation.shadowColor" | "elevation.color" | "elevation.sm" | "elevation.md" | "elevation.lg" | "elevation.focusColor" | "elevation.focus" | "typography.fontFamily.sans" | "typography.fontFamily.display" | "typography.fontFamily.mono" | "typography.fontSize.xs" | "typography.fontSize.sm" | "typography.fontSize.base" | "typography.fontSize.md" | "typography.fontSize.lg" | "typography.fontSize.xl" | "typography.fontSize.2xl" | "typography.fontSize.3xl" | "typography.fontSize.4xl" | "typography.fontSize.display" | "typography.lineHeight.tight" | "typography.lineHeight.snug" | "typography.lineHeight.normal" | "typography.lineHeight.loose" | "typography.fontWeight.regular" | "typography.fontWeight.medium" | "typography.fontWeight.bold" | "typography.fontWeight.black" | "typography.letterSpacing.tight" | "typography.letterSpacing.normal" | "typography.letterSpacing.wide" | "typography.letterSpacing.uppercase" | "spacing.0" | "spacing.1" | "spacing.2" | "spacing.3" | "spacing.4" | "spacing.5" | "spacing.6" | "spacing.7" | "spacing.8" | "radius.sm" | "radius.default" | "radius.md" | "radius.lg" | "radius.pill" | "radius.tv" | "border.width" | "motion.easing.out" | "motion.easing.inOut" | "motion.duration.fast" | "motion.duration.base" | "motion.duration.slow" | "z.dropdown" | "z.sticky" | "z.modal" | "z.notification" | "z.tooltip" | "breakpoint.sm" | "breakpoint.md" | "breakpoint.lg" | "surface.light.htmlBg" | "surface.light.appBg" | "surface.light.navBg" | "surface.light.navItemBg" | "surface.light.navItemBgHover" | "surface.light.navItemBgActive" | "surface.light.listItemBg" | "surface.light.listItemBgHover" | "surface.light.listItemBgActive" | "surface.light.listItemBorder" | "surface.light.segmentedControlBg" | "surface.light.segmentedControlBgActive" | "surface.light.transferListItemCompletingBg" | "surface.light.transferListItemDownloadingBg" | "surface.light.transferListItemFinishedBg" | "surface.light.transferListItemPassiveBg" | "surface.light.hiContrast" | "surface.light.loContrast" | "surface.light.transparent" | "surface.light.overlayInline" | "surface.light.overlayFull" | "surface.dark.htmlBg" | "surface.dark.appBg" | "surface.dark.navBg" | "surface.dark.navItemBg" | "surface.dark.navItemBgHover" | "surface.dark.navItemBgActive" | "surface.dark.listItemBg" | "surface.dark.listItemBgHover" | "surface.dark.listItemBgActive" | "surface.dark.listItemBorder" | "surface.dark.segmentedControlBg" | "surface.dark.segmentedControlBgActive" | "surface.dark.transferListItemCompletingBg" | "surface.dark.transferListItemDownloadingBg" | "surface.dark.transferListItemFinishedBg" | "surface.dark.transferListItemPassiveBg" | "surface.dark.hiContrast" | "surface.dark.loContrast" | "surface.dark.overlayInline" | "surface.dark.overlayFull" | "surface.dark.shadowColor" | "surface.dark.shadow" | "surface.dark.shadowSm" | "surface.dark.shadowMd" | "surface.dark.shadowLg";
3
+ export type PutioTokenName = "component.button.primary.background" | "component.button.primary.backgroundHover" | "component.button.primary.backgroundHoverDark" | "component.button.primary.foreground" | "component.button.primary.radius" | "component.button.secondary.background" | "component.button.secondary.backgroundDark" | "component.button.secondary.foreground" | "component.button.secondary.foregroundDark" | "component.button.secondary.backgroundHover" | "component.button.secondary.backgroundHoverDark" | "component.button.success.background" | "component.button.success.backgroundDark" | "component.button.success.backgroundHover" | "component.button.success.backgroundHoverDark" | "component.button.success.foreground" | "component.button.danger.background" | "component.button.danger.backgroundDark" | "component.button.danger.backgroundHover" | "component.button.danger.backgroundHoverDark" | "component.button.danger.foreground" | "component.button.info.background" | "component.button.info.backgroundDark" | "component.button.info.backgroundHover" | "component.button.info.backgroundHoverDark" | "component.button.info.foreground" | "component.button.info.foregroundDark" | "component.button.default.background" | "component.button.default.backgroundDark" | "component.button.default.backgroundHover" | "component.button.default.backgroundHoverDark" | "component.button.default.foreground" | "component.button.default.foregroundDark" | "component.button.ghost.background" | "component.button.ghost.foreground" | "component.button.ghost.foregroundDark" | "component.button.ghost.foregroundHover" | "component.button.ghost.foregroundHoverDark" | "component.button.ghost.backgroundHover" | "component.button.ghost.backgroundHoverDark" | "component.button.height" | "component.button.heightMd" | "component.button.heightSm" | "component.button.heightXs" | "component.button.paddingX" | "component.button.paddingXXs" | "component.button.labelSize" | "component.button.labelSizeXs" | "component.button.tracking" | "component.button.trackingMd" | "component.button.trackingSm" | "component.button.trackingXs" | "component.button.iconSize" | "component.button.gap" | "component.nav.height" | "component.nav.heightCompact" | "component.nav.ctaHeight" | "component.input.background" | "component.input.backgroundDark" | "component.input.border" | "component.input.borderDark" | "component.input.radius" | "component.input.borderHover" | "component.input.borderHoverDark" | "component.input.borderFocus" | "component.input.borderFocusDark" | "component.input.ring" | "component.input.ringDark" | "component.input.text" | "component.input.textDark" | "component.input.placeholder" | "component.input.placeholderDark" | "component.field.background" | "component.field.backgroundDark" | "component.field.backgroundDisabled" | "component.field.backgroundDisabledDark" | "component.field.border" | "component.field.borderDark" | "component.field.borderHover" | "component.field.borderHoverDark" | "component.field.borderFocus" | "component.field.borderFocusDark" | "component.field.text" | "component.field.textDark" | "component.field.placeholder" | "component.field.placeholderDark" | "component.field.radius" | "component.field.ring" | "component.field.ringDark" | "component.panel.background" | "component.panel.backgroundDark" | "component.panel.border" | "component.panel.borderDark" | "component.panel.radius" | "component.panel.shadow" | "component.panel.shadowDark" | "component.alias.background" | "component.alias.backgroundDark" | "component.alias.foreground" | "component.alias.foregroundDark" | "component.alias.foregroundMuted" | "component.alias.foregroundMutedDark" | "component.alias.primary" | "component.alias.primaryForeground" | "component.alias.success" | "component.alias.successDark" | "component.alias.successForeground" | "component.alias.destructive" | "component.alias.destructiveDark" | "component.alias.destructiveForeground" | "component.alias.invertForeground" | "component.alias.invertForegroundDark" | "component.alias.solidForeground" | "component.alias.solidForegroundDark" | "component.alias.muted" | "component.alias.mutedDark" | "component.alias.mutedForeground" | "component.alias.mutedForegroundDark" | "component.alias.accent" | "component.alias.accentDark" | "component.alias.accentForeground" | "component.alias.accentForegroundDark" | "component.alias.card" | "component.alias.cardDark" | "component.alias.cardForeground" | "component.alias.cardForegroundDark" | "component.alias.popover" | "component.alias.popoverDark" | "component.alias.popoverForeground" | "component.alias.popoverForegroundDark" | "component.alias.input" | "component.alias.inputDark" | "component.alias.ring" | "component.fileRow.background" | "component.fileRow.backgroundDark" | "component.fileRow.hoverBackground" | "component.fileRow.hoverBackgroundDark" | "component.fileRow.activeBackground" | "component.fileRow.activeBackgroundDark" | "component.fileRow.border" | "component.fileRow.borderDark" | "component.fileRow.icon" | "component.notification.infoBackground" | "component.notification.infoBackgroundDark" | "component.notification.dangerBackground" | "component.notification.dangerBackgroundDark" | "component.notification.background" | "component.notification.backgroundDark" | "component.notification.border" | "component.notification.borderDark" | "component.notification.foreground" | "component.notification.foregroundDark" | "component.notification.icon" | "component.notification.iconDark" | "component.notification.successBackground" | "component.notification.successBackgroundDark" | "component.notification.successBorder" | "component.notification.successBorderDark" | "component.notification.successForeground" | "component.notification.successForegroundDark" | "component.notification.dangerBorder" | "component.notification.dangerBorderDark" | "component.notification.dangerForeground" | "component.notification.dangerForegroundDark" | "component.notification.badgeBackground" | "component.notification.badgeForeground" | "component.menu.background" | "component.menu.backgroundDark" | "component.menu.border" | "component.menu.borderDark" | "component.menu.radius" | "component.menu.shadow" | "component.menu.shadowDark" | "component.menu.itemBackgroundHover" | "component.menu.itemBackgroundHoverDark" | "component.menu.itemText" | "component.menu.itemTextDark" | "component.menu.itemIcon" | "component.menu.itemIconDark" | "component.menu.itemShortcut" | "component.menu.itemShortcutDark" | "component.menu.itemDangerText" | "component.menu.itemDangerTextDark" | "component.menu.itemDangerBackgroundHover" | "component.menu.itemDangerBackgroundHoverDark" | "component.menu.itemHeight" | "component.menu.separator" | "component.menu.separatorDark" | "component.menu.label" | "component.menu.labelDark" | "component.palette.background" | "component.palette.backgroundDark" | "component.palette.border" | "component.palette.borderDark" | "component.palette.shadow" | "component.palette.shadowDark" | "component.palette.scrim" | "component.palette.scrimDark" | "component.palette.width" | "component.palette.inputHeight" | "component.palette.itemHeight" | "component.palette.itemBackgroundActive" | "component.palette.itemBackgroundActiveDark" | "component.palette.groupLabel" | "component.palette.groupLabelDark" | "component.palette.itemMeta" | "component.palette.itemMetaDark" | "component.sheet.background" | "component.sheet.backgroundDark" | "component.sheet.border" | "component.sheet.borderDark" | "component.sheet.shadow" | "component.sheet.shadowDark" | "component.sheet.scrim" | "component.sheet.scrimDark" | "component.sheet.width" | "component.avatar.yellow" | "component.avatar.green" | "component.avatar.red" | "component.avatar.blue" | "component.avatar.purple" | "component.avatar.teal" | "component.avatar.orange" | "component.avatar.foreground" | "component.avatar.foregroundWarm" | "component.alert.radius" | "component.alert.infoBackground" | "component.alert.infoBackgroundDark" | "component.alert.infoBorder" | "component.alert.infoBorderDark" | "component.alert.infoText" | "component.alert.infoTextDark" | "component.alert.infoBody" | "component.alert.infoBodyDark" | "component.alert.infoIcon" | "component.alert.infoIconDark" | "component.alert.brandBackground" | "component.alert.brandBackgroundDark" | "component.alert.brandBorder" | "component.alert.brandBorderDark" | "component.alert.brandText" | "component.alert.brandTextDark" | "component.alert.brandBody" | "component.alert.brandBodyDark" | "component.alert.brandIcon" | "component.alert.brandIconDark" | "component.alert.successBackground" | "component.alert.successBackgroundDark" | "component.alert.successBorder" | "component.alert.successBorderDark" | "component.alert.successText" | "component.alert.successTextDark" | "component.alert.successBody" | "component.alert.successBodyDark" | "component.alert.successIcon" | "component.alert.successIconDark" | "component.alert.dangerBackground" | "component.alert.dangerBackgroundDark" | "component.alert.dangerBorder" | "component.alert.dangerBorderDark" | "component.alert.dangerText" | "component.alert.dangerTextDark" | "component.alert.dangerBody" | "component.alert.dangerBodyDark" | "component.alert.dangerIcon" | "component.alert.dangerIconDark" | "component.slider.track" | "component.slider.trackDark" | "component.slider.buffer" | "component.slider.bufferDark" | "component.slider.fill" | "component.slider.knob" | "component.slider.fillDisabled" | "component.slider.fillDisabledDark" | "component.slider.trackHeight" | "component.slider.knobSize" | "component.slider.hitHeight" | "component.pagination.itemSize" | "component.pagination.itemText" | "component.pagination.itemTextDark" | "component.pagination.itemTextActive" | "component.pagination.itemTextActiveDark" | "component.pagination.itemBackgroundHover" | "component.pagination.itemBackgroundHoverDark" | "component.pagination.itemBackgroundActive" | "component.pagination.itemBackgroundActiveDark" | "component.pagination.itemBorderActive" | "component.pagination.itemBorderActiveDark" | "context.tv.text.primary" | "context.tv.text.secondary" | "context.tv.text.tertiary" | "context.tv.channelArt.production.posterBackground" | "context.tv.channelArt.production.splashBackground" | "context.tv.channelArt.development.background" | "context.tv.channelArt.development.accent" | "context.tv.channelArt.development.grid" | "context.tv.channelArt.nightly.background" | "context.tv.channelArt.nightly.accent" | "context.tv.channelArt.nightly.star" | "context.tv.channelArt.nightly.moon" | "context.tv.channelArt.nightly.moonCrater" | "context.tv.channelArt.lab.background" | "context.tv.channelArt.lab.foreground" | "context.tv.channelArt.lab.accent" | "tv.video.background" | "tv.video.heroScrimTop" | "tv.video.heroScrimBottom" | "tv.video.textOnVideo" | "tv.text.heading" | "tv.text.label" | "tv.text.body" | "tv.text.caption" | "tv.text.smol" | "tv.fontWeight.regular" | "tv.fontWeight.medium" | "tv.space.xxs" | "tv.space.xs" | "tv.space.sm" | "tv.space.md" | "tv.space.lg" | "tv.space.xl" | "tv.space.xxl" | "tv.overscan.x" | "tv.overscan.y" | "tv.radius" | "tv.z.modal" | "tv.z.toast" | "tv.z.overlay" | "color.brand.yellow" | "color.neutral.light.bg" | "color.neutral.light.bgSecondary" | "color.neutral.light.componentBg" | "color.neutral.light.componentBgHover" | "color.neutral.light.componentBgActive" | "color.neutral.light.line" | "color.neutral.light.border" | "color.neutral.light.borderHover" | "color.neutral.light.solid" | "color.neutral.light.solidHover" | "color.neutral.light.textSecondary" | "color.neutral.light.text" | "color.neutral.dark.bg" | "color.neutral.dark.bgSecondary" | "color.neutral.dark.componentBg" | "color.neutral.dark.componentBgHover" | "color.neutral.dark.componentBgActive" | "color.neutral.dark.line" | "color.neutral.dark.border" | "color.neutral.dark.borderHover" | "color.neutral.dark.solid" | "color.neutral.dark.solidHover" | "color.neutral.dark.textSecondary" | "color.neutral.dark.text" | "color.green.light.bg" | "color.green.light.bgSecondary" | "color.green.light.componentBg" | "color.green.light.componentBgHover" | "color.green.light.componentBgActive" | "color.green.light.line" | "color.green.light.border" | "color.green.light.borderHover" | "color.green.light.solid" | "color.green.light.solidHover" | "color.green.light.textSecondary" | "color.green.light.text" | "color.green.dark.bg" | "color.green.dark.bgSecondary" | "color.green.dark.componentBg" | "color.green.dark.componentBgHover" | "color.green.dark.componentBgActive" | "color.green.dark.line" | "color.green.dark.border" | "color.green.dark.borderHover" | "color.green.dark.solid" | "color.green.dark.solidHover" | "color.green.dark.textSecondary" | "color.green.dark.text" | "color.red.light.bg" | "color.red.light.bgSecondary" | "color.red.light.componentBg" | "color.red.light.componentBgHover" | "color.red.light.componentBgActive" | "color.red.light.line" | "color.red.light.border" | "color.red.light.borderHover" | "color.red.light.solid" | "color.red.light.solidHover" | "color.red.light.textSecondary" | "color.red.light.text" | "color.red.dark.bg" | "color.red.dark.bgSecondary" | "color.red.dark.componentBg" | "color.red.dark.componentBgHover" | "color.red.dark.componentBgActive" | "color.red.dark.line" | "color.red.dark.border" | "color.red.dark.borderHover" | "color.red.dark.solid" | "color.red.dark.solidHover" | "color.red.dark.textSecondary" | "color.red.dark.text" | "color.yellow.light.bg" | "color.yellow.light.bgSecondary" | "color.yellow.light.componentBg" | "color.yellow.light.componentBgHover" | "color.yellow.light.componentBgActive" | "color.yellow.light.line" | "color.yellow.light.border" | "color.yellow.light.borderHover" | "color.yellow.light.solidHover" | "color.yellow.light.textSecondary" | "color.yellow.light.text" | "color.yellow.dark.bg" | "color.yellow.dark.bgSecondary" | "color.yellow.dark.componentBg" | "color.yellow.dark.componentBgHover" | "color.yellow.dark.componentBgActive" | "color.yellow.dark.line" | "color.yellow.dark.border" | "color.yellow.dark.borderHover" | "color.yellow.dark.solidHover" | "color.yellow.dark.textSecondary" | "color.yellow.dark.text" | "color.transfer.light.lime3" | "color.transfer.dark.lime3" | "elevation.shadowColor" | "elevation.color" | "elevation.sm" | "elevation.md" | "elevation.lg" | "elevation.focusColor" | "elevation.focus" | "typography.fontFamily.sans" | "typography.fontFamily.display" | "typography.fontFamily.mono" | "typography.fontSize.xs" | "typography.fontSize.sm" | "typography.fontSize.base" | "typography.fontSize.md" | "typography.fontSize.lg" | "typography.fontSize.xl" | "typography.fontSize.2xl" | "typography.fontSize.3xl" | "typography.fontSize.4xl" | "typography.fontSize.display" | "typography.lineHeight.tight" | "typography.lineHeight.snug" | "typography.lineHeight.normal" | "typography.lineHeight.loose" | "typography.fontWeight.regular" | "typography.fontWeight.medium" | "typography.fontWeight.bold" | "typography.fontWeight.black" | "typography.letterSpacing.tight" | "typography.letterSpacing.normal" | "typography.letterSpacing.wide" | "typography.letterSpacing.uppercase" | "spacing.0" | "spacing.1" | "spacing.2" | "spacing.3" | "spacing.4" | "spacing.5" | "spacing.6" | "spacing.7" | "spacing.8" | "radius.sm" | "radius.default" | "radius.md" | "radius.lg" | "radius.pill" | "radius.tv" | "border.width" | "motion.easing.out" | "motion.easing.inOut" | "motion.duration.fast" | "motion.duration.base" | "motion.duration.slow" | "z.dropdown" | "z.sticky" | "z.modal" | "z.notification" | "z.tooltip" | "breakpoint.sm" | "breakpoint.md" | "breakpoint.lg" | "surface.light.htmlBg" | "surface.light.appBg" | "surface.light.navBg" | "surface.light.navItemBg" | "surface.light.navItemBgHover" | "surface.light.navItemBgActive" | "surface.light.listItemBg" | "surface.light.listItemBgHover" | "surface.light.listItemBgActive" | "surface.light.listItemBorder" | "surface.light.segmentedControlBg" | "surface.light.segmentedControlBgActive" | "surface.light.transferListItemCompletingBg" | "surface.light.transferListItemDownloadingBg" | "surface.light.transferListItemFinishedBg" | "surface.light.transferListItemPassiveBg" | "surface.light.hiContrast" | "surface.light.loContrast" | "surface.light.transparent" | "surface.light.overlayInline" | "surface.light.overlayFull" | "surface.dark.htmlBg" | "surface.dark.appBg" | "surface.dark.navBg" | "surface.dark.navItemBg" | "surface.dark.navItemBgHover" | "surface.dark.navItemBgActive" | "surface.dark.listItemBg" | "surface.dark.listItemBgHover" | "surface.dark.listItemBgActive" | "surface.dark.listItemBorder" | "surface.dark.segmentedControlBg" | "surface.dark.segmentedControlBgActive" | "surface.dark.transferListItemCompletingBg" | "surface.dark.transferListItemDownloadingBg" | "surface.dark.transferListItemFinishedBg" | "surface.dark.transferListItemPassiveBg" | "surface.dark.hiContrast" | "surface.dark.loContrast" | "surface.dark.overlayInline" | "surface.dark.overlayFull" | "surface.dark.shadowColor" | "surface.dark.shadow" | "surface.dark.shadowSm" | "surface.dark.shadowMd" | "surface.dark.shadowLg";
4
4
 
5
5
  export type PutioToken = {
6
6
  readonly cssName: string;