@putdotio/design 3.6.3 → 3.8.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
@@ -115,7 +115,8 @@ Default radius `6px`; `4px` for tight controls, `8px` or `10px` for panels, pill
115
115
  - **Primary:** `--button-primary-bg`, hover `--button-primary-bg-hover`, label `--button-primary-fg`. At most one per action group.
116
116
  - **Secondary:** `--button-default-bg` plus a `--border` border; hover steps both (`--button-default-bg-hover`, `--border-hover`).
117
117
  - **Ghost:** text only, `--button-ghost-fg`; hover adds `--button-ghost-bg-hover` and lifts the label to `--button-ghost-fg-hover`. Use it for anything quieter than secondary: header `Sign in`, toolbar actions, `Cancel` beside a confirm, icon-only buttons.
118
- - **Disabled:** colour drops to `--solid` at full opacity.
118
+ - **Disabled:** colour drops to `--solid` at full opacity: filled variants take a `--solid` fill with `--solid-foreground` labels; quiet ones take `--solid` text. A finished action stays filled with `data-state="success"` on `.btn-success`.
119
+ - **Focus:** `--shadow-focus`, a 2px `--bg` gap then a 2px `--solid-hover` ring, at least 3:1 against the page and panels in both modes.
119
120
  - A bordered button always fills (secondary). Border-only buttons read smaller beside solid fills and vanish on dark.
120
121
  - Four sizes share one box per size across tiers: default 36px, `md` 32px, `sm` 28px, `xs` 24px. Read `--button-height*`, `--button-padding-x*`, `--button-label-size*`, `--button-tracking*`, `--button-icon-size`, `--button-gap`.
121
122
  - A dark bar on a light page is a `.dark`-scoped region.
@@ -128,15 +129,26 @@ Default radius `6px`; `4px` for tight controls, `8px` or `10px` for panels, pill
128
129
  - Fields read `--field-bg`, `--field-border`, and `--field-ring` (focus). `aria-invalid="true"` turns border and text red; the fill stays.
129
130
  - Raised panels read `--panel-*`.
130
131
  - Feedback uses `.form-callout`: `--alert-*` colours, `data-state` `info`, `success`, or `error`; `.inline` drops surface and border. It holds a message only. `.form-group` (`6px` gap) spaces a control and its feedback.
132
+ - Every field and form error eases in through `.form-reveal`: `grid-template-rows` `0fr` to `1fr` plus opacity, over `--dur-reveal` (`180ms`) with `--ease-out`, so whatever sits below slides instead of jumping. A field error sits under its field inside `.form-group`, where the row absorbs the group gap; a form error sits above the submit button. `data-state="open"` shows it. Keep the `role="alert"` message mounted and rendered; empty it once a closed row has collapsed. An `aria-invalid` field or code fades its border red over the same `--dur-reveal`. Under `prefers-reduced-motion` nothing animates.
131
133
 
132
134
  ### Auth
133
135
 
134
- - A fluid column up to `340px`, the `36px` field recipe, a `30.33px` wordmark box (26px ink × 7/6), centred `19px`/500 headings, and a centred two-line prompt footer. auth.put.io's set-password screen ships the action alone: drift.
135
- - Copy: “Sign in”, “Sign up”, and “That username or password doesn't look right.” followed by a “Reset your password” link.
136
- - References: `web-s06-auth`, `web-p00c-auth-signin`, `web-p00d-auth-signup`, `web-p00e-auth-2fa`.
137
- - One-time codes are one `.otp-input` (`inputmode="numeric"`, `autocomplete="one-time-code"`, `maxlength="6"`, `aria-invalid`) shown through two `.otp-group`s, one `.otp-separator`, and six `.otp-slot`s; script syncs slot text and `filled`/`active`, and maps a clicked slot to the input selection.
138
- - Editing an invalid code clears the error; retry waits for six digits. `data-state="verifying"` disables the input, keeps the digits, and announces through a polite live region. `data-state="success"` keeps the digits read-only, announces continuation in a `role="status"` callout, and shows no further action; the consumer owns navigation. auth.put.io disables the button, relabels it “Verified”, and announces that through a visually hidden status region.
139
- - No recovery-code action until a consumer owns the route. Groups own the responsive width, so the control fits narrow cards without scrolling.
136
+ - Sign in, sign up, password reset, and two-factor pages have no card or panel: the form sits on `--bg`. Recipe: `.auth-page`, `.auth-header`, `.auth-main`, `.auth-column`, `.auth-title`, `.auth-links`, `.auth-footer`.
137
+ - The logo sits top-left in the header, in a `30.33px` box (26px ink × 7/6). The top right stays empty by default.
138
+ - One left-aligned column, up to `340px`, is centred horizontally and vertically.
139
+ - A quiet centred footer links Terms of Service, Privacy Policy, and Help in muted `--fs-sm`.
140
+ - One title per screen: `22px`, medium, `-0.01em` tracking. No subtitles, taglines, or marketing lines; copy stays short.
141
+ - Fields are filled: the page points `--field-bg` at `--bg-secondary` and `--field-border` at `--line`. Fields and buttons in the column are `44px`.
142
+ - Labels are small, muted, and above the field.
143
+ - The primary button is full-width yellow. Secondary actions sit under the form as muted text links: “Forgot password?”, “New to put.io? Sign up”, “Wrong account? Sign out”.
144
+ - Tab order runs fields, submit, then secondary links; DOM order follows visual order, with no positive `tabindex`. Two-factor runs the code, Verify, then its links. The reveal-password toggle takes `tabindex="-1"` and keeps its accessible name: keyboard-only users can't toggle visibility, screen-reader users still can in browse mode. No link leaves the tab order.
145
+ - Form errors: one message in a `.form-reveal` row right above the submit button, in red `--fs-base` text. Invalid fields turn red. Auth forms never use the boxed `.form-callout`.
146
+ - Copy: “Sign in”, “Sign up”, and “That username or password doesn't look right.”
147
+ - auth.put.io still ships the older card layout: drift.
148
+ - References: `web-s06-auth`, `web-p00c-auth-signin`, `web-p00d-auth-signup`, `web-p00e-auth-2fa`. Outside references: the TIDAL, Stripe Link, Cursor, Linear, and Vercel sign-in pages.
149
+ - One-time codes are one `.otp-input` (`inputmode="numeric"`, `autocomplete="one-time-code"`, `maxlength="6"`, `aria-invalid`) shown through two `.otp-group`s, one `.otp-separator`, and six `.otp-slot`s; script syncs slot text and `filled`/`active`, and maps a clicked slot to the input selection. The slots stretch the full column with mono digits. The label reads “Code from your authenticator app”, with no hint line.
150
+ - Editing an invalid code closes the error; retry waits for six digits. `data-state="verifying"` disables the input, keeps the digits, and announces through a polite live region. `data-state="success"` keeps the digits read-only, announces continuation in a `role="status"` region, and shows no further action; the consumer owns navigation. The submit turns a disabled `.btn-success` with `data-state="success"`, relabelled “Verified”, announced through a visually hidden status region.
151
+ - “Use a recovery code” appears only once a consumer owns the route. Groups own the responsive width, so the control fits narrow columns without scrolling.
140
152
 
141
153
  ### TV
142
154
 
@@ -25,13 +25,13 @@
25
25
  --button-ghost-fg: hsl(0, 0%, 43.5%);
26
26
  --button-ghost-fg-hover: hsl(0, 0%, 9.0%);
27
27
  --button-ghost-bg-hover: hsl(0, 0%, 93.0%);
