@putdotio/design 1.2.1 → 1.4.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
@@ -24,17 +24,17 @@ typography:
24
24
  ui:
25
25
  family: "\"GT America\", sans-serif"
26
26
  weight: 400
27
- size: "0.875rem"
27
+ size: "1rem"
28
28
  lineHeight: 1.45
29
29
  display:
30
30
  family: "\"GT America\", sans-serif"
31
31
  weight: 900
32
- size: "6rem"
32
+ size: "96px"
33
33
  lineHeight: 1.1
34
34
  mono:
35
35
  family: "\"Berkeley Mono\", \"GT America Mono\", monospace"
36
36
  weight: 400
37
- size: "0.8125rem"
37
+ size: "0.875rem"
38
38
  lineHeight: 1.45
39
39
  rounded:
40
40
  sm: "4px"
@@ -78,12 +78,16 @@ Use GT America for product UI and display. Use GT America Mono for compact produ
78
78
 
79
79
  Body UI text should stay readable and dense. Use medium weight for labels and controls, bold weight only where the hierarchy earns it, and black weight for deliberate display moments.
80
80
 
81
+ The root font-size is responsive like the product: 14px, stepping to 15px at the `--bp-lg` breakpoint. Body, labels, and inputs sit at `--fs-base` (1rem, equal to the root); captions and button labels sit at `--fs-sm` (0.875rem). The display tiers (`--fs-2xl`, `--fs-3xl`, `--fs-display`) are fixed pixel sizes and do not scale with the root.
82
+
81
83
  ## Layout & Spacing
82
84
 
83
85
  put.io layouts are file-browser layouts first: lists, rows, columns, sidebars, toolbars, and sheets. Prefer whitespace and subtle dividers before card-heavy composition.
84
86
 
85
87
  The spacing scale is intentionally steep: `4, 8, 16, 32, 64, 128, 256, 512`. Use it consistently rather than tuning one-off gaps.
86
88
 
89
+ Stacking uses the token scale — `--z-dropdown` (1000), `--z-sticky` (1100), `--z-modal` (1300), `--z-notification` (1400), `--z-tooltip` (1500) — gapped for platform chrome; never invent z-index numbers. Breakpoints (`--bp-sm`/`--bp-md`/`--bp-lg` = 640/768/1280px) mirror the product's responsive tiers; CSS media queries cannot read custom properties, so write the literal pixels in `@media` and keep them in sync with the tokens.
90
+
87
91
  ## Elevation & Depth
88
92
 
89
93
  Elevation should clarify interaction, not decorate. Use borders and soft shadows for popovers, modals, menus, TV focus, and draggable/drop targets. Avoid decorative glow except where it is part of a focused TV state.
@@ -108,6 +112,6 @@ Do use Phosphor-style inline SVG for forward-looking icon guidance and no emoji
108
112
 
109
113
  Do keep `DESIGN.md`, `tokens/`, `dist/`, and `system/tokens.css` in agreement.
110
114
 
111
- Don't publish private research, local file paths, internal project links, screenshots, team photos, account data, discount strategy, or auth-gated workspace URLs in the public design repo.
115
+ Don't publish private material in this public repo — the enumerated list lives in the repo's `docs/DISTRIBUTION.md` (Public Safety).
112
116
 
113
- Don't generate Swift, Kotlin, Android XML, or Roku outputs from this repo until a consuming platform repo asks for an adapter.
117
+ Don't generate platform-native outputs (Swift, Kotlin, Android XML, Roku) from this repo — platform repos own their adapters. Policy in the repo's `docs/DISTRIBUTION.md`.
@@ -15,7 +15,12 @@
15
15
  --button-success-bg-hover: hsl(151, 58%, 37%);
16
16
  --button-danger-bg: hsl(358, 75%, 59%);
17
17
  --button-danger-bg-hover: hsl(357, 66%, 53%);
