@kanso-labs/kanso-ui 0.42.2 → 0.43.1
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/README.md +22 -12
- package/dist/index.d.ts +2 -1
- package/dist/theme-scope.d.ts +18 -6
- package/dist/theme-scope.js +13 -6
- package/dist/theme-scope.js.map +1 -1
- package/dist/tokens/theme.d.ts +395 -0
- package/dist/tokens.json +1503 -0
- package/package.json +4 -3
package/dist/tokens.json
ADDED
|
@@ -0,0 +1,1503 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "kanso-ui design tokens. Conforms to the Design Tokens Community Group format (https://design-tokens.github.io/community-group/format/): $type/$value, group-level type inheritance, {path} alias references. Color roles, type scale, shape scale, elevation, and state-layer opacities are drawn from a verified tonal-palette color system, not approximations. Generated into StyleX via scripts/build-tokens.mjs (npm run tokens:build) \u2014 see src/tokens/*.stylex.ts. $extensions at the bottom carries the non-token half of the system \u2014 how to consume these tokens, and how UI copy should read \u2014 so that a reader who has only this file still has the whole contract.",
|
|
3
|
+
"color": {
|
|
4
|
+
"$type": "color",
|
|
5
|
+
"$description": "Reference tier \u2014 the full tonal palettes. Not consumed directly by components \u2014 see semantic.light / semantic.dark, the System tier that maps roles onto specific tones. Each chromatic palette (primary/secondary/tertiary/error) holds all 13 standard tone stops; neutral additionally carries the extra surface-container stops (4/6/12/17/20/22/24/87/92/94/96/98/99).",
|
|
6
|
+
"primary": {
|
|
7
|
+
"$description": "Brand hue (violet) \u2014 a verified reference baseline seed (#6750a4), used verbatim.",
|
|
8
|
+
"0": {
|
|
9
|
+
"$value": "#000000"
|
|
10
|
+
},
|
|
11
|
+
"10": {
|
|
12
|
+
"$value": "#21005d"
|
|
13
|
+
},
|
|
14
|
+
"20": {
|
|
15
|
+
"$value": "#381e72"
|
|
16
|
+
},
|
|
17
|
+
"30": {
|
|
18
|
+
"$value": "#4f378b"
|
|
19
|
+
},
|
|
20
|
+
"40": {
|
|
21
|
+
"$value": "#6750a4"
|
|
22
|
+
},
|
|
23
|
+
"50": {
|
|
24
|
+
"$value": "#7f67be"
|
|
25
|
+
},
|
|
26
|
+
"60": {
|
|
27
|
+
"$value": "#9a82db"
|
|
28
|
+
},
|
|
29
|
+
"70": {
|
|
30
|
+
"$value": "#b69df8"
|
|
31
|
+
},
|
|
32
|
+
"80": {
|
|
33
|
+
"$value": "#d0bcff"
|
|
34
|
+
},
|
|
35
|
+
"90": {
|
|
36
|
+
"$value": "#eaddff"
|
|
37
|
+
},
|
|
38
|
+
"95": {
|
|
39
|
+
"$value": "#f6edff"
|
|
40
|
+
},
|
|
41
|
+
"99": {
|
|
42
|
+
"$value": "#fffbfe"
|
|
43
|
+
},
|
|
44
|
+
"100": {
|
|
45
|
+
"$value": "#ffffff"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"secondary": {
|
|
49
|
+
"$description": "A muted, lower-chroma variant of the primary hue family.",
|
|
50
|
+
"0": {
|
|
51
|
+
"$value": "#000000"
|
|
52
|
+
},
|
|
53
|
+
"10": {
|
|
54
|
+
"$value": "#1d192b"
|
|
55
|
+
},
|
|
56
|
+
"20": {
|
|
57
|
+
"$value": "#332d41"
|
|
58
|
+
},
|
|
59
|
+
"30": {
|
|
60
|
+
"$value": "#4a4458"
|
|
61
|
+
},
|
|
62
|
+
"40": {
|
|
63
|
+
"$value": "#625b71"
|
|
64
|
+
},
|
|
65
|
+
"50": {
|
|
66
|
+
"$value": "#7a7289"
|
|
67
|
+
},
|
|
68
|
+
"60": {
|
|
69
|
+
"$value": "#958da5"
|
|
70
|
+
},
|
|
71
|
+
"70": {
|
|
72
|
+
"$value": "#b0a7c0"
|
|
73
|
+
},
|
|
74
|
+
"80": {
|
|
75
|
+
"$value": "#ccc2dc"
|
|
76
|
+
},
|
|
77
|
+
"90": {
|
|
78
|
+
"$value": "#e8def8"
|
|
79
|
+
},
|
|
80
|
+
"95": {
|
|
81
|
+
"$value": "#f6edff"
|
|
82
|
+
},
|
|
83
|
+
"99": {
|
|
84
|
+
"$value": "#fffbfe"
|
|
85
|
+
},
|
|
86
|
+
"100": {
|
|
87
|
+
"$value": "#ffffff"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"tertiary": {
|
|
91
|
+
"$description": "An accent hue roughly complementary to primary, for contrast/emphasis.",
|
|
92
|
+
"0": {
|
|
93
|
+
"$value": "#000000"
|
|
94
|
+
},
|
|
95
|
+
"10": {
|
|
96
|
+
"$value": "#31111d"
|
|
97
|
+
},
|
|
98
|
+
"20": {
|
|
99
|
+
"$value": "#492532"
|
|
100
|
+
},
|
|
101
|
+
"30": {
|
|
102
|
+
"$value": "#633b48"
|
|
103
|
+
},
|
|
104
|
+
"40": {
|
|
105
|
+
"$value": "#7d5260"
|
|
106
|
+
},
|
|
107
|
+
"50": {
|
|
108
|
+
"$value": "#986977"
|
|
109
|
+
},
|
|
110
|
+
"60": {
|
|
111
|
+
"$value": "#b58392"
|
|
112
|
+
},
|
|
113
|
+
"70": {
|
|
114
|
+
"$value": "#d29dac"
|
|
115
|
+
},
|
|
116
|
+
"80": {
|
|
117
|
+
"$value": "#efb8c8"
|
|
118
|
+
},
|
|
119
|
+
"90": {
|
|
120
|
+
"$value": "#ffd8e4"
|
|
121
|
+
},
|
|
122
|
+
"95": {
|
|
123
|
+
"$value": "#ffecf1"
|
|
124
|
+
},
|
|
125
|
+
"99": {
|
|
126
|
+
"$value": "#fffbfa"
|
|
127
|
+
},
|
|
128
|
+
"100": {
|
|
129
|
+
"$value": "#ffffff"
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"error": {
|
|
133
|
+
"0": {
|
|
134
|
+
"$value": "#000000"
|
|
135
|
+
},
|
|
136
|
+
"10": {
|
|
137
|
+
"$value": "#410e0b"
|
|
138
|
+
},
|
|
139
|
+
"20": {
|
|
140
|
+
"$value": "#601410"
|
|
141
|
+
},
|
|
142
|
+
"30": {
|
|
143
|
+
"$value": "#8c1d18"
|
|
144
|
+
},
|
|
145
|
+
"40": {
|
|
146
|
+
"$value": "#b3261e"
|
|
147
|
+
},
|
|
148
|
+
"50": {
|
|
149
|
+
"$value": "#dc362e"
|
|
150
|
+
},
|
|
151
|
+
"60": {
|
|
152
|
+
"$value": "#e46962"
|
|
153
|
+
},
|
|
154
|
+
"70": {
|
|
155
|
+
"$value": "#ec928e"
|
|
156
|
+
},
|
|
157
|
+
"80": {
|
|
158
|
+
"$value": "#f2b8b5"
|
|
159
|
+
},
|
|
160
|
+
"90": {
|
|
161
|
+
"$value": "#f9dedc"
|
|
162
|
+
},
|
|
163
|
+
"95": {
|
|
164
|
+
"$value": "#fceeee"
|
|
165
|
+
},
|
|
166
|
+
"99": {
|
|
167
|
+
"$value": "#fffbf9"
|
|
168
|
+
},
|
|
169
|
+
"100": {
|
|
170
|
+
"$value": "#ffffff"
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"neutral": {
|
|
174
|
+
"$description": "Surfaces, backgrounds, and primary text. The extra stops beyond the standard 13 (4/6/12/17/20/22/24/87/92/94/96/98/99) are what the surface-container roles below draw on.",
|
|
175
|
+
"0": {
|
|
176
|
+
"$value": "#000000"
|
|
177
|
+
},
|
|
178
|
+
"4": {
|
|
179
|
+
"$value": "#0f0d13"
|
|
180
|
+
},
|
|
181
|
+
"6": {
|
|
182
|
+
"$value": "#141218"
|
|
183
|
+
},
|
|
184
|
+
"10": {
|
|
185
|
+
"$value": "#1d1b20"
|
|
186
|
+
},
|
|
187
|
+
"12": {
|
|
188
|
+
"$value": "#211f26"
|
|
189
|
+
},
|
|
190
|
+
"17": {
|
|
191
|
+
"$value": "#2b2930"
|
|
192
|
+
},
|
|
193
|
+
"20": {
|
|
194
|
+
"$value": "#322f35"
|
|
195
|
+
},
|
|
196
|
+
"22": {
|
|
197
|
+
"$value": "#36343b"
|
|
198
|
+
},
|
|
199
|
+
"24": {
|
|
200
|
+
"$value": "#3b383e"
|
|
201
|
+
},
|
|
202
|
+
"30": {
|
|
203
|
+
"$value": "#48464c"
|
|
204
|
+
},
|
|
205
|
+
"40": {
|
|
206
|
+
"$value": "#605d64"
|
|
207
|
+
},
|
|
208
|
+
"50": {
|
|
209
|
+
"$value": "#79767d"
|
|
210
|
+
},
|
|
211
|
+
"60": {
|
|
212
|
+
"$value": "#938f96"
|
|
213
|
+
},
|
|
214
|
+
"70": {
|
|
215
|
+
"$value": "#aea9b1"
|
|
216
|
+
},
|
|
217
|
+
"80": {
|
|
218
|
+
"$value": "#cac5cd"
|
|
219
|
+
},
|
|
220
|
+
"87": {
|
|
221
|
+
"$value": "#ded8e1"
|
|
222
|
+
},
|
|
223
|
+
"90": {
|
|
224
|
+
"$value": "#e6e0e9"
|
|
225
|
+
},
|
|
226
|
+
"92": {
|
|
227
|
+
"$value": "#ece6f0"
|
|
228
|
+
},
|
|
229
|
+
"94": {
|
|
230
|
+
"$value": "#f3edf7"
|
|
231
|
+
},
|
|
232
|
+
"95": {
|
|
233
|
+
"$value": "#f5eff7"
|
|
234
|
+
},
|
|
235
|
+
"96": {
|
|
236
|
+
"$value": "#f7f2fa"
|
|
237
|
+
},
|
|
238
|
+
"98": {
|
|
239
|
+
"$value": "#fef7ff"
|
|
240
|
+
},
|
|
241
|
+
"99": {
|
|
242
|
+
"$value": "#fffbff"
|
|
243
|
+
},
|
|
244
|
+
"100": {
|
|
245
|
+
"$value": "#ffffff"
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
"neutralVariant": {
|
|
249
|
+
"$description": "Borders and secondary/muted text \u2014 tinted slightly toward the brand hue.",
|
|
250
|
+
"0": {
|
|
251
|
+
"$value": "#000000"
|
|
252
|
+
},
|
|
253
|
+
"10": {
|
|
254
|
+
"$value": "#1d1a22"
|
|
255
|
+
},
|
|
256
|
+
"20": {
|
|
257
|
+
"$value": "#322f37"
|
|
258
|
+
},
|
|
259
|
+
"30": {
|
|
260
|
+
"$value": "#49454f"
|
|
261
|
+
},
|
|
262
|
+
"40": {
|
|
263
|
+
"$value": "#605d66"
|
|
264
|
+
},
|
|
265
|
+
"50": {
|
|
266
|
+
"$value": "#79747e"
|
|
267
|
+
},
|
|
268
|
+
"60": {
|
|
269
|
+
"$value": "#938f99"
|
|
270
|
+
},
|
|
271
|
+
"70": {
|
|
272
|
+
"$value": "#aea9b4"
|
|
273
|
+
},
|
|
274
|
+
"80": {
|
|
275
|
+
"$value": "#cac4d0"
|
|
276
|
+
},
|
|
277
|
+
"90": {
|
|
278
|
+
"$value": "#e7e0ec"
|
|
279
|
+
},
|
|
280
|
+
"95": {
|
|
281
|
+
"$value": "#f5eefa"
|
|
282
|
+
},
|
|
283
|
+
"99": {
|
|
284
|
+
"$value": "#fffbfe"
|
|
285
|
+
},
|
|
286
|
+
"100": {
|
|
287
|
+
"$value": "#ffffff"
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
"positive": {
|
|
291
|
+
"$description": "Custom color \u2014 an app-specific hue outside the core palette: positive/success accent, distinct from secondary/tertiary so it reads unambiguously as 'you're owed'. Generated algorithmically (constant hue/chroma across every tone) from the hue/chroma of the previous hand-authored seed (#1f8f6a), so every stop is a real, verified HCT tone rather than a hand-picked approximation.",
|
|
292
|
+
"0": {
|
|
293
|
+
"$value": "#000000"
|
|
294
|
+
},
|
|
295
|
+
"10": {
|
|
296
|
+
"$value": "#002115"
|
|
297
|
+
},
|
|
298
|
+
"20": {
|
|
299
|
+
"$value": "#003827"
|
|
300
|
+
},
|
|
301
|
+
"30": {
|
|
302
|
+
"$value": "#00513a"
|
|
303
|
+
},
|
|
304
|
+
"40": {
|
|
305
|
+
"$value": "#006c4d"
|
|
306
|
+
},
|
|
307
|
+
"50": {
|
|
308
|
+
"$value": "#108763"
|
|
309
|
+
},
|
|
310
|
+
"60": {
|
|
311
|
+
"$value": "#39a27c"
|
|
312
|
+
},
|
|
313
|
+
"70": {
|
|
314
|
+
"$value": "#57bd95"
|
|
315
|
+
},
|
|
316
|
+
"80": {
|
|
317
|
+
"$value": "#74d9af"
|
|
318
|
+
},
|
|
319
|
+
"90": {
|
|
320
|
+
"$value": "#90f6ca"
|
|
321
|
+
},
|
|
322
|
+
"95": {
|
|
323
|
+
"$value": "#bdffdf"
|
|
324
|
+
},
|
|
325
|
+
"99": {
|
|
326
|
+
"$value": "#f4fff7"
|
|
327
|
+
},
|
|
328
|
+
"100": {
|
|
329
|
+
"$value": "#ffffff"
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
"negative": {
|
|
333
|
+
"$description": "Custom color: negative/warning accent \u2014 distinct from the error hue so a debt doesn't read as a validation error. Generated the same way as positive, from the hue/chroma of the previous hand-authored seed (#c45a3a).",
|
|
334
|
+
"0": {
|
|
335
|
+
"$value": "#000000"
|
|
336
|
+
},
|
|
337
|
+
"10": {
|
|
338
|
+
"$value": "#3a0a00"
|
|
339
|
+
},
|
|
340
|
+
"20": {
|
|
341
|
+
"$value": "#5f1600"
|
|
342
|
+
},
|
|
343
|
+
"30": {
|
|
344
|
+
"$value": "#81290c"
|
|
345
|
+
},
|
|
346
|
+
"40": {
|
|
347
|
+
"$value": "#a04022"
|
|
348
|
+
},
|
|
349
|
+
"50": {
|
|
350
|
+
"$value": "#c05738"
|
|
351
|
+
},
|
|
352
|
+
"60": {
|
|
353
|
+
"$value": "#e1704e"
|
|
354
|
+
},
|
|
355
|
+
"70": {
|
|
356
|
+
"$value": "#ff8b69"
|
|
357
|
+
},
|
|
358
|
+
"80": {
|
|
359
|
+
"$value": "#ffb59f"
|
|
360
|
+
},
|
|
361
|
+
"90": {
|
|
362
|
+
"$value": "#ffdbd1"
|
|
363
|
+
},
|
|
364
|
+
"95": {
|
|
365
|
+
"$value": "#ffede8"
|
|
366
|
+
},
|
|
367
|
+
"99": {
|
|
368
|
+
"$value": "#fffbff"
|
|
369
|
+
},
|
|
370
|
+
"100": {
|
|
371
|
+
"$value": "#ffffff"
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
"semantic": {
|
|
376
|
+
"$type": "color",
|
|
377
|
+
"$description": "System tier \u2014 theme-dependent roles. These are the tokens components consume, exported 1:1 as StyleX vars of the same name. positive*/negative* follow the same custom-color formula as error (the same 40/100/90/10 light and 80/20/30/90 dark pattern) so they read as first-class roles, not a bolted-on exception.",
|
|
378
|
+
"light": {
|
|
379
|
+
"background": {
|
|
380
|
+
"$value": "{color.neutral.98}"
|
|
381
|
+
},
|
|
382
|
+
"error": {
|
|
383
|
+
"$value": "{color.error.40}"
|
|
384
|
+
},
|
|
385
|
+
"errorContainer": {
|
|
386
|
+
"$value": "{color.error.90}"
|
|
387
|
+
},
|
|
388
|
+
"inverseOnSurface": {
|
|
389
|
+
"$value": "{color.neutral.95}"
|
|
390
|
+
},
|
|
391
|
+
"inversePrimary": {
|
|
392
|
+
"$value": "{color.primary.80}"
|
|
393
|
+
},
|
|
394
|
+
"inverseSurface": {
|
|
395
|
+
"$value": "{color.neutral.20}"
|
|
396
|
+
},
|
|
397
|
+
"negative": {
|
|
398
|
+
"$value": "{color.negative.40}"
|
|
399
|
+
},
|
|
400
|
+
"negativeContainer": {
|
|
401
|
+
"$value": "{color.negative.90}"
|
|
402
|
+
},
|
|
403
|
+
"onBackground": {
|
|
404
|
+
"$value": "{color.neutral.10}"
|
|
405
|
+
},
|
|
406
|
+
"onError": {
|
|
407
|
+
"$value": "{color.error.100}"
|
|
408
|
+
},
|
|
409
|
+
"onErrorContainer": {
|
|
410
|
+
"$value": "{color.error.10}"
|
|
411
|
+
},
|
|
412
|
+
"onNegative": {
|
|
413
|
+
"$value": "{color.negative.100}"
|
|
414
|
+
},
|
|
415
|
+
"onNegativeContainer": {
|
|
416
|
+
"$value": "{color.negative.10}"
|
|
417
|
+
},
|
|
418
|
+
"onPositive": {
|
|
419
|
+
"$value": "{color.positive.100}"
|
|
420
|
+
},
|
|
421
|
+
"onPositiveContainer": {
|
|
422
|
+
"$value": "{color.positive.10}"
|
|
423
|
+
},
|
|
424
|
+
"onPrimary": {
|
|
425
|
+
"$value": "{color.primary.100}"
|
|
426
|
+
},
|
|
427
|
+
"onPrimaryContainer": {
|
|
428
|
+
"$value": "{color.primary.10}"
|
|
429
|
+
},
|
|
430
|
+
"onPrimaryFixed": {
|
|
431
|
+
"$value": "{color.primary.10}"
|
|
432
|
+
},
|
|
433
|
+
"onPrimaryFixedVariant": {
|
|
434
|
+
"$value": "{color.primary.30}"
|
|
435
|
+
},
|
|
436
|
+
"onSecondary": {
|
|
437
|
+
"$value": "{color.secondary.100}"
|
|
438
|
+
},
|
|
439
|
+
"onSecondaryContainer": {
|
|
440
|
+
"$value": "{color.secondary.10}"
|
|
441
|
+
},
|
|
442
|
+
"onSecondaryFixed": {
|
|
443
|
+
"$value": "{color.secondary.10}"
|
|
444
|
+
},
|
|
445
|
+
"onSecondaryFixedVariant": {
|
|
446
|
+
"$value": "{color.secondary.30}"
|
|
447
|
+
},
|
|
448
|
+
"onSurface": {
|
|
449
|
+
"$value": "{color.neutral.10}"
|
|
450
|
+
},
|
|
451
|
+
"onSurfaceVariant": {
|
|
452
|
+
"$value": "{color.neutralVariant.30}"
|
|
453
|
+
},
|
|
454
|
+
"onTertiary": {
|
|
455
|
+
"$value": "{color.tertiary.100}"
|
|
456
|
+
},
|
|
457
|
+
"onTertiaryContainer": {
|
|
458
|
+
"$value": "{color.tertiary.10}"
|
|
459
|
+
},
|
|
460
|
+
"onTertiaryFixed": {
|
|
461
|
+
"$value": "{color.tertiary.10}"
|
|
462
|
+
},
|
|
463
|
+
"onTertiaryFixedVariant": {
|
|
464
|
+
"$value": "{color.tertiary.30}"
|
|
465
|
+
},
|
|
466
|
+
"outline": {
|
|
467
|
+
"$value": "{color.neutralVariant.50}"
|
|
468
|
+
},
|
|
469
|
+
"outlineVariant": {
|
|
470
|
+
"$value": "{color.neutralVariant.80}"
|
|
471
|
+
},
|
|
472
|
+
"positive": {
|
|
473
|
+
"$value": "{color.positive.40}"
|
|
474
|
+
},
|
|
475
|
+
"positiveContainer": {
|
|
476
|
+
"$value": "{color.positive.90}"
|
|
477
|
+
},
|
|
478
|
+
"primary": {
|
|
479
|
+
"$value": "{color.primary.40}"
|
|
480
|
+
},
|
|
481
|
+
"primaryContainer": {
|
|
482
|
+
"$value": "{color.primary.90}"
|
|
483
|
+
},
|
|
484
|
+
"primaryFixed": {
|
|
485
|
+
"$value": "{color.primary.90}"
|
|
486
|
+
},
|
|
487
|
+
"primaryFixedDim": {
|
|
488
|
+
"$value": "{color.primary.80}"
|
|
489
|
+
},
|
|
490
|
+
"scrim": {
|
|
491
|
+
"$value": "{color.neutral.0}"
|
|
492
|
+
},
|
|
493
|
+
"secondary": {
|
|
494
|
+
"$value": "{color.secondary.40}"
|
|
495
|
+
},
|
|
496
|
+
"secondaryContainer": {
|
|
497
|
+
"$value": "{color.secondary.90}"
|
|
498
|
+
},
|
|
499
|
+
"secondaryFixed": {
|
|
500
|
+
"$value": "{color.secondary.90}"
|
|
501
|
+
},
|
|
502
|
+
"secondaryFixedDim": {
|
|
503
|
+
"$value": "{color.secondary.80}"
|
|
504
|
+
},
|
|
505
|
+
"shadow": {
|
|
506
|
+
"$value": "{color.neutral.0}"
|
|
507
|
+
},
|
|
508
|
+
"surface": {
|
|
509
|
+
"$value": "{color.neutral.98}"
|
|
510
|
+
},
|
|
511
|
+
"surfaceBright": {
|
|
512
|
+
"$value": "{color.neutral.98}"
|
|
513
|
+
},
|
|
514
|
+
"surfaceContainer": {
|
|
515
|
+
"$value": "{color.neutral.94}"
|
|
516
|
+
},
|
|
517
|
+
"surfaceContainerHigh": {
|
|
518
|
+
"$value": "{color.neutral.92}"
|
|
519
|
+
},
|
|
520
|
+
"surfaceContainerHighest": {
|
|
521
|
+
"$value": "{color.neutral.90}"
|
|
522
|
+
},
|
|
523
|
+
"surfaceContainerLow": {
|
|
524
|
+
"$value": "{color.neutral.96}"
|
|
525
|
+
},
|
|
526
|
+
"surfaceContainerLowest": {
|
|
527
|
+
"$value": "{color.neutral.100}"
|
|
528
|
+
},
|
|
529
|
+
"surfaceDim": {
|
|
530
|
+
"$value": "{color.neutral.87}"
|
|
531
|
+
},
|
|
532
|
+
"surfaceTint": {
|
|
533
|
+
"$value": "{color.primary.40}"
|
|
534
|
+
},
|
|
535
|
+
"surfaceVariant": {
|
|
536
|
+
"$value": "{color.neutralVariant.90}"
|
|
537
|
+
},
|
|
538
|
+
"tertiary": {
|
|
539
|
+
"$value": "{color.tertiary.40}"
|
|
540
|
+
},
|
|
541
|
+
"tertiaryContainer": {
|
|
542
|
+
"$value": "{color.tertiary.90}"
|
|
543
|
+
},
|
|
544
|
+
"tertiaryFixed": {
|
|
545
|
+
"$value": "{color.tertiary.90}"
|
|
546
|
+
},
|
|
547
|
+
"tertiaryFixedDim": {
|
|
548
|
+
"$value": "{color.tertiary.80}"
|
|
549
|
+
}
|
|
550
|
+
},
|
|
551
|
+
"dark": {
|
|
552
|
+
"background": {
|
|
553
|
+
"$value": "{color.neutral.6}"
|
|
554
|
+
},
|
|
555
|
+
"error": {
|
|
556
|
+
"$value": "{color.error.80}"
|
|
557
|
+
},
|
|
558
|
+
"errorContainer": {
|
|
559
|
+
"$value": "{color.error.30}"
|
|
560
|
+
},
|
|
561
|
+
"inverseOnSurface": {
|
|
562
|
+
"$value": "{color.neutral.20}"
|
|
563
|
+
},
|
|
564
|
+
"inversePrimary": {
|
|
565
|
+
"$value": "{color.primary.40}"
|
|
566
|
+
},
|
|
567
|
+
"inverseSurface": {
|
|
568
|
+
"$value": "{color.neutral.90}"
|
|
569
|
+
},
|
|
570
|
+
"negative": {
|
|
571
|
+
"$value": "{color.negative.80}"
|
|
572
|
+
},
|
|
573
|
+
"negativeContainer": {
|
|
574
|
+
"$value": "{color.negative.30}"
|
|
575
|
+
},
|
|
576
|
+
"onBackground": {
|
|
577
|
+
"$value": "{color.neutral.90}"
|
|
578
|
+
},
|
|
579
|
+
"onError": {
|
|
580
|
+
"$value": "{color.error.20}"
|
|
581
|
+
},
|
|
582
|
+
"onErrorContainer": {
|
|
583
|
+
"$value": "{color.error.90}"
|
|
584
|
+
},
|
|
585
|
+
"onNegative": {
|
|
586
|
+
"$value": "{color.negative.20}"
|
|
587
|
+
},
|
|
588
|
+
"onNegativeContainer": {
|
|
589
|
+
"$value": "{color.negative.90}"
|
|
590
|
+
},
|
|
591
|
+
"onPositive": {
|
|
592
|
+
"$value": "{color.positive.20}"
|
|
593
|
+
},
|
|
594
|
+
"onPositiveContainer": {
|
|
595
|
+
"$value": "{color.positive.90}"
|
|
596
|
+
},
|
|
597
|
+
"onPrimary": {
|
|
598
|
+
"$value": "{color.primary.20}"
|
|
599
|
+
},
|
|
600
|
+
"onPrimaryContainer": {
|
|
601
|
+
"$value": "{color.primary.90}"
|
|
602
|
+
},
|
|
603
|
+
"onPrimaryFixed": {
|
|
604
|
+
"$value": "{color.primary.10}"
|
|
605
|
+
},
|
|
606
|
+
"onPrimaryFixedVariant": {
|
|
607
|
+
"$value": "{color.primary.30}"
|
|
608
|
+
},
|
|
609
|
+
"onSecondary": {
|
|
610
|
+
"$value": "{color.secondary.20}"
|
|
611
|
+
},
|
|
612
|
+
"onSecondaryContainer": {
|
|
613
|
+
"$value": "{color.secondary.90}"
|
|
614
|
+
},
|
|
615
|
+
"onSecondaryFixed": {
|
|
616
|
+
"$value": "{color.secondary.10}"
|
|
617
|
+
},
|
|
618
|
+
"onSecondaryFixedVariant": {
|
|
619
|
+
"$value": "{color.secondary.30}"
|
|
620
|
+
},
|
|
621
|
+
"onSurface": {
|
|
622
|
+
"$value": "{color.neutral.90}"
|
|
623
|
+
},
|
|
624
|
+
"onSurfaceVariant": {
|
|
625
|
+
"$value": "{color.neutralVariant.80}"
|
|
626
|
+
},
|
|
627
|
+
"onTertiary": {
|
|
628
|
+
"$value": "{color.tertiary.20}"
|
|
629
|
+
},
|
|
630
|
+
"onTertiaryContainer": {
|
|
631
|
+
"$value": "{color.tertiary.90}"
|
|
632
|
+
},
|
|
633
|
+
"onTertiaryFixed": {
|
|
634
|
+
"$value": "{color.tertiary.10}"
|
|
635
|
+
},
|
|
636
|
+
"onTertiaryFixedVariant": {
|
|
637
|
+
"$value": "{color.tertiary.30}"
|
|
638
|
+
},
|
|
639
|
+
"outline": {
|
|
640
|
+
"$value": "{color.neutralVariant.60}"
|
|
641
|
+
},
|
|
642
|
+
"outlineVariant": {
|
|
643
|
+
"$value": "{color.neutralVariant.30}"
|
|
644
|
+
},
|
|
645
|
+
"positive": {
|
|
646
|
+
"$value": "{color.positive.80}"
|
|
647
|
+
},
|
|
648
|
+
"positiveContainer": {
|
|
649
|
+
"$value": "{color.positive.30}"
|
|
650
|
+
},
|
|
651
|
+
"primary": {
|
|
652
|
+
"$value": "{color.primary.80}"
|
|
653
|
+
},
|
|
654
|
+
"primaryContainer": {
|
|
655
|
+
"$value": "{color.primary.30}"
|
|
656
|
+
},
|
|
657
|
+
"primaryFixed": {
|
|
658
|
+
"$value": "{color.primary.90}"
|
|
659
|
+
},
|
|
660
|
+
"primaryFixedDim": {
|
|
661
|
+
"$value": "{color.primary.80}"
|
|
662
|
+
},
|
|
663
|
+
"scrim": {
|
|
664
|
+
"$value": "{color.neutral.0}"
|
|
665
|
+
},
|
|
666
|
+
"secondary": {
|
|
667
|
+
"$value": "{color.secondary.80}"
|
|
668
|
+
},
|
|
669
|
+
"secondaryContainer": {
|
|
670
|
+
"$value": "{color.secondary.30}"
|
|
671
|
+
},
|
|
672
|
+
"secondaryFixed": {
|
|
673
|
+
"$value": "{color.secondary.90}"
|
|
674
|
+
},
|
|
675
|
+
"secondaryFixedDim": {
|
|
676
|
+
"$value": "{color.secondary.80}"
|
|
677
|
+
},
|
|
678
|
+
"shadow": {
|
|
679
|
+
"$value": "{color.neutral.0}"
|
|
680
|
+
},
|
|
681
|
+
"surface": {
|
|
682
|
+
"$value": "{color.neutral.6}"
|
|
683
|
+
},
|
|
684
|
+
"surfaceBright": {
|
|
685
|
+
"$value": "{color.neutral.24}"
|
|
686
|
+
},
|
|
687
|
+
"surfaceContainer": {
|
|
688
|
+
"$value": "{color.neutral.12}"
|
|
689
|
+
},
|
|
690
|
+
"surfaceContainerHigh": {
|
|
691
|
+
"$value": "{color.neutral.17}"
|
|
692
|
+
},
|
|
693
|
+
"surfaceContainerHighest": {
|
|
694
|
+
"$value": "{color.neutral.22}"
|
|
695
|
+
},
|
|
696
|
+
"surfaceContainerLow": {
|
|
697
|
+
"$value": "{color.neutral.10}"
|
|
698
|
+
},
|
|
699
|
+
"surfaceContainerLowest": {
|
|
700
|
+
"$value": "{color.neutral.4}"
|
|
701
|
+
},
|
|
702
|
+
"surfaceDim": {
|
|
703
|
+
"$value": "{color.neutral.6}"
|
|
704
|
+
},
|
|
705
|
+
"surfaceTint": {
|
|
706
|
+
"$value": "{color.primary.80}"
|
|
707
|
+
},
|
|
708
|
+
"surfaceVariant": {
|
|
709
|
+
"$value": "{color.neutralVariant.30}"
|
|
710
|
+
},
|
|
711
|
+
"tertiary": {
|
|
712
|
+
"$value": "{color.tertiary.80}"
|
|
713
|
+
},
|
|
714
|
+
"tertiaryContainer": {
|
|
715
|
+
"$value": "{color.tertiary.30}"
|
|
716
|
+
},
|
|
717
|
+
"tertiaryFixed": {
|
|
718
|
+
"$value": "{color.tertiary.90}"
|
|
719
|
+
},
|
|
720
|
+
"tertiaryFixedDim": {
|
|
721
|
+
"$value": "{color.tertiary.80}"
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
},
|
|
725
|
+
"typography": {
|
|
726
|
+
"fontFamily": {
|
|
727
|
+
"$type": "fontFamily",
|
|
728
|
+
"$description": "Two typeface roles: 'brand' (expressive, used by display/headline/title) and 'plain' (neutral, used by body/label). 'mono' is a kanso-specific extension for numeric/code display, outside the base scale.",
|
|
729
|
+
"brand": {
|
|
730
|
+
"$value": ["Roboto Serif", "Iowan Old Style", "Georgia", "serif"]
|
|
731
|
+
},
|
|
732
|
+
"mono": {
|
|
733
|
+
"$value": [
|
|
734
|
+
"Roboto Mono",
|
|
735
|
+
"ui-monospace",
|
|
736
|
+
"SF Mono",
|
|
737
|
+
"Menlo",
|
|
738
|
+
"monospace"
|
|
739
|
+
]
|
|
740
|
+
},
|
|
741
|
+
"plain": {
|
|
742
|
+
"$value": [
|
|
743
|
+
"Roboto Flex",
|
|
744
|
+
"-apple-system",
|
|
745
|
+
"BlinkMacSystemFont",
|
|
746
|
+
"Segoe UI",
|
|
747
|
+
"Roboto",
|
|
748
|
+
"sans-serif"
|
|
749
|
+
]
|
|
750
|
+
}
|
|
751
|
+
},
|
|
752
|
+
"fontWeight": {
|
|
753
|
+
"$type": "fontWeight",
|
|
754
|
+
"bold": {
|
|
755
|
+
"$value": 700
|
|
756
|
+
},
|
|
757
|
+
"medium": {
|
|
758
|
+
"$value": 500
|
|
759
|
+
},
|
|
760
|
+
"regular": {
|
|
761
|
+
"$value": 400
|
|
762
|
+
}
|
|
763
|
+
},
|
|
764
|
+
"scale": {
|
|
765
|
+
"$description": "The full 15-style type scale \u2014 display/headline/title/body/label, each in large/medium/small. Sizes are px, converted from a verified rem-based scale at a 16px root. `font` names which typeface role (brand/plain) each style uses.",
|
|
766
|
+
"displayLarge": {
|
|
767
|
+
"font": {
|
|
768
|
+
"$value": "{typography.fontFamily.brand}"
|
|
769
|
+
},
|
|
770
|
+
"size": {
|
|
771
|
+
"$type": "dimension",
|
|
772
|
+
"$value": "57px"
|
|
773
|
+
},
|
|
774
|
+
"lineHeight": {
|
|
775
|
+
"$type": "dimension",
|
|
776
|
+
"$value": "64px"
|
|
777
|
+
},
|
|
778
|
+
"tracking": {
|
|
779
|
+
"$type": "dimension",
|
|
780
|
+
"$value": "-0.25px"
|
|
781
|
+
},
|
|
782
|
+
"weight": {
|
|
783
|
+
"$value": "{typography.fontWeight.regular}"
|
|
784
|
+
}
|
|
785
|
+
},
|
|
786
|
+
"displayMedium": {
|
|
787
|
+
"font": {
|
|
788
|
+
"$value": "{typography.fontFamily.brand}"
|
|
789
|
+
},
|
|
790
|
+
"size": {
|
|
791
|
+
"$type": "dimension",
|
|
792
|
+
"$value": "45px"
|
|
793
|
+
},
|
|
794
|
+
"lineHeight": {
|
|
795
|
+
"$type": "dimension",
|
|
796
|
+
"$value": "52px"
|
|
797
|
+
},
|
|
798
|
+
"tracking": {
|
|
799
|
+
"$type": "dimension",
|
|
800
|
+
"$value": "0px"
|
|
801
|
+
},
|
|
802
|
+
"weight": {
|
|
803
|
+
"$value": "{typography.fontWeight.regular}"
|
|
804
|
+
}
|
|
805
|
+
},
|
|
806
|
+
"displaySmall": {
|
|
807
|
+
"font": {
|
|
808
|
+
"$value": "{typography.fontFamily.brand}"
|
|
809
|
+
},
|
|
810
|
+
"size": {
|
|
811
|
+
"$type": "dimension",
|
|
812
|
+
"$value": "36px"
|
|
813
|
+
},
|
|
814
|
+
"lineHeight": {
|
|
815
|
+
"$type": "dimension",
|
|
816
|
+
"$value": "44px"
|
|
817
|
+
},
|
|
818
|
+
"tracking": {
|
|
819
|
+
"$type": "dimension",
|
|
820
|
+
"$value": "0px"
|
|
821
|
+
},
|
|
822
|
+
"weight": {
|
|
823
|
+
"$value": "{typography.fontWeight.regular}"
|
|
824
|
+
}
|
|
825
|
+
},
|
|
826
|
+
"headlineLarge": {
|
|
827
|
+
"font": {
|
|
828
|
+
"$value": "{typography.fontFamily.brand}"
|
|
829
|
+
},
|
|
830
|
+
"size": {
|
|
831
|
+
"$type": "dimension",
|
|
832
|
+
"$value": "32px"
|
|
833
|
+
},
|
|
834
|
+
"lineHeight": {
|
|
835
|
+
"$type": "dimension",
|
|
836
|
+
"$value": "40px"
|
|
837
|
+
},
|
|
838
|
+
"tracking": {
|
|
839
|
+
"$type": "dimension",
|
|
840
|
+
"$value": "0px"
|
|
841
|
+
},
|
|
842
|
+
"weight": {
|
|
843
|
+
"$value": "{typography.fontWeight.regular}"
|
|
844
|
+
}
|
|
845
|
+
},
|
|
846
|
+
"headlineMedium": {
|
|
847
|
+
"font": {
|
|
848
|
+
"$value": "{typography.fontFamily.brand}"
|
|
849
|
+
},
|
|
850
|
+
"size": {
|
|
851
|
+
"$type": "dimension",
|
|
852
|
+
"$value": "28px"
|
|
853
|
+
},
|
|
854
|
+
"lineHeight": {
|
|
855
|
+
"$type": "dimension",
|
|
856
|
+
"$value": "36px"
|
|
857
|
+
},
|
|
858
|
+
"tracking": {
|
|
859
|
+
"$type": "dimension",
|
|
860
|
+
"$value": "0px"
|
|
861
|
+
},
|
|
862
|
+
"weight": {
|
|
863
|
+
"$value": "{typography.fontWeight.regular}"
|
|
864
|
+
}
|
|
865
|
+
},
|
|
866
|
+
"headlineSmall": {
|
|
867
|
+
"font": {
|
|
868
|
+
"$value": "{typography.fontFamily.brand}"
|
|
869
|
+
},
|
|
870
|
+
"size": {
|
|
871
|
+
"$type": "dimension",
|
|
872
|
+
"$value": "24px"
|
|
873
|
+
},
|
|
874
|
+
"lineHeight": {
|
|
875
|
+
"$type": "dimension",
|
|
876
|
+
"$value": "32px"
|
|
877
|
+
},
|
|
878
|
+
"tracking": {
|
|
879
|
+
"$type": "dimension",
|
|
880
|
+
"$value": "0px"
|
|
881
|
+
},
|
|
882
|
+
"weight": {
|
|
883
|
+
"$value": "{typography.fontWeight.regular}"
|
|
884
|
+
}
|
|
885
|
+
},
|
|
886
|
+
"titleLarge": {
|
|
887
|
+
"font": {
|
|
888
|
+
"$value": "{typography.fontFamily.brand}"
|
|
889
|
+
},
|
|
890
|
+
"size": {
|
|
891
|
+
"$type": "dimension",
|
|
892
|
+
"$value": "22px"
|
|
893
|
+
},
|
|
894
|
+
"lineHeight": {
|
|
895
|
+
"$type": "dimension",
|
|
896
|
+
"$value": "28px"
|
|
897
|
+
},
|
|
898
|
+
"tracking": {
|
|
899
|
+
"$type": "dimension",
|
|
900
|
+
"$value": "0px"
|
|
901
|
+
},
|
|
902
|
+
"weight": {
|
|
903
|
+
"$value": "{typography.fontWeight.regular}"
|
|
904
|
+
}
|
|
905
|
+
},
|
|
906
|
+
"titleMedium": {
|
|
907
|
+
"font": {
|
|
908
|
+
"$value": "{typography.fontFamily.plain}"
|
|
909
|
+
},
|
|
910
|
+
"size": {
|
|
911
|
+
"$type": "dimension",
|
|
912
|
+
"$value": "16px"
|
|
913
|
+
},
|
|
914
|
+
"lineHeight": {
|
|
915
|
+
"$type": "dimension",
|
|
916
|
+
"$value": "24px"
|
|
917
|
+
},
|
|
918
|
+
"tracking": {
|
|
919
|
+
"$type": "dimension",
|
|
920
|
+
"$value": "0.15px"
|
|
921
|
+
},
|
|
922
|
+
"weight": {
|
|
923
|
+
"$value": "{typography.fontWeight.medium}"
|
|
924
|
+
}
|
|
925
|
+
},
|
|
926
|
+
"titleSmall": {
|
|
927
|
+
"font": {
|
|
928
|
+
"$value": "{typography.fontFamily.plain}"
|
|
929
|
+
},
|
|
930
|
+
"size": {
|
|
931
|
+
"$type": "dimension",
|
|
932
|
+
"$value": "14px"
|
|
933
|
+
},
|
|
934
|
+
"lineHeight": {
|
|
935
|
+
"$type": "dimension",
|
|
936
|
+
"$value": "20px"
|
|
937
|
+
},
|
|
938
|
+
"tracking": {
|
|
939
|
+
"$type": "dimension",
|
|
940
|
+
"$value": "0.1px"
|
|
941
|
+
},
|
|
942
|
+
"weight": {
|
|
943
|
+
"$value": "{typography.fontWeight.medium}"
|
|
944
|
+
}
|
|
945
|
+
},
|
|
946
|
+
"bodyLarge": {
|
|
947
|
+
"font": {
|
|
948
|
+
"$value": "{typography.fontFamily.plain}"
|
|
949
|
+
},
|
|
950
|
+
"size": {
|
|
951
|
+
"$type": "dimension",
|
|
952
|
+
"$value": "16px"
|
|
953
|
+
},
|
|
954
|
+
"lineHeight": {
|
|
955
|
+
"$type": "dimension",
|
|
956
|
+
"$value": "24px"
|
|
957
|
+
},
|
|
958
|
+
"tracking": {
|
|
959
|
+
"$type": "dimension",
|
|
960
|
+
"$value": "0.5px"
|
|
961
|
+
},
|
|
962
|
+
"weight": {
|
|
963
|
+
"$value": "{typography.fontWeight.regular}"
|
|
964
|
+
}
|
|
965
|
+
},
|
|
966
|
+
"bodyMedium": {
|
|
967
|
+
"font": {
|
|
968
|
+
"$value": "{typography.fontFamily.plain}"
|
|
969
|
+
},
|
|
970
|
+
"size": {
|
|
971
|
+
"$type": "dimension",
|
|
972
|
+
"$value": "14px"
|
|
973
|
+
},
|
|
974
|
+
"lineHeight": {
|
|
975
|
+
"$type": "dimension",
|
|
976
|
+
"$value": "20px"
|
|
977
|
+
},
|
|
978
|
+
"tracking": {
|
|
979
|
+
"$type": "dimension",
|
|
980
|
+
"$value": "0.25px"
|
|
981
|
+
},
|
|
982
|
+
"weight": {
|
|
983
|
+
"$value": "{typography.fontWeight.regular}"
|
|
984
|
+
}
|
|
985
|
+
},
|
|
986
|
+
"bodySmall": {
|
|
987
|
+
"font": {
|
|
988
|
+
"$value": "{typography.fontFamily.plain}"
|
|
989
|
+
},
|
|
990
|
+
"size": {
|
|
991
|
+
"$type": "dimension",
|
|
992
|
+
"$value": "12px"
|
|
993
|
+
},
|
|
994
|
+
"lineHeight": {
|
|
995
|
+
"$type": "dimension",
|
|
996
|
+
"$value": "16px"
|
|
997
|
+
},
|
|
998
|
+
"tracking": {
|
|
999
|
+
"$type": "dimension",
|
|
1000
|
+
"$value": "0.4px"
|
|
1001
|
+
},
|
|
1002
|
+
"weight": {
|
|
1003
|
+
"$value": "{typography.fontWeight.regular}"
|
|
1004
|
+
}
|
|
1005
|
+
},
|
|
1006
|
+
"labelLarge": {
|
|
1007
|
+
"font": {
|
|
1008
|
+
"$value": "{typography.fontFamily.plain}"
|
|
1009
|
+
},
|
|
1010
|
+
"size": {
|
|
1011
|
+
"$type": "dimension",
|
|
1012
|
+
"$value": "14px"
|
|
1013
|
+
},
|
|
1014
|
+
"lineHeight": {
|
|
1015
|
+
"$type": "dimension",
|
|
1016
|
+
"$value": "20px"
|
|
1017
|
+
},
|
|
1018
|
+
"tracking": {
|
|
1019
|
+
"$type": "dimension",
|
|
1020
|
+
"$value": "0.1px"
|
|
1021
|
+
},
|
|
1022
|
+
"weight": {
|
|
1023
|
+
"$value": "{typography.fontWeight.medium}"
|
|
1024
|
+
}
|
|
1025
|
+
},
|
|
1026
|
+
"labelMedium": {
|
|
1027
|
+
"font": {
|
|
1028
|
+
"$value": "{typography.fontFamily.plain}"
|
|
1029
|
+
},
|
|
1030
|
+
"size": {
|
|
1031
|
+
"$type": "dimension",
|
|
1032
|
+
"$value": "12px"
|
|
1033
|
+
},
|
|
1034
|
+
"lineHeight": {
|
|
1035
|
+
"$type": "dimension",
|
|
1036
|
+
"$value": "16px"
|
|
1037
|
+
},
|
|
1038
|
+
"tracking": {
|
|
1039
|
+
"$type": "dimension",
|
|
1040
|
+
"$value": "0.5px"
|
|
1041
|
+
},
|
|
1042
|
+
"weight": {
|
|
1043
|
+
"$value": "{typography.fontWeight.medium}"
|
|
1044
|
+
}
|
|
1045
|
+
},
|
|
1046
|
+
"labelSmall": {
|
|
1047
|
+
"font": {
|
|
1048
|
+
"$value": "{typography.fontFamily.plain}"
|
|
1049
|
+
},
|
|
1050
|
+
"size": {
|
|
1051
|
+
"$type": "dimension",
|
|
1052
|
+
"$value": "11px"
|
|
1053
|
+
},
|
|
1054
|
+
"lineHeight": {
|
|
1055
|
+
"$type": "dimension",
|
|
1056
|
+
"$value": "16px"
|
|
1057
|
+
},
|
|
1058
|
+
"tracking": {
|
|
1059
|
+
"$type": "dimension",
|
|
1060
|
+
"$value": "0.5px"
|
|
1061
|
+
},
|
|
1062
|
+
"weight": {
|
|
1063
|
+
"$value": "{typography.fontWeight.medium}"
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
},
|
|
1068
|
+
"spacing": {
|
|
1069
|
+
"$type": "dimension",
|
|
1070
|
+
"$description": "kanso-specific \u2014 not derived from an external spacing scale, just a general 4px-grid principle.",
|
|
1071
|
+
"primitive": {
|
|
1072
|
+
"2": {
|
|
1073
|
+
"$value": "2px"
|
|
1074
|
+
},
|
|
1075
|
+
"4": {
|
|
1076
|
+
"$value": "4px"
|
|
1077
|
+
},
|
|
1078
|
+
"8": {
|
|
1079
|
+
"$value": "8px"
|
|
1080
|
+
},
|
|
1081
|
+
"12": {
|
|
1082
|
+
"$value": "12px"
|
|
1083
|
+
},
|
|
1084
|
+
"16": {
|
|
1085
|
+
"$value": "16px"
|
|
1086
|
+
},
|
|
1087
|
+
"20": {
|
|
1088
|
+
"$value": "20px"
|
|
1089
|
+
},
|
|
1090
|
+
"24": {
|
|
1091
|
+
"$value": "24px"
|
|
1092
|
+
},
|
|
1093
|
+
"32": {
|
|
1094
|
+
"$value": "32px"
|
|
1095
|
+
},
|
|
1096
|
+
"40": {
|
|
1097
|
+
"$value": "40px"
|
|
1098
|
+
},
|
|
1099
|
+
"56": {
|
|
1100
|
+
"$value": "56px"
|
|
1101
|
+
},
|
|
1102
|
+
"72": {
|
|
1103
|
+
"$value": "72px"
|
|
1104
|
+
},
|
|
1105
|
+
"96": {
|
|
1106
|
+
"$value": "96px"
|
|
1107
|
+
}
|
|
1108
|
+
},
|
|
1109
|
+
"component": {
|
|
1110
|
+
"$description": "T-shirt-named subset consumed by components today.",
|
|
1111
|
+
"xxs": {
|
|
1112
|
+
"$value": "{spacing.primitive.2}"
|
|
1113
|
+
},
|
|
1114
|
+
"xs": {
|
|
1115
|
+
"$value": "{spacing.primitive.4}"
|
|
1116
|
+
},
|
|
1117
|
+
"sm": {
|
|
1118
|
+
"$value": "{spacing.primitive.8}"
|
|
1119
|
+
},
|
|
1120
|
+
"md": {
|
|
1121
|
+
"$value": "{spacing.primitive.12}"
|
|
1122
|
+
},
|
|
1123
|
+
"lg": {
|
|
1124
|
+
"$value": "{spacing.primitive.16}"
|
|
1125
|
+
},
|
|
1126
|
+
"xl": {
|
|
1127
|
+
"$value": "{spacing.primitive.24}"
|
|
1128
|
+
},
|
|
1129
|
+
"xxl": {
|
|
1130
|
+
"$value": "{spacing.primitive.32}"
|
|
1131
|
+
},
|
|
1132
|
+
"xxxl": {
|
|
1133
|
+
"$value": "{spacing.primitive.40}"
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
},
|
|
1137
|
+
"radii": {
|
|
1138
|
+
"$type": "dimension",
|
|
1139
|
+
"$description": "A verified corner-radius scale, from sharp to fully round.",
|
|
1140
|
+
"primitive": {
|
|
1141
|
+
"0": {
|
|
1142
|
+
"$value": "0px"
|
|
1143
|
+
},
|
|
1144
|
+
"4": {
|
|
1145
|
+
"$value": "4px"
|
|
1146
|
+
},
|
|
1147
|
+
"8": {
|
|
1148
|
+
"$value": "8px"
|
|
1149
|
+
},
|
|
1150
|
+
"12": {
|
|
1151
|
+
"$value": "12px"
|
|
1152
|
+
},
|
|
1153
|
+
"16": {
|
|
1154
|
+
"$value": "16px"
|
|
1155
|
+
},
|
|
1156
|
+
"28": {
|
|
1157
|
+
"$value": "28px"
|
|
1158
|
+
},
|
|
1159
|
+
"9999": {
|
|
1160
|
+
"$value": "9999px"
|
|
1161
|
+
}
|
|
1162
|
+
},
|
|
1163
|
+
"component": {
|
|
1164
|
+
"none": {
|
|
1165
|
+
"$value": "{radii.primitive.0}"
|
|
1166
|
+
},
|
|
1167
|
+
"xs": {
|
|
1168
|
+
"$value": "{radii.primitive.4}"
|
|
1169
|
+
},
|
|
1170
|
+
"sm": {
|
|
1171
|
+
"$value": "{radii.primitive.8}"
|
|
1172
|
+
},
|
|
1173
|
+
"md": {
|
|
1174
|
+
"$value": "{radii.primitive.12}"
|
|
1175
|
+
},
|
|
1176
|
+
"lg": {
|
|
1177
|
+
"$value": "{radii.primitive.16}"
|
|
1178
|
+
},
|
|
1179
|
+
"xl": {
|
|
1180
|
+
"$value": "{radii.primitive.28}"
|
|
1181
|
+
},
|
|
1182
|
+
"pill": {
|
|
1183
|
+
"$value": "{radii.primitive.9999}"
|
|
1184
|
+
},
|
|
1185
|
+
"circle": {
|
|
1186
|
+
"$value": "{radii.primitive.9999}"
|
|
1187
|
+
}
|
|
1188
|
+
}
|
|
1189
|
+
},
|
|
1190
|
+
"sizing": {
|
|
1191
|
+
"$type": "dimension",
|
|
1192
|
+
"$description": "Container heights, which every component used to carry as a literal. The values are the Material Design spec's, so the default rendering is unchanged; what they add is a way for a theme to restate them, which is the one axis of density a scheme could not reach before. A component still takes its own height from the step its spec page names - the token is where that step's value lives, not a licence to pick a different one.",
|
|
1193
|
+
"primitive": {
|
|
1194
|
+
"32": {
|
|
1195
|
+
"$value": "32px"
|
|
1196
|
+
},
|
|
1197
|
+
"40": {
|
|
1198
|
+
"$value": "40px"
|
|
1199
|
+
},
|
|
1200
|
+
"48": {
|
|
1201
|
+
"$value": "48px"
|
|
1202
|
+
},
|
|
1203
|
+
"56": {
|
|
1204
|
+
"$value": "56px"
|
|
1205
|
+
},
|
|
1206
|
+
"72": {
|
|
1207
|
+
"$value": "72px"
|
|
1208
|
+
},
|
|
1209
|
+
"88": {
|
|
1210
|
+
"$value": "88px"
|
|
1211
|
+
},
|
|
1212
|
+
"96": {
|
|
1213
|
+
"$value": "96px"
|
|
1214
|
+
},
|
|
1215
|
+
"136": {
|
|
1216
|
+
"$value": "136px"
|
|
1217
|
+
}
|
|
1218
|
+
},
|
|
1219
|
+
"component": {
|
|
1220
|
+
"controlXs": {
|
|
1221
|
+
"$value": "{sizing.primitive.32}"
|
|
1222
|
+
},
|
|
1223
|
+
"controlSm": {
|
|
1224
|
+
"$value": "{sizing.primitive.40}"
|
|
1225
|
+
},
|
|
1226
|
+
"controlMd": {
|
|
1227
|
+
"$value": "{sizing.primitive.48}"
|
|
1228
|
+
},
|
|
1229
|
+
"controlLg": {
|
|
1230
|
+
"$value": "{sizing.primitive.56}"
|
|
1231
|
+
},
|
|
1232
|
+
"controlXl": {
|
|
1233
|
+
"$value": "{sizing.primitive.96}"
|
|
1234
|
+
},
|
|
1235
|
+
"controlXxl": {
|
|
1236
|
+
"$value": "{sizing.primitive.136}"
|
|
1237
|
+
},
|
|
1238
|
+
"rowXs": {
|
|
1239
|
+
"$value": "{sizing.primitive.48}"
|
|
1240
|
+
},
|
|
1241
|
+
"rowSm": {
|
|
1242
|
+
"$value": "{sizing.primitive.56}"
|
|
1243
|
+
},
|
|
1244
|
+
"rowMd": {
|
|
1245
|
+
"$value": "{sizing.primitive.72}"
|
|
1246
|
+
},
|
|
1247
|
+
"rowLg": {
|
|
1248
|
+
"$value": "{sizing.primitive.88}"
|
|
1249
|
+
}
|
|
1250
|
+
}
|
|
1251
|
+
},
|
|
1252
|
+
"layout": {
|
|
1253
|
+
"$type": "dimension",
|
|
1254
|
+
"$description": "Window size classes, as the lower bound of each class. Published because a consuming app has to line its own media queries up with the library's, and it can only do that if the thresholds are part of the contract rather than a number each component picked for itself. A breakpoint chosen because a particular piece of content stops fitting is not one of these and belongs at its call site \u2014 see the NARROW constant in index.stories.tsx for that case.",
|
|
1255
|
+
"breakpoint": {
|
|
1256
|
+
"$description": "Unlike every other group in this file these are NOT generated as CSS custom properties: a media query condition cannot read var(), so `@media (width >= var(--kui-layout-breakpoint-medium))` is invalid CSS, and a breakpoint held in a custom property would be unusable in the one place it exists to be used. They are emitted instead as stylex.defineConsts() \u2014 inlined by the compiler \u2014 which is also why they are absent from design.tokens.css and so are not part of the runtime override contract. See `breakpoints` and `media` in design.tokens.stylex.ts. compact gets no query of its own: it is the unprefixed base every style starts from, and `width >= 0px` is always true.",
|
|
1257
|
+
"compact": {
|
|
1258
|
+
"$value": "0px"
|
|
1259
|
+
},
|
|
1260
|
+
"medium": {
|
|
1261
|
+
"$value": "600px"
|
|
1262
|
+
},
|
|
1263
|
+
"expanded": {
|
|
1264
|
+
"$value": "840px"
|
|
1265
|
+
},
|
|
1266
|
+
"large": {
|
|
1267
|
+
"$value": "1200px"
|
|
1268
|
+
},
|
|
1269
|
+
"extraLarge": {
|
|
1270
|
+
"$value": "1600px"
|
|
1271
|
+
}
|
|
1272
|
+
}
|
|
1273
|
+
},
|
|
1274
|
+
"elevation": {
|
|
1275
|
+
"$type": "number",
|
|
1276
|
+
"$description": "Elevation levels, expressed in dp. Informational \u2014 see shadow.* below for the actual box-shadow each level renders as.",
|
|
1277
|
+
"level0": {
|
|
1278
|
+
"$value": 0
|
|
1279
|
+
},
|
|
1280
|
+
"level1": {
|
|
1281
|
+
"$value": 1
|
|
1282
|
+
},
|
|
1283
|
+
"level2": {
|
|
1284
|
+
"$value": 3
|
|
1285
|
+
},
|
|
1286
|
+
"level3": {
|
|
1287
|
+
"$value": 6
|
|
1288
|
+
},
|
|
1289
|
+
"level4": {
|
|
1290
|
+
"$value": 8
|
|
1291
|
+
},
|
|
1292
|
+
"level5": {
|
|
1293
|
+
"$value": 12
|
|
1294
|
+
}
|
|
1295
|
+
},
|
|
1296
|
+
"shadow": {
|
|
1297
|
+
"$type": "shadow",
|
|
1298
|
+
"$description": "Elevation shadows are theme-invariant (always rendered in a fixed black \u2014 elevation is instead conveyed in dark mode via the surface-container tones above). Two-layer key+ambient formula, with verified per-level offset/blur/spread. No level0 entry \u2014 level0 renders no shadow.",
|
|
1299
|
+
"1": {
|
|
1300
|
+
"$value": [
|
|
1301
|
+
{
|
|
1302
|
+
"color": "rgba(0, 0, 0, 0.3)",
|
|
1303
|
+
"offsetX": "0px",
|
|
1304
|
+
"offsetY": "1px",
|
|
1305
|
+
"blur": "2px",
|
|
1306
|
+
"spread": "0px"
|
|
1307
|
+
},
|
|
1308
|
+
{
|
|
1309
|
+
"color": "rgba(0, 0, 0, 0.15)",
|
|
1310
|
+
"offsetX": "0px",
|
|
1311
|
+
"offsetY": "1px",
|
|
1312
|
+
"blur": "3px",
|
|
1313
|
+
"spread": "1px"
|
|
1314
|
+
}
|
|
1315
|
+
]
|
|
1316
|
+
},
|
|
1317
|
+
"2": {
|
|
1318
|
+
"$value": [
|
|
1319
|
+
{
|
|
1320
|
+
"color": "rgba(0, 0, 0, 0.3)",
|
|
1321
|
+
"offsetX": "0px",
|
|
1322
|
+
"offsetY": "1px",
|
|
1323
|
+
"blur": "2px",
|
|
1324
|
+
"spread": "0px"
|
|
1325
|
+
},
|
|
1326
|
+
{
|
|
1327
|
+
"color": "rgba(0, 0, 0, 0.15)",
|
|
1328
|
+
"offsetX": "0px",
|
|
1329
|
+
"offsetY": "2px",
|
|
1330
|
+
"blur": "6px",
|
|
1331
|
+
"spread": "2px"
|
|
1332
|
+
}
|
|
1333
|
+
]
|
|
1334
|
+
},
|
|
1335
|
+
"3": {
|
|
1336
|
+
"$value": [
|
|
1337
|
+
{
|
|
1338
|
+
"color": "rgba(0, 0, 0, 0.3)",
|
|
1339
|
+
"offsetX": "0px",
|
|
1340
|
+
"offsetY": "1px",
|
|
1341
|
+
"blur": "3px",
|
|
1342
|
+
"spread": "0px"
|
|
1343
|
+
},
|
|
1344
|
+
{
|
|
1345
|
+
"color": "rgba(0, 0, 0, 0.15)",
|
|
1346
|
+
"offsetX": "0px",
|
|
1347
|
+
"offsetY": "4px",
|
|
1348
|
+
"blur": "8px",
|
|
1349
|
+
"spread": "3px"
|
|
1350
|
+
}
|
|
1351
|
+
]
|
|
1352
|
+
},
|
|
1353
|
+
"4": {
|
|
1354
|
+
"$value": [
|
|
1355
|
+
{
|
|
1356
|
+
"color": "rgba(0, 0, 0, 0.3)",
|
|
1357
|
+
"offsetX": "0px",
|
|
1358
|
+
"offsetY": "2px",
|
|
1359
|
+
"blur": "3px",
|
|
1360
|
+
"spread": "0px"
|
|
1361
|
+
},
|
|
1362
|
+
{
|
|
1363
|
+
"color": "rgba(0, 0, 0, 0.15)",
|
|
1364
|
+
"offsetX": "0px",
|
|
1365
|
+
"offsetY": "6px",
|
|
1366
|
+
"blur": "10px",
|
|
1367
|
+
"spread": "4px"
|
|
1368
|
+
}
|
|
1369
|
+
]
|
|
1370
|
+
},
|
|
1371
|
+
"5": {
|
|
1372
|
+
"$value": [
|
|
1373
|
+
{
|
|
1374
|
+
"color": "rgba(0, 0, 0, 0.3)",
|
|
1375
|
+
"offsetX": "0px",
|
|
1376
|
+
"offsetY": "4px",
|
|
1377
|
+
"blur": "4px",
|
|
1378
|
+
"spread": "0px"
|
|
1379
|
+
},
|
|
1380
|
+
{
|
|
1381
|
+
"color": "rgba(0, 0, 0, 0.15)",
|
|
1382
|
+
"offsetX": "0px",
|
|
1383
|
+
"offsetY": "8px",
|
|
1384
|
+
"blur": "12px",
|
|
1385
|
+
"spread": "6px"
|
|
1386
|
+
}
|
|
1387
|
+
]
|
|
1388
|
+
}
|
|
1389
|
+
},
|
|
1390
|
+
"stateLayerOpacity": {
|
|
1391
|
+
"$type": "number",
|
|
1392
|
+
"$description": "State-layer opacities from the Material Design spec pages (the icon buttons page lists them): hover 8%, focus 10%, pressed 10%, dragged 16%, plus the disabled container at 12% and disabled content at 38%. Focus and pressed were 12%, the values Material Design published first; the current pages give 10%. Consumers composite the relevant 'on-*' color over the container color at this opacity \u2014 e.g. a filled button's hover state is onPrimary painted over primary at hoverOpacity, not a separate discrete color.",
|
|
1393
|
+
"hover": {
|
|
1394
|
+
"$value": 0.08
|
|
1395
|
+
},
|
|
1396
|
+
"focus": {
|
|
1397
|
+
"$value": 0.1
|
|
1398
|
+
},
|
|
1399
|
+
"pressed": {
|
|
1400
|
+
"$value": 0.1
|
|
1401
|
+
},
|
|
1402
|
+
"dragged": {
|
|
1403
|
+
"$value": 0.16
|
|
1404
|
+
},
|
|
1405
|
+
"disabledContainer": {
|
|
1406
|
+
"$value": 0.12
|
|
1407
|
+
},
|
|
1408
|
+
"disabledContent": {
|
|
1409
|
+
"$value": 0.38
|
|
1410
|
+
}
|
|
1411
|
+
},
|
|
1412
|
+
"motion": {
|
|
1413
|
+
"$description": "Transition durations and easing curves. The two groups are deliberately independent rather than paired into named 'transition' tokens, so a component can hold an easing constant while varying duration per property (a button animates border-radius and background-color on the same curve at different speeds). Durations are strings rather than DTCG's {value, unit} object form, matching how dimension is written elsewhere in this file.",
|
|
1414
|
+
"duration": {
|
|
1415
|
+
"$type": "duration",
|
|
1416
|
+
"$description": "Three bands of three. Short for state changes on a single element, medium for elements entering or leaving, long for full-surface transitions such as a sheet.",
|
|
1417
|
+
"short1": {
|
|
1418
|
+
"$value": "100ms"
|
|
1419
|
+
},
|
|
1420
|
+
"short2": {
|
|
1421
|
+
"$value": "150ms"
|
|
1422
|
+
},
|
|
1423
|
+
"short3": {
|
|
1424
|
+
"$value": "200ms"
|
|
1425
|
+
},
|
|
1426
|
+
"medium1": {
|
|
1427
|
+
"$value": "250ms"
|
|
1428
|
+
},
|
|
1429
|
+
"medium2": {
|
|
1430
|
+
"$value": "300ms"
|
|
1431
|
+
},
|
|
1432
|
+
"medium3": {
|
|
1433
|
+
"$value": "350ms"
|
|
1434
|
+
},
|
|
1435
|
+
"long1": {
|
|
1436
|
+
"$value": "450ms"
|
|
1437
|
+
},
|
|
1438
|
+
"long2": {
|
|
1439
|
+
"$value": "500ms"
|
|
1440
|
+
},
|
|
1441
|
+
"long3": {
|
|
1442
|
+
"$value": "600ms"
|
|
1443
|
+
}
|
|
1444
|
+
},
|
|
1445
|
+
"easing": {
|
|
1446
|
+
"$type": "cubicBezier",
|
|
1447
|
+
"$description": "Cubic-bezier approximations of the spring curves the motion spec describes. 'standard' and 'emphasized' hold the same four control points \u2014 emphasis is carried by duration, not by a different curve \u2014 but both names exist because they express different intent at the call site and may diverge later. The two spring curves overshoot (control points above 1) and so are only valid on properties that tolerate going past their target: transform and opacity, not color.",
|
|
1448
|
+
"emphasized": {
|
|
1449
|
+
"$value": [0.2, 0, 0, 1]
|
|
1450
|
+
},
|
|
1451
|
+
"emphasizedDecelerate": {
|
|
1452
|
+
"$value": [0.05, 0.7, 0.1, 1]
|
|
1453
|
+
},
|
|
1454
|
+
"emphasizedAccelerate": {
|
|
1455
|
+
"$value": [0.3, 0, 0.8, 0.15]
|
|
1456
|
+
},
|
|
1457
|
+
"standard": {
|
|
1458
|
+
"$value": [0.2, 0, 0, 1]
|
|
1459
|
+
},
|
|
1460
|
+
"springFast": {
|
|
1461
|
+
"$value": [0.34, 1.56, 0.64, 1]
|
|
1462
|
+
},
|
|
1463
|
+
"springSlow": {
|
|
1464
|
+
"$value": [0.16, 1, 0.3, 1]
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
},
|
|
1468
|
+
"$extensions": {
|
|
1469
|
+
"$description": "DTCG's reserved escape hatch for data that is not a token. Style Dictionary walks past it (confirmed \u2014 it emits nothing for this subtree and does not warn), so nothing below reaches the generated StyleX or CSS output. It is here rather than in the README because the audience is whoever or whatever is holding this file: an agent handed design.tokens.json and asked to build or restyle something can read the whole contract without being told which other files to go and find.",
|
|
1470
|
+
"com.github.kanso-labs.kanso-ui": {
|
|
1471
|
+
"system": {
|
|
1472
|
+
"name": "kanso-ui",
|
|
1473
|
+
"repository": "https://github.com/kanso-labs/kanso-ui",
|
|
1474
|
+
"tiers": "Reference (color.*, spacing.primitive, radii.primitive) holds raw values and is not consumed directly. System (semantic.light / semantic.dark) maps roles onto specific tones and is what components use for color. The remaining groups \u2014 typography, spacing.component, radii.component, elevation, shadow, stateLayerOpacity, motion, layout \u2014 are component-facing as written.",
|
|
1475
|
+
"rule": "Reach for the most specific tier that says what you mean. A surface is semantic.surfaceContainer, never color.neutral.94; a gap is spacing.component.md, never 12px."
|
|
1476
|
+
},
|
|
1477
|
+
"consumption": {
|
|
1478
|
+
"$description": "This file generates three files, and picking the wrong one is the mistake worth guarding against \u2014 see the 'rule' entry below. Both JS modules are internal: the package exports components and the stylesheet, not the token modules, so a consumer retheming kanso-ui does it through the custom properties rather than through StyleX.",
|
|
1479
|
+
"rule": "Reach for the StyleX theme anywhere a CSS property value will do, and for values.ts only when something has to compute with a token rather than declare it. The StyleX bindings are var(--kui-*, literal) references, so a consumer who redeclares the custom property moves them; the plain values are frozen at build time and cannot honour that override. Choosing values.ts out of convenience silently opts that declaration out of the theming contract.",
|
|
1480
|
+
"stylex": "src/tokens/design.tokens.stylex.ts. Inside this repo: import { colors, typography, spacing, radii, shadows, stateLayerOpacity, motion, breakpoints, media } from '../../tokens/design.tokens.stylex' and reference them inside stylex.create(). No CSS files, no inline style objects.",
|
|
1481
|
+
"values": "src/tokens/values.ts. Tokens as plain JS values \u2014 motion durations as a number of milliseconds, easing curves as strings, spacing in px. Only the groups something computes with are generated here: element.animate() throws a TypeError on a var() duration, and useRipple does arithmetic with spacing, so neither can take a CSS value. Color, radii, shadows, typography, and the state-layer opacities are declared rather than computed and are deliberately absent.",
|
|
1482
|
+
"css": "src/tokens/design.tokens.css, published as the '@kanso-labs/kanso-ui/tokens.css' export. This is the public override contract: redeclare any custom property in it to retheme every component, with no StyleX toolchain of your own required.",
|
|
1483
|
+
"cssVarPrefix": "--kui-",
|
|
1484
|
+
"theming": "Color follows prefers-color-scheme by default. colorDefaultsLightTheme and colorDefaultsDarkTheme, also exported from design.tokens.stylex.ts, pin one scheme for a manual toggle; tokenScope resolves every token again on the element it lands on, so a --kui-* override declared there or above it reaches the subtree. The package exports both as classes, colorScheme and themeScope, and as the ThemeScope component. Breakpoints are the one group with no CSS custom property \u2014 see layout.breakpoint above.",
|
|
1485
|
+
"regenerate": "npm run tokens:build after editing this file. All three generated files (design.tokens.stylex.ts, values.ts, design.tokens.css) are committed, and the same build also runs automatically under storybook, vitest, and the package build."
|
|
1486
|
+
},
|
|
1487
|
+
"voice": {
|
|
1488
|
+
"$description": "Copy conventions for anything user-visible the library ships or documents: component labels, story text, error and empty states. Kept alongside the visual tokens on the same reasoning \u2014 'sentence case, no exclamation marks' is as much a part of looking like kanso-ui as the type scale is, and it is just as easy to get wrong when the writing is spread across a dozen files.",
|
|
1489
|
+
"tone": "plain, concrete, unadorned \u2014 kanso (\u7c21\u7d20) is the elimination of clutter, and the writing follows the visual system in that",
|
|
1490
|
+
"labelCase": "sentence case for every label, heading, button, and menu item",
|
|
1491
|
+
"ctaStyle": "imperative, verb first, naming the actual outcome \u2014 'Save changes', not 'Click here to save' and not 'Submit'",
|
|
1492
|
+
"avoid": [
|
|
1493
|
+
"title case in UI labels",
|
|
1494
|
+
"exclamation marks",
|
|
1495
|
+
"jargon and internal component names in user-facing copy",
|
|
1496
|
+
"hedging \u2014 'might', 'try to', 'please wait'",
|
|
1497
|
+
"blaming the reader in error text \u2014 say what happened and what to do next"
|
|
1498
|
+
],
|
|
1499
|
+
"sampleCopy": "The entries above govern how copy is written; what the placeholder text in stories, tests, and comments is allowed to say is a separate rule with the same weight. It must stay domain-neutral and name the slot it fills, never lifted from a consuming app's screens. AGENTS.md, under 'Sample copy', holds that rule and its placeholder vocabulary \u2014 recorded here so a reader holding only this file knows to go and find it."
|
|
1500
|
+
}
|
|
1501
|
+
}
|
|
1502
|
+
}
|
|
1503
|
+
}
|