Table Rails Components

Clean, modern table components for displaying data in your Rails applications. These examples showcase different table styles and layouts.

If you're looking for a more interactive table component, check out the Datatable component.

Examples

Basic Table

A clean, simple table with status badges. Perfect for displaying user lists, team members, or any basic data with clear visual hierarchy.

Name Email Role Status
Alex Johnson alex@example.com Admin Active
Sarah Miller sarah@example.com Editor Active
Michael Chen michael@example.com Viewer Pending
Emily Davis emily@example.com Editor Active
James Wilson james@example.com Viewer Inactive
<div class="w-full max-w-4xl mx-auto">
  <div class="bg-white dark:bg-neutral-900 rounded-xl border border-black/10 dark:border-white/10 shadow-xs overflow-hidden">
    <div class="overflow-x-auto">
      <table class="w-full">
        <thead class="bg-neutral-100 dark:bg-neutral-800">
          <tr class="*:py-3 *:text-left *:[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:*:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <th scope="col" class="pl-6 pr-3 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Name
            </th>
            <th scope="col" class="px-3 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Email
            </th>
            <th scope="col" class="px-3 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Role
            </th>
            <th scope="col" class="pl-3 pr-6 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Status
            </th>
          </tr>
        </thead>
        <tbody class="*:*:py-4">
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Alex Johnson
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              alex@example.com
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Admin
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Active
              </span>
            </td>
          </tr>
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Sarah Miller
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              sarah@example.com
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Editor
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Active
              </span>
            </td>
          </tr>
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Michael Chen
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              michael@example.com
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Viewer
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-700 outline outline-yellow-700/20 dark:bg-yellow-400/10 dark:text-yellow-500 dark:outline-yellow-400/25">
                Pending
              </span>
            </td>
          </tr>
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Emily Davis
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              emily@example.com
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Editor
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Active
              </span>
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              James Wilson
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              james@example.com
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Viewer
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-red-50 px-2 py-1 text-xs font-medium text-red-700 outline outline-red-600/20 dark:bg-red-400/10 dark:text-red-400 dark:outline-red-400/25">
                Inactive
              </span>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</div>

Striped Table

A table with alternating row colors for improved readability. Great for product lists, inventory management, or any data where visual separation between rows helps scanning.

Product Category Price Stock
Wireless Headphones Electronics $129.99 245
Ergonomic Mouse Electronics $49.99 512
Desk Lamp Furniture $79.99 89
Notebook Set Stationery $24.99 1,024
USB-C Cable Accessories $19.99 3,456
Monitor Stand Furniture $89.99 156
<div class="w-full max-w-4xl mx-auto">
  <div class="bg-white dark:bg-neutral-900 rounded-xl border border-black/10 dark:border-white/10 shadow-xs overflow-hidden">
    <div class="overflow-x-auto">
      <table class="w-full">
        <thead class="bg-neutral-100 dark:bg-neutral-800">
          <tr class="*:py-3 *:text-left *:[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:*:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <th scope="col" class="pl-6 pr-3 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Product
            </th>
            <th scope="col" class="px-3 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Category
            </th>
            <th scope="col" class="px-3 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Price
            </th>
            <th scope="col" class="pl-3 pr-6 text-sm font-semibold text-neutral-900 dark:text-neutral-50 text-right">
              Stock
            </th>
          </tr>
        </thead>
        <tbody class="*:even:bg-neutral-50 dark:*:even:bg-neutral-800/50 *:*:py-4">
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Wireless Headphones
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Electronics
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              $129.99
            </td>
            <td class="pl-3 pr-6 text-sm text-neutral-500 dark:text-neutral-400 text-right">
              245
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Ergonomic Mouse
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Electronics
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              $49.99
            </td>
            <td class="pl-3 pr-6 text-sm text-neutral-500 dark:text-neutral-400 text-right">
              512
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Desk Lamp
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Furniture
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              $79.99
            </td>
            <td class="pl-3 pr-6 text-sm text-neutral-500 dark:text-neutral-400 text-right">
              89
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Notebook Set
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Stationery
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              $24.99
            </td>
            <td class="pl-3 pr-6 text-sm text-neutral-500 dark:text-neutral-400 text-right">
              1,024
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              USB-C Cable
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Accessories
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              $19.99
            </td>
            <td class="pl-3 pr-6 text-sm text-neutral-500 dark:text-neutral-400 text-right">
              3,456
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Monitor Stand
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Furniture
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              $89.99
            </td>
            <td class="pl-3 pr-6 text-sm text-neutral-500 dark:text-neutral-400 text-right">
              156
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</div>