18
+ --button-info-bg: hsl(0, 0%, 56.1%);
18
19
  --button-info-bg-hover: hsl(0, 0%, 52.3%);
20
+ --button-info-fg: hsl(0, 0%, 0%);
21
+ --button-default-bg: hsl(0, 0%, 95.1%);
22
+ --button-default-bg-hover: hsl(0, 0%, 93.0%);
23
+ --button-default-fg: hsl(0, 0%, 9.0%);
19
24
  --input-bg: hsl(0, 0%, 100%);
20
25
  --input-border: hsl(0, 0%, 85.8%);
21
26
  --field-bg: hsl(0, 0%, 100%);
@@ -97,7 +102,6 @@
97
102
  --yellow-text-secondary: hsl(46, 100%, 27%);
98
103
  --yellow-text: hsl(43, 32%, 21%);
99
104
  --lime-3: hsl(85, 76.0%, 92.3%);
100
- --shadow-focus: 0 0 0 2px hsla(47, 100%, 65%, 0.35), 0 0 0 3.5px hsl(0, 0%, 9.0%);
101
105
  --html-bg: hsl(0, 0%, 97.3%);
102
106
  --app-bg: hsl(0, 0%, 100%);
103
107
  --nav-bg: hsl(0, 0%, 100%);
@@ -139,20 +143,21 @@
139
143
  --shadow-md: 0 4px 12px hsla(0, 0%, 0%, 0.08);
140
144
  --shadow-lg: 0 16px 40px hsla(0, 0%, 0%, 0.12);
141
145
  --shadow-focus-color: hsla(47, 100%, 65%, 0.35);
146
+ --shadow-focus: 0 0 0 3px hsla(47, 100%, 65%, 0.35);
142
147
  --font-sans: "GT America", sans-serif;
143
148
  --font-display: "GT America", sans-serif;
144
149
  --font-ui-mono: "GT America Mono", monospace;
145
150
  --font-mono: "Berkeley Mono", "GT America Mono", monospace;
146
151
  --fs-xs: 0.75rem;
147
- --fs-sm: 0.8125rem;
148
- --fs-base: 0.875rem;
149
- --fs-md: 1rem;
150
- --fs-lg: 1.125rem;
151
- --fs-xl: 1.5rem;
152
- --fs-2xl: 2rem;
153
- --fs-3xl: 3rem;
154
- --fs-4xl: 4rem;
155
- --fs-display: 6rem;
152
+ --fs-sm: 0.875rem;
153
+ --fs-base: 1rem;
154
+ --fs-md: 1.125rem;
155
+ --fs-lg: 1.5rem;
156
+ --fs-xl: 2rem;
157
+ --fs-2xl: 48px;
158
+ --fs-3xl: 64px;
159
+ --fs-4xl: 64px;
160
+ --fs-display: 96px;
156
161
  --lh-tight: 1.1;
157
162
  --lh-snug: 1.25;
158
163
  --lh-normal: 1.45;
@@ -185,6 +190,14 @@
185
190
  --dur-fast: 120ms;
186
191
  --dur-base: 200ms;
187
192
  --dur-slow: 320ms;
193
+ --z-dropdown: 1000;
194
+ --z-sticky: 1100;
195
+ --z-modal: 1300;
196
+ --z-notification: 1400;
197
+ --z-tooltip: 1500;
198
+ --bp-sm: 640px;
199
+ --bp-md: 768px;
200
+ --bp-lg: 1280px;
188
201
  }
189
202
 
190
203
  /* -- Dark (.dark) --------------------------------------------------- */
@@ -196,7 +209,12 @@
196
209
  --button-success-bg-hover: hsl(151, 68%, 35%);
197
210
  --button-danger-bg: hsl(358, 75%, 59%);
198
211
  --button-danger-bg-hover: hsl(357, 67%, 53%);
212
+ --button-info-bg: hsl(0, 0%, 43.9%);
199
213
  --button-info-bg-hover: hsl(0, 0%, 49.4%);