28
- --input-bg: hsl(0, 0%, 100%);
29
- --input-border: hsl(0, 0%, 85.8%);
30
- --input-border-hover: hsl(0, 0%, 78.0%);
31
- --input-border-focus: hsl(0, 0%, 78.0%);
32
- --input-ring: 0 0 0 1px hsl(0, 0%, 78.0%);
33
- --input-text: hsl(0, 0%, 9.0%);
34
- --input-placeholder: hsl(0, 0%, 43.5%);
28
+ --input-bg: hsl(0, 0%, 100%); /* deprecated: use --field-bg */
29
+ --input-border: hsl(0, 0%, 85.8%); /* deprecated: use --field-border */
30
+ --input-border-hover: hsl(0, 0%, 78.0%); /* deprecated: use --field-border-hover */
31
+ --input-border-focus: hsl(0, 0%, 78.0%); /* deprecated: use --field-border-focus */
32
+ --input-ring: 0 0 0 1px hsl(0, 0%, 78.0%); /* deprecated: use --field-ring */
33
+ --input-text: hsl(0, 0%, 9.0%); /* deprecated: use --field-text */
34
+ --input-placeholder: hsl(0, 0%, 43.5%); /* deprecated: use --field-placeholder */
35
35
  --field-bg: hsl(0, 0%, 100%);
36
36
  --field-bg-disabled: hsl(0, 0%, 97.3%);
37
37
  --field-border: hsl(0, 0%, 85.8%);
@@ -45,7 +45,7 @@
45
45
  --panel-shadow: 0 4px 12px hsla(0, 0%, 0%, 0.08);
46
46
  --background: hsl(0, 0%, 99.0%);
47
47
  --foreground: hsl(0, 0%, 9.0%);
48
- --foreground-muted: hsl(0, 0%, 43.5%);
48
+ --foreground-muted: hsl(0, 0%, 43.5%); /* deprecated: use --text-secondary */
49
49
  --success: hsl(151, 55%, 41.5%);
50
50
  --destructive: hsl(358, 75%, 59%);
51
51
  --invert-foreground: hsl(0, 0%, 100%);
@@ -172,6 +172,7 @@
172
172
  --yellow-text-secondary: hsl(46, 100%, 27%);
173
173
  --yellow-text: hsl(43, 32%, 21%);
174
174
  --lime-3: hsl(85, 76.0%, 92.3%);
175
+ --shadow-focus: 0 0 0 2px hsl(0, 0%, 99.0%), 0 0 0 4px hsl(0, 0%, 52.3%);
175
176
  --html-bg: hsl(0, 0%, 97.3%);
176
177
  --app-bg: hsl(0, 0%, 100%);
177
178
  --nav-bg: hsl(0, 0%, 100%);
@@ -216,7 +217,7 @@
216
217
  --nav-height: 56px;
217
218
  --nav-height-compact: 52px;
218
219
  --nav-cta-height: 32px;
219
- --input-radius: 6px;
220
+ --input-radius: 6px; /* deprecated: use --field-radius */
220
221
  --field-radius: 6px;
221
222
  --panel-radius: 10px;
222
223
  --primary: hsl(44.7, 97.9%, 63.1%);
@@ -256,7 +257,6 @@
256
257
  --shadow-md: 0 4px 12px hsla(0, 0%, 0%, 0.08);
257
258
  --shadow-lg: 0 16px 40px hsla(0, 0%, 0%, 0.12);
258
259
  --shadow-focus-color: hsla(47, 100%, 65%, 0.35);
259
- --shadow-focus: 0 0 0 3px hsla(47, 100%, 65%, 0.35);
260
260
  --font-sans: "GT America", sans-serif;
261
261
  --font-display: "GT America", sans-serif;
262
262
  --font-mono: "Berkeley Mono", monospace;
@@ -301,6 +301,7 @@
301
301
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
302
302
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
303
303
  --dur-fast: 120ms;
304
+ --dur-reveal: 180ms;
304
305
  --dur-base: 200ms;
305
306
  --dur-slow: 320ms;
306
307
  --z-dropdown: 1000;
@@ -332,13 +333,13 @@
332
333
  --button-ghost-fg: hsl(0, 0%, 62.8%);
333
334
  --button-ghost-fg-hover: hsl(0, 0%, 93.0%);
334
335
  --button-ghost-bg-hover: hsl(0, 0%, 15.8%);
335
- --input-bg: hsl(0, 0%, 8.5%);
336
- --input-border: hsl(0, 0%, 24.3%);
337
- --input-border-hover: hsl(0, 0%, 31.2%);
338
- --input-border-focus: hsl(0, 0%, 31.2%);
339
- --input-ring: 0 0 0 1px hsl(0, 0%, 31.2%);
340
- --input-text: hsl(0, 0%, 93.0%);
341
- --input-placeholder: hsl(0, 0%, 62.8%);
336
+ --input-bg: hsl(0, 0%, 8.5%); /* deprecated: use --field-bg */
337
+ --input-border: hsl(0, 0%, 24.3%); /* deprecated: use --field-border */
338
+ --input-border-hover: hsl(0, 0%, 31.2%); /* deprecated: use --field-border-hover */
339
+ --input-border-focus: hsl(0, 0%, 31.2%); /* deprecated: use --field-border-focus */
340
+ --input-ring: 0 0 0 1px hsl(0, 0%, 31.2%); /* deprecated: use --field-ring */
341
+ --input-text: hsl(0, 0%, 93.0%); /* deprecated: use --field-text */
342
+ --input-placeholder: hsl(0, 0%, 62.8%); /* deprecated: use --field-placeholder */
342
343
  --field-bg: hsl(0, 0%, 8.5%);
343
344
  --field-bg-disabled: hsl(0, 0%, 11.0%);
344
345
  --field-border: hsl(0, 0%, 24.3%);
@@ -352,7 +353,7 @@
352
353
  --panel-shadow: 0 4px 12px hsla(0, 0%, 0%, 0.5);
353
354
  --background: hsl(0, 0%, 8.5%);
354
355
  --foreground: hsl(0, 0%, 93.0%);
355
- --foreground-muted: hsl(0, 0%, 62.8%);
356
+ --foreground-muted: hsl(0, 0%, 62.8%); /* deprecated: use --text-secondary */
356
357
  --success: hsl(151, 55%, 41.5%);
357
358
  --destructive: hsl(358, 75%, 59%);
358
359
  --invert-foreground: hsl(0, 0%, 8.5%);
@@ -479,6 +480,7 @@
479
480
  --yellow-text-secondary: hsl(45, 100%, 64%);
480
481
  --yellow-text: hsl(46, 89%, 86%);
481
482
  --lime-3: hsl(85, 45%, 12%);
483
+ --shadow-focus: 0 0 0 2px hsl(0, 0%, 8.5%), 0 0 0 4px hsl(0, 0%, 49.4%);
482
484
  --html-bg: hsl(0, 0%, 0%);
483
485
  --app-bg: hsl(0, 0%, 8.5%);
484
486
  --nav-bg: hsl(0, 0%, 8.5%);
