@dreamtree-org/twreact-ui 1.3.2 → 1.3.3

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.
Files changed (37) hide show
  1. package/DESIGN.md +2 -2
  2. package/README.md +11 -5
  3. package/ai-skills/dreamtree-ui.md +3 -1
  4. package/bin/cli.mjs +72 -4
  5. package/dist/ai-schema.json +1 -1
  6. package/dist/charts/index.js +75 -47
  7. package/dist/components/charts/CartesianChart.d.ts.map +1 -1
  8. package/dist/components/charts/DonutChart.d.ts.map +1 -1
  9. package/dist/components/charts/Sparkline.d.ts.map +1 -1
  10. package/dist/components/charts/chartTheme.d.ts +13 -3
  11. package/dist/components/charts/chartTheme.d.ts.map +1 -1
  12. package/dist/components/core/Table/MobileCard.d.ts.map +1 -1
  13. package/dist/components/core/Table/MobileFilters.d.ts.map +1 -1
  14. package/dist/components/core/Table/Table.d.ts.map +1 -1
  15. package/dist/components/utility/Stepper.d.ts.map +1 -1
  16. package/dist/esm/components/blocks/StatCard.js +1 -1
  17. package/dist/esm/components/charts/CartesianChart.js +7 -2
  18. package/dist/esm/components/charts/DonutChart.js +4 -1
  19. package/dist/esm/components/charts/Sparkline.js +4 -1
  20. package/dist/esm/components/charts/chartTheme.js +65 -48
  21. package/dist/esm/components/core/Select.js +2 -2
  22. package/dist/esm/components/core/Table/MobileCard.js +5 -2
  23. package/dist/esm/components/core/Table/MobileFilters.js +10 -3
  24. package/dist/esm/components/core/Table/Table.js +10 -7
  25. package/dist/esm/components/utility/Stepper.js +6 -4
  26. package/dist/index.css +1 -1
  27. package/dist/index.esm.css +1 -1
  28. package/dist/index.esm.js +33 -18
  29. package/dist/index.js +33 -18
  30. package/dist/tokens/brands/practicepro.json +1 -0
  31. package/dist/tokens/brands/studio.json +1 -0
  32. package/mcp/catalog.snapshot.json +13 -13
  33. package/package.json +2 -1
  34. package/tokens/brand.schema.json +612 -0
  35. package/tokens/brands/practicepro.json +1 -0
  36. package/tokens/brands/studio.json +1 -0
  37. package/tokens/lib.cjs +131 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dreamtree-org/twreact-ui",
3
- "version": "1.3.2",
3
+ "version": "1.3.3",
4
4
  "description": "A comprehensive React + Tailwind components library for building modern web apps",
