@treeseed/core 0.8.7 → 0.8.9

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 (73) hide show
  1. package/dist/components/content/ContentStatusLegend.astro +4 -4
  2. package/dist/components/docs/BookFontControls.astro +9 -9
  3. package/dist/components/docs/DesktopSidebarToggle.astro +8 -8
  4. package/dist/components/docs/Footer.astro +6 -6
  5. package/dist/components/docs/PageTitle.astro +1 -1
  6. package/dist/components/docs/ThemeSelect.astro +3 -1
  7. package/dist/components/forms/ContactForm.astro +21 -21
  8. package/dist/components/forms/FooterSubscribeForm.astro +9 -9
  9. package/dist/components/site/BookList.astro +7 -7
  10. package/dist/components/site/CTASection.astro +4 -4
  11. package/dist/components/site/ChronicleList.astro +6 -6
  12. package/dist/components/site/Hero.astro +3 -3
  13. package/dist/components/site/PathCard.astro +5 -5
  14. package/dist/components/site/ProfileList.astro +5 -5
  15. package/dist/components/site/RouteNotFound.astro +5 -5
  16. package/dist/components/site/SectionIntro.astro +3 -3
  17. package/dist/components/site/StageBanner.astro +2 -2
  18. package/dist/components/site/TrustCallout.astro +3 -3
  19. package/dist/components/ui/data/ActionList.astro +51 -0
  20. package/dist/components/ui/data/Badge.astro +19 -0
  21. package/dist/components/ui/data/DataTable.astro +51 -0
  22. package/dist/components/ui/data/KeyValueList.astro +28 -0
  23. package/dist/components/ui/data/MetricCard.astro +25 -0
  24. package/dist/components/ui/data/MetricGrid.astro +27 -0
  25. package/dist/components/ui/data/StatusPill.astro +20 -0
  26. package/dist/components/ui/forms/Button.astro +52 -0
  27. package/dist/components/ui/forms/Field.astro +39 -0
  28. package/dist/components/ui/forms/FormActions.astro +12 -0
  29. package/dist/components/ui/forms/PasswordMeter.astro +80 -0
  30. package/dist/components/ui/forms/RadioGroup.astro +55 -0
  31. package/dist/components/ui/forms/Select.astro +44 -0
  32. package/dist/components/ui/forms/TextInput.astro +58 -0
  33. package/dist/components/ui/forms/Textarea.astro +45 -0
  34. package/dist/components/ui/layout/PageHeader.astro +45 -0
  35. package/dist/components/ui/shell/AppShell.astro +110 -0
  36. package/dist/components/ui/shell/BottomNav.astro +35 -0
  37. package/dist/components/ui/shell/ProjectHeader.astro +66 -0
  38. package/dist/components/ui/shell/PublicShell.astro +108 -0
  39. package/dist/components/ui/shell/RailNav.astro +35 -0
  40. package/dist/components/ui/shell/TopBar.astro +52 -0
  41. package/dist/components/ui/surface/Card.astro +46 -0
  42. package/dist/components/ui/surface/EmptyState.astro +45 -0
  43. package/dist/components/ui/surface/Panel.astro +54 -0
  44. package/dist/components/ui/theme/ThemeMenu.astro +32 -0
  45. package/dist/components/ui/theme/ThemePreviewSwatch.astro +18 -0
  46. package/dist/components/ui/theme/ThemeScript.astro +105 -0
  47. package/dist/components/ui/theme/ThemeSelector.astro +202 -0
  48. package/dist/components/ui/types.js +0 -0
  49. package/dist/dev.js +14 -2
  50. package/dist/layouts/AuthoredEntryLayout.astro +27 -27
  51. package/dist/layouts/BookLayout.astro +10 -10
  52. package/dist/layouts/ContentLayout.astro +4 -4
  53. package/dist/layouts/MainLayout.astro +27 -25
  54. package/dist/layouts/NoteLayout.astro +6 -6
  55. package/dist/layouts/ProfileLayout.astro +17 -17
  56. package/dist/pages/404.astro +6 -6
  57. package/dist/pages/contact.astro +4 -4
  58. package/dist/pages/docs-runtime/[...slug].astro +12 -12
  59. package/dist/pages/docs-runtime/index.astro +13 -13
  60. package/dist/pages/index.astro +28 -28
  61. package/dist/pages/ui/index.astro +216 -0
  62. package/dist/site.js +3 -2
  63. package/dist/styles/app-shell.css +398 -0
  64. package/dist/styles/forms.css +258 -0
  65. package/dist/styles/global.css +119 -119
  66. package/dist/styles/prose.css +11 -11
  67. package/dist/styles/theme.css +177 -0
  68. package/dist/styles/tokens.css +62 -22
  69. package/dist/styles/ui.css +551 -0
  70. package/dist/utils/content-status.js +5 -5
  71. package/dist/utils/site-config.js +2 -2
  72. package/dist/utils/theme.js +352 -40
  73. package/package.json +35 -2