Table with Avatars

A table featuring user avatars and multi-line content. Ideal for team directories, contact lists, or any interface showing people with additional details.

User Title Department Status
AJ
Alex Johnson
alex@company.com
Senior Developer Engineering Active
SM
Sarah Miller
sarah@company.com
Product Manager Product Active
MC
Michael Chen
michael@company.com
UX Designer Design Away
ED
Emily Davis
emily@company.com
Marketing Lead Marketing Active
JW
James Wilson
james@company.com
Sales Director Sales Offline
<div class="w-full max-w-5xl mx-auto">
  <div class="bg-white dark:bg-neutral-900 rounded-xl border border-black/10 dark:border-white/10 shadow-xs overflow-hidden">
    <div class="overflow-x-auto">
      <table class="w-full">
        <thead class="bg-neutral-100 dark:bg-neutral-800">
          <tr class="*:py-3 *:text-left *:[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:*:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <th scope="col" class="pl-6 pr-3 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              User
            </th>
            <th scope="col" class="px-3 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Title
            </th>
            <th scope="col" class="px-3 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Department
            </th>
            <th scope="col" class="pl-3 pr-6 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Status
            </th>
          </tr>
        </thead>
        <tbody class="*:*:py-4">
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3">
              <div class="flex items-center gap-3">
                <div class="flex-shrink-0 size-10 rounded-full bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center text-white font-semibold text-sm">
                  AJ
                </div>
                <div>
                  <div class="text-sm font-medium text-neutral-900 dark:text-neutral-100">Alex Johnson</div>
                  <div class="text-xs text-neutral-500 dark:text-neutral-400">alex@company.com</div>
                </div>
              </div>
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Senior Developer
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Engineering
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Active
              </span>
            </td>
          </tr>
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3">
              <div class="flex items-center gap-3">
                <div class="flex-shrink-0 size-10 rounded-full bg-gradient-to-br from-pink-500 to-rose-600 flex items-center justify-center text-white font-semibold text-sm">
                  SM
                </div>
                <div>
                  <div class="text-sm font-medium text-neutral-900 dark:text-neutral-100">Sarah Miller</div>
                  <div class="text-xs text-neutral-500 dark:text-neutral-400">sarah@company.com</div>
                </div>
              </div>
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Product Manager
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Product
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Active
              </span>
            </td>
          </tr>
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3">
              <div class="flex items-center gap-3">
                <div class="flex-shrink-0 size-10 rounded-full bg-gradient-to-br from-amber-500 to-orange-600 flex items-center justify-center text-white font-semibold text-sm">
                  MC
                </div>
                <div>
                  <div class="text-sm font-medium text-neutral-900 dark:text-neutral-100">Michael Chen</div>
                  <div class="text-xs text-neutral-500 dark:text-neutral-400">michael@company.com</div>
                </div>
              </div>
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              UX Designer
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Design
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-700 outline outline-yellow-700/20 dark:bg-yellow-400/10 dark:text-yellow-500 dark:outline-yellow-400/25">
                Away
              </span>
            </td>
          </tr>
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3">
              <div class="flex items-center gap-3">
                <div class="flex-shrink-0 size-10 rounded-full bg-gradient-to-br from-green-500 to-emerald-600 flex items-center justify-center text-white font-semibold text-sm">
                  ED
                </div>
                <div>
                  <div class="text-sm font-medium text-neutral-900 dark:text-neutral-100">Emily Davis</div>
                  <div class="text-xs text-neutral-500 dark:text-neutral-400">emily@company.com</div>
                </div>
              </div>
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Marketing Lead
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Marketing
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Active
              </span>
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3">
              <div class="flex items-center gap-3">
                <div class="flex-shrink-0 size-10 rounded-full bg-gradient-to-br from-cyan-500 to-blue-600 flex items-center justify-center text-white font-semibold text-sm">
                  JW
                </div>
                <div>
                  <div class="text-sm font-medium text-neutral-900 dark:text-neutral-100">James Wilson</div>
                  <div class="text-xs text-neutral-500 dark:text-neutral-400">james@company.com</div>
                </div>
              </div>
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Sales Director
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Sales
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-red-50 px-2 py-1 text-xs font-medium text-red-700 outline outline-red-600/20 dark:bg-red-400/10 dark:text-red-400 dark:outline-red-400/25">
                Offline
              </span>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</div>

