HomeDashboardBuild a Simple Admin Panel with HTML and CSS

Build a Simple Admin Panel with HTML and CSS

An admin panel is a crucial part of any web application, allowing users to manage data, track statistics, and perform administrative tasks. Whether you’re building an e-commerce dashboard, a CMS, or a business analytics tool, having a well-structured admin panel enhances productivity and user experience.

In this guide, we will walk you through the process of building an admin panel with HTML and CSS. You’ll learn how to create a visually appealing and functional interface with a sidebar menu, statistics cards, and a responsive layout—all without using complex frameworks or JavaScript.

Why Build an Admin Panel with HTML and CSS?

Using HTML and CSS to build an admin panel offers several advantages:

  • Lightweight and Fast: No need for heavy JavaScript libraries, making it quick and responsive.
  • Customizable UI: Full control over the design, colors, and layout.
  • Mobile-Friendly: CSS media queries ensure a responsive design that works across devices.
  • Beginner-Friendly: A great project to practice frontend development skills.

Essential Features of an Admin Panel

Before building your admin panel, let’s look at some must-have features:

1. Sidebar Navigation

A sidebar provides easy access to different sections, such as:

  • Dashboard
  • Users
  • Products
  • Orders
  • Reports & Analytics
  • Settings

2. Header with Search and Notifications

A top header enhances user navigation and includes elements like:

  • A search bar for quick data lookup
  • Notifications and messages for real-time alerts
  • User profile section for managing account settings

3. Dashboard with Statistics Cards

The dashboard should display key metrics using statistic cards. Examples:

  • Total Users: Displays the number of registered users.
  • Total Revenue: Shows sales figures.
  • Total Orders: Tracks completed and pending orders.
  • Conversion Rate: Helps analyze business growth.

4. Recent Orders Table

A data table displaying the latest transactions or user activities is an essential part of any admin panel. It should include:

  • Order ID
  • Customer Name
  • Date
  • Amount
  • Status (Completed, Pending, Cancelled)

5. Responsive Design

A good admin panel should be mobile-friendly, ensuring that it works on different screen sizes.

Steps to Create an Admin Panel with HTML and CSS

Step 1: Set Up the Basic Layout

Start by structuring your admin panel using HTML divs and containers. Organize the sidebar, header, and main content sections properly.

Step 2: Design the Sidebar Menu

Use CSS Flexbox to create a modern and easy-to-navigate sidebar. Add icons and highlight active menu items for a better user experience.

Step 3: Style the Dashboard and Cards

Apply CSS to make statistic cards visually appealing. Use background colors, box shadows, and hover effects for a clean and modern look.

Step 4: Add a Table for Recent Orders

Use CSS to style tables neatly so that they remain readable on all devices. Add hover effects and buttons for actions like viewing details.

Step 5: Make It Responsive

Use CSS media queries to ensure the admin panel adapts to different screen sizes. A collapsible sidebar for mobile screens improves usability.

For more CSS best practices, check out W3Schools.

Best Practices for Building an Admin Panel

Here are some tips to enhance the UI and usability of your admin panel:

  • Use a Clean Design: Avoid clutter by keeping the UI simple and easy to navigate.
  • Choose a Consistent Color Scheme: Use a professional palette that suits the application.
  • Add Hover and Click Effects: Improve user interaction with smooth transitions and animations.
  • Ensure Readability: Use clear fonts and proper spacing for better content visibility.
  • Optimize for Speed: Minimize excessive CSS styles and optimize images for a faster dashboard.

Source code

If you like this design, then feel free to use it. Copy the code by clicking on Copy button provided below. First, you have to create two files. One of them is HTML and the other is JS after creating these files, paste the code provided below.

