{{ backgroundNote() }}
+{{ connectedNote() }}
@if (tab() === 'settings') {- {{ findings().length }} issue(s) in {{ lintCards().length }} group(s). Each card - says what is wrong, where, and how to fix it. + {{ plural(findings().length, 'issue') }} in + {{ plural(lintCards().length, 'group') }}. Each card says what is wrong, where, and + how to fix it.
-
@for (card of lintCards(); track card.rule) {
@@ -1432,7 +1433,7 @@ function walk(routes: AnalogRoute[], depth = 0, out: { route: AnalogRoute; depth
box-sizing: border-box;
height: 34px;
padding: 0 12px;
- border: 1px solid var(--border-strong);
+ border: 1px solid var(--control-border);
border-radius: var(--radius-sm);
background-color: var(--bg);
color: var(--text);
@@ -1475,7 +1476,7 @@ function walk(routes: AnalogRoute[], depth = 0, out: { route: AnalogRoute; depth
box-sizing: border-box;
height: 34px;
padding: 0 14px;
- border: 1px solid var(--border-strong);
+ border: 1px solid var(--control-border);
border-radius: var(--radius-sm);
background: var(--surface-2);
color: var(--text);
@@ -1490,7 +1491,7 @@ function walk(routes: AnalogRoute[], depth = 0, out: { route: AnalogRoute; depth
}
.btn:hover {
background: var(--surface-3);
- border-color: var(--border-strong);
+ border-color: var(--control-border);
}
.btn:active {
transform: translateY(1px);
@@ -2152,6 +2153,7 @@ function walk(routes: AnalogRoute[], depth = 0, out: { route: AnalogRoute; depth
`,
})
export class AnalogInspector {
+ protected readonly plural = plural;
rpc = input
{{ countStatus() }}
@@ -311,7 +313,7 @@ export const AUDIT_REFRESH_DELAY_MS = 150; height: var(--control-h); padding: 0 12px 0 34px; background: var(--bg); - border: 1px solid var(--border-strong); + border: 1px solid var(--control-border); border-radius: var(--radius-sm); color: var(--text); font-size: 13px; @@ -331,7 +333,7 @@ export const AUDIT_REFRESH_DELAY_MS = 150; .small { height: var(--control-h); padding: 0 12px; - border: 1px solid var(--border-strong); + border: 1px solid var(--control-border); border-radius: var(--radius-sm); background: var(--surface-2); color: var(--text); @@ -601,8 +603,14 @@ export class AuditInspector { `${finding.subject ?? ''} ${finding.rule} ${finding.why}`.toLowerCase().includes(text)), ); }); - readonly countText = computed( - () => `${this.shown().length} of ${this.findings().length} findings`, + readonly countText = computed(() => { + const total = this.findings().length; + return `${this.shown().length} of ${total} ${total === 1 ? 'finding' : 'findings'}`; + }); + /** Speaks the count only after the user changes the search, area, severity or page. */ + readonly countStatus = filterAnnouncement( + () => [this.filter(), this.area(), this.severity(), this.pageId()], + () => this.countText(), ); readonly numbers = computed(() => { const metrics = this.report()?.metrics ?? {}; diff --git a/app/src/pages/browser-tools-setting.ts b/app/src/pages/browser-tools-setting.ts index 04d1bd38..2b7b2555 100644 --- a/app/src/pages/browser-tools-setting.ts +++ b/app/src/pages/browser-tools-setting.ts @@ -137,7 +137,7 @@ type Status = 'connecting' | 'loading' | 'ready' | 'unsupported' | 'failed'; width: 36px; height: 20px; margin: 0; - border: 1px solid var(--border-strong); + border: 1px solid var(--control-border); border-radius: 999px; background: var(--surface-3); appearance: none; @@ -196,7 +196,7 @@ type Status = 'connecting' | 'loading' | 'ready' | 'unsupported' | 'failed'; align-items: center; height: var(--control-h); padding: 0 12px; - border: 1px solid var(--border-strong); + border: 1px solid var(--control-border); border-radius: var(--radius-sm); background: var(--surface-2); color: var(--text); diff --git a/app/src/pages/capacitor-call-detail.ts b/app/src/pages/capacitor-call-detail.ts index ef54c218..84d77852 100644 --- a/app/src/pages/capacitor-call-detail.ts +++ b/app/src/pages/capacitor-call-detail.ts @@ -142,7 +142,7 @@ const TAB_ORDER: readonly DetailTab[] = ['args', 'outcome', 'timing']; .small { height: var(--control-h); padding: 0 12px; - border: 1px solid var(--border-strong); + border: 1px solid var(--control-border); border-radius: var(--radius-sm); background: var(--surface-2); color: var(--text); diff --git a/app/src/pages/capacitor-inspector.ts b/app/src/pages/capacitor-inspector.ts index 20e2a880..6218ea55 100644 --- a/app/src/pages/capacitor-inspector.ts +++ b/app/src/pages/capacitor-inspector.ts @@ -582,7 +582,7 @@ const FILTER_LABELS: RecordDirective hosts are hidden, so they are not searched.
} - + } @if (rowWindow.enabled()) { @@ -543,7 +543,7 @@ function storedDirectiveHosts(): boolean {The filter searches names, and the nested keys of values you opened.
- + } @@ -908,7 +908,7 @@ function storedDirectiveHosts(): boolean { } @else if (!filteredSource().length) {No components match “{{ filter().trim() }}”
- +-
@@ -1041,7 +1041,7 @@ function storedDirectiveHosts(): boolean {
height: 34px;
padding: 0 12px 0 34px;
background: var(--bg);
- border: 1px solid var(--border-strong);
+ border: 1px solid var(--control-border);
border-radius: var(--radius-sm);
color: var(--text);
font: inherit;
@@ -1068,7 +1068,7 @@ function storedDirectiveHosts(): boolean {
height: 34px;
padding: 0 14px;
background: var(--surface-2);
- border: 1px solid var(--border-strong);
+ border: 1px solid var(--control-border);
border-radius: var(--radius-sm);
color: var(--text);
cursor: pointer;
diff --git a/app/src/pages/dashboard.ts b/app/src/pages/dashboard.ts
index a4c9fa92..c7aa6435 100644
--- a/app/src/pages/dashboard.ts
+++ b/app/src/pages/dashboard.ts
@@ -363,7 +363,7 @@ export function httpCard(state: HttpSnapshot | null, hostPageId: string | null):
align-items: center;
height: var(--control-h);
padding: 0 14px;
- border: 1px solid var(--border-strong);
+ border: 1px solid var(--control-border);
border-radius: var(--radius-sm);
background: var(--surface-2);
color: var(--text);
diff --git a/app/src/pages/di-inspector.ts b/app/src/pages/di-inspector.ts
index 417f6c01..66f66fdc 100644
--- a/app/src/pages/di-inspector.ts
+++ b/app/src/pages/di-inspector.ts
@@ -274,7 +274,7 @@ function isTree(value: unknown): value is InjectorNode[] {
} @else if (query().trim() && !rows().length) {