@putdotio/design 1.0.0 → 1.1.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
@@ -3,17 +3,17 @@ version: "0.1.0"
3
3
  name: "put.io Design System"
4
4
  description: "Public token and guidance contract for put.io product surfaces."
5
5
  colors:
6
- brand: "#FDCE45"
6
+ brand: "hsl(44.7, 97.9%, 63.1%)"
7
7
  dark:
8
8
  app-bg: "hsl(0, 0%, 8.5%)"
9
- page-bg: "black"
9
+ page-bg: "hsl(0, 0%, 0%)"
10
10
  text: "hsl(0, 0%, 93.0%)"
11
11
  text-muted: "hsl(0, 0%, 62.8%)"
12
12
  border: "hsl(0, 0%, 24.3%)"
13
13
  success: "hsl(151, 55.0%, 41.5%)"
14
14
  danger: "hsl(358, 75.0%, 59.0%)"
15
15
  light:
16
- app-bg: "white"
16
+ app-bg: "hsl(0, 0%, 100%)"
17
17
  page-bg: "hsl(0, 0%, 97.3%)"
18
18
  text: "hsl(0, 0%, 9.0%)"
19
19
  text-muted: "hsl(0, 0%, 43.5%)"
@@ -96,6 +96,8 @@ The default radius is `6px`. Use `4px` for tight controls, `8px` or `10px` for l
96
96
 
97
97
  Buttons use yellow only for primary commands. Secondary buttons should feel quiet and tokenized against the active surface. File rows are the core component: preserve raw names, keep metadata compact, and make hover/focus states obvious without inflating row height.
98
98
 
99
+ Form fields use the shared `--field-*` aliases: `--field-bg` for the fill, `--field-border` for the resting border, and `--field-ring` for focus. Invalid fields opt in with `aria-invalid="true"` and use red border/text only; do not add red fill. Raised panels use the shared `--panel-*` aliases instead of auth- or screen-specific panel variables.
100
+
99
101
  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.
100
102
 
101
103
  ## Do's and Don'ts
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  <h1>put.io design</h1>
7
7
 
8
- <p>Public design tokens and design-system guidance for <a href="https://put.io">put.io</a>.</p>
8
+ <p>Public design tokens, brand assets, and design-system guidance for <a href="https://put.io">put.io</a>.</p>
9
9
 
10
10
  <p>
11
11
  <a href="https://www.npmjs.com/package/@putdotio/design" style="text-decoration:none;"><img src="https://img.shields.io/npm/v/%40putdotio%2Fdesign?style=flat&label=npm&logo=npm&colorA=000000&colorB=000000" alt="npm version"></a>
@@ -18,22 +18,38 @@
18
18
 