HTML Code

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Admin Dashboard</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"
    />
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"
    />
    <link
      href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap"
      rel="stylesheet"
    />
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="container">
      <!-- Sidebar -->
      <div class="sidebar">
        <div class="logo">
          <h1>Admin<span>Panel</span></h1>
        </div>
        <div class="nav-menu">
          <div class="menu-heading">Main</div>
          <div class="nav-item active">
            <i class="fas fa-chart-pie"></i>
            <span>Dashboard</span>
          </div>
          <div class="nav-item">
            <i class="fas fa-users"></i>
            <span>Users</span>
          </div>
          <div class="nav-item">
            <i class="fas fa-box"></i>
            <span>Products</span>
          </div>
          <div class="nav-item">
            <i class="fas fa-shopping-cart"></i>
            <span>Orders</span>
          </div>

          <div class="menu-heading">Reports</div>
          <div class="nav-item">
            <i class="fas fa-chart-line"></i>
            <span>Analytics</span>
          </div>
          <div class="nav-item">
            <i class="fas fa-coins"></i>
            <span>Sales</span>
          </div>

          <div class="menu-heading">Admin</div>
          <div class="nav-item">
            <i class="fas fa-cog"></i>
            <span>Settings</span>
          </div>
          <div class="nav-item">
            <i class="fas fa-bell"></i>
            <span>Notifications</span>
          </div>
          <div class="nav-item">
            <i class="fas fa-shield-alt"></i>
            <span>Security</span>
          </div>
        </div>
      </div>

      <!-- Header -->
      <div class="header">
        <div class="search-bar">
          <i class="fas fa-search"></i>
          <input type="text" placeholder="Search..." />
        </div>
        <div class="header-actions">
          <div class="notification">
            <i class="fas fa-bell"></i>
            <div class="badge">3</div>
          </div>
          <div class="notification">
            <i class="fas fa-envelope"></i>
            <div class="badge">5</div>
          </div>
          <div class="user-profile">
            <div class="profile-img">JD</div>
            <div class="user-info">
              <div class="user-name">John Doe</div>
              <div class="user-role">Administrator</div>
            </div>
          </div>
        </div>
      </div>

      <!-- Main Content -->
      <div class="main-content">
        <div class="page-title">
          <div class="title">Dashboard</div>
          <div class="action-buttons">
            <button class="btn btn-outline">
              <i class="fas fa-download"></i>
              Export
            </button>
            <button class="btn btn-primary">
              <i class="fas fa-plus"></i>
              Add New
            </button>
          </div>
        </div>

        <!-- Stats Cards -->
        <div class="stats-cards">
          <div class="stat-card">
            <div class="card-header">
              <div>
                <div class="card-value">1,504</div>
                <div class="card-label">Total Users</div>
              </div>
              <div class="card-icon purple">
                <i class="fas fa-users"></i>
              </div>
            </div>
            <div class="card-change positive">
              <i class="fas fa-arrow-up"></i>
              <span>12.5% from last month</span>
            </div>
          </div>

          <div class="stat-card">
            <div class="card-header">
              <div>
                <div class="card-value">$12,750</div>
                <div class="card-label">Total Revenue</div>
              </div>
              <div class="card-icon blue">
                <i class="fas fa-dollar-sign"></i>
              </div>
            </div>
            <div class="card-change positive">
              <i class="fas fa-arrow-up"></i>
              <span>8.2% from last month</span>
            </div>
          </div>

          <div class="stat-card">
            <div class="card-header">
              <div>
                <div class="card-value">324</div>
                <div class="card-label">Total Orders</div>
              </div>
              <div class="card-icon green">
                <i class="fas fa-shopping-cart"></i>
              </div>
            </div>
            <div class="card-change negative">
              <i class="fas fa-arrow-down"></i>
              <span>3.1% from last month</span>
            </div>
          </div>

          <div class="stat-card">
            <div class="card-header">
              <div>
                <div class="card-value">85%</div>
                <div class="card-label">Conversion Rate</div>
              </div>
              <div class="card-icon orange">
                <i class="fas fa-chart-line"></i>
              </div>
            </div>
            <div class="card-change positive">
              <i class="fas fa-arrow-up"></i>
              <span>4.6% from last month</span>
            </div>
          </div>
        </div>

        <!-- Recent Orders -->
        <div class="table-card">
          <div class="card-title">
            <h3><i class="fas fa-shopping-bag"></i> Recent Orders</h3>
            <button class="btn btn-outline btn-sm">
              <i class="fas fa-eye"></i> View All
            </button>
          </div>
          <table class="data-table">
            <thead>
              <tr>
                <th>Order ID</th>
                <th>Customer</th>
                <th>Date</th>
                <th>Amount</th>
                <th>Status</th>
                <th>Actions</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>#ORD-001</td>
                <td>John Smith</td>
                <td>15 Mar 2025</td>
                <td>$125.00</td>
                <td>
                  <span class="status active"
                    ><i class="fas fa-check-circle"></i> Completed</span
                  >
                </td>
                <td>
                  <button class="btn btn-outline btn-sm">
                    <i class="fas fa-eye"></i> View
                  </button>
                </td>
              </tr>
              <tr>
                <td>#ORD-002</td>
                <td>Emma Johnson</td>
                <td>14 Mar 2025</td>
                <td>$245.99</td>
                <td>
                  <span class="status pending"
                    ><i class="fas fa-clock"></i> Pending</span
                  >
                </td>
                <td>
                  <button class="btn btn-outline btn-sm">
                    <i class="fas fa-eye"></i> View
                  </button>
                </td>
              </tr>
              <tr>
                <td>#ORD-003</td>
                <td>Michael Brown</td>
                <td>13 Mar 2025</td>
                <td>$79.50</td>
                <td>
                  <span class="status active"
                    ><i class="fas fa-check-circle"></i> Completed</span
                  >
                </td>
                <td>
                  <button class="btn btn-outline btn-sm">
                    <i class="fas fa-eye"></i> View
                  </button>
                </td>
              </tr>
              <tr>
                <td>#ORD-004</td>
                <td>Sarah Davis</td>
                <td>12 Mar 2025</td>
                <td>$350.00</td>
                <td>
                  <span class="status cancelled"
                    ><i class="fas fa-times-circle"></i> Cancelled</span
                  >
                </td>
                <td>
                  <button class="btn btn-outline btn-sm">
                    <i class="fas fa-eye"></i> View
                  </button>
                </td>
              </tr>
              <tr>
                <td>#ORD-005</td>
                <td>David Wilson</td>
                <td>11 Mar 2025</td>
                <td>$185.25</td>
                <td>
                  <span class="status active"
                    ><i class="fas fa-check-circle"></i> Completed</span
                  >
                </td>
                <td>
                  <button class="btn btn-outline btn-sm">
                    <i class="fas fa-eye"></i> View
                  </button>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
    </div>
  </body>
