Dashboard Widgets

Intermediate

Modern dashboard widgets collection with statistics cards, charts, progress bars, and interactive elements.

Live Preview

Code Implementation

HTML
<div class="dashboard-container">
  <div class="dashboard-header">
    <h1 class="dashboard-title">Analytics Dashboard</h1>
    <div class="dashboard-actions">
      <button class="refresh-btn" id="refreshBtn">
        <svg viewBox="0 0 24 24" fill="currentColor">
          <path d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"/>
        </svg>
        Refresh
      </button>
      <select class="time-filter" id="timeFilter">
        <option value="7d">Last 7 days</option>
        <option value="30d" selected>Last 30 days</option>
        <option value="90d">Last 90 days</option>
      </select>
    </div>
  </div>
  
  <!-- Statistics Cards -->
  <div class="stats-grid">
    <div class="stat-card revenue">
      <div class="stat-icon">
        <svg viewBox="0 0 24 24" fill="currentColor">
          <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1.41 16.09V20h-2.67v-1.93c-1.71-.36-3.16-1.46-3.27-3.4h1.96c.1 1.05.82 1.87 2.65 1.87 1.96 0 2.4-.98 2.4-1.59 0-.83-.44-1.61-2.67-2.14-2.48-.6-4.18-1.62-4.18-3.67 0-1.72 1.39-2.84 3.11-3.21V4h2.67v1.95c1.86.45 2.79 1.86 2.85 3.39H14.3c-.05-1.11-.64-1.87-2.22-1.87-1.5 0-2.4.68-2.4 1.64 0 .84.65 1.39 2.67 1.91s4.18 1.39 4.18 3.91c-.01 1.83-1.38 2.83-3.12 3.16z"/>
        </svg>
      </div>
      <div class="stat-content">
        <h3 class="stat-title">Total Revenue</h3>
        <div class="stat-value" data-value="45231">$0</div>
        <div class="stat-change positive">
          <svg viewBox="0 0 24 24" fill="currentColor">
            <path d="M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6z"/>
          </svg>
          <span>+12.5%</span>
        </div>
      </div>
    </div>
    
    <div class="stat-card users">
      <div class="stat-icon">
        <svg viewBox="0 0 24 24" fill="currentColor">
          <path d="M16 4c0-1.11.89-2 2-2s2 .89 2 2-.89 2-2 2-2-.89-2-2zm4 18v-6h2.5l-2.54-7.63A1.5 1.5 0 0 0 18.54 8H16c-.8 0-1.54.37-2 1l-3.72 5.6L8 11.25V4c0-.55-.45-1-1-1s-1 .45-1 1v8l4.05 2.4L6.6 18H10v4h10z"/>
        </svg>
      </div>
      <div class="stat-content">
        <h3 class="stat-title">Active Users</h3>
        <div class="stat-value" data-value="12847">0</div>
        <div class="stat-change positive">
          <svg viewBox="0 0 24 24" fill="currentColor">
            <path d="M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6z"/>
          </svg>
          <span>+8.2%</span>
        </div>
      </div>
    </div>
    
    <div class="stat-card orders">
      <div class="stat-icon">
        <svg viewBox="0 0 24 24" fill="currentColor">
          <path d="M7 4V2C7 1.45 7.45 1 8 1h8c.55 0 1 .45 1 1v2h4c.55 0 1 .45 1 1s-.45 1-1 1h-1v11c0 1.1-.9 2-2 2H6c-1.1 0-2-.9-2-2V6H3c-.55 0-1-.45-1-1s.45-1 1-1h4zM9 3v1h6V3H9zm0 5v8h2V8H9zm4 0v8h2V8h-2z"/>
        </svg>
      </div>
      <div class="stat-content">
        <h3 class="stat-title">Orders</h3>
        <div class="stat-value" data-value="3456">0</div>
        <div class="stat-change negative">
          <svg viewBox="0 0 24 24" fill="currentColor">
            <path d="M16 18l2.29-2.29-4.88-4.88-4 4L2 7.41 3.41 6l6 6 4-4 6.3 6.29L22 12v6z"/>
          </svg>
          <span>-2.1%</span>
        </div>
      </div>
    </div>
    
    <div class="stat-card conversion">
      <div class="stat-icon">
        <svg viewBox="0 0 24 24" fill="currentColor">
          <path d="M9 11H7v6h2v-6zm4 0h-2v6h2v-6zm4 0h-2v6h2v-6zm2.5-5H19V4h-3V2h-2v2H8V2H6v2H3v2h1.5v14h15V6z"/>
        </svg>
      </div>
      <div class="stat-content">
        <h3 class="stat-title">Conversion Rate</h3>
        <div class="stat-value" data-value="3.24">0%</div>
        <div class="stat-change positive">
          <svg viewBox="0 0 24 24" fill="currentColor">
            <path d="M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6z"/>
          </svg>
          <span>+0.3%</span>
        </div>
      </div>
    </div>
  </div>
  
  <!-- Charts and Progress Section -->
  <div class="widgets-grid">
    <!-- Revenue Chart -->
    <div class="widget chart-widget">
      <div class="widget-header">
        <h3 class="widget-title">Revenue Trend</h3>
        <div class="widget-actions">
          <button class="widget-btn" data-period="week">Week</button>
          <button class="widget-btn active" data-period="month">Month</button>
          <button class="widget-btn" data-period="year">Year</button>
        </div>
      </div>
      <div class="chart-container">
        <canvas id="revenueChart" width="400" height="200"></canvas>
      </div>
    </div>
    
    <!-- Progress Widgets -->
    <div class="widget progress-widget">
      <div class="widget-header">
        <h3 class="widget-title">Goals Progress</h3>
      </div>
      <div class="progress-list">
        <div class="progress-item">
          <div class="progress-info">
            <span class="progress-label">Monthly Sales</span>
            <span class="progress-value">$32,450 / $50,000</span>
          </div>
          <div class="progress-bar">
            <div class="progress-fill" data-progress="65"></div>
          </div>
          <span class="progress-percentage">65%</span>
        </div>
        
        <div class="progress-item">
          <div class="progress-info">
            <span class="progress-label">New Customers</span>
            <span class="progress-value">847 / 1,000</span>
          </div>
          <div class="progress-bar">
            <div class="progress-fill" data-progress="85"></div>
          </div>
          <span class="progress-percentage">85%</span>
        </div>
        
        <div class="progress-item">
          <div class="progress-info">
            <span class="progress-label">Product Views</span>
            <span class="progress-value">12,847 / 15,000</span>
          </div>
          <div class="progress-bar">
            <div class="progress-fill" data-progress="86"></div>
          </div>
          <span class="progress-percentage">86%</span>
        </div>
        
        <div class="progress-item">
          <div class="progress-info">
            <span class="progress-label">Support Tickets</span>
            <span class="progress-value">23 / 50</span>
          </div>
          <div class="progress-bar">
            <div class="progress-fill" data-progress="46"></div>
          </div>
          <span class="progress-percentage">46%</span>
        </div>
      </div>
    </div>
    
    <!-- Activity Feed -->
    <div class="widget activity-widget">
      <div class="widget-header">
        <h3 class="widget-title">Recent Activity</h3>
        <button class="widget-btn">View All</button>
      </div>
      <div class="activity-list">
        <div class="activity-item">
          <div class="activity-icon new-user">
            <svg viewBox="0 0 24 24" fill="currentColor">
              <path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/>
            </svg>
          </div>
          <div class="activity-content">
            <p class="activity-text">New user <strong>John Doe</strong> registered</p>
            <span class="activity-time">2 minutes ago</span>
          </div>
        </div>
        
        <div class="activity-item">
          <div class="activity-icon order">
            <svg viewBox="0 0 24 24" fill="currentColor">
              <path d="M7 18c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12L8.1 13h7.45c.75 0 1.41-.41 1.75-1.03L21.7 4H5.21l-.94-2H1zm16 16c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/>
            </svg>
          </div>
          <div class="activity-content">
            <p class="activity-text">Order <strong>#12847</strong> completed</p>
            <span class="activity-time">5 minutes ago</span>
          </div>
        </div>
        
        <div class="activity-item">
          <div class="activity-icon payment">
            <svg viewBox="0 0 24 24" fill="currentColor">
              <path d="M20 4H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z"/>
            </svg>
          </div>
          <div class="activity-content">
            <p class="activity-text">Payment of <strong>$2,450</strong> received</p>
            <span class="activity-time">12 minutes ago</span>
          </div>
        </div>
        
        <div class="activity-item">
          <div class="activity-icon alert">
            <svg viewBox="0 0 24 24" fill="currentColor">
              <path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"/>
            </svg>
          </div>
          <div class="activity-content">
            <p class="activity-text">Server maintenance scheduled</p>
            <span class="activity-time">1 hour ago</span>
          </div>
        </div>
      </div>
    </div>
    
    <!-- Quick Stats -->
    <div class="widget quick-stats-widget">
      <div class="widget-header">
        <h3 class="widget-title">Quick Stats</h3>
      </div>
      <div class="quick-stats-grid">
        <div class="quick-stat">
          <div class="quick-stat-icon">
            <svg viewBox="0 0 24 24" fill="currentColor">
              <path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/>
            </svg>
          </div>
          <div class="quick-stat-content">
            <div class="quick-stat-value">4.8</div>
            <div class="quick-stat-label">Rating</div>
          </div>
        </div>
        
        <div class="quick-stat">
          <div class="quick-stat-icon">
            <svg viewBox="0 0 24 24" fill="currentColor">
              <path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z"/>
            </svg>
          </div>
          <div class="quick-stat-content">
            <div class="quick-stat-value">156</div>
            <div class="quick-stat-label">Reports</div>
          </div>
        </div>
        
        <div class="quick-stat">
          <div class="quick-stat-icon">
            <svg viewBox="0 0 24 24" fill="currentColor">
              <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
            </svg>
          </div>
          <div class="quick-stat-content">
            <div class="quick-stat-value">98%</div>
            <div class="quick-stat-label">Uptime</div>
          </div>
        </div>
        
        <div class="quick-stat">
          <div class="quick-stat-icon">
            <svg viewBox="0 0 24 24" fill="currentColor">
              <path d="M13 2.05v3.03c3.39.49 6 3.39 6 6.92 0 .9-.18 1.75-.48 2.54l2.6 1.53c.56-1.24.88-2.62.88-4.07 0-5.18-3.95-9.45-9-9.95zM12 19c-3.87 0-7-3.13-7-7 0-3.53 2.61-6.43 6-6.92V2.05c-5.06.5-9 4.76-9 9.95 0 5.52 4.47 10 9.99 10 3.31 0 6.24-1.61 8.06-4.09l-2.6-1.53C16.17 17.98 14.21 19 12 19z"/>
            </svg>
          </div>
          <div class="quick-stat-content">
            <div class="quick-stat-value">2.3s</div>
            <div class="quick-stat-label">Load Time</div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

Snippet Features

Responsive Design: Yes
Dark Mode Support: No
Category: widgets
Difficulty Level: Intermediate

Browser Compatibility

🟢
chrome 60+
🟠
firefox 55+
🔵
safari 10+
🟦
edge 15+