19
19
  Live guide: [design.put.io](https://design.put.io)
20
20
 
21
- This repo owns the public contract behind it: DTCG token sources, generated CSS/JSON/TypeScript artifacts, preview cards, and deployable static guidance.
21
+ This repo owns the public contract behind it: DTCG token sources, generated
22
+ CSS/JSON/TypeScript artifacts, brand assets, preview cards, and deployable
23
+ static guidance.
22
24
 
23
- ## Use
25
+ ## Install
24
26
 
25
- Token sources live in [`tokens`](tokens). Generated package artifacts live in [`dist`](dist).
27
+ Token sources live in [`tokens`](tokens). Generated package artifacts live in
28
+ [`dist`](dist). Package-safe brand assets live in [`system/assets`](system/assets).
26
29
 
27
30
  ```bash
28
31
  npm install @putdotio/design
29
32
  ```
30
33
 
31
- Common entrypoints:
34
+ ## Use
35
+
36
+ Import the generated CSS when a web surface needs put.io custom properties:
37
+
38
+ ```css
39
+ @import "@putdotio/design/css";
40
+ ```
41
+
42
+ Component recipes should consume semantic aliases such as `--field-*`,
43
+ `--panel-*`, `--primary`, `--success`, and `--destructive` instead of reaching
44
+ into palette tokens directly.
45
+
46
+ Package entrypoints:
32
47
 
33
48
  - CSS custom properties: [`dist/css/tokens.css`](dist/css/tokens.css)
34
49
  - DTCG token tree: [`dist/tokens.dtcg.json`](dist/tokens.dtcg.json)
35
50
  - Flat token metadata: [`dist/tokens.flat.json`](dist/tokens.flat.json)
36
51
  - Figma-safe subset: [`dist/figma/putio.tokens.json`](dist/figma/putio.tokens.json)
52
+ - Brand assets: [`system/assets`](system/assets) via `@putdotio/design/assets/<file>`
37
53
  - Human and AI design contract: [`DESIGN.md`](DESIGN.md)
38
54
 
39
55
  ## Commands
@@ -56,6 +72,11 @@ Use `pnpm tokens:build` after token edits.
56
72
  - [Security](SECURITY.md)
57
73
  - [Agent guide](AGENTS.md)
58
74
 
75
+ ## Contributing
76
+
77
+ See [Contributing](CONTRIBUTING.md) for local setup, validation, and pull
78
+ request expectations.
79
+
59
80
  ## License
60
81
 
61
82
  [MIT](LICENSE)
@@ -10,8 +10,33 @@
10
10
  :root {
11
11
  --button-secondary-bg: hsl(0, 0%, 95.1%);
12
12
  --button-secondary-fg: hsl(0, 0%, 9.0%);
13
- --input-bg: white;
13
+ --input-bg: hsl(0, 0%, 100%);
14
14
  --input-border: hsl(0, 0%, 85.8%);
15
+ --field-bg: hsl(0, 0%, 100%);
16
+ --field-bg-disabled: hsl(0, 0%, 97.3%);
17
+ --field-border: hsl(0, 0%, 85.8%);
18
+ --field-border-hover: hsl(0, 0%, 78.0%);
19
+ --field-border-focus: hsl(0, 0%, 78.0%);
20
+ --field-text: hsl(0, 0%, 9.0%);
21
+ --field-placeholder: hsl(0, 0%, 43.5%);
22
+ --field-ring: 0 0 0 1px hsl(0, 0%, 78.0%);
23
+ --panel-bg: hsl(0, 0%, 95.1%);
24
+ --panel-border: hsl(0, 0%, 88.7%);
25
+ --panel-shadow: 0 4px 12px hsla(0, 0%, 0%, 0.08);
26
+ --background: hsl(0, 0%, 99.0%);
27
+ --foreground: hsl(0, 0%, 9.0%);
28
+ --foreground-muted: hsl(0, 0%, 43.5%);
29
+ --success: hsl(153, 67.0%, 28.5%);
30
+ --destructive: hsl(358, 65.0%, 48.7%);
31
+ --muted: hsl(0, 0%, 97.3%);
32
+ --muted-foreground: hsl(0, 0%, 43.5%);
33
+ --accent: hsl(0, 0%, 95.1%);
34
+ --accent-foreground: hsl(0, 0%, 9.0%);
35
+ --card: hsl(0, 0%, 95.1%);
36
+ --card-foreground: hsl(0, 0%, 9.0%);
37
+ --popover: hsl(0, 0%, 95.1%);
38
+ --popover-foreground: hsl(0, 0%, 9.0%);
39
+ --input: hsl(0, 0%, 85.8%);
15
40
  --file-row-bg: transparent;
16
41
  --file-row-bg-hover: hsl(0, 0%, 97.3%);
17
42
  --notification-info-bg: hsl(0, 0%, 97.3%);
@@ -60,13 +85,13 @@
60
85
  --yellow-line: hsl(50, 89.4%, 76.1%);
61
86
  --yellow-border: hsl(47, 80.4%, 68.0%);
62
87
  --yellow-border-hover: hsl(48, 100%, 46.1%);
63
- --yellow-solid-hover: #FDCE45;
88
+ --yellow-solid-hover: hsl(44.7, 97.9%, 63.1%);
64
89
  --yellow-text-secondary: hsl(42, 100%, 29.0%);
65
90
  --yellow-text: hsl(40, 55.0%, 13.5%);
66
91
  --lime-3: hsl(85, 76.0%, 92.3%);
67
92
  --html-bg: hsl(0, 0%, 97.3%);
68
- --app-bg: white;
69
- --nav-bg: white;
93
+ --app-bg: hsl(0, 0%, 100%);
94
+ --nav-bg: hsl(0, 0%, 100%);
70
95
  --nav-item-bg: transparent;
71
96
  --nav-item-bg-hover: hsl(0, 0%, 95.1%);
72
97
  --nav-item-bg-active: hsl(0, 0%, 95.1%);
@@ -75,7 +100,7 @@
75
100
  --list-item-bg-active: hsl(0, 0%, 97.3%);
76
101
  --list-item-border: hsl(0, 0%, 90.9%);
77
102
  --segmented-control-bg: hsl(0, 0%, 95.1%);
78
- --segmented-control-bg-active: white;
103
+ --segmented-control-bg-active: hsl(0, 0%, 100%);
79
104
  --transfer-list-item-completing-bg: hsl(85, 76.0%, 92.3%);
80
105
  --transfer-list-item-downloading-bg: hsl(85, 76.0%, 92.3%);
81
106
  --transfer-list-item-finished-bg: hsl(0, 0%, 97.3%);
@@ -85,19 +110,26 @@
85
110
  --transparent: transparent;
86
111
  --overlay-inline: hsla(0, 0%, 0%, 0.047);
87
112
  --overlay-full: hsla(0, 0%, 0%, 0.439);
88
- --button-primary-bg: #FDCE45;
89
- --button-primary-fg: #0A0A0A;
113
+ --button-primary-bg: hsl(44.7, 97.9%, 63.1%);
114
+ --button-primary-fg: hsl(0, 0%, 4.0%);
90
115
  --button-radius: 6px;
91
116
  --input-radius: 6px;
92
- --file-row-icon: #FDCE45;
93
- --yellow-solid: #FDCE45;
117
+ --panel-radius: 10px;
118
+ --primary: hsl(44.7, 97.9%, 63.1%);
119
+ --primary-foreground: hsl(0, 0%, 0%);
120
+ --success-foreground: hsl(0, 0%, 100%);
121
+ --destructive-foreground: hsl(0, 0%, 100%);
122
+ --solid-foreground: hsl(0, 0%, 100%);
123
+ --ring: hsla(47, 100%, 65%, 0.35);
124
+ --file-row-icon: hsl(44.7, 97.9%, 63.1%);
125
+ --yellow-solid: hsl(44.7, 97.9%, 63.1%);
94
126
  --shadow-color: hsl(0, 0%, 78.0%);
95
127
  --shadow: hsl(0, 0%, 78.0%);
96
128
  --shadow-sm: 0 1px 2px hsla(0, 0%, 0%, 0.05);
97
129
  --shadow-md: 0 4px 12px hsla(0, 0%, 0%, 0.08);
98
130
  --shadow-lg: 0 16px 40px hsla(0, 0%, 0%, 0.12);
99
131
  --shadow-focus-color: hsla(47, 100%, 65%, 0.35);
100
- --shadow-focus: 0 0 0 3px var(--shadow-focus-color);
132
+ --shadow-focus: 0 0 0 3px hsla(47, 100%, 65%, 0.35);
101
133
  --font-sans: "GT America", sans-serif;
102
134
  --font-display: "GT America", sans-serif;
103
135
  --font-ui-mono: "GT America Mono", monospace;
@@ -150,8 +182,33 @@
150
182
  .dark {
151
183
  --button-secondary-bg: hsl(0, 0%, 13.6%);
152
184
  --button-secondary-fg: hsl(0, 0%, 93.0%);
153
- --input-bg: hsl(0, 0%, 13.6%);
185
+ --input-bg: hsl(0, 0%, 8.5%);
154
186
  --input-border: hsl(0, 0%, 24.3%);
187
+ --field-bg: hsl(0, 0%, 8.5%);
188
+ --field-bg-disabled: hsl(0, 0%, 11.0%);
189
+ --field-border: hsl(0, 0%, 24.3%);
190
+ --field-border-hover: hsl(0, 0%, 31.2%);
191
+ --field-border-focus: hsl(0, 0%, 31.2%);
192
+ --field-text: hsl(0, 0%, 93.0%);
193
+ --field-placeholder: hsl(0, 0%, 62.8%);
194
+ --field-ring: 0 0 0 1px hsl(0, 0%, 31.2%);
195
+ --panel-bg: hsl(0, 0%, 13.6%);
196
+ --panel-border: hsl(0, 0%, 20.5%);
197
+ --panel-shadow: 0 4px 12px hsla(0, 0%, 0%, 0.5);
198
+ --background: hsl(0, 0%, 8.5%);
199
+ --foreground: hsl(0, 0%, 93.0%);
200
+ --foreground-muted: hsl(0, 0%, 62.8%);
201
+ --success: hsl(151, 51.7%, 28.4%);
202
+ --destructive: hsl(358, 65.0%, 40.4%);
203
+ --muted: hsl(0, 0%, 11.0%);
204
+ --muted-foreground: hsl(0, 0%, 62.8%);
205
+ --accent: hsl(0, 0%, 13.6%);
206
+ --accent-foreground: hsl(0, 0%, 93.0%);
207
+ --card: hsl(0, 0%, 13.6%);
208
+ --card-foreground: hsl(0, 0%, 93.0%);
209
+ --popover: hsl(0, 0%, 13.6%);
210
+ --popover-foreground: hsl(0, 0%, 93.0%);
211
+ --input: hsl(0, 0%, 24.3%);
155
212
  --file-row-bg: transparent;
156
213
  --file-row-bg-hover: hsl(0, 0%, 11.0%);
157
214
  --notification-info-bg: hsl(0, 0%, 13.6%);
@@ -200,11 +257,11 @@
200
257
  --yellow-line: hsl(49, 100%, 14.3%);
201
258
  --yellow-border: hsl(49, 90.3%, 18.4%);
202
259
  --yellow-border-hover: hsl(50, 100%, 22.0%);
203
- --yellow-solid-hover: #FDCE45;
260
+ --yellow-solid-hover: hsl(44.7, 97.9%, 63.1%);
204
261
  --yellow-text-secondary: hsl(48, 100%, 47.0%);
205
262
  --yellow-text: hsl(53, 100%, 91.0%);
206
263
  --lime-3: hsl(85, 45%, 12%);
207
- --html-bg: black;
264
+ --html-bg: hsl(0, 0%, 0%);
208
265
  --app-bg: hsl(0, 0%, 8.5%);
209
266
  --nav-bg: hsl(0, 0%, 8.5%);
210
267
  --nav-item-bg: transparent;
@@ -224,8 +281,8 @@
224
281
  --lo-contrast: hsl(0, 0%, 8.5%);
225
282
  --overlay-inline: hsla(0, 0%, 0%, 0.439);
226
283
  --overlay-full: hsla(0, 0%, 0%, 0.565);
227
- --shadow-color: black;
228
- --shadow: black;
284
+ --shadow-color: hsl(0, 0%, 0%);
285
+ --shadow: hsl(0, 0%, 0%);
229
286
  --shadow-sm: 0 1px 2px hsla(0, 0%, 0%, 0.4);
230
287
  --shadow-md: 0 4px 12px hsla(0, 0%, 0%, 0.5);
231
288
  --shadow-lg: 0 16px 40px hsla(0, 0%, 0%, 0.6);
@@ -363,4 +420,4 @@ a:hover { text-decoration-color: currentColor; }
363
420
  .bg-1 { background: var(--bg); }
364
421
  .bg-2 { background: var(--bg-secondary); }
365
422
  .bg-component { background: var(--component-bg); }
366
- .bg-yellow { background: var(--yellow-solid); color: #000; }
423
+ .bg-yellow { background: var(--yellow-solid); color: var(--primary-foreground); }
@@ -4,12 +4,12 @@
4
4
  "primary": {
5
5
  "background": {
6
6
  "$type": "color",
7
- "$value": "#FDCE45",
7
+ "$value": "hsl(44.7, 97.9%, 63.1%)",
8
8
  "$description": "Primary command background."
9
9
  },
10
10
  "foreground": {
11
11
  "$type": "color",
12
- "$value": "#0A0A0A",
12
+ "$value": "hsl(0, 0%, 4.0%)",
13
13
  "$description": "Text or icon color on the yellow primary button."
14
14
  },
15
15
  "radius": {
@@ -31,7 +31,7 @@
31
31
  "input": {
32
32
  "background": {
33
33
  "$type": "color",
34
- "$value": "white"
34
+ "$value": "hsl(0, 0%, 100%)"
35
35
  },
36
36
  "border": {
37
37
  "$type": "color",
@@ -53,7 +53,7 @@
53
53
  },
54
54
  "icon": {
55
55
  "$type": "color",
56
- "$value": "#FDCE45"
56
+ "$value": "hsl(44.7, 97.9%, 63.1%)"
57
57
  }
58
58
  },
59
59
  "notification": {
@@ -71,8 +71,8 @@
71
71
  "brand": {
72
72
  "yellow": {
73
73
  "$type": "color",
74
- "$value": "#FDCE45",
75
- "$description": "Sacred put.io brand yellow. Do not change or tint."
74
+ "$value": "hsl(44.7, 97.9%, 63.1%)",
75
+ "$description": "Sacred put.io brand yellow (canonical hex #FDCE45). Do not change or tint."
76
76
  }
77
77
  },
78
78
  "neutral": {
@@ -267,7 +267,7 @@
267
267
  },
268
268
  "solidHover": {
269
269
  "$type": "color",
270
- "$value": "#FDCE45"
270
+ "$value": "hsl(44.7, 97.9%, 63.1%)"
271
271
  },
272
272
  "textSecondary": {
273
273
  "$type": "color",
@@ -508,11 +508,11 @@
508
508
  },
509
509
  "appBg": {
510
510
  "$type": "color",
511
- "$value": "white"
511
+ "$value": "hsl(0, 0%, 100%)"
512
512
  },
513
513
  "navBg": {
514
514
  "$type": "color",
515
- "$value": "white"
515
+ "$value": "hsl(0, 0%, 100%)"
516
516
  },
517
517
  "navItemBg": {
518
518
  "$type": "color",
@@ -548,7 +548,7 @@
548
548
  },
549
549
  "segmentedControlBgActive": {
550
550
  "$type": "color",
551
- "$value": "white"
551
+ "$value": "hsl(0, 0%, 100%)"
552
552
  },
553
553
  "transferListItemCompletingBg": {
554
554
  "$type": "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.foreground" | "component.button.primary.radius" | "component.button.secondary.background" | "component.button.secondary.backgroundDark" | "component.button.secondary.foreground" | "component.button.secondary.foregroundDark" | "component.input.background" | "component.input.backgroundDark" | "component.input.border" | "component.input.borderDark" | "component.input.radius" | "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" | "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.foreground" | "component.button.primary.radius" | "component.button.secondary.background" | "component.button.secondary.backgroundDark" | "component.button.secondary.foreground" | "component.button.secondary.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.solidForeground" | "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";
4
4
 
5
5
  export type PutioToken = {
6
6
  readonly cssName: string;