@@ -0,0 +1,551 @@
1
+ .ts-button,
2
+ .ts-card,
3
+ .ts-action-list__link {
4
+ -webkit-tap-highlight-color: transparent;
5
+ }
6
+
7
+ .ts-button {
8
+ align-items: center;
9
+ appearance: none;
10
+ border: 1px solid var(--ts-color-border-strong);
11
+ border-radius: var(--ts-radius-md);
12
+ cursor: pointer;
13
+ display: inline-flex;
14
+ font: inherit;
15
+ font-size: 0.875rem;
16
+ font-weight: 650;
17
+ gap: var(--ts-space-2);
18
+ justify-content: center;
19
+ line-height: 1.2;
20
+ min-height: 2.125rem;
21
+ padding: 0.45rem 0.75rem;
22
+ text-decoration: none;
23
+ transition:
24
+ background-color 140ms ease,
25
+ border-color 140ms ease,
26
+ color 140ms ease,
27
+ transform 140ms ease;
28
+ white-space: nowrap;
29
+ }
30
+
31
+ .ts-button[data-size='sm'] {
32
+ font-size: 0.8125rem;
33
+ min-height: 1.9rem;
34
+ padding: 0.35rem 0.65rem;
35
+ }
36
+
37
+ .ts-button[data-variant='primary'] {
38
+ background: var(--ts-color-accent);
39
+ border-color: var(--ts-color-accent);
40
+ color: var(--ts-color-accent-text);
41
+ }
42
+
43
+ .ts-button[data-variant='primary']:hover {
44
+ background: var(--ts-color-accent-hover);
45
+ border-color: var(--ts-color-accent-hover);
46
+ }
47
+
48
+ .ts-button[data-variant='secondary'] {
49
+ background: var(--ts-color-surface);
50
+ border-color: var(--ts-color-border);
51
+ color: var(--ts-color-text);
52
+ }
53
+
54
+ .ts-button[data-variant='secondary']:hover {
55
+ background: var(--ts-color-surface-muted);
56
+ border-color: var(--ts-color-border-strong);
57
+ }
58
+
59
+ .ts-button[data-variant='ghost'] {
60
+ background: transparent;
61
+ border-color: transparent;
62
+ color: var(--ts-color-text-muted);
63
+ }
64
+
65
+ .ts-button[data-variant='ghost']:hover {
66
+ background: var(--ts-color-surface-muted);
67
+ color: var(--ts-color-text);
68
+ }
69
+
70
+ .ts-button[data-variant='danger'] {
71
+ background: var(--ts-color-danger);
72
+ border-color: var(--ts-color-danger);
73
+ color: var(--ts-color-text-inverse);
74
+ }
75
+
76
+ .ts-button[data-variant='danger']:hover {
77
+ background: var(--ts-color-danger-text);
78
+ border-color: var(--ts-color-danger-border);
79
+ }
80
+
81
+ .ts-button:focus-visible,
82
+ .ts-card:focus-visible,
83
+ .ts-action-list__link:focus-visible {
84
+ outline: 3px solid var(--ts-color-focus);
85
+ outline-offset: 2px;
86
+ }
87
+
88
+ .ts-button:active:not(:disabled, [aria-disabled='true']) {
89
+ transform: translateY(1px);
90
+ }
91
+
92
+ .ts-button:disabled,
93
+ .ts-button[aria-disabled='true'] {
94
+ cursor: not-allowed;
95
+ opacity: 0.58;
96
+ }
97
+
98
+ .ts-panel,
99
+ .ts-card,
100
+ .ts-empty-state,
101
+ .ts-metric-card {
102
+ background: var(--ts-color-surface);
103
+ border: 1px solid var(--ts-color-border);
104
+ border-radius: var(--ts-radius-lg);
105
+ color: var(--ts-color-text);
106
+ }
107
+
108
+ .ts-panel {
109
+ overflow: hidden;
110
+ }
111
+
112
+ .ts-panel__header,
113
+ .ts-page-header {
114
+ align-items: flex-start;
115
+ display: flex;
116
+ flex-direction: column;
117
+ gap: var(--ts-space-2);
118
+ }
119
+
120
+ .ts-panel__header {
121
+ background: var(--ts-color-surface-raised);
122
+ border-bottom: 1px solid var(--ts-color-border);
123
+ padding: var(--ts-space-3);
124
+ }
125
+
126
+ .ts-panel__heading,
127
+ .ts-page-header__content {
128
+ display: grid;
129
+ gap: var(--ts-space-2);
130
+ min-width: 0;
131
+ }
132
+
133
+ .ts-panel__actions,
134
+ .ts-page-header__actions,
135
+ .ts-empty-state__actions {
136
+ display: flex;
137
+ flex-wrap: wrap;
138
+ gap: var(--ts-space-2);
139
+ }
140
+
141
+ .ts-panel__body {
142
+ padding: var(--ts-space-3);
143
+ }
144
+
145
+ .ts-panel__eyebrow,
146
+ .ts-card__eyebrow,
147
+ .ts-page-header__eyebrow,
148
+ .ts-empty-state__eyebrow,
149
+ .ts-metric-card__label {
150
+ color: var(--ts-color-text-subtle);
151
+ font-size: 0.75rem;
152
+ font-weight: 750;
153
+ letter-spacing: 0;
154
+ line-height: 1.3;
155
+ text-transform: uppercase;
156
+ }
157
+
158
+ .ts-panel__title,
159
+ .ts-card__title,
160
+ .ts-page-header__title,
161
+ .ts-empty-state__title {
162
+ color: var(--ts-color-text);
163
+ font-weight: 750;
164
+ line-height: 1.16;
165
+ margin: 0;
166
+ }
167
+
168
+ .ts-panel__title,
169
+ .ts-empty-state__title {
170
+ font-size: 1.125rem;
171
+ }
172
+
173
+ .ts-card__title {
174
+ font-size: 1rem;
175
+ }
176
+
177
+ .ts-page-header__title {
178
+ font-size: clamp(1.75rem, 1.45rem + 1vw, 2.35rem);
179
+ }
180
+
181
+ .ts-panel__description,
182
+ .ts-card__description,
183
+ .ts-page-header__description,
184
+ .ts-empty-state__description,
185
+ .ts-metric-card__description {
186
+ color: var(--ts-color-text-muted);
187
+ line-height: 1.5;
188
+ margin: 0;
189
+ }
190
+
191
+ .ts-card {
192
+ display: grid;
193
+ gap: var(--ts-space-2);
194
+ padding: var(--ts-space-3);
195
+ text-decoration: none;
196
+ transition:
197
+ background-color 140ms ease,
198
+ border-color 140ms ease,
199
+ transform 140ms ease;
200
+ }
201
+
202
+ .ts-card[data-interactive='true']:hover {
203
+ background: var(--ts-color-surface-raised);
204
+ border-color: var(--ts-color-border-strong);
205
+ transform: translateY(-1px);
206
+ }
207
+
208
+ .ts-card__body {
209
+ color: var(--ts-color-text-muted);
210
+ display: grid;
211
+ gap: var(--ts-space-2);
212
+ }
213
+
214
+ .ts-empty-state {
215
+ display: grid;
216
+ gap: var(--ts-space-2);
217
+ justify-items: start;
218
+ padding: var(--ts-space-3);
219
+ }
220
+
221
+ .ts-empty-state__body:empty {
222
+ display: none;
223
+ }
224
+
225
+ .ts-badge,
226
+ .ts-status-pill {
227
+ align-items: center;
228
+ border: 1px solid var(--ts-tone-border, var(--ts-color-border));
229
+ border-radius: 999px;
230
+ display: inline-flex;
231
+ font-size: 0.75rem;
232
+ font-weight: 700;
233
+ gap: 0.375rem;
234
+ line-height: 1.15;
235
+ white-space: nowrap;
236
+ }
237
+
238
+ .ts-badge {
239
+ background: var(--ts-tone-soft, var(--ts-color-surface-muted));
240
+ color: var(--ts-tone-text, var(--ts-color-text-muted));
241
+ padding: 0.2rem 0.5rem;
242
+ }
243
+
244
+ .ts-badge[data-size='sm'] {
245
+ font-size: 0.6875rem;
246
+ padding: 0.15rem 0.4rem;
247
+ }
248
+
249
+ .ts-status-pill {
250
+ background: var(--ts-tone-soft, var(--ts-color-surface));
251
+ color: var(--ts-tone-text, var(--ts-color-text));
252
+ padding: 0.25rem 0.55rem 0.25rem 0.45rem;
253
+ }
254
+
255
+ .ts-status-pill__dot {
256
+ background: currentColor;
257
+ border-radius: 999px;
258
+ display: inline-block;
259
+ height: 0.45rem;
260
+ width: 0.45rem;
261
+ }
262
+
263
+ [data-tone='muted'] {
264
+ --ts-tone-soft: var(--ts-color-surface-muted);
265
+ --ts-tone-text: var(--ts-color-text-muted);
266
+ --ts-tone-border: var(--ts-color-border);
267
+ }
268
+
269
+ [data-tone='accent'] {
270
+ --ts-tone-soft: var(--ts-color-accent-soft);
271
+ --ts-tone-text: var(--ts-color-accent-strong);
272
+ --ts-tone-border: var(--ts-color-accent);
273
+ }
274
+
275
+ [data-tone='info'] {
276
+ --ts-tone-soft: var(--ts-color-info-soft);
277
+ --ts-tone-text: var(--ts-color-info-text);
278
+ --ts-tone-border: var(--ts-color-info-border);
279
+ }
280
+
281
+ [data-tone='success'] {
282
+ --ts-tone-soft: var(--ts-color-success-soft);
283
+ --ts-tone-text: var(--ts-color-success-text);
284
+ --ts-tone-border: var(--ts-color-success-border);
285
+ }
286
+
287
+ [data-tone='warning'] {
288
+ --ts-tone-soft: var(--ts-color-warning-soft);
289
+ --ts-tone-text: var(--ts-color-warning-text);
290
+ --ts-tone-border: var(--ts-color-warning-border);
291
+ }
292
+
293
+ [data-tone='danger'] {
294
+ --ts-tone-soft: var(--ts-color-danger-soft);
295
+ --ts-tone-text: var(--ts-color-danger-text);
296
+ --ts-tone-border: var(--ts-color-danger-border);
297
+ }
298
+
299
+ .ts-metric-grid {
300
+ display: grid;
301
+ gap: var(--ts-space-3);
302
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--ts-metric-grid-min, 12rem)), 1fr));
303
+ }
304
+
305
+ .ts-metric-card {
306
+ display: grid;
307
+ gap: var(--ts-space-2);
308
+ padding: var(--ts-space-4);
309
+ }
310
+
311
+ .ts-metric-card[data-tone]:not([data-tone='default']) {
312
+ background: var(--ts-tone-soft);
313
+ border-color: var(--ts-tone-border);
314
+ }
315
+
316
+ .ts-metric-card__value {
317
+ color: var(--ts-tone-text, var(--ts-color-text));
318
+ font-size: 1.75rem;
319
+ font-weight: 780;
320
+ line-height: 1;
321
+ margin: 0;
322
+ }
323
+
324
+ .ts-action-list__items {
325
+ border: 1px solid var(--ts-color-border);
326
+ border-radius: var(--ts-radius-lg);
327
+ list-style: none;
328
+ margin: 0;
329
+ overflow: hidden;
330
+ padding: 0;
331
+ }
332
+
333
+ .ts-action-list__item + .ts-action-list__item {
334
+ border-top: 1px solid var(--ts-color-border-muted);
335
+ }
336
+
337
+ .ts-action-list__link,
338
+ .ts-action-list__row {
339
+ align-items: flex-start;
340
+ background: var(--ts-color-surface);
341
+ color: var(--ts-color-text);
342
+ display: flex;
343
+ flex-direction: column;
344
+ gap: var(--ts-space-3);
345
+ padding: var(--ts-space-3) var(--ts-space-4);
346
+ text-decoration: none;
347
+ }
348
+
349
+ .ts-action-list__link:hover {
350
+ background: var(--ts-color-surface-raised);
351
+ }
352
+
353
+ .ts-action-list__content {
354
+ display: grid;
355
+ gap: 0.25rem;
356
+ min-width: 0;
357
+ }
358
+
359
+ .ts-action-list__title {
360
+ font-weight: 700;
361
+ }
362
+
363
+ .ts-action-list__description {
364
+ color: var(--ts-color-text-muted);
365
+ font-size: 0.875rem;
366
+ line-height: 1.5;
367
+ }
368
+
369
+ .ts-action-list__meta {
370
+ align-items: center;
371
+ display: flex;
372
+ flex-wrap: wrap;
373
+ gap: var(--ts-space-2);
374
+ }
375
+
376
+ .ts-action-list__action {
377
+ color: var(--ts-color-link);
378
+ font-size: 0.8125rem;
379
+ font-weight: 700;
380
+ }
381
+
382
+ .ts-key-value-list {
383
+ display: grid;
384
+ gap: 0;
385
+ margin: 0;
386
+ }
387
+
388
+ .ts-key-value-list__item {
389
+ align-items: start;
390
+ border-top: 1px solid var(--ts-color-border-muted);
391
+ display: grid;
392
+ gap: var(--ts-space-1);
393
+ padding: var(--ts-space-3) 0;
394
+ }
395
+
396
+ .ts-key-value-list__item:first-child {
397
+ border-top: 0;
398
+ padding-top: 0;
399
+ }
400
+
401
+ .ts-key-value-list dt {
402
+ color: var(--ts-color-text-muted);
403
+ font-size: 0.8125rem;
404
+ font-weight: 700;
405
+ margin: 0;
406
+ }
407
+
408
+ .ts-key-value-list dd {
409
+ color: var(--ts-tone-text, var(--ts-color-text));
410
+ font-weight: 650;
411
+ margin: 0;
412
+ }
413
+
414
+ .ts-data-table-wrap {
415
+ border: 1px solid var(--ts-color-border);
416
+ border-radius: var(--ts-radius-lg);
417
+ overflow: hidden;
418
+ }
419
+
420
+ .ts-data-table {
421
+ background: var(--ts-color-surface);
422
+ border-collapse: collapse;
423
+ color: var(--ts-color-text);
424
+ width: 100%;
425
+ }
426
+
427
+ .ts-data-table caption {
428
+ border-bottom: 1px solid var(--ts-color-border);
429
+ color: var(--ts-color-text-muted);
430
+ font-size: 0.875rem;
431
+ font-weight: 650;
432
+ padding: var(--ts-space-3) var(--ts-space-4);
433
+ text-align: left;
434
+ }
435
+
436
+ .ts-data-table th,
437
+ .ts-data-table td {
438
+ border-bottom: 1px solid var(--ts-color-border-muted);
439
+ padding: var(--ts-space-3) var(--ts-space-4);
440
+ text-align: left;
441
+ vertical-align: top;
442
+ }
443
+
444
+ .ts-data-table th {
445
+ background: var(--ts-color-surface-raised);
446
+ color: var(--ts-color-text-muted);
447
+ font-size: 0.75rem;
448
+ font-weight: 750;
449
+ text-transform: uppercase;
450
+ }
451
+
452
+ .ts-data-table tr:last-child td {
453
+ border-bottom: 0;
454
+ }
455
+
456
+ .ts-ui-catalog {
457
+ display: grid;
458
+ gap: var(--ts-space-4);
459
+ margin: 0 auto;
460
+ max-width: var(--ts-shell-width);
461
+ padding: var(--ts-space-4);
462
+ }
463
+
464
+ .ts-ui-catalog__selector {
465
+ background: var(--ts-color-surface);
466
+ border: 1px solid var(--ts-color-border);
467
+ border-radius: var(--ts-radius-lg);
468
+ padding: var(--ts-space-3);
469
+ }
470
+
471
+ .ts-ui-catalog__theme-links,
472
+ .ts-ui-catalog__row {
473
+ display: flex;
474
+ flex-wrap: wrap;
475
+ gap: var(--ts-space-2);
476
+ }
477
+
478
+ .ts-ui-catalog__stack {
479
+ display: grid;
480
+ gap: var(--ts-space-3);
481
+ }
482
+
483
+ .ts-ui-catalog__grid {
484
+ display: grid;
485
+ gap: var(--ts-space-3);
486
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
487
+ }
488
+
489
+ .ts-ui-catalog__form {
490
+ display: grid;
491
+ gap: var(--ts-space-4);
492
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
493
+ }
494
+
495
+ @media (min-width: 44rem) {
496
+ .ts-panel__header,
497
+ .ts-page-header {
498
+ align-items: center;
499
+ flex-direction: row;
500
+ justify-content: space-between;
501
+ }
502
+
503
+ .ts-action-list__link,
504
+ .ts-action-list__row {
505
+ align-items: center;
506
+ flex-direction: row;
507
+ justify-content: space-between;
508
+ }
509
+
510
+ .ts-key-value-list__item {
511
+ grid-template-columns: minmax(8rem, 0.35fr) 1fr;
512
+ }
513
+ }
514
+
515
+ @media (max-width: 42rem) {
516
+ .ts-data-table thead {
517
+ display: none;
518
+ }
519
+
520
+ .ts-data-table,
521
+ .ts-data-table tbody,
522
+ .ts-data-table tr,
523
+ .ts-data-table td {
524
+ display: block;
525
+ }
526
+
527
+ .ts-data-table tr {
528
+ border-bottom: 1px solid var(--ts-color-border);
529
+ padding: var(--ts-space-2) 0;
530
+ }
531
+
532
+ .ts-data-table tr:last-child {
533
+ border-bottom: 0;
534
+ }
535
+
536
+ .ts-data-table td {
537
+ border-bottom: 0;
538
+ display: grid;
539
+ gap: var(--ts-space-2);
540
+ grid-template-columns: minmax(7rem, 0.42fr) 1fr;
541
+ padding: var(--ts-space-2) var(--ts-space-3);
542
+ }
543
+
544
+ .ts-data-table td::before {
545
+ color: var(--ts-color-text-muted);
546
+ content: attr(data-label);
547
+ font-size: 0.75rem;
548
+ font-weight: 750;
549
+ text-transform: uppercase;
550
+ }
551
+ }
@@ -4,27 +4,27 @@ const CONTENT_STATUS_META = {
4
4
  live: {
5
5
  label: "Live",
6
6
  description: "Materially exists and is maintained.",
7
- tone: "border-[color:var(--site-accent)]/35 bg-[color:var(--site-accent-soft)] text-[color:var(--site-accent-strong)]"
7
+ tone: "border-[color:var(--ts-color-accent)]/35 bg-[color:var(--ts-color-accent-soft)] text-[color:var(--ts-color-accent-strong)]"
8
8
  },
9
9
  "in progress": {
10
10
  label: "In Progress",
11
11
  description: "Actively being built or hardened.",
12
- tone: "border-[color:var(--site-warm)]/40 bg-[color:rgba(215,176,123,0.18)] text-[color:var(--site-warm-strong)]"
12
+ tone: "border-[color:var(--ts-color-warning-border)] bg-[color:var(--ts-color-warning-soft)] text-[color:var(--ts-color-warning-text)]"
13
13
  },
14
14
  exploratory: {
15
15
  label: "Exploratory",
16
16
  description: "Directionally important, but still unsettled.",
17
- tone: "border-[color:var(--site-blue)]/40 bg-[color:var(--site-blue-soft)] text-[color:var(--site-blue-strong)]"
17
+ tone: "border-[color:var(--ts-color-info)]/40 bg-[color:var(--ts-color-info-soft)] text-[color:var(--ts-color-info-text)]"
18
18
  },
19
19
  planned: {
20
20
  label: "Planned",
21
21
  description: "Intended, but not started in a meaningful way.",
22
- tone: "border-[color:#9c9277]/35 bg-[color:rgba(156,146,119,0.14)] text-[color:#5f5743]"
22
+ tone: "border-[color:var(--ts-color-border-strong)] bg-[color:var(--ts-color-surface-muted)] text-[color:var(--ts-color-text-muted)]"
23
23
  },
24
24
  speculative: {
25
25
  label: "Speculative",
26
26
  description: "Conceptual or long-range, not a current commitment.",
27
- tone: "border-[color:#a39b8e]/35 bg-[color:rgba(163,155,142,0.14)] text-[color:#4d4638]"
27
+ tone: "border-[color:var(--ts-color-border)] bg-[color:var(--ts-color-surface-muted)] text-[color:var(--ts-color-text-subtle)]"
28
28
  }
29
29
  };
