<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/monokai-sublime.min.css" integrity="sha512-ade8vHOXH67Cm9z/U2vBpckPD1Enhdxl3N05ChXyFx5xikfqggrK4RrEele+VWY/iaZyfk7Bhk6CyZvlh7+5JQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
🌾 ng-oatv0.6.0Angular UI library

Dashboard

A stats-and-table admin dashboard with KPI cards, a progress bar, and a recent-orders table.

Preview

Revenue

$24,780

+12%
Orders

1,245

+8%
Customers

862

+2%
Conversion

3.2%

-0.4%
Monthly Sales Target
$24,780 / $30,00083%
Recent Orders
OrderCustomerAmountStatus
#1023Alice Johnson$249Delivered
#1022Bob Smith$129Shipped
#1021Carol Lee$89Processing
#1020Dan Brown$349Delivered
#1019Eve Davis$59Cancelled
html
<div class="flex flex-col gap-4">
  <div class="grid grid-cols-4">
    <div class="card">
      <small class="text-muted">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="flex flex-col gap-2">
      <div class="flex flex-wrap items-center gap-4 justify-between">
        <span>$24,780 / $30,000</span>
        <span class="text-muted">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 } from '@letsprogram/ng-oat/badge';
import { NgOatProgress } from '@letsprogram/ng-oat/progress';

@Component({
  selector: 'app-dashboard',
  imports: [NgOatBadge, NgOatProgress],
  template: `
    <div class="flex flex-col gap-4">
      <div class="grid grid-cols-4">
        <div class="card">
          <small class="text-muted">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-muted">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-muted">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-muted">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="flex flex-col gap-2">
          <div class="flex flex-wrap items-center gap-4 justify-between">
            <span>\$24,780 / \$30,000</span>
            <span class="text-muted">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 {}