Condensed Table

A compact table with uppercase headers and tighter spacing. Perfect for transaction histories, financial data, or dashboards where you need to display more rows in limited space.

Transaction ID Date Customer Amount Status
#TXN-4821 Nov 28, 2025 Acme Corp $2,450.00 Completed
#TXN-4820 Nov 28, 2025 TechStart Inc $1,299.00 Processing
#TXN-4819 Nov 27, 2025 Global Solutions $899.00 Completed
#TXN-4818 Nov 27, 2025 Creative Studios $3,750.00 Completed
#TXN-4817 Nov 26, 2025 Innovate Labs $599.00 Failed
#TXN-4816 Nov 26, 2025 Blueprint Co $1,850.00 Completed
#TXN-4815 Nov 25, 2025 NextGen Systems $4,200.00 Completed
<div class="w-full max-w-4xl mx-auto">
  <div class="bg-white dark:bg-neutral-900 rounded-xl border border-black/10 dark:border-white/10 shadow-xs overflow-hidden">
    <div class="overflow-x-auto">
      <table class="w-full">
        <thead class="bg-neutral-100 dark:bg-neutral-800">
          <tr class="*:py-2.5 *:text-left *:[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:*:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <th scope="col" class="pl-6 pr-3 text-xs font-semibold uppercase tracking-wider text-neutral-500 dark:text-neutral-400">
              Transaction ID
            </th>
            <th scope="col" class="px-3 text-xs font-semibold uppercase tracking-wider text-neutral-500 dark:text-neutral-400">
              Date
            </th>
            <th scope="col" class="px-3 text-xs font-semibold uppercase tracking-wider text-neutral-500 dark:text-neutral-400">
              Customer
            </th>
            <th scope="col" class="px-3 text-xs font-semibold uppercase tracking-wider text-neutral-500 dark:text-neutral-400 text-right">
              Amount
            </th>
            <th scope="col" class="pl-3 pr-6 text-xs font-semibold uppercase tracking-wider text-neutral-500 dark:text-neutral-400">
              Status
            </th>
          </tr>
        </thead>
        <tbody class="*:*:py-3">
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3 text-sm font-mono text-neutral-900 dark:text-neutral-100">
              #TXN-4821
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Nov 28, 2025
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Acme Corp
            </td>
            <td class="px-3 text-sm text-neutral-900 dark:text-neutral-100 text-right font-medium">
              $2,450.00
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Completed
              </span>
            </td>
          </tr>
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3 text-sm font-mono text-neutral-900 dark:text-neutral-100">
              #TXN-4820
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Nov 28, 2025
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              TechStart Inc
            </td>
            <td class="px-3 text-sm text-neutral-900 dark:text-neutral-100 text-right font-medium">
              $1,299.00
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-700 outline outline-yellow-700/20 dark:bg-yellow-400/10 dark:text-yellow-500 dark:outline-yellow-400/25">
                Processing
              </span>
            </td>
          </tr>
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3 text-sm font-mono text-neutral-900 dark:text-neutral-100">
              #TXN-4819
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Nov 27, 2025
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Global Solutions
            </td>
            <td class="px-3 text-sm text-neutral-900 dark:text-neutral-100 text-right font-medium">
              $899.00
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Completed
              </span>
            </td>
          </tr>
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3 text-sm font-mono text-neutral-900 dark:text-neutral-100">
              #TXN-4818
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Nov 27, 2025
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Creative Studios
            </td>
            <td class="px-3 text-sm text-neutral-900 dark:text-neutral-100 text-right font-medium">
              $3,750.00
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Completed
              </span>
            </td>
          </tr>
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3 text-sm font-mono text-neutral-900 dark:text-neutral-100">
              #TXN-4817
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Nov 26, 2025
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Innovate Labs
            </td>
            <td class="px-3 text-sm text-neutral-900 dark:text-neutral-100 text-right font-medium">
              $599.00
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-red-50 px-2 py-1 text-xs font-medium text-red-700 outline outline-red-600/20 dark:bg-red-400/10 dark:text-red-400 dark:outline-red-400/25">
                Failed
              </span>
            </td>
          </tr>
          <tr class="[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <td class="pl-6 pr-3 text-sm font-mono text-neutral-900 dark:text-neutral-100">
              #TXN-4816
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Nov 26, 2025
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Blueprint Co
            </td>
            <td class="px-3 text-sm text-neutral-900 dark:text-neutral-100 text-right font-medium">
              $1,850.00
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Completed
              </span>
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-mono text-neutral-900 dark:text-neutral-100">
              #TXN-4815
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Nov 25, 2025
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              NextGen Systems
            </td>
            <td class="px-3 text-sm text-neutral-900 dark:text-neutral-100 text-right font-medium">
              $4,200.00
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Completed
              </span>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</div>