@@ -218,32 +218,38 @@
218
218
  "input": {
219
219
  "background": {
220
220
  "$type": "color",
221
- "$value": "hsl(0, 0%, 100%)"
221
+ "$value": "hsl(0, 0%, 100%)",
222
+ "$description": "Deprecated alias. Use --field-bg (component.field.background)."
222
223
  },
223
224
  "border": {
224
225
  "$type": "color",
225
- "$value": "hsl(0, 0%, 85.8%)"
226
+ "$value": "hsl(0, 0%, 85.8%)",
227
+ "$description": "Deprecated alias. Use --field-border (component.field.border)."
226
228
  },
227
229
  "radius": {
228
230
  "$type": "dimension",
229
- "$value": "6px"
231
+ "$value": "6px",
232
+ "$description": "Deprecated alias. Use --field-radius (component.field.radius)."
230
233
  },
231
234
  "borderHover": {
232
235
  "$type": "color",
233
236
  "$value": "hsl(0, 0%, 78.0%)",
234
- "$description": "shadcn-friendly alias of --field-border-hover. Always aliases the field token so the two name systems cannot drift."
237
+ "$description": "Deprecated alias. Use --field-border-hover (component.field.borderHover)."
235
238
  },
236
239
  "borderFocus": {
237
240
  "$type": "color",
238
- "$value": "hsl(0, 0%, 78.0%)"
241
+ "$value": "hsl(0, 0%, 78.0%)",
242
+ "$description": "Deprecated alias. Use --field-border-focus (component.field.borderFocus)."
239
243
  },
240
244
  "text": {
241
245
  "$type": "color",
242
- "$value": "hsl(0, 0%, 9.0%)"
246
+ "$value": "hsl(0, 0%, 9.0%)",
247
+ "$description": "Deprecated alias. Use --field-text (component.field.text)."
243
248
  },
244
249
  "placeholder": {
245
250
  "$type": "color",
246
- "$value": "hsl(0, 0%, 43.5%)"
251
+ "$value": "hsl(0, 0%, 43.5%)",
252
+ "$description": "Deprecated alias. Use --field-placeholder (component.field.placeholder)."
247
253
  }
248
254
  },
249
255
  "fileRow": {
@@ -1064,6 +1070,10 @@
1064
1070
  "$type": "duration",
1065
1071
  "$value": "120ms"
1066
1072
  },
