@putdotio/design 1.3.0 → 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%);
@@ -144,15 +149,15 @@
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%);
@@ -310,7 +328,7 @@ html {
310
328
  background: var(--html-bg);
311
329
  color: var(--text);
312
330
  font-family: var(--font-sans);
313
- 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) */
314
332
  line-height: var(--lh-normal);
315
333
  -webkit-font-smoothing: antialiased;
316
334
  -moz-osx-font-smoothing: grayscale;
@@ -322,6 +340,13 @@ body {
322
340
  margin: 0;
323
341
  }
324
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
+
325
350
  /* -- Semantic type ------------------------------------------------- */
326
351
 
327
352
  .h-display, h1.display {
@@ -343,7 +368,7 @@ body {
343
368
 
344
369
  h1, .h1 {
345
370
  font-family: var(--font-sans);
346
- font-size: var(--fs-3xl);
371
+ font-size: var(--fs-xl);
347
372
  font-weight: var(--fw-bold);
348
373
  line-height: var(--lh-tight);
349
374
  letter-spacing: var(--tracking-tight);
@@ -352,7 +377,7 @@ h1, .h1 {
352
377
 
353
378
  h2, .h2 {
354
379
  font-family: var(--font-sans);
355
- font-size: var(--fs-2xl);
380
+ font-size: var(--fs-lg);
356
381
  font-weight: var(--fw-bold);
357
382
  line-height: var(--lh-tight);
358
383
  margin: 0 0 var(--space-3);
@@ -360,7 +385,7 @@ h2, .h2 {
360
385
 
361
386
  h3, .h3 {
362
387
  font-family: var(--font-sans);
363
- font-size: var(--fs-xl);
388
+ font-size: var(--fs-md);
364
389
  font-weight: var(--fw-medium);
365
390
  line-height: var(--lh-snug);
366
391
  margin: 0 0 var(--space-2);
@@ -368,7 +393,7 @@ h3, .h3 {
368
393
 
369
394
  h4, .h4 {
370
395
  font-family: var(--font-sans);
371
- font-size: var(--fs-lg);
396
+ font-size: var(--fs-base);
372
397
  font-weight: var(--fw-medium);
373
398
  line-height: var(--lh-snug);
374
399
  margin: 0 0 var(--space-2);
@@ -389,26 +414,26 @@ p, .body {
389
414
  }
390
415
 
391
416
  .lead {
392
- font-size: var(--fs-lg);
417
+ font-size: var(--fs-md);
393
418
  font-weight: var(--fw-regular);
394
419
  line-height: var(--lh-normal);
395
420
  color: var(--text-secondary);
396
421
  }
397
422
 
398
423
  small, .caption {
399
- font-size: var(--fs-xs);
424
+ font-size: var(--fs-sm); /* production caption = fontSize 0 */
400
425
  color: var(--text-secondary);
401
426
  }
402
427
 
403
428
  .label {
404
- font-size: var(--fs-sm);
429
+ font-size: var(--fs-base); /* production label = fontSize 1, medium */
405
430
  font-weight: var(--fw-medium);
406
431
  color: var(--text);
407
432
  }
408
433
 
409
434
  .button-text {
410
435
  font-weight: var(--fw-medium);
411
- font-size: var(--fs-base);
436
+ font-size: var(--fs-sm); /* production button = fontSize 0 */
412
437
  letter-spacing: 0;
413
438
  }
414
439
 
@@ -427,16 +452,6 @@ a {
427
452
  }
428
453
  a:hover { text-decoration-color: currentColor; }
429
454
 
430
- /* -- Component-role aliases --------------------------------------- */
431
- /* Button default + info variants — live aliases; the DTCG layer doesn't define these two. */
432
- :root {
433
- --button-default-bg: var(--component-bg);
434
- --button-default-bg-hover: var(--component-bg-hover);
435
- --button-default-fg: var(--text);
436
- --button-info-bg: var(--solid);
437
- --button-info-fg: var(--solid-foreground);
438
- }
439
-
440
455
  /* -- Utility classes ---------------------------------------------- */
441
456
  .fg-1 { color: var(--text); }
442
457
  .fg-2 { color: var(--text-secondary); }
@@ -448,3 +463,16 @@ a:hover { text-decoration-color: currentColor; }
448
463
  .bg-2 { background: var(--bg-secondary); }
449
464
  .bg-component { background: var(--component-bg); }
450
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" | "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;