@putdotio/design 1.3.0 → 1.5.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 +20 -8
- package/dist/css/tokens.css +142 -31
- package/dist/figma/putio.tokens.json +229 -16
- package/dist/tokens.d.ts +3 -1
- package/dist/tokens.dtcg.json +1439 -244
- package/dist/tokens.flat.json +989 -167
- package/dist/tokens.js +989 -167
- package/package.json +6 -4
- package/system/README.md +120 -19
- package/tokens/components.tokens.json +963 -5
- package/tokens/context.tokens.json +136 -120
- package/tokens/foundation.css +30 -20
- package/tokens/primitives.tokens.json +138 -23
- package/tokens/semantic.tokens.json +28 -27
|
@@ -2,52 +2,12 @@
|
|
|
2
2
|
"$description": "Shared TV context tokens. Consuming TV repos generate their own platform artifacts from these values.",
|
|
3
3
|
"context": {
|
|
4
4
|
"tv": {
|
|
5
|
-
"surface": {
|
|
6
|
-
"0": {
|
|
7
|
-
"$type": "color",
|
|
8
|
-
"$value": "hsl(0, 0%, 0%)",
|
|
9
|
-
"$extensions": {
|
|
10
|
-
"putio": {
|
|
11
|
-
"cssName": "surf-0",
|
|
12
|
-
"mode": "tv"
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"1": {
|
|
17
|
-
"$type": "color",
|
|
18
|
-
"$value": "hsl(0, 0%, 3.9%)",
|
|
19
|
-
"$extensions": {
|
|
20
|
-
"putio": {
|
|
21
|
-
"cssName": "surf-1",
|
|
22
|
-
"mode": "tv"
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"2": {
|
|
27
|
-
"$type": "color",
|
|
28
|
-
"$value": "hsl(0, 0%, 8.6%)",
|
|
29
|
-
"$extensions": {
|
|
30
|
-
"putio": {
|
|
31
|
-
"cssName": "surf-2",
|
|
32
|
-
"mode": "tv"
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"3": {
|
|
37
|
-
"$type": "color",
|
|
38
|
-
"$value": "hsl(0, 0%, 12.2%)",
|
|
39
|
-
"$extensions": {
|
|
40
|
-
"putio": {
|
|
41
|
-
"cssName": "surf-3",
|
|
42
|
-
"mode": "tv"
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
5
|
"text": {
|
|
6
|
+
"$description": "TV uses two semantic text roles. The tertiary name remains as a deprecated alias of secondary so existing consumers keep working; TV text is solid.",
|
|
48
7
|
"primary": {
|
|
49
8
|
"$type": "color",
|
|
50
|
-
"$value": "
|
|
9
|
+
"$value": "{color.neutral.dark.text}",
|
|
10
|
+
"$description": "Row titles, modal option labels, and button labels.",
|
|
51
11
|
"$extensions": {
|
|
52
12
|
"putio": {
|
|
53
13
|
"cssName": "text-1",
|
|
@@ -57,7 +17,8 @@
|
|
|
57
17
|
},
|
|
58
18
|
"secondary": {
|
|
59
19
|
"$type": "color",
|
|
60
|
-
"$value": "
|
|
20
|
+
"$value": "{color.neutral.dark.textSecondary}",
|
|
21
|
+
"$description": "Row sublines, modal titles, section headers, and accessories.",
|
|
61
22
|
"$extensions": {
|
|
62
23
|
"putio": {
|
|
63
24
|
"cssName": "text-2",
|
|
@@ -67,85 +28,13 @@
|
|
|
67
28
|
},
|
|
68
29
|
"tertiary": {
|
|
69
30
|
"$type": "color",
|
|
70
|
-
"$value": "
|
|
31
|
+
"$value": "{context.tv.text.secondary}",
|
|
32
|
+
"$description": "Deprecated compatibility alias. Use context.tv.text.secondary.",
|
|
71
33
|
"$extensions": {
|
|
72
34
|
"putio": {
|
|
73
35
|
"cssName": "text-3",
|
|
74
|
-
"mode": "tv"
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
"glass": {
|
|
80
|
-
"1": {
|
|
81
|
-
"$type": "color",
|
|
82
|
-
"$value": "hsla(0, 0%, 100%, 0.06)",
|
|
83
|
-
"$extensions": {
|
|
84
|
-
"putio": {
|
|
85
|
-
"cssName": "glass-1-bg",
|
|
86
|
-
"mode": "tv"
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
"2": {
|
|
91
|
-
"$type": "color",
|
|
92
|
-
"$value": "hsla(0, 0%, 100%, 0.10)",
|
|
93
|
-
"$extensions": {
|
|
94
|
-
"putio": {
|
|
95
|
-
"cssName": "glass-2-bg",
|
|
96
|
-
"mode": "tv"
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
"3": {
|
|
101
|
-
"$type": "color",
|
|
102
|
-
"$value": "hsla(0, 0%, 100%, 0.14)",
|
|
103
|
-
"$extensions": {
|
|
104
|
-
"putio": {
|
|
105
|
-
"cssName": "glass-3-bg",
|
|
106
|
-
"mode": "tv"
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
"border": {
|
|
111
|
-
"$type": "color",
|
|
112
|
-
"$value": "hsla(0, 0%, 100%, 0.12)",
|
|
113
|
-
"$extensions": {
|
|
114
|
-
"putio": {
|
|
115
|
-
"cssName": "glass-border",
|
|
116
|
-
"mode": "tv"
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
"borderStrong": {
|
|
121
|
-
"$type": "color",
|
|
122
|
-
"$value": "hsla(0, 0%, 100%, 0.22)",
|
|
123
|
-
"$extensions": {
|
|
124
|
-
"putio": {
|
|
125
|
-
"cssName": "glass-border-strong",
|
|
126
|
-
"mode": "tv"
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
},
|
|
131
|
-
"focus": {
|
|
132
|
-
"ring": {
|
|
133
|
-
"$type": "color",
|
|
134
|
-
"$value": "hsla(44.7, 97.9%, 63.1%, 0.18)",
|
|
135
|
-
"$extensions": {
|
|
136
|
-
"putio": {
|
|
137
|
-
"cssName": "focus-ring",
|
|
138
|
-
"mode": "tv"
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
},
|
|
142
|
-
"liftShadow": {
|
|
143
|
-
"$type": "string",
|
|
144
|
-
"$value": "0 14px 30px hsla(0, 0%, 0%, 0.45)",
|
|
145
|
-
"$extensions": {
|
|
146
|
-
"putio": {
|
|
147
|
-
"cssName": "focus-shadow",
|
|
148
|
-
"mode": "tv"
|
|
36
|
+
"mode": "tv",
|
|
37
|
+
"deprecated": true
|
|
149
38
|
}
|
|
150
39
|
}
|
|
151
40
|
}
|
|
@@ -239,5 +128,132 @@
|
|
|
239
128
|
}
|
|
240
129
|
}
|
|
241
130
|
}
|
|
131
|
+
},
|
|
132
|
+
"tv": {
|
|
133
|
+
"$description": "The portable 10-foot scale. These mode \"tv\" tokens are graph data for platform adapters and are not emitted into web CSS; preview support CSS declares matching --tv-* properties under .tv. TV has no mono face, and its z-order is distinct from the web stack.",
|
|
134
|
+
"text": {
|
|
135
|
+
"heading": {
|
|
136
|
+
"$type": "dimension",
|
|
137
|
+
"$value": "64px",
|
|
138
|
+
"$description": "text.heading · GTAmerica-Md.",
|
|
139
|
+
"$extensions": { "putio": { "cssName": "tv-text-heading", "mode": "tv" } }
|
|
140
|
+
},
|
|
141
|
+
"label": {
|
|
142
|
+
"$type": "dimension",
|
|
143
|
+
"$value": "48px",
|
|
144
|
+
"$description": "text.label · GTAmerica-Md. Screen titles, and the file-row icon size.",
|
|
145
|
+
"$extensions": { "putio": { "cssName": "tv-text-label", "mode": "tv" } }
|
|
146
|
+
},
|
|
147
|
+
"body": {
|
|
148
|
+
"$type": "dimension",
|
|
149
|
+
"$value": "36px",
|
|
150
|
+
"$description": "text.body · GTAmerica-Rg. The file-row title.",
|
|
151
|
+
"$extensions": { "putio": { "cssName": "tv-text-body", "mode": "tv" } }
|
|
152
|
+
},
|
|
153
|
+
"caption": {
|
|
154
|
+
"$type": "dimension",
|
|
155
|
+
"$value": "32px",
|
|
156
|
+
"$description": "text.caption · GTAmerica-Rg. Row subline and button icons. TV has no mono face — the size subline renders in GT America with tabular figures, so the Berkeley Mono numeric rule is web and mobile only.",
|
|
157
|
+
"$extensions": { "putio": { "cssName": "tv-text-caption", "mode": "tv" } }
|
|
158
|
+
},
|
|
159
|
+
"smol": {
|
|
160
|
+
"$type": "dimension",
|
|
161
|
+
"$value": "24px",
|
|
162
|
+
"$description": "text.smol · GTAmerica-Rg. Button labels, rendered uppercase.",
|
|
163
|
+
"$extensions": { "putio": { "cssName": "tv-text-smol", "mode": "tv" } }
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"fontWeight": {
|
|
167
|
+
"regular": {
|
|
168
|
+
"$type": "fontWeight",
|
|
169
|
+
"$value": "400",
|
|
170
|
+
"$description": "GTAmerica-Rg.",
|
|
171
|
+
"$extensions": { "putio": { "cssName": "tv-fw-regular", "mode": "tv" } }
|
|
172
|
+
},
|
|
173
|
+
"medium": {
|
|
174
|
+
"$type": "fontWeight",
|
|
175
|
+
"$value": "500",
|
|
176
|
+
"$description": "GTAmerica-Md.",
|
|
177
|
+
"$extensions": { "putio": { "cssName": "tv-fw-medium", "mode": "tv" } }
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"space": {
|
|
181
|
+
"xxs": {
|
|
182
|
+
"$type": "dimension",
|
|
183
|
+
"$value": "4px",
|
|
184
|
+
"$extensions": { "putio": { "cssName": "tv-space-xxs", "mode": "tv" } }
|
|
185
|
+
},
|
|
186
|
+
"xs": {
|
|
187
|
+
"$type": "dimension",
|
|
188
|
+
"$value": "8px",
|
|
189
|
+
"$extensions": { "putio": { "cssName": "tv-space-xs", "mode": "tv" } }
|
|
190
|
+
},
|
|
191
|
+
"sm": {
|
|
192
|
+
"$type": "dimension",
|
|
193
|
+
"$value": "16px",
|
|
194
|
+
"$description": "Button padding at size=\"sm\".",
|
|
195
|
+
"$extensions": { "putio": { "cssName": "tv-space-sm", "mode": "tv" } }
|
|
196
|
+
},
|
|
197
|
+
"md": {
|
|
198
|
+
"$type": "dimension",
|
|
199
|
+
"$value": "32px",
|
|
200
|
+
"$description": "The workhorse step: uniform list-row padding, row gap, and header padding-bottom.",
|
|
201
|
+
"$extensions": { "putio": { "cssName": "tv-space-md", "mode": "tv" } }
|
|
202
|
+
},
|
|
203
|
+
"lg": {
|
|
204
|
+
"$type": "dimension",
|
|
205
|
+
"$value": "64px",
|
|
206
|
+
"$extensions": { "putio": { "cssName": "tv-space-lg", "mode": "tv" } }
|
|
207
|
+
},
|
|
208
|
+
"xl": {
|
|
209
|
+
"$type": "dimension",
|
|
210
|
+
"$value": "128px",
|
|
211
|
+
"$extensions": { "putio": { "cssName": "tv-space-xl", "mode": "tv" } }
|
|
212
|
+
},
|
|
213
|
+
"xxl": {
|
|
214
|
+
"$type": "dimension",
|
|
215
|
+
"$value": "256px",
|
|
216
|
+
"$extensions": { "putio": { "cssName": "tv-space-xxl", "mode": "tv" } }
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
"overscan": {
|
|
220
|
+
"x": {
|
|
221
|
+
"$type": "number",
|
|
222
|
+
"$value": 0.04,
|
|
223
|
+
"$description": "Horizontal safe-area ratio. Platform adapters multiply this value by viewport width.",
|
|
224
|
+
"$extensions": { "putio": { "cssName": "tv-overscan-x", "mode": "tv", "basis": "viewport-width" } }
|
|
225
|
+
},
|
|
226
|
+
"y": {
|
|
227
|
+
"$type": "number",
|
|
228
|
+
"$value": 0.02,
|
|
229
|
+
"$description": "Vertical safe-area ratio. Platform adapters multiply this value by viewport height.",
|
|
230
|
+
"$extensions": { "putio": { "cssName": "tv-overscan-y", "mode": "tv", "basis": "viewport-height" } }
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
"radius": {
|
|
234
|
+
"$type": "dimension",
|
|
235
|
+
"$value": "{radius.tv}",
|
|
236
|
+
"$description": "radii.default — one radius for every 10-foot surface.",
|
|
237
|
+
"$extensions": { "putio": { "cssName": "tv-radius", "mode": "tv" } }
|
|
238
|
+
},
|
|
239
|
+
"z": {
|
|
240
|
+
"$description": "zIndices. NOT the web --z-* order: on TV, overlay sits ABOVE toast. Emit the two scales separately and never fold TV into the web stack order.",
|
|
241
|
+
"modal": {
|
|
242
|
+
"$type": "number",
|
|
243
|
+
"$value": 100,
|
|
244
|
+
"$extensions": { "putio": { "cssName": "tv-z-modal", "mode": "tv", "category": "other" } }
|
|
245
|
+
},
|
|
246
|
+
"toast": {
|
|
247
|
+
"$type": "number",
|
|
248
|
+
"$value": 200,
|
|
249
|
+
"$extensions": { "putio": { "cssName": "tv-z-toast", "mode": "tv", "category": "other" } }
|
|
250
|
+
},
|
|
251
|
+
"overlay": {
|
|
252
|
+
"$type": "number",
|
|
253
|
+
"$value": 300,
|
|
254
|
+
"$description": "Above toast — the opposite of the web scale, where --z-notification (1400) sits above --z-modal (1300).",
|
|
255
|
+
"$extensions": { "putio": { "cssName": "tv-z-overlay", "mode": "tv", "category": "other" } }
|
|
256
|
+
}
|
|
257
|
+
}
|
|
242
258
|
}
|
|
243
259
|
}
|
package/tokens/foundation.css
CHANGED
|
@@ -3,7 +3,7 @@ html {
|
|
|
3
3
|
background: var(--html-bg);
|
|
4
4
|
color: var(--text);
|
|
5
5
|
font-family: var(--font-sans);
|
|
6
|
-
font-size:
|
|
6
|
+
font-size: 14px; /* app.put.io root: fontSize ["14px","14px","15px"] — 15px at ≥ --bp-lg (media query below) */
|
|
7
7
|
line-height: var(--lh-normal);
|
|
8
8
|
-webkit-font-smoothing: antialiased;
|
|
9
9
|
-moz-osx-font-smoothing: grayscale;
|
|
@@ -15,6 +15,13 @@ body {
|
|
|
15
15
|
margin: 0;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/* Root steps up on desktop, matching app.put.io's responsive base.
|
|
19
|
+
14px/15px literals must stay in sync with --bp-lg (media queries
|
|
20
|
+
can't read custom properties). */
|
|
21
|
+
@media (min-width: 1280px) {
|
|
22
|
+
html { font-size: 15px; }
|
|
23
|
+
}
|
|
24
|
+
|
|
18
25
|
/* -- Semantic type ------------------------------------------------- */
|
|
19
26
|
|
|
20
27
|
.h-display, h1.display {
|
|
@@ -29,14 +36,14 @@ body {
|
|
|
29
36
|
|
|
30
37
|
/* Numeric / tabular UI text — transfer speeds, storage sizes, timestamps */
|
|
31
38
|
.num, .tabular {
|
|
32
|
-
font-family: var(--font-
|
|
39
|
+
font-family: var(--font-mono);
|
|
33
40
|
font-variant-numeric: tabular-nums;
|
|
34
41
|
font-feature-settings: "tnum";
|
|
35
42
|
}
|
|
36
43
|
|
|
37
44
|
h1, .h1 {
|
|
38
45
|
font-family: var(--font-sans);
|
|
39
|
-
font-size: var(--fs-
|
|
46
|
+
font-size: var(--fs-xl);
|
|
40
47
|
font-weight: var(--fw-bold);
|
|
41
48
|
line-height: var(--lh-tight);
|
|
42
49
|
letter-spacing: var(--tracking-tight);
|
|
@@ -45,7 +52,7 @@ h1, .h1 {
|
|
|
45
52
|
|
|
46
53
|
h2, .h2 {
|
|
47
54
|
font-family: var(--font-sans);
|
|
48
|
-
font-size: var(--fs-
|
|
55
|
+
font-size: var(--fs-lg);
|
|
49
56
|
font-weight: var(--fw-bold);
|
|
50
57
|
line-height: var(--lh-tight);
|
|
51
58
|
margin: 0 0 var(--space-3);
|
|
@@ -53,7 +60,7 @@ h2, .h2 {
|
|
|
53
60
|
|
|
54
61
|
h3, .h3 {
|
|
55
62
|
font-family: var(--font-sans);
|
|
56
|
-
font-size: var(--fs-
|
|
63
|
+
font-size: var(--fs-md);
|
|
57
64
|
font-weight: var(--fw-medium);
|
|
58
65
|
line-height: var(--lh-snug);
|
|
59
66
|
margin: 0 0 var(--space-2);
|
|
@@ -61,7 +68,7 @@ h3, .h3 {
|
|
|
61
68
|
|
|
62
69
|
h4, .h4 {
|
|
63
70
|
font-family: var(--font-sans);
|
|
64
|
-
font-size: var(--fs-
|
|
71
|
+
font-size: var(--fs-base);
|
|
65
72
|
font-weight: var(--fw-medium);
|
|
66
73
|
line-height: var(--lh-snug);
|
|
67
74
|
margin: 0 0 var(--space-2);
|
|
@@ -82,26 +89,26 @@ p, .body {
|
|
|
82
89
|
}
|
|
83
90
|
|
|
84
91
|
.lead {
|
|
85
|
-
font-size: var(--fs-
|
|
92
|
+
font-size: var(--fs-md);
|
|
86
93
|
font-weight: var(--fw-regular);
|
|
87
94
|
line-height: var(--lh-normal);
|
|
88
95
|
color: var(--text-secondary);
|
|
89
96
|
}
|
|
90
97
|
|
|
91
98
|
small, .caption {
|
|
92
|
-
font-size: var(--fs-
|
|
99
|
+
font-size: var(--fs-sm); /* production caption = fontSize 0 */
|
|
93
100
|
color: var(--text-secondary);
|
|
94
101
|
}
|
|
95
102
|
|
|
96
103
|
.label {
|
|
97
|
-
font-size: var(--fs-
|
|
104
|
+
font-size: var(--fs-base); /* production label = fontSize 1, medium */
|
|
98
105
|
font-weight: var(--fw-medium);
|
|
99
106
|
color: var(--text);
|
|
100
107
|
}
|
|
101
108
|
|
|
102
109
|
.button-text {
|
|
103
110
|
font-weight: var(--fw-medium);
|
|
104
|
-
font-size: var(--fs-
|
|
111
|
+
font-size: var(--fs-sm); /* production button = fontSize 0 */
|
|
105
112
|
letter-spacing: 0;
|
|
106
113
|
}
|
|
107
114
|
|
|
@@ -120,16 +127,6 @@ a {
|
|
|
120
127
|
}
|
|
121
128
|
a:hover { text-decoration-color: currentColor; }
|
|
122
129
|
|
|
123
|
-
/* -- Component-role aliases --------------------------------------- */
|
|
124
|
-
/* Button default + info variants — live aliases; the DTCG layer doesn't define these two. */
|
|
125
|
-
:root {
|
|
126
|
-
--button-default-bg: var(--component-bg);
|
|
127
|
-
--button-default-bg-hover: var(--component-bg-hover);
|
|
128
|
-
--button-default-fg: var(--text);
|
|
129
|
-
--button-info-bg: var(--solid);
|
|
130
|
-
--button-info-fg: var(--solid-foreground);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
130
|
/* -- Utility classes ---------------------------------------------- */
|
|
134
131
|
.fg-1 { color: var(--text); }
|
|
135
132
|
.fg-2 { color: var(--text-secondary); }
|
|
@@ -141,3 +138,16 @@ a:hover { text-decoration-color: currentColor; }
|
|
|
141
138
|
.bg-2 { background: var(--bg-secondary); }
|
|
142
139
|
.bg-component { background: var(--component-bg); }
|
|
143
140
|
.bg-yellow { background: var(--yellow-solid); color: var(--primary-foreground); }
|
|
141
|
+
|
|
142
|
+
/* -- Reduced motion ------------------------------------------------ */
|
|
143
|
+
/* Honor the OS "reduce motion" setting: collapse transitions/animations
|
|
144
|
+
to near-instant and stop looping/auto-scrolling effects. Components
|
|
145
|
+
should not rely on motion to convey state. */
|
|
146
|
+
@media (prefers-reduced-motion: reduce) {
|
|
147
|
+
*, *::before, *::after {
|
|
148
|
+
animation-duration: 0.01ms !important;
|
|
149
|
+
animation-iteration-count: 1 !important;
|
|
150
|
+
transition-duration: 0.01ms !important;
|
|
151
|
+
scroll-behavior: auto !important;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -30,7 +30,8 @@
|
|
|
30
30
|
},
|
|
31
31
|
"color": {
|
|
32
32
|
"$type": "color",
|
|
33
|
-
"$value": "
|
|
33
|
+
"$value": "{elevation.shadowColor}",
|
|
34
|
+
"$description": "Compat name kept for existing web consumers — alias of elevation.shadowColor so the two can never drift.",
|
|
34
35
|
"$extensions": {
|
|
35
36
|
"putio": {
|
|
36
37
|
"cssName": "shadow",
|
|
@@ -110,7 +111,7 @@
|
|
|
110
111
|
},
|
|
111
112
|
"display": {
|
|
112
113
|
"$type": "fontFamily",
|
|
113
|
-
"$value": "
|
|
114
|
+
"$value": "{typography.fontFamily.sans}",
|
|
114
115
|
"$extensions": {
|
|
115
116
|
"putio": {
|
|
116
117
|
"cssName": "font-display",
|
|
@@ -119,20 +120,10 @@
|
|
|
119
120
|
}
|
|
120
121
|
}
|
|
121
122
|
},
|
|
122
|
-
"uiMono": {
|
|
123
|
-
"$type": "fontFamily",
|
|
124
|
-
"$value": "\"GT America Mono\", monospace",
|
|
125
|
-
"$extensions": {
|
|
126
|
-
"putio": {
|
|
127
|
-
"cssName": "font-ui-mono",
|
|
128
|
-
"mode": "global",
|
|
129
|
-
"figma": true
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
},
|
|
133
123
|
"mono": {
|
|
134
124
|
"$type": "fontFamily",
|
|
135
|
-
"$value": "\"Berkeley Mono\",
|
|
125
|
+
"$value": "\"Berkeley Mono\", monospace",
|
|
126
|
+
"$description": "The single mono face: numerics, timestamps, file sizes, ETAs, counts, code, logs, magnet URIs, identifiers, and filenames. Web and mobile only — TV has no mono face.",
|
|
136
127
|
"$extensions": {
|
|
137
128
|
"putio": {
|
|
138
129
|
"cssName": "font-mono",
|
|
@@ -156,7 +147,8 @@
|
|
|
156
147
|
},
|
|
157
148
|
"sm": {
|
|
158
149
|
"$type": "dimension",
|
|
159
|
-
"$value": "0.
|
|
150
|
+
"$value": "0.875rem",
|
|
151
|
+
"$description": "Caption and button labels — production fontSize 0.",
|
|
160
152
|
"$extensions": {
|
|
161
153
|
"putio": {
|
|
162
154
|
"cssName": "fs-sm",
|
|
@@ -167,7 +159,8 @@
|
|
|
167
159
|
},
|
|
168
160
|
"base": {
|
|
169
161
|
"$type": "dimension",
|
|
170
|
-
"$value": "
|
|
162
|
+
"$value": "1rem",
|
|
163
|
+
"$description": "Body, labels, inputs — production fontSize 1; equals the responsive root (14px, 15px at >= breakpoint.lg).",
|
|
171
164
|
"$extensions": {
|
|
172
165
|
"putio": {
|
|
173
166
|
"cssName": "fs-base",
|
|
@@ -178,7 +171,8 @@
|
|
|
178
171
|
},
|
|
179
172
|
"md": {
|
|
180
173
|
"$type": "dimension",
|
|
181
|
-
"$value": "
|
|
174
|
+
"$value": "1.125rem",
|
|
175
|
+
"$description": "Subheading.",
|
|
182
176
|
"$extensions": {
|
|
183
177
|
"putio": {
|
|
184
178
|
"cssName": "fs-md",
|
|
@@ -189,7 +183,8 @@
|
|
|
189
183
|
},
|
|
190
184
|
"lg": {
|
|
191
185
|
"$type": "dimension",
|
|
192
|
-
"$value": "1.
|
|
186
|
+
"$value": "1.5rem",
|
|
187
|
+
"$description": "Heading.",
|
|
193
188
|
"$extensions": {
|
|
194
189
|
"putio": {
|
|
195
190
|
"cssName": "fs-lg",
|
|
@@ -200,7 +195,8 @@
|
|
|
200
195
|
},
|
|
201
196
|
"xl": {
|
|
202
197
|
"$type": "dimension",
|
|
203
|
-
"$value": "
|
|
198
|
+
"$value": "2rem",
|
|
199
|
+
"$description": "Page title.",
|
|
204
200
|
"$extensions": {
|
|
205
201
|
"putio": {
|
|
206
202
|
"cssName": "fs-xl",
|
|
@@ -211,7 +207,8 @@
|
|
|
211
207
|
},
|
|
212
208
|
"2xl": {
|
|
213
209
|
"$type": "dimension",
|
|
214
|
-
"$value": "
|
|
210
|
+
"$value": "48px",
|
|
211
|
+
"$description": "Fixed display tier — does not scale with the responsive root.",
|
|
215
212
|
"$extensions": {
|
|
216
213
|
"putio": {
|
|
217
214
|
"cssName": "fs-2xl",
|
|
@@ -222,7 +219,8 @@
|
|
|
222
219
|
},
|
|
223
220
|
"3xl": {
|
|
224
221
|
"$type": "dimension",
|
|
225
|
-
"$value": "
|
|
222
|
+
"$value": "64px",
|
|
223
|
+
"$description": "Fixed display tier — does not scale with the responsive root.",
|
|
226
224
|
"$extensions": {
|
|
227
225
|
"putio": {
|
|
228
226
|
"cssName": "fs-3xl",
|
|
@@ -233,7 +231,8 @@
|
|
|
233
231
|
},
|
|
234
232
|
"4xl": {
|
|
235
233
|
"$type": "dimension",
|
|
236
|
-
"$value": "
|
|
234
|
+
"$value": "{typography.fontSize.3xl}",
|
|
235
|
+
"$description": "Compatibility alias for the former 4xl tier; new surfaces should use fontSize.3xl or fontSize.display.",
|
|
237
236
|
"$extensions": {
|
|
238
237
|
"putio": {
|
|
239
238
|
"cssName": "fs-4xl",
|
|
@@ -244,7 +243,8 @@
|
|
|
244
243
|
},
|
|
245
244
|
"display": {
|
|
246
245
|
"$type": "dimension",
|
|
247
|
-
"$value": "
|
|
246
|
+
"$value": "96px",
|
|
247
|
+
"$description": "Fixed display tier for brand display moments.",
|
|
248
248
|
"$extensions": {
|
|
249
249
|
"putio": {
|
|
250
250
|
"cssName": "fs-display",
|
|
@@ -549,6 +549,18 @@
|
|
|
549
549
|
"figma": true
|
|
550
550
|
}
|
|
551
551
|
}
|
|
552
|
+
},
|
|
553
|
+
"tv": {
|
|
554
|
+
"$type": "dimension",
|
|
555
|
+
"$value": "12px",
|
|
556
|
+
"$description": "The corner radius for every 10-foot surface — list rows, buttons, sheets, cards, code tiles, and keys. TV uses one radius, not a scale; the only other radii on TV are intentional pills and circles.",
|
|
557
|
+
"$extensions": {
|
|
558
|
+
"putio": {
|
|
559
|
+
"cssName": "radius-tv",
|
|
560
|
+
"mode": "global",
|
|
561
|
+
"figma": true
|
|
562
|
+
}
|
|
563
|
+
}
|
|
552
564
|
}
|
|
553
565
|
},
|
|
554
566
|
"border": {
|
|
@@ -624,5 +636,108 @@
|
|
|
624
636
|
}
|
|
625
637
|
}
|
|
626
638
|
}
|
|
639
|
+
},
|
|
640
|
+
"z": {
|
|
641
|
+
"$description": "Stacking scale. Gapped for platform chrome — never invent z-index numbers in apps.",
|
|
642
|
+
"dropdown": {
|
|
643
|
+
"$type": "number",
|
|
644
|
+
"$value": 1000,
|
|
645
|
+
"$extensions": {
|
|
646
|
+
"putio": {
|
|
647
|
+
"cssName": "z-dropdown",
|
|
648
|
+
"mode": "global",
|
|
649
|
+
"category": "other",
|
|
650
|
+
"figma": false
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
},
|
|
654
|
+
"sticky": {
|
|
655
|
+
"$type": "number",
|
|
656
|
+
"$value": 1100,
|
|
657
|
+
"$extensions": {
|
|
658
|
+
"putio": {
|
|
659
|
+
"cssName": "z-sticky",
|
|
660
|
+
"mode": "global",
|
|
661
|
+
"category": "other",
|
|
662
|
+
"figma": false
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
},
|
|
666
|
+
"modal": {
|
|
667
|
+
"$type": "number",
|
|
668
|
+
"$value": 1300,
|
|
669
|
+
"$extensions": {
|
|
670
|
+
"putio": {
|
|
671
|
+
"cssName": "z-modal",
|
|
672
|
+
"mode": "global",
|
|
673
|
+
"category": "other",
|
|
674
|
+
"figma": false
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
},
|
|
678
|
+
"notification": {
|
|
679
|
+
"$type": "number",
|
|
680
|
+
"$value": 1400,
|
|
681
|
+
"$extensions": {
|
|
682
|
+
"putio": {
|
|
683
|
+
"cssName": "z-notification",
|
|
684
|
+
"mode": "global",
|
|
685
|
+
"category": "other",
|
|
686
|
+
"figma": false
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
},
|
|
690
|
+
"tooltip": {
|
|
691
|
+
"$type": "number",
|
|
692
|
+
"$value": 1500,
|
|
693
|
+
"$extensions": {
|
|
694
|
+
"putio": {
|
|
695
|
+
"cssName": "z-tooltip",
|
|
696
|
+
"mode": "global",
|
|
697
|
+
"category": "other",
|
|
698
|
+
"figma": false
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
},
|
|
703
|
+
"breakpoint": {
|
|
704
|
+
"$description": "Responsive breakpoints, lifted from app.put.io's BREAKPOINTS. Generator-facing: CSS media queries cannot read custom properties, so emitters bind these as Tailwind screens, StyleX consts, or documented literals.",
|
|
705
|
+
"sm": {
|
|
706
|
+
"$type": "dimension",
|
|
707
|
+
"$value": "640px",
|
|
708
|
+
"$extensions": {
|
|
709
|
+
"putio": {
|
|
710
|
+
"cssName": "bp-sm",
|
|
711
|
+
"mode": "global",
|
|
712
|
+
"category": "other",
|
|
713
|
+
"figma": false
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
},
|
|
717
|
+
"md": {
|
|
718
|
+
"$type": "dimension",
|
|
719
|
+
"$value": "768px",
|
|
720
|
+
"$extensions": {
|
|
721
|
+
"putio": {
|
|
722
|
+
"cssName": "bp-md",
|
|
723
|
+
"mode": "global",
|
|
724
|
+
"category": "other",
|
|
725
|
+
"figma": false
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
},
|
|
729
|
+
"lg": {
|
|
730
|
+
"$type": "dimension",
|
|
731
|
+
"$value": "1280px",
|
|
732
|
+
"$description": "The root font-size steps from 14px to 15px at this width.",
|
|
733
|
+
"$extensions": {
|
|
734
|
+
"putio": {
|
|
735
|
+
"cssName": "bp-lg",
|
|
736
|
+
"mode": "global",
|
|
737
|
+
"category": "other",
|
|
738
|
+
"figma": false
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
}
|
|
627
742
|
}
|
|
628
743
|
}
|