@tenonhq/dovetail-dashboard 0.0.25 → 0.0.26

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tenonhq/dovetail-dashboard",
3
- "version": "0.0.25",
3
+ "version": "0.0.26",
4
4
  "description": "Update Set Dashboard for Dovetail",
5
5
  "main": "server.js",
6
6
  "scripts": {
@@ -1088,40 +1088,78 @@
1088
1088
 
1089
1089
  /* ════════════════════════════════════════════════════════════════════════════
1090
1090
  Dark theme overrides.
1091
- The page already flows through the semantic tokens, so only the semantic
1092
- color chips that hardcode light pastels need explicit dark variants here.
1091
+ Status pills, badges, and callouts route through the tag tokens which
1092
+ tokens.css redefines for dark so no hex literals are needed here. Each
1093
+ selector picks the tag pair whose semantic meaning matches the chip.
1093
1094
  The .cp-theme-toggle button itself is styled in styles.css (shared).
1094
1095
  ════════════════════════════════════════════════════════════════════════════ */
1095
- [data-theme="dark"] .cp-status-DRAFT { background: #322d0c; color: #e8d860; border-color: #f4dc0033; }
1096
- [data-theme="dark"] .cp-status-APPROVED { background: #14301c; color: #8fe39d; border-color: #62dc4433; }
1096
+ [data-theme="dark"] .cp-status-DRAFT {
1097
+ background: var(--tag-yellow-bg);
1098
+ color: var(--tag-yellow-fg);
1099
+ border-color: var(--tag-yellow-fg);
1100
+ border-color: color-mix(in srgb, var(--tag-yellow-fg) 20%, transparent);
1101
+ }
1102
+ [data-theme="dark"] .cp-status-APPROVED {
1103
+ background: var(--tag-green-bg);
1104
+ color: var(--tag-green-fg);
1105
+ border-color: color-mix(in srgb, var(--tag-green-fg) 20%, transparent);
1106
+ }
1097
1107
 
1098
- [data-theme="dark"] .cp-c-badge-success { background: #14301c; color: #8fe39d; border-color: #62dc4433; }
1099
- [data-theme="dark"] .cp-c-badge-warning { background: #322d0c; color: #e8d860; border-color: #f4dc0033; }
1100
- [data-theme="dark"] .cp-c-badge-danger { background: #371616; color: #f08f8f; border-color: #f4393933; }
1101
- [data-theme="dark"] .cp-c-badge-info { background: #0e2c3a; color: #8fd9f5; border-color: #76d6ff33; }
1108
+ [data-theme="dark"] .cp-c-badge-success {
1109
+ background: var(--tag-green-bg);
1110
+ color: var(--tag-green-fg);
1111
+ border-color: color-mix(in srgb, var(--tag-green-fg) 20%, transparent);
1112
+ }
1113
+ [data-theme="dark"] .cp-c-badge-warning {
1114
+ background: var(--tag-yellow-bg);
1115
+ color: var(--tag-yellow-fg);
1116
+ border-color: color-mix(in srgb, var(--tag-yellow-fg) 20%, transparent);
1117
+ }
1118
+ [data-theme="dark"] .cp-c-badge-danger {
1119
+ background: var(--tag-red-bg);
1120
+ color: var(--tag-red-fg);
1121
+ border-color: color-mix(in srgb, var(--tag-red-fg) 20%, transparent);
1122
+ }
1123
+ [data-theme="dark"] .cp-c-badge-info {
1124
+ background: var(--tag-cyan-bg);
1125
+ color: var(--tag-cyan-fg);
1126
+ border-color: color-mix(in srgb, var(--tag-cyan-fg) 20%, transparent);
1127
+ }
1102
1128
 
1103
- [data-theme="dark"] .cp-c-callout-info { background: #0e2c3a55; border-color: #76d6ff33; }
1104
- [data-theme="dark"] .cp-c-callout-success { background: #14301c55; border-color: #62dc4433; }
1105
- [data-theme="dark"] .cp-c-callout-warning { background: #322d0c55; border-color: #f4dc0033; }
1106
- [data-theme="dark"] .cp-c-callout-danger { background: #37161655; border-color: #f4393933; }
1107
- [data-theme="dark"] .cp-c-callout-info .cp-c-callout-icon { color: #8fd9f5; }
1108
- [data-theme="dark"] .cp-c-callout-success .cp-c-callout-icon { color: #8fe39d; }
1109
- [data-theme="dark"] .cp-c-callout-warning .cp-c-callout-icon { color: #e8d860; }
1110
- [data-theme="dark"] .cp-c-callout-danger .cp-c-callout-icon { color: #f08f8f; }
1129
+ [data-theme="dark"] .cp-c-callout-info {
1130
+ background: color-mix(in srgb, var(--tag-cyan-bg) 60%, transparent);
1131
+ border-color: color-mix(in srgb, var(--tag-cyan-fg) 20%, transparent);
1132
+ }
1133
+ [data-theme="dark"] .cp-c-callout-success {
1134
+ background: color-mix(in srgb, var(--tag-green-bg) 60%, transparent);
1135
+ border-color: color-mix(in srgb, var(--tag-green-fg) 20%, transparent);
1136
+ }
1137
+ [data-theme="dark"] .cp-c-callout-warning {
1138
+ background: color-mix(in srgb, var(--tag-yellow-bg) 60%, transparent);
1139
+ border-color: color-mix(in srgb, var(--tag-yellow-fg) 20%, transparent);
1140
+ }
1141
+ [data-theme="dark"] .cp-c-callout-danger {
1142
+ background: color-mix(in srgb, var(--tag-red-bg) 60%, transparent);
1143
+ border-color: color-mix(in srgb, var(--tag-red-fg) 20%, transparent);
1144
+ }
1145
+ [data-theme="dark"] .cp-c-callout-info .cp-c-callout-icon { color: var(--tag-cyan-fg); }
1146
+ [data-theme="dark"] .cp-c-callout-success .cp-c-callout-icon { color: var(--tag-green-fg); }
1147
+ [data-theme="dark"] .cp-c-callout-warning .cp-c-callout-icon { color: var(--tag-yellow-fg); }
1148
+ [data-theme="dark"] .cp-c-callout-danger .cp-c-callout-icon { color: var(--tag-red-fg); }
1111
1149
 
1112
1150
  [data-theme="dark"] .cp-mermaid-error {
1113
- background: #37161655;
1114
- border-color: #f4393933;
1151
+ background: color-mix(in srgb, var(--tag-red-bg) 60%, transparent);
1152
+ border-color: color-mix(in srgb, var(--tag-red-fg) 20%, transparent);
1115
1153
  }
1116
1154
 
1117
1155
  [data-theme="dark"] .cp-pr-badge {
1118
- background: #0e2c3a;
1119
- color: #8fd9f5;
1120
- border-color: #76d6ff33;
1156
+ background: var(--tag-cyan-bg);
1157
+ color: var(--tag-cyan-fg);
1158
+ border-color: color-mix(in srgb, var(--tag-cyan-fg) 20%, transparent);
1121
1159
  }
1122
1160
  [data-theme="dark"] .cp-pr-badge:hover {
1123
- background: #14384a;
1124
- color: #b6e8ff;
1161
+ background: var(--tag-cyan-hover);
1162
+ color: var(--tag-cyan-fg);
1125
1163
  }
1126
1164
 
1127
1165
  /* ─── Topics cloud ─────────────────────────────────────────────────────────── */
package/public/tokens.css CHANGED
@@ -163,35 +163,38 @@
163
163
 
164
164
  /* ============================================================================
165
165
  Dark theme — activated by <html data-theme="dark">.
166
- Used by the Claude Plans page; safe to adopt dashboard-wide later.
167
- Overrides the semantic aliases only — the raw color scales above are shared.
168
- Brand emerald and neon accent are preserved; grounds invert to dark woodgrain.
166
+ Mirrors the canonical [data-theme="dark"] block in the Tenon design system
167
+ (ClaudeDesign/project/colors_and_type.css). Overrides semantic aliases only;
168
+ the raw color scales above are shared. Grounds invert to a deep woodgrain-
169
+ emerald palette (#0A1A11 → #16352A two-step elevation). Brand emerald and
170
+ neon accent preserved; ink on neon stays emerald-900. Status tokens shift
171
+ from the 700 ramp to the 300 ramp for readability on dark.
169
172
  ============================================================================ */
170
173
  [data-theme="dark"] {
171
- --bg: #0d1410;
172
- --bg-subtle: #121c16;
173
- --bg-muted: #18241c;
174
- --bg-paper: #121c16;
175
- --bg-oak: #20302554;
174
+ --bg: #0a1a11;
175
+ --bg-subtle: #0f2418;
176
+ --bg-muted: #16352a;
177
+ --bg-paper: #1a2418;
178
+ --bg-oak: #2a2a1f;
176
179
  --bg-deep: #060b08;
177
180
  --bg-overlay: rgba(0, 0, 0, 0.66);
178
181
 
179
- --surface: #121c16;
180
- --surface-raised: #18241c;
182
+ --surface: #10241a;
183
+ --surface-raised: #16352a;
181
184
 
182
- --fg: #e9efe9;
183
- --fg-muted: #8da095;
184
- --fg-subtle: #5f7167;
185
- --fg-on-dark: #e9efe9;
186
- --fg-on-neon: var(--emerald-700);
185
+ --fg: #ecf3ef;
186
+ --fg-muted: #a3b8aa; /* lifted to clear AA 4.5:1 on --surface */
187
+ --fg-subtle: #6f8378;
188
+ --fg-on-dark: #ecf3ef;
189
+ --fg-on-neon: var(--emerald-900);
187
190
 
188
191
  --accent: var(--neon-300);
189
192
  --accent-hover: var(--neon-500);
190
193
  --accent-press: var(--neon-700);
191
- --accent-fg: #0d1410;
194
+ --accent-fg: var(--emerald-900);
192
195
 
193
196
  --brand: var(--emerald-50);
194
- --brand-deep: #e9efe9;
197
+ --brand-deep: #ecf3ef;
195
198
 
196
199
  --success: var(--success-300);
197
200
  --warning: var(--warning-300);
@@ -199,8 +202,8 @@
199
202
  --danger-hover: var(--error-500);
200
203
  --info: var(--blue-300);
201
204
 
202
- --border: #26342b;
203
- --border-strong: #344538;
205
+ --border: #2b4233;
206
+ --border-strong: #3d5847;
204
207
  --border-subtle: #1d2922;
205
208
  --border-focus: var(--neon-500);
206
209
 
@@ -214,7 +217,7 @@
214
217
  --tag-blue-bg: #182040; --tag-blue-fg: #aab4ff;
215
218
  --tag-cyan-bg: #0e2c3a; --tag-cyan-fg: #8fd9f5;
216
219
  --tag-sage-bg: #1d2922; --tag-sage-fg: #b6c6bc;
217
- --tag-warm-bg: #2c2417; --tag-warm-fg: #d8c4a2;
220
+ --tag-warm-bg: #2c2417; --tag-warm-fg: #e6d3ae; /* lifted from #d8c4a2 */
218
221
  --tag-yellow-bg: #322d0c; --tag-yellow-fg: #e8d860;
219
222
  --tag-purple-bg: #2a1633; --tag-purple-fg: #e29bf0;
220
223
  --tag-orange-bg: #331c0c; --tag-orange-fg: #f0a878;