</html>

CSS Code

:root {
  --primary: #3a0ca3;
  --primary-light: #4361ee;
  --secondary: #7209b7;
  --success: #4cc9f0;
  --danger: #f72585;
  --warning: #f8961e;
  --info: #4895ef;
  --dark: #1a1a2e;
  --light: #f8f9fa;
  --border: #e9ecef;
  --text: #2d3748;
  --text-light: #718096;
  --shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1),
    0 4px 6px -2px rgba(0, 0, 0, 0.05);
  --shadow-sm: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
  --shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1),
    0 10px 10px -5px rgba(0, 0, 0, 0.04);
  --radius: 10px;
  --radius-sm: 6px;
  --sidebar-width: 260px;
  --header-height: 70px;
  --transition: all 0.3s ease;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: "Poppins", sans-serif;
}

body {
  background-color: #f5f7fb;
  color: var(--text);
  overflow-x: hidden;
}

/* Custom Scrollbar */
::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}

::-webkit-scrollbar-track {
  background: #f1f1f1;
}

::-webkit-scrollbar-thumb {
  background: var(--primary-light);
  border-radius: 10px;
}

::-webkit-scrollbar-thumb:hover {
  background: var(--primary);
}

/* Layout */
.container {
  display: grid;
  grid-template-columns: var(--sidebar-width) 1fr;
  grid-template-rows: var(--header-height) 1fr;
  min-height: 100vh;
}

