Dashboard
A stats-and-table admin dashboard with KPI cards, a progress bar, and a recent-orders table.
Preview
Revenue+12%
$24,780
Orders+8%
1,245
Customers+2%
862
Conversion-0.4%
3.2%
$24,780 / $30,00083%
| Order | Customer | Amount | Status |
|---|---|---|---|
| #1023 | Alice Johnson | $249 | |
| #1022 | Bob Smith | $129 | |
| #1021 | Carol Lee | $89 | |
| #1020 | Dan Brown | $349 | |
| #1019 | Eve Davis | $59 |
html
<div class="vstack gap-4">
<div class="grid cols-4">
<div class="card">
<small class="text-light">Revenue</small>
<h3 class="mb-0">$24,780</h3>
<small><ng-oat-badge variant="success">+12%</ng-oat-badge></small>
</div>
<!-- ... more KPI cards -->
</div>
<div class="card">
<header><strong>Monthly Sales Target</strong></header>
<div class="vstack gap-2">
<div class="hstack justify-between">
<span>$24,780 / $30,000</span>
<span class="text-light">83%</span>
</div>
<ng-oat-progress [value]="83" />
</div>
</div>
<div class="card">
<header><strong>Recent Orders</strong></header>
<div class="table">
<table>
<thead><tr><th>Order</th><th>Customer</th><th>Amount</th><th>Status</th></tr></thead>
<tbody>
<tr>
<td>#1023</td><td>Alice Johnson</td><td>$249</td>
<td><ng-oat-badge variant="success">Delivered</ng-oat-badge></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>SFC Source
typescript
import { Component } from '@angular/core';
import { NgOatBadge, NgOatProgress } from '@letsprogram/ng-oat';
@Component({
selector: 'app-dashboard',
imports: [NgOatBadge, NgOatProgress],
template: `
<div class="vstack gap-4">
<div class="grid cols-4">
<div class="card">
<small class="text-light">Revenue</small>
<h3 class="mb-0">\$24,780</h3>
<small><ng-oat-badge variant="success">+12%</ng-oat-badge></small>
</div>
<div class="card">
<small class="text-light">Orders</small>
<h3 class="mb-0">1,245</h3>
<small><ng-oat-badge variant="success">+8%</ng-oat-badge></small>
</div>
<div class="card">
<small class="text-light">Customers</small>
<h3 class="mb-0">862</h3>
<small><ng-oat-badge variant="outline">+2%</ng-oat-badge></small>
</div>
<div class="card">
<small class="text-light">Conversion</small>
<h3 class="mb-0">3.2%</h3>
<small><ng-oat-badge variant="danger">-0.4%</ng-oat-badge></small>
</div>
</div>
<div class="card">
<header><strong>Monthly Sales Target</strong></header>
<div class="vstack gap-2">
<div class="hstack justify-between">
<span>\$24,780 / \$30,000</span>
<span class="text-light">83%</span>
</div>
<ng-oat-progress [value]="83" />
</div>
</div>
<div class="card">
<header><strong>Recent Orders</strong></header>
<div class="table">
<table>
<thead><tr><th>Order</th><th>Customer</th><th>Amount</th><th>Status</th></tr></thead>
<tbody>
<tr><td>#1023</td><td>Alice Johnson</td><td>\$249</td>
<td><ng-oat-badge variant="success">Delivered</ng-oat-badge></td></tr>
<tr><td>#1022</td><td>Bob Smith</td><td>\$129</td>
<td><ng-oat-badge variant="outline">Shipped</ng-oat-badge></td></tr>
<tr><td>#1021</td><td>Carol Lee</td><td>\$89</td>
<td><ng-oat-badge variant="secondary">Processing</ng-oat-badge></td></tr>
</tbody>
</table>
</div>
</div>
</div>
`,
})
export class DashboardComponent {}