Skip to content

Commit d43e466

Browse files
Merge branch 'pr-33'
# Conflicts: # dashboard/package-lock.json # dashboard/package.json
2 parents 08857d5 + 3386f1f commit d43e466

7 files changed

Lines changed: 16 additions & 15 deletions

File tree

dashboard/src/components/nv-app-store.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export class NvAppStore extends LitElement {
9797
.chip .swatch {
9898
width: 7px; height: 7px; border-radius: 50%;
9999
}
100-
.chip .count { color: var(--ink-3); font-size: 10px; }
100+
.chip .count { color: var(--ink-2); font-size: 10px; }
101101
.grid {
102102
display: grid;
103103
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
@@ -139,7 +139,7 @@ export class NvAppStore extends LitElement {
139139
}
140140
.badge {
141141
padding: 1px 6px; border-radius: 4px;
142-
background: var(--bg-3); color: var(--ink-3);
142+
background: var(--bg-3); color: var(--ink-2);
143143
border: 1px solid var(--line);
144144
}
145145
.badge.cat { color: var(--accent); border-color: oklch(0.78 0.14 70 / 0.3); }
@@ -149,7 +149,7 @@ export class NvAppStore extends LitElement {
149149
.badge.budget { color: var(--accent-2); border-color: oklch(0.78 0.12 195 / 0.3); }
150150
.badge.rt-running { color: var(--ok); border-color: oklch(0.78 0.14 145 / 0.5); background: oklch(0.78 0.14 145 / 0.08); }
151151
.badge.rt-simulated { color: var(--accent); border-color: oklch(0.78 0.14 70 / 0.5); background: oklch(0.78 0.14 70 / 0.08); }
152-
.badge.rt-mesh-only { color: var(--ink-3); border-color: var(--line); }
152+
.badge.rt-mesh-only { color: var(--ink-2); border-color: var(--line); }
153153
.events-feed {
154154
background: var(--bg-2);
155155
border: 1px solid var(--line);
@@ -389,7 +389,7 @@ export class NvAppStore extends LitElement {
389389
<span class="events">${app.crate}</span>
390390
${evCount > 0 ? html`<span class="card-events-count">${evCount} ev</span>` : ''}
391391
<span class="toggle ${active ? 'on' : ''}" role="switch"
392-
aria-checked=${active}
392+
aria-checked=${active} aria-label="Toggle ${app.crate}"
393393
data-app-toggle=${app.id}
394394
@click=${() => this.toggle(app)}></span>
395395
</div>

dashboard/src/components/nv-console.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export class NvConsole extends LitElement {
6767
border-left: 2px solid transparent;
6868
}
6969
.line:hover { background: var(--bg-1); }
70-
.ts { color: var(--ink-4); font-size: 10.5px; padding-top: 1px; }
70+
.ts { color: var(--ink-2); font-size: 10.5px; padding-top: 1px; }
7171
.lvl {
7272
font-size: 10px; font-weight: 600;
7373
text-transform: uppercase; letter-spacing: 0.04em; padding-top: 1px;

dashboard/src/components/nv-ghost-murmur.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ export class NvGhostMurmur extends LitElement {
394394
<span class="lbl">Distance from sensor</span>
395395
<span class="val" id="demo-dist-val">${this.formatDistance(this.distanceM)}</span>
396396
</div>
397-
<input type="range" id="demo-distance"
397+
<input type="range" id="demo-distance" aria-label="Distance from sensor"
398398
min="-2" max="5" step="0.05"
399399
.value=${String(Math.log10(this.distanceM))}
400400
@input=${(e: Event) => { this.distanceM = Math.pow(10, +(e.target as HTMLInputElement).value); }} />
@@ -407,7 +407,7 @@ export class NvGhostMurmur extends LitElement {
407407
<span class="lbl">Heart dipole moment</span>
408408
<span class="val" id="demo-moment-val">${m.toExponential(2)} A·m²</span>
409409
</div>
410-
<input type="range" id="demo-moment"
410+
<input type="range" id="demo-moment" aria-label="Heart dipole moment"
411411
min="-10" max="-6" step="0.05"
412412
.value=${String(this.momentLog10)}
413413
@input=${(e: Event) => { this.momentLog10 = +(e.target as HTMLInputElement).value; }} />
@@ -536,7 +536,7 @@ export class NvGhostMurmur extends LitElement {
536536
</div>
537537
538538
<h2>RuView's three-tier mesh — what is actually buildable</h2>
539-
<div class="architecture"> ┌──────────────────────────┐
539+
<div class="architecture" tabindex="0"> ┌──────────────────────────┐
540540
│ Tier 3 — NV-diamond │ Range: 0.1–2 m (lab)
541541
│ magnetometer ring │ Status: nvsim simulator only
542542
│ (close-confirm) │ Hardware: $$$ (≥$8k DNV-B1)

dashboard/src/components/nv-inspector.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ export class NvInspector extends LitElement {
423423
role="tab" aria-selected=${this.tab === 'witness'}
424424
@click=${() => this.tab = 'witness'}>Witness</button>
425425
</div>
426-
<div class="body" role="tabpanel">
426+
<div class="body" role="tabpanel" tabindex="0">
427427
${this.renderHeader()}
428428
${this.tab === 'signal' ? this.renderSignalTab()
429429
: this.tab === 'frame' ? this.renderFrameTab()

dashboard/src/components/nv-modal.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/* Modal dialog — opened via window.dispatchEvent('nv-modal', { title, body, buttons }). */
22
import { LitElement, html, css } from 'lit';
33
import { customElement, state } from 'lit/decorators.js';
4+
import DOMPurify from 'dompurify';
45

56
interface ModalButton {
67
label: string;
@@ -137,7 +138,7 @@ export class NvModal extends LitElement {
137138
<div class="ttl">${this.mTitle}</div>
138139
<button class="close" @click=${() => this.close()}>×</button>
139140
</div>
140-
<div class="body" .innerHTML=${this.mBody}></div>
141+
<div class="body" .innerHTML=${DOMPurify.sanitize(this.mBody)}></div>
141142
<div class="f">
142143
${this.buttons.map((b) => html`
143144
<button class=${b.variant ?? ''} @click=${() => this.clickBtn(b)}>${b.label}</button>

dashboard/src/components/nv-onboarding.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const STEPS: TourStep[] = [
3333
This 60-second tour walks you through the four panels, the App Store,
3434
the Ghost Murmur research view, and the determinism contract that
3535
makes nvsim distinctive.</p>
36-
<p style="font-size:11.5px; color:var(--ink-3); line-height:1.5; margin-top:14px;">
36+
<p style="font-size:11.5px; color:var(--ink-2); line-height:1.5; margin-top:14px;">
3737
Press <kbd>Esc</kbd> any time to skip. You can replay this tour from
3838
<b>Settings → Help</b>.</p>`,
3939
cta: { label: 'Start the tour →' },
@@ -224,7 +224,7 @@ export class NvOnboarding extends LitElement {
224224
.h .step-label {
225225
font-family: var(--mono);
226226
font-size: 10.5px;
227-
color: var(--ink-3);
227+
color: var(--ink-2);
228228
margin-top: 4px;
229229
text-transform: uppercase;
230230
letter-spacing: 0.06em;
@@ -299,7 +299,7 @@ export class NvOnboarding extends LitElement {
299299
.progress-label {
300300
font-family: var(--mono);
301301
font-size: 10px;
302-
color: var(--ink-3);
302+
color: var(--ink-2);
303303
}
304304
button.primary, button.ghost {
305305
padding: 9px 16px;

dashboard/src/components/nv-settings-drawer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ export class NvSettingsDrawer extends LitElement {
172172
<div class="desc">Stops the rotating diamond, animated field lines, and chart easing. Auto-on if your system has the prefers-reduced-motion preference set.</div>
173173
</div>
174174
<span class="toggle ${motionReduced.value ? 'on' : ''}"
175-
role="switch" aria-checked=${motionReduced.value}
175+
role="switch" aria-checked=${motionReduced.value} aria-label="Reduce motion"
176176
@click=${() => motionReduced.value = !motionReduced.value}></span>
177177
</div>
178178
</div>
@@ -185,7 +185,7 @@ export class NvSettingsDrawer extends LitElement {
185185
<div class="desc">When you change a Tunables slider or load a new scene, push the change to the worker without a manual restart.</div>
186186
</div>
187187
<span class="toggle ${autoUpdate.value ? 'on' : ''}"
188-
role="switch" aria-checked=${autoUpdate.value}
188+
role="switch" aria-checked=${autoUpdate.value} aria-label="Auto-rerun on edit"
189189
@click=${() => autoUpdate.value = !autoUpdate.value}></span>
190190
</div>
191191
</div>

0 commit comments

Comments
 (0)