/* Sidebar */
.sidebar {
  grid-row: 1 / 3;
  background: linear-gradient(180deg, var(--dark) 0%, #16213e 100%);
  color: white;
  overflow-y: auto;
  transition: var(--transition);
  box-shadow: var(--shadow);
  z-index: 1000;
  position: relative;
}

.sidebar::before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  width: 1px;
  background: linear-gradient(to bottom, rgba(255, 255, 255, 0.1), transparent);
}

.logo {
  padding: 24px 20px;
  text-align: center;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  margin-bottom: 10px;
}

.logo h1 {
  font-size: 26px;
  font-weight: 700;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  letter-spacing: 0.5px;
}

.logo span {
  color: var(--primary-light);
  background: linear-gradient(45deg, var(--primary-light), var(--success));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  margin-left: 4px;
}

.nav-menu {
  padding: 10px 0;
}

.menu-heading {
  padding: 16px 25px 8px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1.2px;
  color: rgba(255, 255, 255, 0.5);
  font-weight: 500;
}

.nav-item {
  padding: 12px 25px;
  display: flex;
  align-items: center;
  cursor: pointer;
  transition: var(--transition);
  border-left: 4px solid transparent;
  margin: 4px 0;
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  position: relative;
  overflow: hidden;
}

.nav-item::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(255, 255, 255, 0.2),
    transparent
  );
  transition: var(--transition);
}

.nav-item:hover::after {
  width: 100%;
}

.nav-item:hover,
.nav-item.active {
  background-color: rgba(255, 255, 255, 0.07);
  border-left-color: var(--primary-light);
}

.nav-item.active {
  background: linear-gradient(90deg, rgba(67, 97, 238, 0.2), transparent);
  font-weight: 500;
}

.nav-item i {
  width: 24px;
  margin-right: 12px;
  font-size: 18px;
  text-align: center;
  transition: var(--transition);
}

.nav-item:hover i {
  transform: translateY(-2px);
}

/* Header */
.header {
  grid-column: 2;
  background-color: white;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 30px;
  box-shadow: var(--shadow-sm);
  z-index: 100;
  position: sticky;
  top: 0;
}

.search-bar {
  display: flex;
  align-items: center;
  background-color: var(--light);
  border-radius: 50px;
  padding: 8px 18px;
  flex: 0 0 420px;
  transition: var(--transition);
  border: 1px solid transparent;
}

.search-bar:focus-within {
  box-shadow: 0 0 0 2px rgba(67, 97, 238, 0.1);
  border-color: rgba(67, 97, 238, 0.3);
}

.search-bar input {
  border: none;
  background: transparent;
  outline: none;
  width: 100%;
  padding: 6px 10px;
  color: var(--text);
  font-size: 14px;
}

.search-bar i {
  color: var(--text-light);
  font-size: 16px;
}

.header-actions {
  display: flex;
  align-items: center;
}

.notification {
  position: relative;
  margin: 0 15px;
  cursor: pointer;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  transition: var(--transition);
}

.notification:hover {
  background-color: rgba(67, 97, 238, 0.1);
}

.notification i {
  font-size: 18px;
  color: var(--text-light);
  transition: var(--transition);
}

.notification:hover i {
  color: var(--primary);
  transform: translateY(-2px);
}

.notification .badge {
  position: absolute;
  top: 3px;
  right: 3px;
  background-color: var(--danger);
  color: white;
  border-radius: 50%;
  width: 18px;
  height: 18px;
  font-size: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 3px 6px rgba(247, 37, 133, 0.2);
  border: 2px solid white;
  font-weight: 600;
}

.user-profile {
  display: flex;
  align-items: center;
  cursor: pointer;
  padding: 6px 10px;
  border-radius: var(--radius);
  transition: var(--transition);
  margin-left: 10px;
}

.user-profile:hover {
  background-color: rgba(67, 97, 238, 0.05);
}

.profile-img {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--secondary), var(--primary));
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-weight: 600;
  margin-right: 12px;
  box-shadow: 0 3px 8px rgba(67, 97, 238, 0.2);
  font-size: 16px;
}

.user-info {
  display: flex;
  flex-direction: column;
}