30
30
  const PROJECT_STAGE = {
@@ -1,5 +1,5 @@
1
1
  import { RUNTIME_SITE_CONFIG, RUNTIME_TENANT } from "../tenant/runtime-config.js";
2
- import { buildTenantThemeCss } from "./theme.js";
2
+ import { buildTreeseedThemeCss } from "./theme.js";
3
3
  function requireRuntimeSiteConfig() {
4
4
  if (!RUNTIME_SITE_CONFIG) {
5
5
  throw new Error(
@@ -30,7 +30,7 @@ const SITE_HEADER_MENU = SITE.headerMenu;
30
30
  const SITE_FOOTER_MENU = SITE.footerMenu;
31
31
  const SITE_FORMS = SITE.forms;
32
32
  const SITE_EMAIL_NOTIFICATIONS = SITE.emailNotifications;
33
- const SITE_THEME_CSS = buildTenantThemeCss(SITE.theme);
33
+ const SITE_THEME_CSS = buildTreeseedThemeCss(SITE.theme);
34
34
  const PAGE_MODEL_DEFAULTS = SITE_CONFIG.models.pages.defaults;
35
35
  const NOTE_MODEL_DEFAULTS = SITE_CONFIG.models.notes.defaults;
36
36
  const QUESTION_MODEL_DEFAULTS = SITE_CONFIG.models.questions.defaults;