5
5
  "author": {
6
6
  "name": "Partha Preetham Krishna",
@@ -47,6 +47,7 @@
47
47
  "mcp/catalog.snapshot.json",
48
48
  "tokens/tokens.json",
49
49
  "tokens/lib.cjs",
50
+ "tokens/brand.schema.json",
50
51
  "tokens/brands",
51
52
  "DESIGN.md",
52
53
  "ai-skills",
@@ -0,0 +1,612 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://unpkg.com/@dreamtree-org/twreact-ui/tokens/brand.schema.json",
4
+ "title": "Dreamtree brand (dreamtree.brand.json)",
5
+ "description": "A product's look, kept in the product's own repo. Build its CSS with `npx @dreamtree-org/twreact-ui brand build`.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "id"
10
+ ],
11
+ "properties": {
12
+ "$schema": {
13
+ "type": "string"
14
+ },
15
+ "$description": {
16
+ "type": "string"
17
+ },
18
+ "$deprecated": {
19
+ "type": "string"
20
+ },
21
+ "id": {
22
+ "type": "string",
23
+ "pattern": "^[a-z0-9][a-z0-9-]*$",
24
+ "description": "Lowercase slug, e.g. \"practicepro\"."
25
+ },
26
+ "name": {
27
+ "type": "string",
28
+ "description": "Display name, e.g. \"PracticePro\"."
29
+ },
30
+ "label": {
31
+ "type": "string",
32
+ "description": "Legacy display name (brands shipped in twreact-ui)."
33
+ },
34
+ "logo": {
35
+ "type": "object",
36
+ "additionalProperties": {
37
+ "type": "string"
38
+ },
39
+ "description": "Paths or URLs, e.g. { \"mark\": \"public/brand/mark.svg\" }."
40
+ },
41
+ "color": {
42
+ "type": "object",
43
+ "additionalProperties": false,
44
+ "properties": {
45
+ "primary": {
46
+ "type": "object",
47
+ "additionalProperties": false,
48
+ "properties": {
49
+ "50": {
50
+ "type": "string",
51
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
52
+ },
53
+ "100": {
54
+ "type": "string",
55
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
56
+ },
57
+ "200": {
58
+ "type": "string",
59
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
60
+ },
61
+ "300": {
62
+ "type": "string",
63
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
64
+ },
65
+ "400": {
66
+ "type": "string",
67
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
68
+ },
69
+ "500": {
70
+ "type": "string",
71
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
72
+ },
73
+ "600": {
74
+ "type": "string",
75
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
76
+ },
77
+ "700": {
78
+ "type": "string",
79
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
80
+ },
81
+ "800": {
82
+ "type": "string",
83
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
84
+ },
85
+ "900": {
86
+ "type": "string",
87
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
88
+ },
89
+ "950": {
90
+ "type": "string",
91
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
92
+ }
93
+ }
94
+ },
95
+ "secondary": {
96
+ "type": "object",
97
+ "additionalProperties": false,
98
+ "properties": {
99
+ "50": {
100
+ "type": "string",
101
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
102
+ },
103
+ "100": {
104
+ "type": "string",
105
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
106
+ },
107
+ "200": {
108
+ "type": "string",
109
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
110
+ },
111
+ "300": {
112
+ "type": "string",
113
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
114
+ },
115
+ "400": {
116
+ "type": "string",
117
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
118
+ },
119
+ "500": {
120
+ "type": "string",
121
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
122
+ },
123
+ "600": {
124
+ "type": "string",
125
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
126
+ },
127
+ "700": {
128
+ "type": "string",
129
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
130
+ },
131
+ "800": {
132
+ "type": "string",
133
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
134
+ },
135
+ "900": {
136
+ "type": "string",
137
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
138
+ },
139
+ "950": {
140
+ "type": "string",
141
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
142
+ }
143
+ }
144
+ },
145
+ "success": {
146
+ "type": "object",
147
+ "additionalProperties": false,
148
+ "properties": {
149
+ "50": {
150
+ "type": "string",
151
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
152
+ },
153
+ "100": {
154
+ "type": "string",
155
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
156
+ },
157
+ "200": {
158
+ "type": "string",
159
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
160
+ },
161
+ "300": {
162
+ "type": "string",
163
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
164
+ },
165
+ "400": {
166
+ "type": "string",
167
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
168
+ },
169
+ "500": {
170
+ "type": "string",
171
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
172
+ },
173
+ "600": {
174
+ "type": "string",
175
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
176
+ },
177
+ "700": {
178
+ "type": "string",
179
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
180
+ },
181
+ "800": {
182
+ "type": "string",
183
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
184
+ },
185
+ "900": {
186
+ "type": "string",
187
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
188
+ },
189
+ "950": {
190
+ "type": "string",
191
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
192
+ }
193
+ }
194
+ },
195
+ "warning": {
196
+ "type": "object",
197
+ "additionalProperties": false,
198
+ "properties": {
199
+ "50": {
200
+ "type": "string",
201
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
202
+ },
203
+ "100": {
204
+ "type": "string",
205
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
206
+ },
207
+ "200": {
208
+ "type": "string",
209
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
210
+ },
211
+ "300": {
212
+ "type": "string",
213
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
214
+ },
215
+ "400": {
216
+ "type": "string",
217
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
218
+ },
219
+ "500": {
220
+ "type": "string",
221
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
222
+ },
223
+ "600": {
224
+ "type": "string",
225
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
226
+ },
227
+ "700": {
228
+ "type": "string",
229
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
230
+ },
231
+ "800": {
232
+ "type": "string",
233
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
234
+ },
235
+ "900": {
236
+ "type": "string",
237
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
238
+ },
239
+ "950": {
240
+ "type": "string",
241
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
242
+ }
243
+ }
244
+ },
245
+ "error": {
246
+ "type": "object",
247
+ "additionalProperties": false,
248
+ "properties": {
249
+ "50": {
250
+ "type": "string",
251
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
252
+ },
253
+ "100": {
254
+ "type": "string",
255
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
256
+ },
257
+ "200": {
258
+ "type": "string",
259
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
260
+ },
261
+ "300": {
262
+ "type": "string",
263
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
264
+ },
265
+ "400": {
266
+ "type": "string",
267
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
268
+ },
269
+ "500": {
270
+ "type": "string",
271
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
272
+ },
273
+ "600": {
274
+ "type": "string",
275
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
276
+ },
277
+ "700": {
278
+ "type": "string",
279
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
280
+ },
281
+ "800": {
282
+ "type": "string",
283
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
284
+ },
285
+ "900": {
286
+ "type": "string",
287
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
288
+ },
289
+ "950": {
290
+ "type": "string",
291
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
292
+ }
293
+ }
294
+ },
295
+ "info": {
296
+ "type": "object",
297
+ "additionalProperties": false,
298
+ "properties": {
299
+ "50": {
300
+ "type": "string",
301
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
302
+ },
303
+ "100": {
304
+ "type": "string",
305
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
306
+ },
307
+ "200": {
308
+ "type": "string",
309
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
310
+ },
311
+ "300": {
312
+ "type": "string",
313
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
314
+ },
315
+ "400": {
316
+ "type": "string",
317
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
318
+ },
319
+ "500": {
320
+ "type": "string",
321
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
322
+ },
323
+ "600": {
324
+ "type": "string",
325
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
326
+ },
327
+ "700": {
328
+ "type": "string",
329
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
330
+ },
331
+ "800": {
332
+ "type": "string",
333
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
334
+ },
335
+ "900": {
336
+ "type": "string",
337
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
338
+ },
339
+ "950": {
340
+ "type": "string",
341
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
342
+ }
343
+ }
344
+ },
345
+ "gray": {
346
+ "type": "object",
347
+ "additionalProperties": false,
348
+ "properties": {
349
+ "50": {
350
+ "type": "string",
351
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
352
+ },
353
+ "100": {
354
+ "type": "string",
355
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
356
+ },
357
+ "200": {
358
+ "type": "string",
359
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
360
+ },
361
+ "300": {
362
+ "type": "string",
363
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
364
+ },
365
+ "400": {
366
+ "type": "string",
367
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
368
+ },
369
+ "500": {
370
+ "type": "string",
371
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
372
+ },
373
+ "600": {
374
+ "type": "string",
375
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
376
+ },
377
+ "700": {
378
+ "type": "string",
379
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
380
+ },
381
+ "800": {
382
+ "type": "string",
383
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
384
+ },
385
+ "900": {
386
+ "type": "string",
387
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
388
+ },
389
+ "950": {
390
+ "type": "string",
391
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
392
+ }
393
+ }
394
+ }
395
+ }
396
+ },
397
+ "role": {
398
+ "type": "object",
399
+ "additionalProperties": false,
400
+ "properties": {
401
+ "background": {
402
+ "oneOf": [
403
+ {
404
+ "type": "string",
405
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
406
+ },
407
+ {
408
+ "type": "object",
409
+ "additionalProperties": false,
410
+ "properties": {
411
+ "light": {
412
+ "type": "string",
413
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
414
+ },
415
+ "dark": {
416
+ "type": "string",
417
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
418
+ }
419
+ }
420
+ }
421
+ ]
422
+ },
423
+ "surface": {
424
+ "oneOf": [
425
+ {
426
+ "type": "string",
427
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
428
+ },
429
+ {
430
+ "type": "object",
431
+ "additionalProperties": false,
432
+ "properties": {
433
+ "light": {
434
+ "type": "string",
435
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
436
+ },
437
+ "dark": {
438
+ "type": "string",
439
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
440
+ }
441
+ }
442
+ }
443
+ ]
444
+ },
445
+ "foreground": {
446
+ "oneOf": [
447
+ {
448
+ "type": "string",
449
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
450
+ },
451
+ {
452
+ "type": "object",
453
+ "additionalProperties": false,
454
+ "properties": {
455
+ "light": {
456
+ "type": "string",
457
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
458
+ },
459
+ "dark": {
460
+ "type": "string",
461
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
462
+ }
463
+ }
464
+ }
465
+ ]
466
+ },
467
+ "muted": {
468
+ "oneOf": [
469
+ {
470
+ "type": "string",
471
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
472
+ },
473
+ {
474
+ "type": "object",
475
+ "additionalProperties": false,
476
+ "properties": {
477
+ "light": {
478
+ "type": "string",
479
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
480
+ },
481
+ "dark": {
482
+ "type": "string",
483
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
484
+ }
485
+ }
486
+ }
487
+ ]
488
+ },
489
+ "line": {
490
+ "oneOf": [
491
+ {
492
+ "type": "string",
493
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
494
+ },
495
+ {
496
+ "type": "object",
497
+ "additionalProperties": false,
498
+ "properties": {
499
+ "light": {
500
+ "type": "string",
501
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
502
+ },
503
+ "dark": {
504
+ "type": "string",
505
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
506
+ }
507
+ }
508
+ }
509
+ ]
510
+ },
511
+ "shell": {
512
+ "oneOf": [
513
+ {
514
+ "type": "string",
515
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
516
+ },
517
+ {
518
+ "type": "object",
519
+ "additionalProperties": false,
520
+ "properties": {
521
+ "light": {
522
+ "type": "string",
523
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
524
+ },
525
+ "dark": {
526
+ "type": "string",
527
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
528
+ }
529
+ }
530
+ }
531
+ ]
532
+ },
533
+ "shell-foreground": {
534
+ "oneOf": [
535
+ {
536
+ "type": "string",
537
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
538
+ },
539
+ {
540
+ "type": "object",
541
+ "additionalProperties": false,
542
+ "properties": {
543
+ "light": {
544
+ "type": "string",
545
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
546
+ },
547
+ "dark": {
548
+ "type": "string",
549
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
550
+ }
551
+ }
552
+ }
553
+ ]
554
+ },
555
+ "shell-active": {
556
+ "oneOf": [
557
+ {
558
+ "type": "string",
559
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
560
+ },
561
+ {
562
+ "type": "object",
563
+ "additionalProperties": false,
564
+ "properties": {
565
+ "light": {
566
+ "type": "string",
567
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
568
+ },
569
+ "dark": {
570
+ "type": "string",
571
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
572
+ }
573
+ }
574
+ }
575
+ ]
576
+ }
577
+ }
578
+ },
579
+ "font": {
580
+ "type": "object",
581
+ "additionalProperties": false,
582
+ "properties": {
583
+ "sans": {
584
+ "type": "array",
585
+ "items": {
586
+ "type": "string"
587
+ },
588
+ "minItems": 1
589
+ }
590
+ }
591
+ },
592
+ "marketing": {
593
+ "type": "object",
594
+ "additionalProperties": false,
595
+ "description": "Landing and sign-in pages (landing-kit). Defaults: primary = color.primary.600, accent = color.primary.300, panel = role.shell.",
596
+ "properties": {
597
+ "primary": {
598
+ "type": "string",
599
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
600
+ },
601
+ "accent": {
602
+ "type": "string",
603
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
604
+ },
605
+ "panel": {
606
+ "type": "string",
607
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
608
+ }
609
+ }
610
+ }
611
+ }
612
+ }
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "practicepro",
3
3
  "label": "PracticePro",