.user-name {
  font-weight: 600;
  font-size: 14px;
}

.user-role {
  font-size: 12px;
  color: var(--text-light);
}

/* Main Content */
.main-content {
  grid-column: 2;
  padding: 25px 30px;
  overflow-y: auto;
}

.page-title {
  margin-bottom: 30px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  animation: fadeIn 0.5s ease;
}

.title {
  font-size: 28px;
  font-weight: 700;
  color: var(--dark);
  position: relative;
  padding-bottom: 10px;
}

.title::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 40px;
  height: 3px;
  background: linear-gradient(90deg, var(--primary), var(--primary-light));
  border-radius: 10px;
}

.action-buttons .btn {
  margin-left: 12px;
}

/* Dashboard Cards */
.stats-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 25px;
  margin-bottom: 30px;
  animation: fadeInUp 0.6s ease;
}

.stat-card {
  background-color: white;
  border-radius: var(--radius);
  padding: 28px;
  box-shadow: var(--shadow-sm);
  transition: all 0.4s ease;
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(0, 0, 0, 0.03);
}

.stat-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 6px;
  height: 100%;
  opacity: 0.8;
  transition: var(--transition);
}

.stat-card:nth-child(1)::before {
  background: linear-gradient(to bottom, var(--primary), var(--primary-light));
}

.stat-card:nth-child(2)::before {
  background: linear-gradient(to bottom, var(--info), var(--success));
}

.stat-card:nth-child(3)::before {
  background: linear-gradient(to bottom, var(--success), #36d399);
}

.stat-card:nth-child(4)::before {
  background: linear-gradient(to bottom, var(--warning), #ffbd59);
}

.stat-card:hover {
  transform: translateY(-7px);
  box-shadow: var(--shadow);
}

.card-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 18px;
}

.card-icon {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  color: white;
  box-shadow: 0 6px 10px rgba(0, 0, 0, 0.1);
  transition: var(--transition);
}

.stat-card:hover .card-icon {
  transform: scale(1.1);
}

.card-icon.purple {
  background: linear-gradient(135deg, var(--primary), var(--secondary));
}

.card-icon.blue {
  background: linear-gradient(135deg, var(--info), #4cc9f0);
}

.card-icon.green {
  background: linear-gradient(135deg, var(--success), #36d399);
}

.card-icon.orange {
  background: linear-gradient(135deg, var(--warning), #ffbd59);
}

.card-value {
  font-size: 32px;
  font-weight: 700;
  margin-bottom: 6px;
  transition: var(--transition);
}

.stat-card:hover .card-value {
  color: var(--primary);
}

.card-label {
  color: var(--text-light);
  font-size: 15px;
  font-weight: 500;
}

.card-change {
  display: flex;
  align-items: center;
  font-size: 14px;
  padding: 8px 0 0;
  font-weight: 500;
}

.card-change i {
  margin-right: 6px;
  font-size: 16px;
}

.card-change.positive {
  color: var(--success);
}

.card-change.negative {
  color: var(--danger);
}

/* Data Table */
.table-card {
  background-color: white;
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  margin-bottom: 25px;
  animation: fadeInUp 0.7s ease;
  border: 1px solid rgba(0, 0, 0, 0.03);
}

.card-title {
  padding: 24px;
  border-bottom: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: rgba(248, 249, 250, 0.5);
}

.card-title h3 {
  font-size: 19px;
  font-weight: 600;
  display: flex;
  align-items: center;
}

.card-title h3 i {
  margin-right: 10px;
  color: var(--primary);
}

.data-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
}

.data-table th,
.data-table td {
  padding: 16px 24px;
  text-align: left;
}

.data-table th {
  font-weight: 600;
  color: var(--text);
  background-color: #f8f9fa;
  position: sticky;
  top: 0;
  box-shadow: 0 1px 0 0 var(--border);
}

.data-table th:first-child {
  border-top-left-radius: 8px;
}

.data-table th:last-child {
  border-top-right-radius: 8px;
}

.data-table td {
  border-bottom: 1px solid var(--border);
}

.data-table tr:last-child td {
  border-bottom: none;
}

.data-table tbody tr {
  transition: var(--transition);
}

.data-table tbody tr:hover {
  background-color: rgba(67, 97, 238, 0.03);
  transform: translateY(-1px);
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.04);
}

.status {
  padding: 6px 14px;
  border-radius: 50px;
  font-size: 13px;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  line-height: 1;
}

.status i {
  margin-right: 6px;
  font-size: 12px;
}

.status.active {
  background-color: rgba(76, 201, 240, 0.15);
  color: #0891b2;
  border: 1px solid rgba(76, 201, 240, 0.3);
}

.status.pending {
  background-color: rgba(248, 150, 30, 0.15);
  color: #d97706;
  border: 1px solid rgba(248, 150, 30, 0.3);
}

.status.cancelled {
  background-color: rgba(247, 37, 133, 0.15);
  color: #db2777;
  border: 1px solid rgba(247, 37, 133, 0.3);
}

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 10px 20px;
  border-radius: var(--radius);
  font-weight: 500;
  cursor: pointer;
  transition: all 0.3s;
  border: none;
  outline: none;
  font-size: 14px;
  letter-spacing: 0.3px;
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.08);
  position: relative;
  overflow: hidden;
}

