@tasker-systems/temper-design 0.0.0-stage → 0.6.2
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 +185 -2
- package/brand/mark.svg +4 -0
- package/brand/wordmark.svg +5 -0
- package/contract/base.css +221 -0
- package/contract/shadcn-bridge.css +86 -0
- package/contract/tailwind.css +70 -0
- package/contract/theme.schema.json +444 -0
- package/package.json +30 -4
- package/quiet-instrument/theme.css +66 -0
- package/quiet-instrument/theme.json +85 -0
- package/quiet-instrument-paper/theme.css +66 -0
- package/quiet-instrument-paper/theme.json +85 -0
- package/themes.json +14 -0
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/tasker-systems/temper/packages/temper-design/contract/theme.schema.json",
|
|
4
|
+
"title": "temper theme",
|
|
5
|
+
"description": "A theme is data: values for every role in the contract. Components consume roles, never values; a theme that omits a role or invents one does not validate.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"kind",
|
|
10
|
+
"name",
|
|
11
|
+
"title",
|
|
12
|
+
"version",
|
|
13
|
+
"appearance",
|
|
14
|
+
"tokens"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"$schema": {
|
|
18
|
+
"type": "string"
|
|
19
|
+
},
|
|
20
|
+
"kind": {
|
|
21
|
+
"const": "theme"
|
|
22
|
+
},
|
|
23
|
+
"name": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
26
|
+
"description": "Stable identifier; also the value of data-theme."
|
|
27
|
+
},
|
|
28
|
+
"title": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"minLength": 1
|
|
31
|
+
},
|
|
32
|
+
"version": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$"
|
|
35
|
+
},
|
|
36
|
+
"description": {
|
|
37
|
+
"type": "string"
|
|
38
|
+
},
|
|
39
|
+
"appearance": {
|
|
40
|
+
"enum": [
|
|
41
|
+
"dark",
|
|
42
|
+
"light"
|
|
43
|
+
],
|
|
44
|
+
"description": "Sets color-scheme; selects this theme when the system appearance matches and the person follows it."
|
|
45
|
+
},
|
|
46
|
+
"counterpart": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
49
|
+
"description": "The theme of the opposite appearance that pairs with this one."
|
|
50
|
+
},
|
|
51
|
+
"provenance": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"description": "Where the values came from."
|
|
54
|
+
},
|
|
55
|
+
"tokens": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"additionalProperties": false,
|
|
58
|
+
"required": [
|
|
59
|
+
"color",
|
|
60
|
+
"font",
|
|
61
|
+
"radius",
|
|
62
|
+
"motion",
|
|
63
|
+
"tracking"
|
|
64
|
+
],
|
|
65
|
+
"properties": {
|
|
66
|
+
"color": {
|
|
67
|
+
"type": "object",
|
|
68
|
+
"additionalProperties": false,
|
|
69
|
+
"required": [
|
|
70
|
+
"ground",
|
|
71
|
+
"surface",
|
|
72
|
+
"surface-raised",
|
|
73
|
+
"overlay",
|
|
74
|
+
"text",
|
|
75
|
+
"text-muted",
|
|
76
|
+
"text-subtle",
|
|
77
|
+
"text-faint",
|
|
78
|
+
"rule",
|
|
79
|
+
"rule-strong",
|
|
80
|
+
"accent",
|
|
81
|
+
"accent-muted",
|
|
82
|
+
"accent-line",
|
|
83
|
+
"accent-line-soft",
|
|
84
|
+
"accent-wash",
|
|
85
|
+
"accent-hover",
|
|
86
|
+
"on-accent",
|
|
87
|
+
"focus",
|
|
88
|
+
"notice",
|
|
89
|
+
"notice-wash",
|
|
90
|
+
"success",
|
|
91
|
+
"success-wash",
|
|
92
|
+
"danger",
|
|
93
|
+
"danger-wash",
|
|
94
|
+
"pending",
|
|
95
|
+
"pending-wash",
|
|
96
|
+
"region-arriving",
|
|
97
|
+
"region-arriving-wash",
|
|
98
|
+
"region-empty",
|
|
99
|
+
"region-empty-wash",
|
|
100
|
+
"region-gave-up",
|
|
101
|
+
"region-gave-up-wash",
|
|
102
|
+
"region-failed",
|
|
103
|
+
"region-failed-wash",
|
|
104
|
+
"author-human",
|
|
105
|
+
"author-agent",
|
|
106
|
+
"cat-1",
|
|
107
|
+
"cat-2",
|
|
108
|
+
"cat-3",
|
|
109
|
+
"cat-4",
|
|
110
|
+
"cat-5",
|
|
111
|
+
"cat-6",
|
|
112
|
+
"cat-7",
|
|
113
|
+
"cat-8",
|
|
114
|
+
"cat-neutral",
|
|
115
|
+
"code-key",
|
|
116
|
+
"code-string",
|
|
117
|
+
"code-number",
|
|
118
|
+
"code-comment"
|
|
119
|
+
],
|
|
120
|
+
"properties": {
|
|
121
|
+
"ground": {
|
|
122
|
+
"$ref": "#/$defs/color",
|
|
123
|
+
"description": "The page/window ground. Everything else is composited over it."
|
|
124
|
+
},
|
|
125
|
+
"surface": {
|
|
126
|
+
"$ref": "#/$defs/color",
|
|
127
|
+
"description": "Panels, cards, docked peeks \u2014 a lifted fill over ground."
|
|
128
|
+
},
|
|
129
|
+
"surface-raised": {
|
|
130
|
+
"$ref": "#/$defs/color",
|
|
131
|
+
"description": "Popovers, menus, the command palette \u2014 one step above surface."
|
|
132
|
+
},
|
|
133
|
+
"overlay": {
|
|
134
|
+
"$ref": "#/$defs/color",
|
|
135
|
+
"description": "Scrim behind a modal. Translucent."
|
|
136
|
+
},
|
|
137
|
+
"text": {
|
|
138
|
+
"$ref": "#/$defs/color",
|
|
139
|
+
"description": "Primary reading text. Floor: 7:1 on ground and surface."
|
|
140
|
+
},
|
|
141
|
+
"text-muted": {
|
|
142
|
+
"$ref": "#/$defs/color",
|
|
143
|
+
"description": "Secondary text \u2014 decks, body in dense chrome. Floor: 4.5:1."
|
|
144
|
+
},
|
|
145
|
+
"text-subtle": {
|
|
146
|
+
"$ref": "#/$defs/color",
|
|
147
|
+
"description": "Tertiary text \u2014 mono labels, metadata strips, counts. Floor: 4.5:1."
|
|
148
|
+
},
|
|
149
|
+
"text-faint": {
|
|
150
|
+
"$ref": "#/$defs/color",
|
|
151
|
+
"description": "Disabled and decorative only; never carries information. Floor: 2.5:1."
|
|
152
|
+
},
|
|
153
|
+
"rule": {
|
|
154
|
+
"$ref": "#/$defs/color",
|
|
155
|
+
"description": "Hairline dividers."
|
|
156
|
+
},
|
|
157
|
+
"rule-strong": {
|
|
158
|
+
"$ref": "#/$defs/color",
|
|
159
|
+
"description": "Dividers that must survive a busy surface; input outlines."
|
|
160
|
+
},
|
|
161
|
+
"accent": {
|
|
162
|
+
"$ref": "#/$defs/color",
|
|
163
|
+
"description": "The single accent: section labels, the rail, links, primary actions. Floor: 4.5:1."
|
|
164
|
+
},
|
|
165
|
+
"accent-muted": {
|
|
166
|
+
"$ref": "#/$defs/color",
|
|
167
|
+
"description": "Accent at rest where full accent would shout (secondary links, idle markers)."
|
|
168
|
+
},
|
|
169
|
+
"accent-line": {
|
|
170
|
+
"$ref": "#/$defs/color",
|
|
171
|
+
"description": "Accent borders on buttons and focused inputs."
|
|
172
|
+
},
|
|
173
|
+
"accent-line-soft": {
|
|
174
|
+
"$ref": "#/$defs/color",
|
|
175
|
+
"description": "The rail motif and soft accent borders."
|
|
176
|
+
},
|
|
177
|
+
"accent-wash": {
|
|
178
|
+
"$ref": "#/$defs/color",
|
|
179
|
+
"description": "Selected-row / active-chip fill."
|
|
180
|
+
},
|
|
181
|
+
"accent-hover": {
|
|
182
|
+
"$ref": "#/$defs/color",
|
|
183
|
+
"description": "Hover fill on accent affordances."
|
|
184
|
+
},
|
|
185
|
+
"on-accent": {
|
|
186
|
+
"$ref": "#/$defs/color",
|
|
187
|
+
"description": "Text on a solid accent fill. Floor: 4.5:1 on accent."
|
|
188
|
+
},
|
|
189
|
+
"focus": {
|
|
190
|
+
"$ref": "#/$defs/color",
|
|
191
|
+
"description": "Keyboard focus ring. Floor: 3:1 on ground."
|
|
192
|
+
},
|
|
193
|
+
"notice": {
|
|
194
|
+
"$ref": "#/$defs/color",
|
|
195
|
+
"description": "A condition that wants the reader's attention (not a failure). Floor: 4.5:1 on its wash."
|
|
196
|
+
},
|
|
197
|
+
"notice-wash": {
|
|
198
|
+
"$ref": "#/$defs/color",
|
|
199
|
+
"description": "Fill behind a notice."
|
|
200
|
+
},
|
|
201
|
+
"success": {
|
|
202
|
+
"$ref": "#/$defs/color",
|
|
203
|
+
"description": "A completed act confirmed. Floor: 4.5:1 on its wash."
|
|
204
|
+
},
|
|
205
|
+
"success-wash": {
|
|
206
|
+
"$ref": "#/$defs/color",
|
|
207
|
+
"description": "Fill behind a success note."
|
|
208
|
+
},
|
|
209
|
+
"danger": {
|
|
210
|
+
"$ref": "#/$defs/color",
|
|
211
|
+
"description": "Destructive affordances (delete, retract). Floor: 4.5:1 on its wash."
|
|
212
|
+
},
|
|
213
|
+
"danger-wash": {
|
|
214
|
+
"$ref": "#/$defs/color",
|
|
215
|
+
"description": "Fill behind a destructive confirmation."
|
|
216
|
+
},
|
|
217
|
+
"pending": {
|
|
218
|
+
"$ref": "#/$defs/color",
|
|
219
|
+
"description": "Pending state \u2014 proposals awaiting ratification, threads addressed to you. State, not alarm. Floor: 4.5:1 on its wash."
|
|
220
|
+
},
|
|
221
|
+
"pending-wash": {
|
|
222
|
+
"$ref": "#/$defs/color",
|
|
223
|
+
"description": "Fill behind pending items."
|
|
224
|
+
},
|
|
225
|
+
"region-arriving": {
|
|
226
|
+
"$ref": "#/$defs/color",
|
|
227
|
+
"description": "Region state: a read in flight. Floor: 4.5:1 on its wash."
|
|
228
|
+
},
|
|
229
|
+
"region-arriving-wash": {
|
|
230
|
+
"$ref": "#/$defs/color",
|
|
231
|
+
"description": "Fill behind an arriving region."
|
|
232
|
+
},
|
|
233
|
+
"region-empty": {
|
|
234
|
+
"$ref": "#/$defs/color",
|
|
235
|
+
"description": "Region state: the read succeeded and there is nothing. Floor: 4.5:1 on its wash."
|
|
236
|
+
},
|
|
237
|
+
"region-empty-wash": {
|
|
238
|
+
"$ref": "#/$defs/color",
|
|
239
|
+
"description": "Fill behind an empty region."
|
|
240
|
+
},
|
|
241
|
+
"region-gave-up": {
|
|
242
|
+
"$ref": "#/$defs/color",
|
|
243
|
+
"description": "Region state: the system stopped waiting. A hue nothing else uses. Floor: 4.5:1 on its wash."
|
|
244
|
+
},
|
|
245
|
+
"region-gave-up-wash": {
|
|
246
|
+
"$ref": "#/$defs/color",
|
|
247
|
+
"description": "Fill behind a gave-up region."
|
|
248
|
+
},
|
|
249
|
+
"region-failed": {
|
|
250
|
+
"$ref": "#/$defs/color",
|
|
251
|
+
"description": "Region state: the read failed. Floor: 4.5:1 on its wash."
|
|
252
|
+
},
|
|
253
|
+
"region-failed-wash": {
|
|
254
|
+
"$ref": "#/$defs/color",
|
|
255
|
+
"description": "Fill behind a failed region."
|
|
256
|
+
},
|
|
257
|
+
"author-human": {
|
|
258
|
+
"$ref": "#/$defs/color",
|
|
259
|
+
"description": "Authorship gutter mark for a person. Floor: 3:1 on ground."
|
|
260
|
+
},
|
|
261
|
+
"author-agent": {
|
|
262
|
+
"$ref": "#/$defs/color",
|
|
263
|
+
"description": "Authorship gutter mark for an agent acting on someone's behalf. Floor: 3:1 on ground."
|
|
264
|
+
},
|
|
265
|
+
"cat-1": {
|
|
266
|
+
"$ref": "#/$defs/color",
|
|
267
|
+
"description": "Categorical slot 1 of 8. Vocabularies — core's doc types and plugins' — bind their terms to slots; they never name colours. Floor: 4.5:1 on ground, 3:1 on surface."
|
|
268
|
+
},
|
|
269
|
+
"cat-2": {
|
|
270
|
+
"$ref": "#/$defs/color",
|
|
271
|
+
"description": "Categorical slot 2 of 8. Vocabularies — core's doc types and plugins' — bind their terms to slots; they never name colours. Floor: 4.5:1 on ground, 3:1 on surface."
|
|
272
|
+
},
|
|
273
|
+
"cat-3": {
|
|
274
|
+
"$ref": "#/$defs/color",
|
|
275
|
+
"description": "Categorical slot 3 of 8. Vocabularies — core's doc types and plugins' — bind their terms to slots; they never name colours. Floor: 4.5:1 on ground, 3:1 on surface."
|
|
276
|
+
},
|
|
277
|
+
"cat-4": {
|
|
278
|
+
"$ref": "#/$defs/color",
|
|
279
|
+
"description": "Categorical slot 4 of 8. Vocabularies — core's doc types and plugins' — bind their terms to slots; they never name colours. Floor: 4.5:1 on ground, 3:1 on surface."
|
|
280
|
+
},
|
|
281
|
+
"cat-5": {
|
|
282
|
+
"$ref": "#/$defs/color",
|
|
283
|
+
"description": "Categorical slot 5 of 8. Vocabularies — core's doc types and plugins' — bind their terms to slots; they never name colours. Floor: 4.5:1 on ground, 3:1 on surface."
|
|
284
|
+
},
|
|
285
|
+
"cat-6": {
|
|
286
|
+
"$ref": "#/$defs/color",
|
|
287
|
+
"description": "Categorical slot 6 of 8. Vocabularies — core's doc types and plugins' — bind their terms to slots; they never name colours. Floor: 4.5:1 on ground, 3:1 on surface."
|
|
288
|
+
},
|
|
289
|
+
"cat-7": {
|
|
290
|
+
"$ref": "#/$defs/color",
|
|
291
|
+
"description": "Categorical slot 7 of 8. Vocabularies — core's doc types and plugins' — bind their terms to slots; they never name colours. Floor: 4.5:1 on ground, 3:1 on surface."
|
|
292
|
+
},
|
|
293
|
+
"cat-8": {
|
|
294
|
+
"$ref": "#/$defs/color",
|
|
295
|
+
"description": "Categorical slot 8 of 8. Vocabularies — core's doc types and plugins' — bind their terms to slots; they never name colours. Floor: 4.5:1 on ground, 3:1 on surface."
|
|
296
|
+
},
|
|
297
|
+
"cat-neutral": {
|
|
298
|
+
"$ref": "#/$defs/color",
|
|
299
|
+
"description": "The categorical mark bound to no slot: a doc type no vocabulary binds, or a tint deliberately unnamed. Floor: 4.5:1 on ground, 3:1 on surface."
|
|
300
|
+
},
|
|
301
|
+
"code-key": {
|
|
302
|
+
"$ref": "#/$defs/color",
|
|
303
|
+
"description": "Syntax: keys, attributes, names. Floor: 4.5:1 on surface."
|
|
304
|
+
},
|
|
305
|
+
"code-string": {
|
|
306
|
+
"$ref": "#/$defs/color",
|
|
307
|
+
"description": "Syntax: strings. Floor: 4.5:1 on surface."
|
|
308
|
+
},
|
|
309
|
+
"code-number": {
|
|
310
|
+
"$ref": "#/$defs/color",
|
|
311
|
+
"description": "Syntax: numbers, literals, keywords. Floor: 4.5:1 on surface."
|
|
312
|
+
},
|
|
313
|
+
"code-comment": {
|
|
314
|
+
"$ref": "#/$defs/color",
|
|
315
|
+
"description": "Syntax: comments. Floor: 4.5:1 on surface."
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
"font": {
|
|
320
|
+
"type": "object",
|
|
321
|
+
"additionalProperties": false,
|
|
322
|
+
"required": [
|
|
323
|
+
"reading",
|
|
324
|
+
"doing",
|
|
325
|
+
"ui"
|
|
326
|
+
],
|
|
327
|
+
"properties": {
|
|
328
|
+
"reading": {
|
|
329
|
+
"$ref": "#/$defs/fontStack",
|
|
330
|
+
"description": "Reading face \u2014 prose, headings, decks."
|
|
331
|
+
},
|
|
332
|
+
"doing": {
|
|
333
|
+
"$ref": "#/$defs/fontStack",
|
|
334
|
+
"description": "Doing face \u2014 labels, commands, code, metadata."
|
|
335
|
+
},
|
|
336
|
+
"ui": {
|
|
337
|
+
"$ref": "#/$defs/fontStack",
|
|
338
|
+
"description": "Dense UI face \u2014 grids, form controls."
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
"radius": {
|
|
343
|
+
"type": "object",
|
|
344
|
+
"additionalProperties": false,
|
|
345
|
+
"required": [
|
|
346
|
+
"chip",
|
|
347
|
+
"panel"
|
|
348
|
+
],
|
|
349
|
+
"properties": {
|
|
350
|
+
"chip": {
|
|
351
|
+
"$ref": "#/$defs/length",
|
|
352
|
+
"description": "Chips, code blocks, inputs."
|
|
353
|
+
},
|
|
354
|
+
"panel": {
|
|
355
|
+
"$ref": "#/$defs/length",
|
|
356
|
+
"description": "Panels and cards. The editorial default is 0."
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
},
|
|
360
|
+
"motion": {
|
|
361
|
+
"type": "object",
|
|
362
|
+
"additionalProperties": false,
|
|
363
|
+
"required": [
|
|
364
|
+
"quick",
|
|
365
|
+
"settle",
|
|
366
|
+
"easing"
|
|
367
|
+
],
|
|
368
|
+
"properties": {
|
|
369
|
+
"quick": {
|
|
370
|
+
"$ref": "#/$defs/duration",
|
|
371
|
+
"description": "Hover/colour transitions."
|
|
372
|
+
},
|
|
373
|
+
"settle": {
|
|
374
|
+
"$ref": "#/$defs/duration",
|
|
375
|
+
"description": "Panel slide-in, tier fades."
|
|
376
|
+
},
|
|
377
|
+
"easing": {
|
|
378
|
+
"type": "string",
|
|
379
|
+
"pattern": "^(ease|ease-in|ease-out|ease-in-out|linear|cubic-bezier\\([^)]*\\))$",
|
|
380
|
+
"description": "The one easing curve."
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
"tracking": {
|
|
385
|
+
"type": "object",
|
|
386
|
+
"additionalProperties": false,
|
|
387
|
+
"required": [
|
|
388
|
+
"label",
|
|
389
|
+
"strip",
|
|
390
|
+
"eyebrow",
|
|
391
|
+
"ui",
|
|
392
|
+
"mark"
|
|
393
|
+
],
|
|
394
|
+
"properties": {
|
|
395
|
+
"label": {
|
|
396
|
+
"$ref": "#/$defs/em",
|
|
397
|
+
"description": "Section labels."
|
|
398
|
+
},
|
|
399
|
+
"strip": {
|
|
400
|
+
"$ref": "#/$defs/em",
|
|
401
|
+
"description": "Metadata strips."
|
|
402
|
+
},
|
|
403
|
+
"eyebrow": {
|
|
404
|
+
"$ref": "#/$defs/em",
|
|
405
|
+
"description": "Hero eyebrows."
|
|
406
|
+
},
|
|
407
|
+
"ui": {
|
|
408
|
+
"$ref": "#/$defs/em",
|
|
409
|
+
"description": "Buttons, nav."
|
|
410
|
+
},
|
|
411
|
+
"mark": {
|
|
412
|
+
"$ref": "#/$defs/em",
|
|
413
|
+
"description": "Wordmark."
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
"$defs": {
|
|
421
|
+
"color": {
|
|
422
|
+
"type": "string",
|
|
423
|
+
"pattern": "^(#[0-9a-fA-F]{6}|rgba\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*(0|1|0?\\.\\d+)\\s*\\))$",
|
|
424
|
+
"description": "#rrggbb or rgba(r, g, b, a). No named colours, no hsl \u2014 the contrast check reads these."
|
|
425
|
+
},
|
|
426
|
+
"fontStack": {
|
|
427
|
+
"type": "string",
|
|
428
|
+
"minLength": 1,
|
|
429
|
+
"description": "A CSS font-family list. Fonts are bundled by each surface, never fetched \u2014 a surface must be able to render offline."
|
|
430
|
+
},
|
|
431
|
+
"length": {
|
|
432
|
+
"type": "string",
|
|
433
|
+
"pattern": "^(0|\\d+(\\.\\d+)?(px|rem))$"
|
|
434
|
+
},
|
|
435
|
+
"duration": {
|
|
436
|
+
"type": "string",
|
|
437
|
+
"pattern": "^\\d+ms$"
|
|
438
|
+
},
|
|
439
|
+
"em": {
|
|
440
|
+
"type": "string",
|
|
441
|
+
"pattern": "^-?\\d*\\.?\\d+em$"
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tasker-systems/temper-design",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.6.2",
|
|
4
|
+
"description": "temper's theme contract and themes: the roles every temper surface paints from",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/tasker-systems/temper.git",
|
|
9
|
+
"directory": "packages/temper-design"
|
|
10
|
+
},
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"registry": "https://registry.npmjs.org"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"contract/*.css",
|
|
16
|
+
"contract/theme.schema.json",
|
|
17
|
+
"*/theme.css",
|
|
18
|
+
"*/theme.json",
|
|
19
|
+
"themes.json",
|
|
20
|
+
"brand/*.svg"
|
|
21
|
+
],
|
|
22
|
+
"exports": {
|
|
23
|
+
"./themes.json": "./themes.json",
|
|
24
|
+
"./contract/*": "./contract/*",
|
|
25
|
+
"./brand/*": "./brand/*",
|
|
26
|
+
"./*/theme.css": "./*/theme.css",
|
|
27
|
+
"./*/theme.json": "./*/theme.json"
|
|
28
|
+
},
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "node -e \"console.log('nothing to compile: every published file is generated and proved by scripts/themes.sh --self-check in CI')\""
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/* Generated from quiet-instrument/theme.json by themes/scripts/themes.sh build. Do not edit. */
|
|
2
|
+
[data-theme="quiet-instrument"] {
|
|
3
|
+
color-scheme: dark;
|
|
4
|
+
--tp-ground: #0a0a0f;
|
|
5
|
+
--tp-surface: #0c0c11;
|
|
6
|
+
--tp-surface-raised: #12121a;
|
|
7
|
+
--tp-overlay: rgba(10, 10, 15, 0.72);
|
|
8
|
+
--tp-text: #e8e4df;
|
|
9
|
+
--tp-text-muted: rgba(255, 255, 255, 0.65);
|
|
10
|
+
--tp-text-subtle: rgba(255, 255, 255, 0.45);
|
|
11
|
+
--tp-text-faint: rgba(255, 255, 255, 0.30);
|
|
12
|
+
--tp-rule: rgba(255, 255, 255, 0.06);
|
|
13
|
+
--tp-rule-strong: rgba(255, 255, 255, 0.10);
|
|
14
|
+
--tp-accent: #7eb8da;
|
|
15
|
+
--tp-accent-muted: rgba(126, 184, 218, 0.40);
|
|
16
|
+
--tp-accent-line: rgba(126, 184, 218, 0.50);
|
|
17
|
+
--tp-accent-line-soft: rgba(126, 184, 218, 0.25);
|
|
18
|
+
--tp-accent-wash: rgba(126, 184, 218, 0.08);
|
|
19
|
+
--tp-accent-hover: rgba(126, 184, 218, 0.12);
|
|
20
|
+
--tp-on-accent: #0a0a0f;
|
|
21
|
+
--tp-focus: #8ecbff;
|
|
22
|
+
--tp-notice: #fcd34d;
|
|
23
|
+
--tp-notice-wash: rgba(245, 158, 11, 0.05);
|
|
24
|
+
--tp-success: #a7f3d0;
|
|
25
|
+
--tp-success-wash: rgba(110, 231, 183, 0.05);
|
|
26
|
+
--tp-danger: #e0755f;
|
|
27
|
+
--tp-danger-wash: rgba(224, 117, 95, 0.08);
|
|
28
|
+
--tp-pending: #a9d2ea;
|
|
29
|
+
--tp-pending-wash: rgba(126, 184, 218, 0.06);
|
|
30
|
+
--tp-region-arriving: #8fb6e8;
|
|
31
|
+
--tp-region-arriving-wash: rgba(143, 182, 232, 0.05);
|
|
32
|
+
--tp-region-empty: #79828f;
|
|
33
|
+
--tp-region-empty-wash: rgba(255, 255, 255, 0.02);
|
|
34
|
+
--tp-region-gave-up: #b9a6de;
|
|
35
|
+
--tp-region-gave-up-wash: rgba(143, 124, 192, 0.07);
|
|
36
|
+
--tp-region-failed: #e0a377;
|
|
37
|
+
--tp-region-failed-wash: rgba(192, 122, 74, 0.08);
|
|
38
|
+
--tp-author-human: #e8e4df;
|
|
39
|
+
--tp-author-agent: #8e9fc7;
|
|
40
|
+
--tp-cat-1: #de8fa5;
|
|
41
|
+
--tp-cat-2: #67d9a4;
|
|
42
|
+
--tp-cat-3: #4fc9c9;
|
|
43
|
+
--tp-cat-4: #e08ad2;
|
|
44
|
+
--tp-cat-5: #5f87e8;
|
|
45
|
+
--tp-cat-6: #d9a83f;
|
|
46
|
+
--tp-cat-7: #8f74d9;
|
|
47
|
+
--tp-cat-8: #a8c95c;
|
|
48
|
+
--tp-cat-neutral: #a89e93;
|
|
49
|
+
--tp-code-key: #8fd8a8;
|
|
50
|
+
--tp-code-string: #fcd34d;
|
|
51
|
+
--tp-code-number: #93c5fd;
|
|
52
|
+
--tp-code-comment: rgba(255, 255, 255, 0.45);
|
|
53
|
+
--tp-font-reading: "Source Serif 4 Variable", "Source Serif 4", Georgia, "Times New Roman", serif;
|
|
54
|
+
--tp-font-doing: "JetBrains Mono Variable", "JetBrains Mono", "Fira Code", ui-monospace, monospace;
|
|
55
|
+
--tp-font-ui: "Inter Variable", Inter, system-ui, -apple-system, sans-serif;
|
|
56
|
+
--tp-radius-chip: 3px;
|
|
57
|
+
--tp-radius-panel: 0;
|
|
58
|
+
--tp-motion-quick: 150ms;
|
|
59
|
+
--tp-motion-settle: 240ms;
|
|
60
|
+
--tp-motion-easing: ease;
|
|
61
|
+
--tp-tracking-label: 0.20em;
|
|
62
|
+
--tp-tracking-strip: 0.22em;
|
|
63
|
+
--tp-tracking-eyebrow: 0.28em;
|
|
64
|
+
--tp-tracking-ui: 0.05em;
|
|
65
|
+
--tp-tracking-mark: 0.15em;
|
|
66
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../contract/theme.schema.json",
|
|
3
|
+
"kind": "theme",
|
|
4
|
+
"name": "quiet-instrument",
|
|
5
|
+
"title": "Quiet Instrument",
|
|
6
|
+
"version": "0.1.0",
|
|
7
|
+
"description": "Obsidian ground, parchment text, one steel-blue accent. Reading in serif, doing in mono. Semantic colour is a whisper.",
|
|
8
|
+
"appearance": "dark",
|
|
9
|
+
"counterpart": "quiet-instrument-paper",
|
|
10
|
+
"provenance": "Ported from temper's design-system/ and packages/temper-ui/src/app.css (Quiet Instrument), including the region vocabulary from RegionState.svelte and the hljs palette.",
|
|
11
|
+
"tokens": {
|
|
12
|
+
"color": {
|
|
13
|
+
"ground": "#0a0a0f",
|
|
14
|
+
"surface": "#0c0c11",
|
|
15
|
+
"surface-raised": "#12121a",
|
|
16
|
+
"overlay": "rgba(10, 10, 15, 0.72)",
|
|
17
|
+
"text": "#e8e4df",
|
|
18
|
+
"text-muted": "rgba(255, 255, 255, 0.65)",
|
|
19
|
+
"text-subtle": "rgba(255, 255, 255, 0.45)",
|
|
20
|
+
"text-faint": "rgba(255, 255, 255, 0.30)",
|
|
21
|
+
"rule": "rgba(255, 255, 255, 0.06)",
|
|
22
|
+
"rule-strong": "rgba(255, 255, 255, 0.10)",
|
|
23
|
+
"accent": "#7eb8da",
|
|
24
|
+
"accent-muted": "rgba(126, 184, 218, 0.40)",
|
|
25
|
+
"accent-line": "rgba(126, 184, 218, 0.50)",
|
|
26
|
+
"accent-line-soft": "rgba(126, 184, 218, 0.25)",
|
|
27
|
+
"accent-wash": "rgba(126, 184, 218, 0.08)",
|
|
28
|
+
"accent-hover": "rgba(126, 184, 218, 0.12)",
|
|
29
|
+
"on-accent": "#0a0a0f",
|
|
30
|
+
"focus": "#8ecbff",
|
|
31
|
+
"notice": "#fcd34d",
|
|
32
|
+
"notice-wash": "rgba(245, 158, 11, 0.05)",
|
|
33
|
+
"success": "#a7f3d0",
|
|
34
|
+
"success-wash": "rgba(110, 231, 183, 0.05)",
|
|
35
|
+
"danger": "#e0755f",
|
|
36
|
+
"danger-wash": "rgba(224, 117, 95, 0.08)",
|
|
37
|
+
"pending": "#a9d2ea",
|
|
38
|
+
"pending-wash": "rgba(126, 184, 218, 0.06)",
|
|
39
|
+
"region-arriving": "#8fb6e8",
|
|
40
|
+
"region-arriving-wash": "rgba(143, 182, 232, 0.05)",
|
|
41
|
+
"region-empty": "#79828f",
|
|
42
|
+
"region-empty-wash": "rgba(255, 255, 255, 0.02)",
|
|
43
|
+
"region-gave-up": "#b9a6de",
|
|
44
|
+
"region-gave-up-wash": "rgba(143, 124, 192, 0.07)",
|
|
45
|
+
"region-failed": "#e0a377",
|
|
46
|
+
"region-failed-wash": "rgba(192, 122, 74, 0.08)",
|
|
47
|
+
"author-human": "#e8e4df",
|
|
48
|
+
"author-agent": "#8e9fc7",
|
|
49
|
+
"cat-1": "#de8fa5",
|
|
50
|
+
"cat-2": "#67d9a4",
|
|
51
|
+
"cat-3": "#4fc9c9",
|
|
52
|
+
"cat-4": "#e08ad2",
|
|
53
|
+
"cat-5": "#5f87e8",
|
|
54
|
+
"cat-6": "#d9a83f",
|
|
55
|
+
"cat-7": "#8f74d9",
|
|
56
|
+
"cat-8": "#a8c95c",
|
|
57
|
+
"cat-neutral": "#a89e93",
|
|
58
|
+
"code-key": "#8fd8a8",
|
|
59
|
+
"code-string": "#fcd34d",
|
|
60
|
+
"code-number": "#93c5fd",
|
|
61
|
+
"code-comment": "rgba(255, 255, 255, 0.45)"
|
|
62
|
+
},
|
|
63
|
+
"font": {
|
|
64
|
+
"reading": "\"Source Serif 4 Variable\", \"Source Serif 4\", Georgia, \"Times New Roman\", serif",
|
|
65
|
+
"doing": "\"JetBrains Mono Variable\", \"JetBrains Mono\", \"Fira Code\", ui-monospace, monospace",
|
|
66
|
+
"ui": "\"Inter Variable\", Inter, system-ui, -apple-system, sans-serif"
|
|
67
|
+
},
|
|
68
|
+
"radius": {
|
|
69
|
+
"chip": "3px",
|
|
70
|
+
"panel": "0"
|
|
71
|
+
},
|
|
72
|
+
"motion": {
|
|
73
|
+
"quick": "150ms",
|
|
74
|
+
"settle": "240ms",
|
|
75
|
+
"easing": "ease"
|
|
76
|
+
},
|
|
77
|
+
"tracking": {
|
|
78
|
+
"label": "0.20em",
|
|
79
|
+
"strip": "0.22em",
|
|
80
|
+
"eyebrow": "0.28em",
|
|
81
|
+
"ui": "0.05em",
|
|
82
|
+
"mark": "0.15em"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|