4
+ "$deprecated": "Moved to the PracticePro repo's dreamtree.brand.json. Shipped here until 1.5.0; build your own with `npx @dreamtree-org/twreact-ui brand build`.",
4
5
  "$description": "Teal primary and navy shell, taken from PracticePro/app/globals.css (brand-50/100/500/600/700, shell, shell-active). Steps PracticePro does not define are interpolated on the same hue. PracticePro's own muted grey (#64748b) is not carried over: on the #f6f8fb background it is about 4.4:1, below WCAG AA, so the shared muted token (#475569, 7.5:1) is used.",
5
6
  "color": {
6
7
  "primary": {
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "studio",
3
3
  "label": "Dreamtree Studio",
4
+ "$deprecated": "Moved to the ProtoPro repo's dreamtree.brand.json (formerly Dreamtree Studio). Shipped here until 1.5.0; build your own with `npx @dreamtree-org/twreact-ui brand build`.",
4
5
  "$description": "Indigo primary for Dreamtree Studio, the MCP prototyping harness (its own app pages, not the prototypes it renders). The shell, background and text roles are the shared slate defaults, so only the primary scale changes. Indigo 600 (#4f46e5) is 6.3:1 on white and 600/700 pass WCAG AA for text on white.",
5
6
  "color": {
6
7
  "primary": {