← Components/Dashboard & App UI

KPIWidget

kpiwidget-1779386570986.tsx
'use client';

import React from 'react';

interface KPIWidgetProps {
  metric: number;
  label: string;
  target: number;
  progress: number;
  sparklineData: number[];
  periodComparison: string;
}

const KPIWidget: React.FC<KPIWidgetProps> = ({
  metric,
  label,
  target,
  progress,
  sparklineData,
  periodComparison,
}) => {
  return (
    <div className="bg-zinc-950 p-4 rounded-lg shadow-lg">
      <div className="flex flex-col items-center justify-center">
        <h2 className="text-3xl font-bold text-gold-500 mb-2">{metric}</h2>
        <p className="text-sm text-zinc-400">{label}</p>
      </div>
      <div className="mt-4">
        <p className="text-sm text-zinc-400 mb-1">Target: {target}</p>
        <div className="h-2 bg-zinc-800 rounded-lg overflow-hidden">
          <div
            style={{
              width: `${progress}%`,
              transition: 'width 0.3s ease-in-out',
            }}
            className="bg-gold-500 h-2 rounded-lg"
          />
        </div>
      </div>
      <div className="mt-4">
        <p className="text-sm text-zinc-400 mb-1">Sparkline</p>
        <div className="h-24 w-full">
          {sparklineData.map((data, index) => (
            <div
              key={index}
              style={{
                height: `${data}%`,
                transition: 'height 0.3s ease-in-out',
              }}
              className="bg-gold-500 mb-1"
            />
          ))}
        </div>
      </div>
      <div className="mt-4">
        <p className="text-sm text-zinc-400 mb-1">Period Comparison: {periodComparison}</p>
      </div>
    </div>
  );
};

const demoData: KPIWidgetProps = {
  metric: 1234,
  label: 'Metric Label',
  target: 1500,
  progress: 80,
  sparklineData: [20, 40, 60, 80, 100, 80, 60, 40, 20],
  periodComparison: '+10% vs last period',
};

export default () => <KPIWidget {...demoData} />;

Component info

CategoryDashboard & App UI
Frameworkreact
TierFREE
Views0
Copies0

About

KPI widget with mini chart and targets

More from Dashboard & App UI

'use client'
import { useState, useEffect, useRef } from 'react'

const METRICS = [
  { label: 'Monthly Revenue', value: 48320, prev: 41200, prefix: '$', suffix: '', color: '#C9A84C', data: [22,28,24,32,28,38,35,42,40,48] },
  { label: 'Active Users'
KPICards
Dashboard & App UI
import React from 'react';

interface MetricCardProps {
  value: number;
  trend: 'up' | 'down';
  sparklineData: number[];
}

const MetricCard: React.FC<MetricCardProps> = ({ value, trend, sparklineData }) => {
  return (
    <div style={{ backgroun
MetricCard
Dashboard & App UI
import React from 'react';
import './ProgressRing.css';
interface ProgressRingProps {
  percentage: number;
}
const ProgressRing: React.FC<ProgressRingProps> = ({ percentage }) => {
  const circleDashArray = 2 * Math.PI * 50;
  const circleDashOffset
ProgressRing
Dashboard & App UI
'use client'
import { useState, useEffect } from 'react'

type EventType = 'component_added' | 'user_signup' | 'purchase' | 'api_call' | 'review'

const EVENTS: { id: number; type: EventType; user: string; detail: string; time: number; color: string;
ActivityFeed
Dashboard & App UI