- {#if initialLoading}
- {#each Array(4) as _, i (i)}
-
- {/each}
- {:else}
- {#each kpiCards as card (card.id)}
- {@const Icon = card.icon}
- {@const a = card.accent}
-
-
-
-
-
-
-
- {card.label}
-
- {#if card.href}
-
- {/if}
-
-
- {card.value}
-
-
-
-
- {card.badge}
-
- {#if card.error}
- {card.error}
- {:else}
- {card.description}
- {/if}
-
-
- {/each}
- {/if}
-
+
{#if initialLoading}
diff --git a/web/src/routes/network/+page.svelte b/web/src/routes/network/+page.svelte
index 2097814..f422b84 100644
--- a/web/src/routes/network/+page.svelte
+++ b/web/src/routes/network/+page.svelte
@@ -15,6 +15,7 @@
import { Alert, AlertDescription, AlertTitle } from '$lib/ui/core/alert/index.js';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '$lib/ui/core/tabs/index.js';
import CardSkeleton from '$lib/ui/patterns/feedback/card-skeleton.svelte';
+ import KpiMetricsGrid from '$lib/ui/patterns/kpi/kpi-metrics-grid.svelte';
import PageHeader from '$lib/ui/app/page-header/page-header.svelte';
import { notifyApiError } from '$lib/ui/app/toast.js';
import NetworkPeersCard from '$lib/components/network/NetworkPeersCard.svelte';
@@ -179,36 +180,12 @@
-
- {#if initialLoading}
- {#each Array(3) as _, i (i)}
-
- {/each}
- {:else}
- {#each kpiCards as card (card.id)}
- {@const Icon = card.icon}
- {@const a = card.accent}
-
-
-
-
-
-
- {card.label}
-
- {card.value}
-
-
- {card.badge}
- {card.description}
-
-
- {/each}
- {/if}
-
+
diff --git a/web/src/routes/operations/+page.svelte b/web/src/routes/operations/+page.svelte
index 4ea2a4f..12bf745 100644
--- a/web/src/routes/operations/+page.svelte
+++ b/web/src/routes/operations/+page.svelte
@@ -60,6 +60,7 @@
} from '$lib/components/operations/types.js';
import ScrollPreBlock from '$lib/components/app/scroll-pre-block.svelte';
import CardSkeleton from '$lib/ui/patterns/feedback/card-skeleton.svelte';
+ import KpiMetricsGrid from '$lib/ui/patterns/kpi/kpi-metrics-grid.svelte';
import { confirm } from '$lib/ui/patterns/confirm/confirm-state.svelte.js';
import PageHeader from '$lib/ui/app/page-header/page-header.svelte';
import { notify, notifyApiError } from '$lib/ui/app/toast.js';
@@ -891,53 +892,12 @@
-
- {#if initialLoading}
- {#each Array(3) as _, i (i)}
-
- {/each}
- {:else}
- {#each kpiCards as card (card.id)}
- {@const Icon = card.icon}
- {@const a = card.accent}
-
-
-
-
-
-
-
- {card.label}
-
- {#if card.href}
-
- {/if}
-
- {card.value}
-
-
- {card.badge}
- {card.description}
-
-
- {/each}
- {/if}
-
+
-
- {#if initialLoading}
- {#each Array(3) as _, i (i)}
-
- {/each}
- {:else}
- {#each kpiCards as card (card.id)}
- {@const Icon = card.icon}
- {@const a = card.accent}
-
-
-
-
-
-
-
- {card.label}
-
- {#if card.href}
-
- {/if}
-
- {card.value}
-
-
- {card.badge}
- {card.description}
-
-
- {/each}
- {/if}
-
+