<script lang="ts"> import { faMemory } from "@fortawesome/free-solid-svg-icons"; import { PanelHeader, ProgressBar, StatItem } from "$lib/components"; import { formatMemorySize, formatPercentage } from "$lib/utils"; export let memoryTotal: number; export let memoryUsed: number; export let memoryFree: number; $: memoryPercentage = (memoryUsed / memoryTotal) * 100; </script> <div class="stat-panel"> <PanelHeader icon={faMemory} title="Memory" usageValue={formatPercentage(memoryPercentage)} /> <div class="stats-content"> <div class="stat-item with-progress"> <ProgressBar label="Memory usage" value={memoryPercentage} labelWidth="5rem" valueWidth="2.5rem" /> </div> <StatItem label="Total" value={formatMemorySize(memoryTotal)} /> <StatItem label="Used" value={formatMemorySize(memoryUsed)} /> <StatItem label="Free" value={formatMemorySize(memoryFree)} /> </div> </div> <style> .stat-panel { flex: 2; min-width: 0; background-color: var(--mantle); border-radius: 6px; padding: 0.75rem; display: flex; flex-direction: column; } .stats-content { display: flex; flex-direction: column; gap: 0.4rem; } .stat-item.with-progress { display: flex; flex-direction: column; gap: 0.2rem; } </style>