1073
+ "reveal": {
1074
+ "$type": "duration",
1075
+ "$value": "180ms"
1076
+ },
1067
1077
  "base": {
1068
1078
  "$type": "duration",
1069
1079
  "$value": "200ms"
package/dist/tokens.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  // Do not edit directly. Generated from tokens/**/*.tokens.json.
2
2
 
3
- export type PutioTokenName = "component.button.primary.background" | "component.button.primary.backgroundHover" | "component.button.primary.backgroundHoverDark" | "component.button.primary.foreground" | "component.button.primary.radius" | "component.button.secondary.background" | "component.button.secondary.backgroundDark" | "component.button.secondary.foreground" | "component.button.secondary.foregroundDark" | "component.button.secondary.backgroundHover" | "component.button.secondary.backgroundHoverDark" | "component.button.success.background" | "component.button.success.backgroundDark" | "component.button.success.backgroundHover" | "component.button.success.backgroundHoverDark" | "component.button.success.foreground" | "component.button.danger.background" | "component.button.danger.backgroundDark" | "component.button.danger.backgroundHover" | "component.button.danger.backgroundHoverDark" | "component.button.danger.foreground" | "component.button.info.background" | "component.button.info.backgroundDark" | "component.button.info.backgroundHover" | "component.button.info.backgroundHoverDark" | "component.button.info.foreground" | "component.button.info.foregroundDark" | "component.button.default.background" | "component.button.default.backgroundDark" | "component.button.default.backgroundHover" | "component.button.default.backgroundHoverDark" | "component.button.default.foreground" | "component.button.default.foregroundDark" | "component.button.ghost.background" | "component.button.ghost.foreground" | "component.button.ghost.foregroundDark" | "component.button.ghost.foregroundHover" | "component.button.ghost.foregroundHoverDark" | "component.button.ghost.backgroundHover" | "component.button.ghost.backgroundHoverDark" | "component.button.height" | "component.button.heightMd" | "component.button.heightSm" | "component.button.heightXs" | "component.button.paddingX" | "component.button.paddingXXs" | "component.button.labelSize" | "component.button.labelSizeXs" | "component.button.tracking" | "component.button.trackingMd" | "component.button.trackingSm" | "component.button.trackingXs" | "component.button.iconSize" | "component.button.gap" | "component.nav.height" | "component.nav.heightCompact" | "component.nav.ctaHeight" | "component.input.background" | "component.input.backgroundDark" | "component.input.border" | "component.input.borderDark" | "component.input.radius" | "component.input.borderHover" | "component.input.borderHoverDark" | "component.input.borderFocus" | "component.input.borderFocusDark" | "component.input.ring" | "component.input.ringDark" | "component.input.text" | "component.input.textDark" | "component.input.placeholder" | "component.input.placeholderDark" | "component.field.background" | "component.field.backgroundDark" | "component.field.backgroundDisabled" | "component.field.backgroundDisabledDark" | "component.field.border" | "component.field.borderDark" | "component.field.borderHover" | "component.field.borderHoverDark" | "component.field.borderFocus" | "component.field.borderFocusDark" | "component.field.text" | "component.field.textDark" | "component.field.placeholder" | "component.field.placeholderDark" | "component.field.radius" | "component.field.ring" | "component.field.ringDark" | "component.panel.background" | "component.panel.backgroundDark" | "component.panel.border" | "component.panel.borderDark" | "component.panel.radius" | "component.panel.shadow" | "component.panel.shadowDark" | "component.alias.background" | "component.alias.backgroundDark" | "component.alias.foreground" | "component.alias.foregroundDark" | "component.alias.foregroundMuted" | "component.alias.foregroundMutedDark" | "component.alias.primary" | "component.alias.primaryForeground" | "component.alias.success" | "component.alias.successDark" | "component.alias.successForeground" | "component.alias.destructive" | "component.alias.destructiveDark" | "component.alias.destructiveForeground" | "component.alias.invertForeground" | "component.alias.invertForegroundDark" | "component.alias.solidForeground" | "component.alias.solidForegroundDark" | "component.alias.muted" | "component.alias.mutedDark" | "component.alias.mutedForeground" | "component.alias.mutedForegroundDark" | "component.alias.accent" | "component.alias.accentDark" | "component.alias.accentForeground" | "component.alias.accentForegroundDark" | "component.alias.card" | "component.alias.cardDark" | "component.alias.cardForeground" | "component.alias.cardForegroundDark" | "component.alias.popover" | "component.alias.popoverDark" | "component.alias.popoverForeground" | "component.alias.popoverForegroundDark" | "component.alias.input" | "component.alias.inputDark" | "component.alias.ring" | "component.fileRow.background" | "component.fileRow.backgroundDark" | "component.fileRow.hoverBackground" | "component.fileRow.hoverBackgroundDark" | "component.fileRow.activeBackground" | "component.fileRow.activeBackgroundDark" | "component.fileRow.border" | "component.fileRow.borderDark" | "component.fileRow.icon" | "component.notification.infoBackground" | "component.notification.infoBackgroundDark" | "component.notification.dangerBackground" | "component.notification.dangerBackgroundDark" | "component.notification.background" | "component.notification.backgroundDark" | "component.notification.border" | "component.notification.borderDark" | "component.notification.foreground" | "component.notification.foregroundDark" | "component.notification.icon" | "component.notification.iconDark" | "component.notification.successBackground" | "component.notification.successBackgroundDark" | "component.notification.successBorder" | "component.notification.successBorderDark" | "component.notification.successForeground" | "component.notification.successForegroundDark" | "component.notification.dangerBorder" | "component.notification.dangerBorderDark" | "component.notification.dangerForeground" | "component.notification.dangerForegroundDark" | "component.notification.badgeBackground" | "component.notification.badgeForeground" | "component.menu.background" | "component.menu.backgroundDark" | "component.menu.border" | "component.menu.borderDark" | "component.menu.radius" | "component.menu.shadow" | "component.menu.shadowDark" | "component.menu.itemBackgroundHover" | "component.menu.itemBackgroundHoverDark" | "component.menu.itemText" | "component.menu.itemTextDark" | "component.menu.itemIcon" | "component.menu.itemIconDark" | "component.menu.itemShortcut" | "component.menu.itemShortcutDark" | "component.menu.itemDangerText" | "component.menu.itemDangerTextDark" | "component.menu.itemDangerBackgroundHover" | "component.menu.itemDangerBackgroundHoverDark" | "component.menu.itemHeight" | "component.menu.separator" | "component.menu.separatorDark" | "component.menu.label" | "component.menu.labelDark" | "component.palette.background" | "component.palette.backgroundDark" | "component.palette.border" | "component.palette.borderDark" | "component.palette.shadow" | "component.palette.shadowDark" | "component.palette.scrim" | "component.palette.scrimDark" | "component.palette.width" | "component.palette.inputHeight" | "component.palette.itemHeight" | "component.palette.itemBackgroundActive" | "component.palette.itemBackgroundActiveDark" | "component.palette.groupLabel" | "component.palette.groupLabelDark" | "component.palette.itemMeta" | "component.palette.itemMetaDark" | "component.sheet.background" | "component.sheet.backgroundDark" | "component.sheet.border" | "component.sheet.borderDark" | "component.sheet.shadow" | "component.sheet.shadowDark" | "component.sheet.scrim" | "component.sheet.scrimDark" | "component.sheet.width" | "component.avatar.yellow" | "component.avatar.green" | "component.avatar.red" | "component.avatar.blue" | "component.avatar.purple" | "component.avatar.teal" | "component.avatar.orange" | "component.avatar.foreground" | "component.avatar.foregroundWarm" | "component.alert.radius" | "component.alert.infoBackground" | "component.alert.infoBackgroundDark" | "component.alert.infoBorder" | "component.alert.infoBorderDark" | "component.alert.infoText" | "component.alert.infoTextDark" | "component.alert.infoBody" | "component.alert.infoBodyDark" | "component.alert.infoIcon" | "component.alert.infoIconDark" | "component.alert.brandBackground" | "component.alert.brandBackgroundDark" | "component.alert.brandBorder" | "component.alert.brandBorderDark" | "component.alert.brandText" | "component.alert.brandTextDark" | "component.alert.brandBody" | "component.alert.brandBodyDark" | "component.alert.brandIcon" | "component.alert.brandIconDark" | "component.alert.successBackground" | "component.alert.successBackgroundDark" | "component.alert.successBorder" | "component.alert.successBorderDark" | "component.alert.successText" | "component.alert.successTextDark" | "component.alert.successBody" | "component.alert.successBodyDark" | "component.alert.successIcon" | "component.alert.successIconDark" | "component.alert.dangerBackground" | "component.alert.dangerBackgroundDark" | "component.alert.dangerBorder" | "component.alert.dangerBorderDark" | "component.alert.dangerText" | "component.alert.dangerTextDark" | "component.alert.dangerBody" | "component.alert.dangerBodyDark" | "component.alert.dangerIcon" | "component.alert.dangerIconDark" | "component.slider.track" | "component.slider.trackDark" | "component.slider.buffer" | "component.slider.bufferDark" | "component.slider.fill" | "component.slider.knob" | "component.slider.fillDisabled" | "component.slider.fillDisabledDark" | "component.slider.trackHeight" | "component.slider.knobSize" | "component.slider.hitHeight" | "component.pagination.itemSize" | "component.pagination.itemText" | "component.pagination.itemTextDark" | "component.pagination.itemTextActive" | "component.pagination.itemTextActiveDark" | "component.pagination.itemBackgroundHover" | "component.pagination.itemBackgroundHoverDark" | "component.pagination.itemBackgroundActive" | "component.pagination.itemBackgroundActiveDark" | "component.pagination.itemBorderActive" | "component.pagination.itemBorderActiveDark" | "context.tv.text.primary" | "context.tv.text.secondary" | "context.tv.text.tertiary" | "context.tv.channelArt.production.posterBackground" | "context.tv.channelArt.production.splashBackground" | "context.tv.channelArt.development.background" | "context.tv.channelArt.development.accent" | "context.tv.channelArt.development.grid" | "context.tv.channelArt.nightly.background" | "context.tv.channelArt.nightly.accent" | "context.tv.channelArt.nightly.star" | "context.tv.channelArt.nightly.moon" | "context.tv.channelArt.nightly.moonCrater" | "context.tv.channelArt.lab.background" | "context.tv.channelArt.lab.foreground" | "context.tv.channelArt.lab.accent" | "tv.video.background" | "tv.video.heroScrimTop" | "tv.video.heroScrimBottom" | "tv.video.textOnVideo" | "tv.text.heading" | "tv.text.label" | "tv.text.body" | "tv.text.caption" | "tv.text.smol" | "tv.fontWeight.regular" | "tv.fontWeight.medium" | "tv.space.xxs" | "tv.space.xs" | "tv.space.sm" | "tv.space.md" | "tv.space.lg" | "tv.space.xl" | "tv.space.xxl" | "tv.overscan.x" | "tv.overscan.y" | "tv.radius" | "tv.focus.borderWidth" | "tv.focus.row.background" | "tv.focus.row.backgroundFocused" | "tv.focus.control.background" | "tv.focus.control.backgroundFocused" | "tv.focus.control.border" | "tv.focus.control.borderFocused" | "tv.z.modal" | "tv.z.toast" | "tv.z.overlay" | "color.brand.yellow" | "color.neutral.light.bg" | "color.neutral.light.bgSecondary" | "color.neutral.light.componentBg" | "color.neutral.light.componentBgHover" | "color.neutral.light.componentBgActive" | "color.neutral.light.line" | "color.neutral.light.border" | "color.neutral.light.borderHover" | "color.neutral.light.solid" | "color.neutral.light.solidHover" | "color.neutral.light.textSecondary" | "color.neutral.light.text" | "color.neutral.dark.bg" | "color.neutral.dark.bgSecondary" | "color.neutral.dark.componentBg" | "color.neutral.dark.componentBgHover" | "color.neutral.dark.componentBgActive" | "color.neutral.dark.line" | "color.neutral.dark.border" | "color.neutral.dark.borderHover" | "color.neutral.dark.solid" | "color.neutral.dark.solidHover" | "color.neutral.dark.textSecondary" | "color.neutral.dark.text" | "color.green.light.bg" | "color.green.light.bgSecondary" | "color.green.light.componentBg" | "color.green.light.componentBgHover" | "color.green.light.componentBgActive" | "color.green.light.line" | "color.green.light.border" | "color.green.light.borderHover" | "color.green.light.solid" | "color.green.light.solidHover" | "color.green.light.textSecondary" | "color.green.light.text" | "color.green.dark.bg" | "color.green.dark.bgSecondary" | "color.green.dark.componentBg" | "color.green.dark.componentBgHover" | "color.green.dark.componentBgActive" | "color.green.dark.line" | "color.green.dark.border" | "color.green.dark.borderHover" | "color.green.dark.solid" | "color.green.dark.solidHover" | "color.green.dark.textSecondary" | "color.green.dark.text" | "color.red.light.bg" | "color.red.light.bgSecondary" | "color.red.light.componentBg" | "color.red.light.componentBgHover" | "color.red.light.componentBgActive" | "color.red.light.line" | "color.red.light.border" | "color.red.light.borderHover" | "color.red.light.solid" | "color.red.light.solidHover" | "color.red.light.textSecondary" | "color.red.light.text" | "color.red.dark.bg" | "color.red.dark.bgSecondary" | "color.red.dark.componentBg" | "color.red.dark.componentBgHover" | "color.red.dark.componentBgActive" | "color.red.dark.line" | "color.red.dark.border" | "color.red.dark.borderHover" | "color.red.dark.solid" | "color.red.dark.solidHover" | "color.red.dark.textSecondary" | "color.red.dark.text" | "color.yellow.light.bg" | "color.yellow.light.bgSecondary" | "color.yellow.light.componentBg" | "color.yellow.light.componentBgHover" | "color.yellow.light.componentBgActive" | "color.yellow.light.line" | "color.yellow.light.border" | "color.yellow.light.borderHover" | "color.yellow.light.solidHover" | "color.yellow.light.textSecondary" | "color.yellow.light.text" | "color.yellow.dark.bg" | "color.yellow.dark.bgSecondary" | "color.yellow.dark.componentBg" | "color.yellow.dark.componentBgHover" | "color.yellow.dark.componentBgActive" | "color.yellow.dark.line" | "color.yellow.dark.border" | "color.yellow.dark.borderHover" | "color.yellow.dark.solidHover" | "color.yellow.dark.textSecondary" | "color.yellow.dark.text" | "color.transfer.light.lime3" | "color.transfer.dark.lime3" | "elevation.shadowColor" | "elevation.color" | "elevation.sm" | "elevation.md" | "elevation.lg" | "elevation.focusColor" | "elevation.focus" | "typography.fontFamily.sans" | "typography.fontFamily.display" | "typography.fontFamily.mono" | "typography.fontSize.xs" | "typography.fontSize.sm" | "typography.fontSize.base" | "typography.fontSize.md" | "typography.fontSize.lg" | "typography.fontSize.xl" | "typography.fontSize.2xl" | "typography.fontSize.3xl" | "typography.fontSize.4xl" | "typography.fontSize.display" | "typography.lineHeight.tight" | "typography.lineHeight.snug" | "typography.lineHeight.normal" | "typography.lineHeight.loose" | "typography.fontWeight.regular" | "typography.fontWeight.medium" | "typography.fontWeight.bold" | "typography.fontWeight.black" | "typography.letterSpacing.tight" | "typography.letterSpacing.normal" | "typography.letterSpacing.wide" | "typography.letterSpacing.uppercase" | "spacing.0" | "spacing.1" | "spacing.2" | "spacing.3" | "spacing.4" | "spacing.5" | "spacing.6" | "spacing.7" | "spacing.8" | "radius.sm" | "radius.default" | "radius.md" | "radius.lg" | "radius.pill" | "radius.tv" | "border.width" | "motion.easing.out" | "motion.easing.inOut" | "motion.duration.fast" | "motion.duration.base" | "motion.duration.slow" | "z.dropdown" | "z.sticky" | "z.modal" | "z.notification" | "z.tooltip" | "breakpoint.sm" | "breakpoint.md" | "breakpoint.lg" | "surface.light.htmlBg" | "surface.light.appBg" | "surface.light.navBg" | "surface.light.navItemBg" | "surface.light.navItemBgHover" | "surface.light.navItemBgActive" | "surface.light.listItemBg" | "surface.light.listItemBgHover" | "surface.light.listItemBgActive" | "surface.light.listItemBorder" | "surface.light.segmentedControlBg" | "surface.light.segmentedControlBgActive" | "surface.light.transferListItemCompletingBg" | "surface.light.transferListItemDownloadingBg" | "surface.light.transferListItemFinishedBg" | "surface.light.transferListItemPassiveBg" | "surface.light.hiContrast" | "surface.light.loContrast" | "surface.light.transparent" | "surface.light.overlayInline" | "surface.light.overlayFull" | "surface.dark.htmlBg" | "surface.dark.appBg" | "surface.dark.navBg" | "surface.dark.navItemBg" | "surface.dark.navItemBgHover" | "surface.dark.navItemBgActive" | "surface.dark.listItemBg" | "surface.dark.listItemBgHover" | "surface.dark.listItemBgActive" | "surface.dark.listItemBorder" | "surface.dark.segmentedControlBg" | "surface.dark.segmentedControlBgActive" | "surface.dark.transferListItemCompletingBg" | "surface.dark.transferListItemDownloadingBg" | "surface.dark.transferListItemFinishedBg" | "surface.dark.transferListItemPassiveBg" | "surface.dark.hiContrast" | "surface.dark.loContrast" | "surface.dark.overlayInline" | "surface.dark.overlayFull" | "surface.dark.shadowColor" | "surface.dark.shadow" | "surface.dark.shadowSm" | "surface.dark.shadowMd" | "surface.dark.shadowLg";
3
+ export type PutioTokenName = "component.button.primary.background" | "component.button.primary.backgroundHover" | "component.button.primary.backgroundHoverDark" | "component.button.primary.foreground" | "component.button.primary.radius" | "component.button.secondary.background" | "component.button.secondary.backgroundDark" | "component.button.secondary.foreground" | "component.button.secondary.foregroundDark" | "component.button.secondary.backgroundHover" | "component.button.secondary.backgroundHoverDark" | "component.button.success.background" | "component.button.success.backgroundDark" | "component.button.success.backgroundHover" | "component.button.success.backgroundHoverDark" | "component.button.success.foreground" | "component.button.danger.background" | "component.button.danger.backgroundDark" | "component.button.danger.backgroundHover" | "component.button.danger.backgroundHoverDark" | "component.button.danger.foreground" | "component.button.info.background" | "component.button.info.backgroundDark" | "component.button.info.backgroundHover" | "component.button.info.backgroundHoverDark" | "component.button.info.foreground" | "component.button.info.foregroundDark" | "component.button.default.background" | "component.button.default.backgroundDark" | "component.button.default.backgroundHover" | "component.button.default.backgroundHoverDark" | "component.button.default.foreground" | "component.button.default.foregroundDark" | "component.button.ghost.background" | "component.button.ghost.foreground" | "component.button.ghost.foregroundDark" | "component.button.ghost.foregroundHover" | "component.button.ghost.foregroundHoverDark" | "component.button.ghost.backgroundHover" | "component.button.ghost.backgroundHoverDark" | "component.button.height" | "component.button.heightMd" | "component.button.heightSm" | "component.button.heightXs" | "component.button.paddingX" | "component.button.paddingXXs" | "component.button.labelSize" | "component.button.labelSizeXs" | "component.button.tracking" | "component.button.trackingMd" | "component.button.trackingSm" | "component.button.trackingXs" | "component.button.iconSize" | "component.button.gap" | "component.nav.height" | "component.nav.heightCompact" | "component.nav.ctaHeight" | "component.input.background" | "component.input.backgroundDark" | "component.input.border" | "component.input.borderDark" | "component.input.radius" | "component.input.borderHover" | "component.input.borderHoverDark" | "component.input.borderFocus" | "component.input.borderFocusDark" | "component.input.ring" | "component.input.ringDark" | "component.input.text" | "component.input.textDark" | "component.input.placeholder" | "component.input.placeholderDark" | "component.field.background" | "component.field.backgroundDark" | "component.field.backgroundDisabled" | "component.field.backgroundDisabledDark" | "component.field.border" | "component.field.borderDark" | "component.field.borderHover" | "component.field.borderHoverDark" | "component.field.borderFocus" | "component.field.borderFocusDark" | "component.field.text" | "component.field.textDark" | "component.field.placeholder" | "component.field.placeholderDark" | "component.field.radius" | "component.field.ring" | "component.field.ringDark" | "component.panel.background" | "component.panel.backgroundDark" | "component.panel.border" | "component.panel.borderDark" | "component.panel.radius" | "component.panel.shadow" | "component.panel.shadowDark" | "component.alias.background" | "component.alias.backgroundDark" | "component.alias.foreground" | "component.alias.foregroundDark" | "component.alias.foregroundMuted" | "component.alias.foregroundMutedDark" | "component.alias.primary" | "component.alias.primaryForeground" | "component.alias.success" | "component.alias.successDark" | "component.alias.successForeground" | "component.alias.destructive" | "component.alias.destructiveDark" | "component.alias.destructiveForeground" | "component.alias.invertForeground" | "component.alias.invertForegroundDark" | "component.alias.solidForeground" | "component.alias.solidForegroundDark" | "component.alias.muted" | "component.alias.mutedDark" | "component.alias.mutedForeground" | "component.alias.mutedForegroundDark" | "component.alias.accent" | "component.alias.accentDark" | "component.alias.accentForeground" | "component.alias.accentForegroundDark" | "component.alias.card" | "component.alias.cardDark" | "component.alias.cardForeground" | "component.alias.cardForegroundDark" | "component.alias.popover" | "component.alias.popoverDark" | "component.alias.popoverForeground" | "component.alias.popoverForegroundDark" | "component.alias.input" | "component.alias.inputDark" | "component.alias.ring" | "component.fileRow.background" | "component.fileRow.backgroundDark" | "component.fileRow.hoverBackground" | "component.fileRow.hoverBackgroundDark" | "component.fileRow.activeBackground" | "component.fileRow.activeBackgroundDark" | "component.fileRow.border" | "component.fileRow.borderDark" | "component.fileRow.icon" | "component.notification.infoBackground" | "component.notification.infoBackgroundDark" | "component.notification.dangerBackground" | "component.notification.dangerBackgroundDark" | "component.notification.background" | "component.notification.backgroundDark" | "component.notification.border" | "component.notification.borderDark" | "component.notification.foreground" | "component.notification.foregroundDark" | "component.notification.icon" | "component.notification.iconDark" | "component.notification.successBackground" | "component.notification.successBackgroundDark" | "component.notification.successBorder" | "component.notification.successBorderDark" | "component.notification.successForeground" | "component.notification.successForegroundDark" | "component.notification.dangerBorder" | "component.notification.dangerBorderDark" | "component.notification.dangerForeground" | "component.notification.dangerForegroundDark" | "component.notification.badgeBackground" | "component.notification.badgeForeground" | "component.menu.background" | "component.menu.backgroundDark" | "component.menu.border" | "component.menu.borderDark" | "component.menu.radius" | "component.menu.shadow" | "component.menu.shadowDark" | "component.menu.itemBackgroundHover" | "component.menu.itemBackgroundHoverDark" | "component.menu.itemText" | "component.menu.itemTextDark" | "component.menu.itemIcon" | "component.menu.itemIconDark" | "component.menu.itemShortcut" | "component.menu.itemShortcutDark" | "component.menu.itemDangerText" | "component.menu.itemDangerTextDark" | "component.menu.itemDangerBackgroundHover" | "component.menu.itemDangerBackgroundHoverDark" | "component.menu.itemHeight" | "component.menu.separator" | "component.menu.separatorDark" | "component.menu.label" | "component.menu.labelDark" | "component.palette.background" | "component.palette.backgroundDark" | "component.palette.border" | "component.palette.borderDark" | "component.palette.shadow" | "component.palette.shadowDark" | "component.palette.scrim" | "component.palette.scrimDark" | "component.palette.width" | "component.palette.inputHeight" | "component.palette.itemHeight" | "component.palette.itemBackgroundActive" | "component.palette.itemBackgroundActiveDark" | "component.palette.groupLabel" | "component.palette.groupLabelDark" | "component.palette.itemMeta" | "component.palette.itemMetaDark" | "component.sheet.background" | "component.sheet.backgroundDark" | "component.sheet.border" | "component.sheet.borderDark" | "component.sheet.shadow" | "component.sheet.shadowDark" | "component.sheet.scrim" | "component.sheet.scrimDark" | "component.sheet.width" | "component.avatar.yellow" | "component.avatar.green" | "component.avatar.red" | "component.avatar.blue" | "component.avatar.purple" | "component.avatar.teal" | "component.avatar.orange" | "component.avatar.foreground" | "component.avatar.foregroundWarm" | "component.alert.radius" | "component.alert.infoBackground" | "component.alert.infoBackgroundDark" | "component.alert.infoBorder" | "component.alert.infoBorderDark" | "component.alert.infoText" | "component.alert.infoTextDark" | "component.alert.infoBody" | "component.alert.infoBodyDark" | "component.alert.infoIcon" | "component.alert.infoIconDark" | "component.alert.brandBackground" | "component.alert.brandBackgroundDark" | "component.alert.brandBorder" | "component.alert.brandBorderDark" | "component.alert.brandText" | "component.alert.brandTextDark" | "component.alert.brandBody" | "component.alert.brandBodyDark" | "component.alert.brandIcon" | "component.alert.brandIconDark" | "component.alert.successBackground" | "component.alert.successBackgroundDark" | "component.alert.successBorder" | "component.alert.successBorderDark" | "component.alert.successText" | "component.alert.successTextDark" | "component.alert.successBody" | "component.alert.successBodyDark" | "component.alert.successIcon" | "component.alert.successIconDark" | "component.alert.dangerBackground" | "component.alert.dangerBackgroundDark" | "component.alert.dangerBorder" | "component.alert.dangerBorderDark" | "component.alert.dangerText" | "component.alert.dangerTextDark" | "component.alert.dangerBody" | "component.alert.dangerBodyDark" | "component.alert.dangerIcon" | "component.alert.dangerIconDark" | "component.slider.track" | "component.slider.trackDark" | "component.slider.buffer" | "component.slider.bufferDark" | "component.slider.fill" | "component.slider.knob" | "component.slider.fillDisabled" | "component.slider.fillDisabledDark" | "component.slider.trackHeight" | "component.slider.knobSize" | "component.slider.hitHeight" | "component.pagination.itemSize" | "component.pagination.itemText" | "component.pagination.itemTextDark" | "component.pagination.itemTextActive" | "component.pagination.itemTextActiveDark" | "component.pagination.itemBackgroundHover" | "component.pagination.itemBackgroundHoverDark" | "component.pagination.itemBackgroundActive" | "component.pagination.itemBackgroundActiveDark" | "component.pagination.itemBorderActive" | "component.pagination.itemBorderActiveDark" | "context.tv.text.primary" | "context.tv.text.secondary" | "context.tv.text.tertiary" | "context.tv.channelArt.production.posterBackground" | "context.tv.channelArt.production.splashBackground" | "context.tv.channelArt.development.background" | "context.tv.channelArt.development.accent" | "context.tv.channelArt.development.grid" | "context.tv.channelArt.nightly.background" | "context.tv.channelArt.nightly.accent" | "context.tv.channelArt.nightly.star" | "context.tv.channelArt.nightly.moon" | "context.tv.channelArt.nightly.moonCrater" | "context.tv.channelArt.lab.background" | "context.tv.channelArt.lab.foreground" | "context.tv.channelArt.lab.accent" | "tv.video.background" | "tv.video.heroScrimTop" | "tv.video.heroScrimBottom" | "tv.video.textOnVideo" | "tv.text.heading" | "tv.text.label" | "tv.text.body" | "tv.text.caption" | "tv.text.smol" | "tv.fontWeight.regular" | "tv.fontWeight.medium" | "tv.space.xxs" | "tv.space.xs" | "tv.space.sm" | "tv.space.md" | "tv.space.lg" | "tv.space.xl" | "tv.space.xxl" | "tv.overscan.x" | "tv.overscan.y" | "tv.radius" | "tv.focus.borderWidth" | "tv.focus.row.background" | "tv.focus.row.backgroundFocused" | "tv.focus.control.background" | "tv.focus.control.backgroundFocused" | "tv.focus.control.border" | "tv.focus.control.borderFocused" | "tv.z.modal" | "tv.z.toast" | "tv.z.overlay" | "color.brand.yellow" | "color.neutral.light.bg" | "color.neutral.light.bgSecondary" | "color.neutral.light.componentBg" | "color.neutral.light.componentBgHover" | "color.neutral.light.componentBgActive" | "color.neutral.light.line" | "color.neutral.light.border" | "color.neutral.light.borderHover" | "color.neutral.light.solid" | "color.neutral.light.solidHover" | "color.neutral.light.textSecondary" | "color.neutral.light.text" | "color.neutral.dark.bg" | "color.neutral.dark.bgSecondary" | "color.neutral.dark.componentBg" | "color.neutral.dark.componentBgHover" | "color.neutral.dark.componentBgActive" | "color.neutral.dark.line" | "color.neutral.dark.border" | "color.neutral.dark.borderHover" | "color.neutral.dark.solid" | "color.neutral.dark.solidHover" | "color.neutral.dark.textSecondary" | "color.neutral.dark.text" | "color.green.light.bg" | "color.green.light.bgSecondary" | "color.green.light.componentBg" | "color.green.light.componentBgHover" | "color.green.light.componentBgActive" | "color.green.light.line" | "color.green.light.border" | "color.green.light.borderHover" | "color.green.light.solid" | "color.green.light.solidHover" | "color.green.light.textSecondary" | "color.green.light.text" | "color.green.dark.bg" | "color.green.dark.bgSecondary" | "color.green.dark.componentBg" | "color.green.dark.componentBgHover" | "color.green.dark.componentBgActive" | "color.green.dark.line" | "color.green.dark.border" | "color.green.dark.borderHover" | "color.green.dark.solid" | "color.green.dark.solidHover" | "color.green.dark.textSecondary" | "color.green.dark.text" | "color.red.light.bg" | "color.red.light.bgSecondary" | "color.red.light.componentBg" | "color.red.light.componentBgHover" | "color.red.light.componentBgActive" | "color.red.light.line" | "color.red.light.border" | "color.red.light.borderHover" | "color.red.light.solid" | "color.red.light.solidHover" | "color.red.light.textSecondary" | "color.red.light.text" | "color.red.dark.bg" | "color.red.dark.bgSecondary" | "color.red.dark.componentBg" | "color.red.dark.componentBgHover" | "color.red.dark.componentBgActive" | "color.red.dark.line" | "color.red.dark.border" | "color.red.dark.borderHover" | "color.red.dark.solid" | "color.red.dark.solidHover" | "color.red.dark.textSecondary" | "color.red.dark.text" | "color.yellow.light.bg" | "color.yellow.light.bgSecondary" | "color.yellow.light.componentBg" | "color.yellow.light.componentBgHover" | "color.yellow.light.componentBgActive" | "color.yellow.light.line" | "color.yellow.light.border" | "color.yellow.light.borderHover" | "color.yellow.light.solidHover" | "color.yellow.light.textSecondary" | "color.yellow.light.text" | "color.yellow.dark.bg" | "color.yellow.dark.bgSecondary" | "color.yellow.dark.componentBg" | "color.yellow.dark.componentBgHover" | "color.yellow.dark.componentBgActive" | "color.yellow.dark.line" | "color.yellow.dark.border" | "color.yellow.dark.borderHover" | "color.yellow.dark.solidHover" | "color.yellow.dark.textSecondary" | "color.yellow.dark.text" | "color.transfer.light.lime3" | "color.transfer.dark.lime3" | "elevation.shadowColor" | "elevation.color" | "elevation.sm" | "elevation.md" | "elevation.lg" | "elevation.focusColor" | "elevation.focus" | "elevation.focusDark" | "typography.fontFamily.sans" | "typography.fontFamily.display" | "typography.fontFamily.mono" | "typography.fontSize.xs" | "typography.fontSize.sm" | "typography.fontSize.base" | "typography.fontSize.md" | "typography.fontSize.lg" | "typography.fontSize.xl" | "typography.fontSize.2xl" | "typography.fontSize.3xl" | "typography.fontSize.4xl" | "typography.fontSize.display" | "typography.lineHeight.tight" | "typography.lineHeight.snug" | "typography.lineHeight.normal" | "typography.lineHeight.loose" | "typography.fontWeight.regular" | "typography.fontWeight.medium" | "typography.fontWeight.bold" | "typography.fontWeight.black" | "typography.letterSpacing.tight" | "typography.letterSpacing.normal" | "typography.letterSpacing.wide" | "typography.letterSpacing.uppercase" | "spacing.0" | "spacing.1" | "spacing.2" | "spacing.3" | "spacing.4" | "spacing.5" | "spacing.6" | "spacing.7" | "spacing.8" | "radius.sm" | "radius.default" | "radius.md" | "radius.lg" | "radius.pill" | "radius.tv" | "border.width" | "motion.easing.out" | "motion.easing.inOut" | "motion.duration.fast" | "motion.duration.reveal" | "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;
@@ -643,154 +643,184 @@
643
643
  }
