diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 8ee7510..4e28b0b 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -2,7 +2,7 @@ import { RouterProvider, createRouter } from '@tanstack/react-router' import { useEffect, useState } from 'react' import { routeTree } from './routeTree.gen' import { useAuth } from './lib/auth' -import { Skeleton } from './components/ui/skeleton' +import { LoadingText } from './components/ui/skeleton' const router = createRouter({ routeTree, @@ -24,17 +24,13 @@ function AppInner() { // eslint-disable-next-line react-hooks/exhaustive-deps }, []) - // Only show skeleton during initial auth check -- NOT on subsequent isLoading changes. + // Only show loading text during initial auth check -- NOT on subsequent isLoading changes. // Reacting to isLoading here would unmount the entire router tree (including LoginPage) // every time an auth action sets isLoading, destroying all component local state. if (!hasChecked) { return (
-
- - - -
+
) } diff --git a/frontend/src/components/about/AnsiNfoModal.tsx b/frontend/src/components/about/AnsiNfoModal.tsx index 13c2e78..d3e1bd0 100644 --- a/frontend/src/components/about/AnsiNfoModal.tsx +++ b/frontend/src/components/about/AnsiNfoModal.tsx @@ -146,7 +146,7 @@ export function AnsiNfoModal({ open, onOpenChange }: AnsiNfoModalProps) { }} > {/* Retro title bar */} -
+
TOD.NFO — ACiD View v1.0 diff --git a/frontend/src/components/alerts/AlertRulesPage.tsx b/frontend/src/components/alerts/AlertRulesPage.tsx index de9ed5d..39f3a35 100644 --- a/frontend/src/components/alerts/AlertRulesPage.tsx +++ b/frontend/src/components/alerts/AlertRulesPage.tsx @@ -698,7 +698,7 @@ export function AlertRulesPage() { No alert rules configured.

) : ( -
+
{/* Header */}
Name @@ -710,7 +710,7 @@ export function AlertRulesPage() { {rules.map((rule) => (
@@ -809,7 +809,7 @@ export function AlertRulesPage() { {channels.map((ch) => (
diff --git a/frontend/src/components/alerts/AlertsPage.tsx b/frontend/src/components/alerts/AlertsPage.tsx index 657efb5..dece3e7 100644 --- a/frontend/src/components/alerts/AlertsPage.tsx +++ b/frontend/src/components/alerts/AlertsPage.tsx @@ -89,7 +89,7 @@ function AlertRow({ alert.silenced_until && new Date(alert.silenced_until) > new Date() return ( -
+
@@ -271,7 +271,7 @@ export function AlertsPage() { description="All clear! No alerts have been triggered." /> ) : ( -
+
{alerts.map((alert) => ( ) : ( -
+
{/* Table header */}
@@ -315,7 +315,7 @@ export function AlertsPage() { {alerts.map((alert) => (
diff --git a/frontend/src/components/audit/AuditLogTable.tsx b/frontend/src/components/audit/AuditLogTable.tsx index 0a813fc..a7f842f 100644 --- a/frontend/src/components/audit/AuditLogTable.tsx +++ b/frontend/src/components/audit/AuditLogTable.tsx @@ -80,7 +80,7 @@ function actionBadgeClasses(action: string): string { if (action.startsWith('device_')) return 'bg-info/10 text-info border-info/20' if (action.startsWith('alert_')) return 'bg-warning/10 text-warning border-warning/20' if (action === 'login' || action === 'logout') return 'bg-success/10 text-success border-success/20' - if (action.startsWith('firmware')) return 'bg-purple-500/10 text-purple-400 border-purple-500/20' + if (action.startsWith('firmware')) return 'bg-warning/10 text-warning border-warning/20' if (action.startsWith('bulk_')) return 'bg-error/10 text-error border-error/20' return 'bg-elevated text-text-secondary border-border' } @@ -143,7 +143,7 @@ export function AuditLogTable({ tenantId }: AuditLogTableProps) { value={actionFilter} onChange={(e) => { setActionFilter(e.target.value); setPage(1) }} aria-label="Filter by action" - className="h-8 rounded-md border border-border bg-surface px-2 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-accent" + className="h-8 rounded-md border border-border bg-panel px-2 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-accent" > {ACTION_TYPES.map((a) => (
@@ -172,7 +172,7 @@ export function AuditLogTable({ tenantId }: AuditLogTableProps) { value={dateTo} onChange={(e) => { setDateTo(e.target.value); setPage(1) }} aria-label="Filter to date" - className="h-8 rounded-md border border-border bg-surface px-2 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-accent" + className="h-8 rounded-md border border-border bg-panel px-2 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-accent" />
@@ -185,7 +185,7 @@ export function AuditLogTable({ tenantId }: AuditLogTableProps) { value={userSearch} onChange={(e) => setUserSearch(e.target.value)} aria-label="Filter by user" - className="h-8 rounded-md border border-border bg-surface pl-7 pr-2 text-xs text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-1 focus:ring-accent w-40" + className="h-8 rounded-md border border-border bg-panel pl-7 pr-2 text-xs text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-1 focus:ring-accent w-40" />
@@ -196,7 +196,7 @@ export function AuditLogTable({ tenantId }: AuditLogTableProps) {
{/* Table */} -
+
{isLoading ? (
@@ -278,7 +278,7 @@ export function AuditLogTable({ tenantId }: AuditLogTableProps) { setPage(1) }} aria-label="Rows per page" - className="h-7 rounded border border-border bg-surface px-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-accent" + className="h-7 rounded border border-border bg-panel px-1.5 text-xs text-text-primary focus:outline-none focus:ring-1 focus:ring-accent" > {PER_PAGE_OPTIONS.map((n) => (