widgets
intermediate
dashboard
widgets
statistics
charts
analytics
responsive
Category · Widgets Difficulty Level · Intermediate Published on · August 18, 2025

Dashboard Widgets

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

#dashboard #widgets #statistics #charts #analytics #responsive

Responsive Design

Yes

Dark Mode Support

No

lines

971

Browser Compatibility

Chrome · Firefox · Safari · Edge

Live Preview

Interact with the component without leaving the page.

700px

Overview

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

How to use

  1. Copy the HTML markup into your page.
  2. Paste the CSS into your stylesheet and ensure the selectors match your markup.
  3. Paste the JavaScript and load it after the markup.
  4. Adjust spacing, colors, and text to match your design system.

Customization tips

  • Rename class names to avoid collisions with your existing CSS.
  • Replace hard-coded colors with CSS variables for theming.
  • Verify the layout at 320px, 768px, and 1024px widths.

HTML

276

lines

CSS

495

lines

JavaScript

200

lines


                <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>
  
  
  <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>
  
  
  <div class="widgets-grid">
    
    <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>
    
    
    <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>
    
    
    <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>
    
    
    <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>

              
276lines
11404characters
HTMLLanguage

Browser Compatibility

Chrome

>= 60

Firefox

>= 55

Safari

>= 10

Edge

>= 15

Related Code Snippets

Explore template packs

Need larger building blocks? Browse responsive landing pages and component bundles.

Open HTML Template Library ->