644
644
  },
645
645
  "input": {
646
+ "$description": "Deprecated shadcn-shaped aliases of component.field. shadcn reads only --input (component.alias.input); author against --field-*.",
646
647
  "background": {
647
648
  "$type": "color",
648
649
  "$value": "{component.field.background}",
650
+ "$description": "Deprecated alias. Use --field-bg (component.field.background).",
649
651
  "$extensions": {
650
652
  "putio": {
651
653
  "cssName": "input-bg",
652
- "mode": "light"
654
+ "mode": "light",
655
+ "deprecated": true
653
656
  }
654
657
  }
655
658
  },
656
659
  "backgroundDark": {
657
660
  "$type": "color",
658
661
  "$value": "{component.field.backgroundDark}",
662
+ "$description": "Deprecated alias. Use --field-bg (component.field.backgroundDark).",
659
663
  "$extensions": {
660
664
  "putio": {
661
665
  "cssName": "input-bg",
662
- "mode": "dark"
666
+ "mode": "dark",
667
+ "deprecated": true
663
668
  }
664
669
  }
665
670
  },
666
671
  "border": {
667
672
  "$type": "color",
668
673
  "$value": "{component.field.border}",
674
+ "$description": "Deprecated alias. Use --field-border (component.field.border).",
669
675
  "$extensions": {
670
676
  "putio": {
671
677
  "cssName": "input-border",
672
- "mode": "light"
678
+ "mode": "light",
679
+ "deprecated": true
673
680
  }
674
681
  }
675
682
  },
676
683
  "borderDark": {
677
684
  "$type": "color",
678
685
  "$value": "{component.field.borderDark}",
686
+ "$description": "Deprecated alias. Use --field-border (component.field.borderDark).",
679
687
  "$extensions": {
680
688
  "putio": {
681
689
  "cssName": "input-border",
682
- "mode": "dark"
690
+ "mode": "dark",
691
+ "deprecated": true
683
692
  }
684
693
  }
685
694
  },
686
695
  "radius": {
687
696
  "$type": "dimension",
688
697
  "$value": "{component.field.radius}",
698
+ "$description": "Deprecated alias. Use --field-radius (component.field.radius).",
689
699
  "$extensions": {
690
700
  "putio": {
691
701
  "cssName": "input-radius",
692
- "mode": "global"
702
+ "mode": "global",
703
+ "deprecated": true
693
704
  }
694
705
  }
695
706
  },
696
707
  "borderHover": {
697
708
  "$type": "color",
698
709
  "$value": "{component.field.borderHover}",
699
- "$description": "shadcn-friendly alias of --field-border-hover. Always aliases the field token so the two name systems cannot drift.",
710
+ "$description": "Deprecated alias. Use --field-border-hover (component.field.borderHover).",
700
711
  "$extensions": {
701
712
  "putio": {
702
713
  "cssName": "input-border-hover",
703
- "mode": "light"
714
+ "mode": "light",
715
+ "deprecated": true
704
716
  }
705
717
  }
706
718
  },
707
719
  "borderHoverDark": {
708
720
  "$type": "color",
709
721
  "$value": "{component.field.borderHoverDark}",
722
+ "$description": "Deprecated alias. Use --field-border-hover (component.field.borderHoverDark).",
710
723
  "$extensions": {
711
724
  "putio": {
712
725
  "cssName": "input-border-hover",
713
- "mode": "dark"
726
+ "mode": "dark",
727
+ "deprecated": true
714
728
  }
715
729
  }
716
730
  },
717
731
  "borderFocus": {
718
732
  "$type": "color",
719
733
  "$value": "{component.field.borderFocus}",
734
+ "$description": "Deprecated alias. Use --field-border-focus (component.field.borderFocus).",
720
735
  "$extensions": {
721
736
  "putio": {
722
737
  "cssName": "input-border-focus",
723
- "mode": "light"
738
+ "mode": "light",
739
+ "deprecated": true
724
740
  }
725
741
  }
726
742
  },
727
743
  "borderFocusDark": {
728
744
  "$type": "color",
729
745
  "$value": "{component.field.borderFocusDark}",
746
+ "$description": "Deprecated alias. Use --field-border-focus (component.field.borderFocusDark).",
730
747
  "$extensions": {
731
748
  "putio": {
732
749
  "cssName": "input-border-focus",
733
- "mode": "dark"
750
+ "mode": "dark",
751
+ "deprecated": true
734
752
  }
735
753
  }
736
754
  },
737
755
  "ring": {
738
756
  "$type": "string",
739
757
  "$value": "{component.field.ring}",
758
+ "$description": "Deprecated alias. Use --field-ring (component.field.ring).",
740
759
  "$extensions": {
741
760
  "putio": {
742
761
  "cssName": "input-ring",
743
- "mode": "light"
762
+ "mode": "light",
763
+ "deprecated": true
744
764
  }
745
765
  }
746
766
  },
747
767
  "ringDark": {
748
768
  "$type": "string",
749
769
  "$value": "{component.field.ringDark}",
770
+ "$description": "Deprecated alias. Use --field-ring (component.field.ringDark).",
750
771
  "$extensions": {
751
772
  "putio": {
752
773
  "cssName": "input-ring",
753
- "mode": "dark"
774
+ "mode": "dark",
775
+ "deprecated": true
754
776
  }
755
777
  }
756
778
  },
757
779
  "text": {
758
780
  "$type": "color",
759
781
  "$value": "{component.field.text}",
782
+ "$description": "Deprecated alias. Use --field-text (component.field.text).",
760
783
  "$extensions": {
761
784
  "putio": {
762
785
  "cssName": "input-text",
763
- "mode": "light"
786
+ "mode": "light",
787
+ "deprecated": true
764
788
  }
765
789
  }
766
790
  },
767
791
  "textDark": {
768
792
  "$type": "color",
769
793
  "$value": "{component.field.textDark}",
794
+ "$description": "Deprecated alias. Use --field-text (component.field.textDark).",
770
795
  "$extensions": {
771
796
  "putio": {
772
797
  "cssName": "input-text",
773
- "mode": "dark"
798
+ "mode": "dark",
799
+ "deprecated": true
774
800
  }
775
801
  }
776
802
  },
777
803
  "placeholder": {
778
804
  "$type": "color",
779
805
  "$value": "{component.field.placeholder}",
806
+ "$description": "Deprecated alias. Use --field-placeholder (component.field.placeholder).",
780
807
  "$extensions": {
781
808
  "putio": {
782
809
  "cssName": "input-placeholder",
783
- "mode": "light"
810
+ "mode": "light",
811
+ "deprecated": true
784
812
  }
785
813
  }
786
814
  },
787
815
  "placeholderDark": {
788
816
  "$type": "color",
789
817
  "$value": "{component.field.placeholderDark}",
818
+ "$description": "Deprecated alias. Use --field-placeholder (component.field.placeholderDark).",
790
819
  "$extensions": {
791
820
  "putio": {
792
821
  "cssName": "input-placeholder",
793
- "mode": "dark"
822
+ "mode": "dark",
823
+ "deprecated": true
794
824
  }
795
825
  }
796
826
  }
@@ -1135,22 +1165,26 @@
1135
1165
  "foregroundMuted": {
1136
1166
  "$type": "color",
1137
1167
  "$value": "{color.neutral.light.textSecondary}",
1168
+ "$description": "Deprecated alias. Use --text-secondary (color.neutral.light.textSecondary).",
1138
1169
  "$extensions": {
1139
1170
  "putio": {
1140
1171
  "cssName": "foreground-muted",
1141
1172
  "mode": "light",
1142
- "figma": false
1173
+ "figma": false,
1174
+ "deprecated": true
1143
1175
  }
1144
1176
  }
1145
1177
  },
1146
1178
  "foregroundMutedDark": {
1147
1179
  "$type": "color",
1148
1180
  "$value": "{color.neutral.dark.textSecondary}",
1181
+ "$description": "Deprecated alias. Use --text-secondary (color.neutral.dark.textSecondary).",
1149
1182
  "$extensions": {
1150
1183
  "putio": {
1151
1184
  "cssName": "foreground-muted",
1152
1185
  "mode": "dark",
1153
- "figma": false
1186
+ "figma": false,
1187
+ "deprecated": true
1154
1188
  }
1155
1189
  }
1156
1190
  },
@@ -3111,7 +3145,7 @@
3111
3145
  "tertiary": {
3112
3146
  "$type": "color",
3113
3147
  "$value": "{context.tv.text.secondary}",
3114
- "$description": "Deprecated compatibility alias. Use context.tv.text.secondary.",
3148
+ "$description": "Deprecated alias. Use --text-2 (context.tv.text.secondary).",
3115
3149
  "$extensions": {
3116
3150
  "putio": {
3117
3151
  "cssName": "text-3",
@@ -4712,11 +4746,24 @@
4712
4746
  },
4713
4747
  "focus": {
4714
4748
  "$type": "string",
4715
- "$value": "0 0 0 3px {elevation.focusColor}",
4749
+ "$value": "0 0 0 2px {color.neutral.light.bg}, 0 0 0 4px {color.neutral.light.solidHover}",
4716
4750
  "$extensions": {
4717
4751
  "putio": {
4718
4752
  "cssName": "shadow-focus",
4719
- "mode": "global",
4753
+ "mode": "light",
4754
+ "figma": false
4755
+ }
4756
+ },
4757
+ "$description": "Button, link, and nav focus: a 2px page-coloured gap, then a 2px opaque ring at least 3:1 against the page and panels."
4758
+ },
4759
+ "focusDark": {
4760
+ "$type": "string",
4761
+ "$value": "0 0 0 2px {color.neutral.dark.bg}, 0 0 0 4px {color.neutral.dark.solidHover}",
4762
+ "$description": "Dark-mode button, link, and nav focus ring.",
4763
+ "$extensions": {
4764
+ "putio": {
4765
+ "cssName": "shadow-focus",
4766
+ "mode": "dark",
4720
4767
  "figma": false
4721
4768
  }
4722
4769
  }
@@ -5239,6 +5286,17 @@
5239
5286
  }
5240
5287
  }
5241
5288
  },
5289
+ "reveal": {
5290
+ "$type": "duration",
5291
+ "$value": "180ms",
5292
+ "$extensions": {
5293
+ "putio": {
5294
+ "cssName": "dur-reveal",
5295
+ "mode": "global",
5296
+ "figma": true
5297
+ }
5298
+ }
5299
+ },
5242
5300
  "base": {
5243
5301
  "$type": "duration",
5244
5302
  "$value": "200ms",