Sticky Header Table with Progress

A scrollable table with a sticky header that stays visible while scrolling. Features progress bars for tracking completion. Great for project management, task lists, or any long dataset where context is important.

Project Deadline Progress Priority
Website Redesign Dec 15, 2025
75%
High
Mobile App Development Jan 20, 2026
45%
Medium
Brand Identity Dec 01, 2025
100%
Low
E-commerce Platform Feb 28, 2026
20%
Medium
Marketing Campaign Dec 10, 2025
60%
High
API Integration Jan 05, 2026
85%
Medium
Security Audit Dec 20, 2025
30%
High
Documentation Update Dec 05, 2025
90%
Low
Performance Optimization Jan 15, 2026
55%
Medium
User Testing Dec 12, 2025
40%
Low
<div class="w-full max-w-6xl mx-auto">
  <div class="bg-white dark:bg-neutral-900 rounded-xl border border-black/10 dark:border-white/10 shadow-xs overflow-hidden">
    <div class="overflow-x-auto max-h-[400px] overflow-y-auto small-scrollbar">
      <table class="w-full">
        <thead class="sticky top-0 z-10 bg-neutral-100/75 dark:bg-neutral-800/75 backdrop-blur-sm backdrop-filter">
          <tr class="*:py-3 *:text-left *:[box-shadow:inset_0_-1px_0_0_rgb(229_229_229)] dark:*:[box-shadow:inset_0_-1px_0_0_rgb(46_46_46)]">
            <th scope="col" class="pl-6 pr-3 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Project
            </th>
            <th scope="col" class="px-3 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Deadline
            </th>
            <th scope="col" class="px-3 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Progress
            </th>
            <th scope="col" class="pl-3 pr-6 text-sm font-semibold text-neutral-900 dark:text-neutral-50">
              Priority
            </th>
          </tr>
        </thead>
        <tbody class="*:even:bg-neutral-50 dark:*:even:bg-neutral-800/50 *:*:py-4">
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Website Redesign
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Dec 15, 2025
            </td>
            <td class="px-3">
              <div class="flex items-center gap-2">
                <div class="flex-1 h-2 bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden">
                  <div class="h-full bg-blue-600 rounded-full" style="width: 75%"></div>
                </div>
                <span class="text-xs text-neutral-500 dark:text-neutral-400 min-w-[3ch]">75%</span>
              </div>
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-red-50 px-2 py-1 text-xs font-medium text-red-700 outline outline-red-600/20 dark:bg-red-400/10 dark:text-red-400 dark:outline-red-400/25">
                High
              </span>
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Mobile App Development
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Jan 20, 2026
            </td>
            <td class="px-3">
              <div class="flex items-center gap-2">
                <div class="flex-1 h-2 bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden">
                  <div class="h-full bg-blue-600 rounded-full" style="width: 45%"></div>
                </div>
                <span class="text-xs text-neutral-500 dark:text-neutral-400 min-w-[3ch]">45%</span>
              </div>
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-700 outline outline-yellow-700/20 dark:bg-yellow-400/10 dark:text-yellow-500 dark:outline-yellow-400/25">
                Medium
              </span>
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Brand Identity
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Dec 01, 2025
            </td>
            <td class="px-3">
              <div class="flex items-center gap-2">
                <div class="flex-1 h-2 bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden">
                  <div class="h-full bg-green-600 rounded-full" style="width: 100%"></div>
                </div>
                <span class="text-xs text-neutral-500 dark:text-neutral-400 min-w-[3ch]">100%</span>
              </div>
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Low
              </span>
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              E-commerce Platform
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Feb 28, 2026
            </td>
            <td class="px-3">
              <div class="flex items-center gap-2">
                <div class="flex-1 h-2 bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden">
                  <div class="h-full bg-blue-600 rounded-full" style="width: 20%"></div>
                </div>
                <span class="text-xs text-neutral-500 dark:text-neutral-400 min-w-[3ch]">20%</span>
              </div>
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-700 outline outline-yellow-700/20 dark:bg-yellow-400/10 dark:text-yellow-500 dark:outline-yellow-400/25">
                Medium
              </span>
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Marketing Campaign
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Dec 10, 2025
            </td>
            <td class="px-3">
              <div class="flex items-center gap-2">
                <div class="flex-1 h-2 bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden">
                  <div class="h-full bg-blue-600 rounded-full" style="width: 60%"></div>
                </div>
                <span class="text-xs text-neutral-500 dark:text-neutral-400 min-w-[3ch]">60%</span>
              </div>
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-red-50 px-2 py-1 text-xs font-medium text-red-700 outline outline-red-600/20 dark:bg-red-400/10 dark:text-red-400 dark:outline-red-400/25">
                High
              </span>
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              API Integration
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Jan 05, 2026
            </td>
            <td class="px-3">
              <div class="flex items-center gap-2">
                <div class="flex-1 h-2 bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden">
                  <div class="h-full bg-blue-600 rounded-full" style="width: 85%"></div>
                </div>
                <span class="text-xs text-neutral-500 dark:text-neutral-400 min-w-[3ch]">85%</span>
              </div>
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-700 outline outline-yellow-700/20 dark:bg-yellow-400/10 dark:text-yellow-500 dark:outline-yellow-400/25">
                Medium
              </span>
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Security Audit
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Dec 20, 2025
            </td>
            <td class="px-3">
              <div class="flex items-center gap-2">
                <div class="flex-1 h-2 bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden">
                  <div class="h-full bg-blue-600 rounded-full" style="width: 30%"></div>
                </div>
                <span class="text-xs text-neutral-500 dark:text-neutral-400 min-w-[3ch]">30%</span>
              </div>
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-red-50 px-2 py-1 text-xs font-medium text-red-700 outline outline-red-600/20 dark:bg-red-400/10 dark:text-red-400 dark:outline-red-400/25">
                High
              </span>
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Documentation Update
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Dec 05, 2025
            </td>
            <td class="px-3">
              <div class="flex items-center gap-2">
                <div class="flex-1 h-2 bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden">
                  <div class="h-full bg-blue-600 rounded-full" style="width: 90%"></div>
                </div>
                <span class="text-xs text-neutral-500 dark:text-neutral-400 min-w-[3ch]">90%</span>
              </div>
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Low
              </span>
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              Performance Optimization
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Jan 15, 2026
            </td>
            <td class="px-3">
              <div class="flex items-center gap-2">
                <div class="flex-1 h-2 bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden">
                  <div class="h-full bg-blue-600 rounded-full" style="width: 55%"></div>
                </div>
                <span class="text-xs text-neutral-500 dark:text-neutral-400 min-w-[3ch]">55%</span>
              </div>
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-yellow-50 px-2 py-1 text-xs font-medium text-yellow-700 outline outline-yellow-700/20 dark:bg-yellow-400/10 dark:text-yellow-500 dark:outline-yellow-400/25">
                Medium
              </span>
            </td>
          </tr>
          <tr>
            <td class="pl-6 pr-3 text-sm font-medium text-neutral-900 dark:text-neutral-100">
              User Testing
            </td>
            <td class="px-3 text-sm text-neutral-500 dark:text-neutral-400">
              Dec 12, 2025
            </td>
            <td class="px-3">
              <div class="flex items-center gap-2">
                <div class="flex-1 h-2 bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden">
                  <div class="h-full bg-blue-600 rounded-full" style="width: 40%"></div>
                </div>
                <span class="text-xs text-neutral-500 dark:text-neutral-400 min-w-[3ch]">40%</span>
              </div>
            </td>
            <td class="pl-3 pr-6">
              <span class="inline-flex items-center gap-1 rounded-full bg-green-50 px-2 py-1 text-xs font-medium text-green-700 outline outline-green-600/20 dark:bg-green-400/10 dark:text-green-400 dark:outline-green-400/25">
                Low
              </span>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</div>

Table of contents

Get notified when new components come out