.btn::after {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: -100%;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(255, 255, 255, 0.2),
    transparent
  );
  transition: 0.5s;
}

.btn:hover::after {
  left: 100%;
}

.btn i {
  margin-right: 8px;
  font-size: 16px;
  transition: var(--transition);
}

.btn:hover i {
  transform: translateX(2px);
}

.btn-primary {
  background: linear-gradient(135deg, var(--primary), var(--primary-light));
  color: white;
}

.btn-primary:hover {
  background: linear-gradient(135deg, var(--secondary), var(--primary));
  transform: translateY(-2px);
  box-shadow: 0 6px 15px rgba(58, 12, 163, 0.2);
}

.btn-outline {
  border: 2px solid var(--primary-light);
  color: var(--primary);
  background-color: transparent;
}

.btn-outline:hover {
  background-color: var(--primary);
  color: white;
  border-color: var(--primary);
  transform: translateY(-2px);
  box-shadow: 0 6px 15px rgba(58, 12, 163, 0.2);
}

.btn-sm {
  padding: 7px 14px;
  font-size: 13px;
  border-radius: var(--radius-sm);
}

/* Animations */
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Media Queries */
@media (max-width: 1200px) {
  .stats-cards {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 992px) {
  .container {
    grid-template-columns: 0 1fr;
  }

  .sidebar {
    transform: translateX(-100%);
    position: fixed;
    height: 100vh;
    z-index: 1001;
  }

  .sidebar.active {
    transform: translateX(0);
    box-shadow: var(--shadow-lg);
  }

  .header {
    padding: 0 20px;
  }

  .main-content {
    padding: 20px;
  }
}

@media (max-width: 768px) {
  .search-bar {
    display: none;
  }

  .stats-cards {
    grid-template-columns: 1fr;
  }

  .user-role {
    display: none;
  }

  .data-table th,
  .data-table td {
    padding: 15px;
  }

  .title {
    font-size: 24px;
  }
}

@media (max-width: 576px) {
  .header-actions {
    margin-left: auto;
  }

  .notification {
    margin: 0 8px;
  }

  .user-info {
    display: none;
  }

  .profile-img {
    margin-right: 0;
  }

  .action-buttons {
    display: flex;
    flex-direction: column;
  }

  .action-buttons .btn {
    margin: 5px 0;
  }
}
.fas {
  font-size: 18px;
}

Conclusion

Building an admin panel with HTML and CSS is an excellent way to create a functional and stylish dashboard without relying on complex libraries. By following the steps outlined in this guide, you can develop a responsive and user-friendly admin panel tailored to your needs.

Whether you’re managing an e-commerce store, business analytics, or a content management system, a well-designed admin panel improves workflow and data management.

 

RELATED ARTICLES

Most Popular