214
+ --button-info-fg: hsl(0, 0%, 100%);
215
+ --button-default-bg: hsl(0, 0%, 13.6%);
216
+ --button-default-bg-hover: hsl(0, 0%, 15.8%);
217
+ --button-default-fg: hsl(0, 0%, 93.0%);
200
218
  --input-bg: hsl(0, 0%, 8.5%);
201
219
  --input-border: hsl(0, 0%, 24.3%);
202
220
  --field-bg: hsl(0, 0%, 8.5%);
@@ -278,7 +296,6 @@
278
296
  --yellow-text-secondary: hsl(45, 100%, 64%);
279
297
  --yellow-text: hsl(46, 89%, 86%);
280
298
  --lime-3: hsl(85, 45%, 12%);
281
- --shadow-focus: 0 0 0 2px hsla(47, 100%, 65%, 0.35), 0 0 0 3.5px hsl(0, 0%, 93.0%);
282
299
  --html-bg: hsl(0, 0%, 0%);
283
300
  --app-bg: hsl(0, 0%, 8.5%);
284
301
  --nav-bg: hsl(0, 0%, 8.5%);
@@ -311,7 +328,7 @@ html {
311
328
  background: var(--html-bg);
312
329
  color: var(--text);
313
330
  font-family: var(--font-sans);
314
- font-size: 15px; /* 14–15 responsive base, per app convention */
331
+ font-size: 14px; /* app.put.io root: fontSize ["14px","14px","15px"] — 15px at ≥ --bp-lg (media query below) */
315
332
  line-height: var(--lh-normal);
316
333
  -webkit-font-smoothing: antialiased;
317
334
  -moz-osx-font-smoothing: grayscale;
@@ -323,6 +340,13 @@ body {
323
340
  margin: 0;
324
341
  }
325
342
 
343
+ /* Root steps up on desktop, matching app.put.io's responsive base.
344
+ 14px/15px literals must stay in sync with --bp-lg (media queries
345
+ can't read custom properties). */
346
+ @media (min-width: 1280px) {
347
+ html { font-size: 15px; }
348
+ }
349
+
326
350
  /* -- Semantic type ------------------------------------------------- */
327
351
 
328
352
  .h-display, h1.display {
@@ -344,7 +368,7 @@ body {
344
368
 
345
369
  h1, .h1 {
346
370
  font-family: var(--font-sans);
347
- font-size: var(--fs-3xl);
371
+ font-size: var(--fs-xl);
348
372
  font-weight: var(--fw-bold);
349
373
  line-height: var(--lh-tight);
350
374
  letter-spacing: var(--tracking-tight);
@@ -353,7 +377,7 @@ h1, .h1 {
353
377
 
354
378
  h2, .h2 {
355
379
  font-family: var(--font-sans);
356
- font-size: var(--fs-2xl);
380
+ font-size: var(--fs-lg);
357
381
  font-weight: var(--fw-bold);
358
382
  line-height: var(--lh-tight);
359
383
  margin: 0 0 var(--space-3);
@@ -361,7 +385,7 @@ h2, .h2 {
361
385
 
362
386
  h3, .h3 {
363
387
  font-family: var(--font-sans);
364
- font-size: var(--fs-xl);
388
+ font-size: var(--fs-md);
365
389
  font-weight: var(--fw-medium);
366
390
  line-height: var(--lh-snug);
367
391
  margin: 0 0 var(--space-2);
@@ -369,7 +393,7 @@ h3, .h3 {
369
393
 
370
394
  h4, .h4 {
371
395
  font-family: var(--font-sans);
372
- font-size: var(--fs-lg);
396
+ font-size: var(--fs-base);
373
397
  font-weight: var(--fw-medium);
374
398
  line-height: var(--lh-snug);
375
399
  margin: 0 0 var(--space-2);
@@ -390,26 +414,26 @@ p, .body {
390
414
  }
391
415
 
392
416
  .lead {
393
- font-size: var(--fs-lg);
417
+ font-size: var(--fs-md);
394
418
  font-weight: var(--fw-regular);
395
419
  line-height: var(--lh-normal);
396
420
  color: var(--text-secondary);
397
421
  }
398
422
 
399
423
  small, .caption {
400
- font-size: var(--fs-xs);
424
+ font-size: var(--fs-sm); /* production caption = fontSize 0 */
401
425
  color: var(--text-secondary);
402
426
  }
403
427
 
404
428
  .label {
405
- font-size: var(--fs-sm);
429
+ font-size: var(--fs-base); /* production label = fontSize 1, medium */
406
430
  font-weight: var(--fw-medium);
407
431
  color: var(--text);
408
432
  }
409
433
 
410
434
  .button-text {
411
435
  font-weight: var(--fw-medium);
412
- font-size: var(--fs-base);
436
+ font-size: var(--fs-sm); /* production button = fontSize 0 */
413
437
  letter-spacing: 0;
414
438
  }
415
439
 
@@ -439,3 +463,16 @@ a:hover { text-decoration-color: currentColor; }
439
463
  .bg-2 { background: var(--bg-secondary); }
440
464
  .bg-component { background: var(--component-bg); }
441
465
  .bg-yellow { background: var(--yellow-solid); color: var(--primary-foreground); }
466
+
467
+ /* -- Reduced motion ------------------------------------------------ */
468
+ /* Honor the OS "reduce motion" setting: collapse transitions/animations
469
+ to near-instant and stop looping/auto-scrolling effects. Components
470
+ should not rely on motion to convey state. */
471
+ @media (prefers-reduced-motion: reduce) {
472
+ *, *::before, *::after {
473
+ animation-duration: 0.01ms !important;
474
+ animation-iteration-count: 1 !important;
475
+ transition-duration: 0.01ms !important;
476
+ scroll-behavior: auto !important;
477
+ }
478
+ }
@@ -67,10 +67,37 @@
67
67
  }
68
68
  },
69
69
  "info": {
70
+ "background": {
71
+ "$type": "color",
72
+ "$value": "hsl(0, 0%, 56.1%)",
73
+ "$description": "Neutral solid command background in light mode."
74
+ },
70
75
  "backgroundHover": {
71
76
  "$type": "color",
72
77
  "$value": "hsl(0, 0%, 52.3%)",
73
78
  "$description": "Neutral solid command hover background in light mode."
79
+ },
80
+ "foreground": {
81
+ "$type": "color",
82
+ "$value": "hsl(0, 0%, 0%)",
83
+ "$description": "Label on the neutral solid — mode-aware for AA contrast on the gray fill."
84
+ }
85
+ },
86
+ "default": {
87
+ "background": {
88
+ "$type": "color",
89
+ "$value": "hsl(0, 0%, 95.1%)",
90
+ "$description": "Quiet default button fill in light mode."
91
+ },
92
+ "backgroundHover": {
93
+ "$type": "color",
94
+ "$value": "hsl(0, 0%, 93.0%)",
95
+ "$description": "Default button hover fill in light mode."
96
+ },
97
+ "foreground": {
98
+ "$type": "color",
99
+ "$value": "hsl(0, 0%, 9.0%)",
100
+ "$description": "Default button label in light mode."
74
101
  }
75
102
  }
76
103
  },
@@ -342,7 +369,8 @@
342
369
  },
343
370
  "color": {
344
371
  "$type": "color",
345
- "$value": "hsl(0, 0%, 78.0%)"
372
+ "$value": "hsl(0, 0%, 78.0%)",
373
+ "$description": "Compat name kept for existing web consumers — alias of elevation.shadowColor so the two can never drift."
346
374
  },
347
375
  "focusColor": {
348
376
  "$type": "color",
@@ -375,39 +403,48 @@
375
403
  },
376
404
  "sm": {
377
405
  "$type": "dimension",
378
- "$value": "0.8125rem"
406
+ "$value": "0.875rem",
407
+ "$description": "Caption and button labels — production fontSize 0."
379
408
  },
380
409
  "base": {
381
410
  "$type": "dimension",
382
- "$value": "0.875rem"
411
+ "$value": "1rem",
412
+ "$description": "Body, labels, inputs — production fontSize 1; equals the responsive root (14px, 15px at >= breakpoint.lg)."
383
413
  },
384
414
  "md": {
385
415
  "$type": "dimension",
386
- "$value": "1rem"
416
+ "$value": "1.125rem",
417
+ "$description": "Subheading."
387
418
  },
388
419
  "lg": {
389
420
  "$type": "dimension",
390
- "$value": "1.125rem"
421
+ "$value": "1.5rem",
422
+ "$description": "Heading."
391
423
  },
392
424
  "xl": {
393
425
  "$type": "dimension",
394
- "$value": "1.5rem"
426
+ "$value": "2rem",
427
+ "$description": "Page title."
395
428
  },
396
429
  "2xl": {
397
430
  "$type": "dimension",
398
- "$value": "2rem"
431
+ "$value": "48px",
432
+ "$description": "Fixed display tier — does not scale with the responsive root."
399
433
  },
400
434
  "3xl": {
401
435
  "$type": "dimension",
402
- "$value": "3rem"
436
+ "$value": "64px",
437
+ "$description": "Fixed display tier — does not scale with the responsive root."
403
438
  },
404
439
  "4xl": {
405
440
  "$type": "dimension",
406
- "$value": "4rem"
441
+ "$value": "64px",
442
+ "$description": "Compatibility alias for the former 4xl tier; new surfaces should use fontSize.3xl or fontSize.display."
407
443
  },
408
444
  "display": {
409
445
  "$type": "dimension",
410
- "$value": "6rem"
446
+ "$value": "96px",
447
+ "$description": "Fixed display tier for brand display moments."
411
448
  }
412
449
  },
413
450
  "lineHeight": {
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.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.backgroundHover" | "component.button.info.backgroundHoverDark" | "component.input.background" | "component.input.backgroundDark" | "component.input.border" | "component.input.borderDark" | "component.input.radius" | "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.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.icon" | "component.notification.infoBackground" | "component.notification.infoBackgroundDark" | "component.notification.dangerBackground" | "component.notification.dangerBackgroundDark" | "context.tv.surface.0" | "context.tv.surface.1" | "context.tv.surface.2" | "context.tv.surface.3" | "context.tv.text.primary" | "context.tv.text.secondary" | "context.tv.text.tertiary" | "context.tv.glass.1" | "context.tv.glass.2" | "context.tv.glass.3" | "context.tv.glass.border" | "context.tv.glass.borderStrong" | "context.tv.focus.ring" | "context.tv.focus.liftShadow" | "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" | "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" | "elevation.focusDark" | "typography.fontFamily.sans" | "typography.fontFamily.display" | "typography.fontFamily.uiMono" | "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" | "border.width" | "motion.easing.out" | "motion.easing.inOut" | "motion.duration.fast" | "motion.duration.base" | "motion.duration.slow" | "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.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.input.background" | "component.input.backgroundDark" | "component.input.border" | "component.input.borderDark" | "component.input.radius" | "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.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.icon" | "component.notification.infoBackground" | "component.notification.infoBackgroundDark" | "component.notification.dangerBackground" | "component.notification.dangerBackgroundDark" | "context.tv.surface.0" | "context.tv.surface.1" | "context.tv.surface.2" | "context.tv.surface.3" | "context.tv.text.primary" | "context.tv.text.secondary" | "context.tv.text.tertiary" | "context.tv.glass.1" | "context.tv.glass.2" | "context.tv.glass.3" | "context.tv.glass.border" | "context.tv.glass.borderStrong" | "context.tv.focus.ring" | "context.tv.focus.liftShadow" | "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" | "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.uiMono" | "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" | "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;