Snippets Buttons

Bootstrap 5 User Profile with Activity Feed

A profile page with a bio card, skills and progress on the left and a tabbed feed of posts on the right. Follow and like buttons respond to clicks.

Bootstrap 5 No jQuery Oct 2019 2.9K views

<section class="wdw-stage">
  <div class="container" style="max-width:1040px">
    <div class="row g-4">
      <aside class="col-lg-4">
        <div class="wdw-card p-4 text-center h-100">
          <img src="https://i.pravatar.cc/240?img=12" alt="David Grey" width="112" height="112" class="rounded-circle mb-3 pf-avatar">
          <h1 class="h4 wdw-heading mb-1">David Grey</h1>
          <p class="wdw-muted small mb-3">Design lead · Toronto, Canada</p>
          <p class="small mb-4">Bureau Oberhaeuser is a design bureau focused on information and interface design.</p>
          <div class="d-flex gap-2 justify-content-center mb-4">
            <button type="button" class="btn btn-primary rounded-pill px-4">Hire me</button>
            <button type="button" class="btn btn-outline-primary rounded-pill px-4" id="pfFollow" aria-pressed="false">Follow</button>
          </div>
          <div class="text-start border-top pt-3">
            <div class="wdw-eyebrow mb-2">Skills</div>
            <div class="d-flex flex-wrap gap-2 mb-4">
              <span class="badge rounded-pill text-bg-light border">Hand lettering</span>
              <span class="badge rounded-pill text-bg-light border">Information design</span>
              <span class="badge rounded-pill text-bg-light border">Graphic design</span>
              <span class="badge rounded-pill text-bg-light border">Web design</span>
            </div>
            <div class="d-flex justify-content-between small mb-1"><span>Projects delivered</span><span class="wdw-muted">75%</span></div>
            <div class="progress mb-3" style="height:6px" role="progressbar" aria-label="Projects delivered" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100"><div class="progress-bar" style="width:75%"></div></div>
            <div class="d-flex justify-content-between small"><span class="wdw-muted">Status</span><span class="text-success fw-semibold">Available</span></div>
          </div>
        </div>
      </aside>
      <div class="col-lg-8">
        <div class="wdw-card p-4 h-100">
          <ul class="nav nav-pills gap-1 mb-3" role="tablist">
            <li class="nav-item" role="presentation"><button class="nav-link rounded-pill active" data-bs-toggle="pill" data-bs-target="#pf-feed" type="button" role="tab" aria-selected="true">Feed</button></li>
            <li class="nav-item" role="presentation"><button class="nav-link rounded-pill" data-bs-toggle="pill" data-bs-target="#pf-about" type="button" role="tab" aria-selected="false">About</button></li>
            <li class="nav-item" role="presentation"><button class="nav-link rounded-pill" data-bs-toggle="pill" data-bs-target="#pf-resume" type="button" role="tab" aria-selected="false">Resume</button></li>
          </ul>
          <div class="tab-content">
            <div class="tab-pane fade show active" id="pf-feed" role="tabpanel" tabindex="0">
              <article class="d-flex gap-3 py-3 border-bottom">
                <img src="https://i.pravatar.cc/80?img=33" alt="" width="44" height="44" class="rounded-circle flex-none">
                <div class="flex-grow-1">
                  <div class="d-flex align-items-baseline gap-2"><strong>Mason Beck</strong><span class="wdw-muted small">10 hours ago</span></div>
                  <p class="mb-2">There is no better advertisement campaign that is low cost and also successful at the same time.</p>
                  <div class="d-flex gap-2">
                    <button type="button" class="btn btn-sm btn-light rounded-pill pf-like" aria-pressed="false"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1-1.1a5.5 5.5 0 0 0-7.8 7.8l1 1.1L12 21l7.8-7.5 1-1.1a5.5 5.5 0 0 0 0-7.8z"/></svg><span class="pf-count">4</span></button>
                    <button type="button" class="btn btn-sm btn-light rounded-pill"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>11</button>
                  </div>
                </div>
              </article>
              <article class="d-flex gap-3 py-3">
                <img src="https://i.pravatar.cc/80?img=47" alt="" width="44" height="44" class="rounded-circle flex-none">
                <div class="flex-grow-1">
                  <div class="d-flex align-items-baseline gap-2"><strong>Willie Stanley</strong><span class="wdw-muted small">10 hours ago</span></div>
                  <p class="mb-2">Shared a new set of lettering studies from the studio this week.</p>
                  <img src="https://images.unsplash.com/photo-1498050108023-c5249f4df085?auto=format&fit=crop&w=900&q=70" alt="Laptop with code on a desk" class="img-fluid rounded-4 mb-2 pf-photo" loading="lazy">
                  <div class="d-flex gap-2">
                    <button type="button" class="btn btn-sm btn-light rounded-pill pf-like" aria-pressed="false"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1-1.1a5.5 5.5 0 0 0-7.8 7.8l1 1.1L12 21l7.8-7.5 1-1.1a5.5 5.5 0 0 0 0-7.8z"/></svg><span class="pf-count">18</span></button>
                  </div>
                </div>
              </article>
            </div>
            <div class="tab-pane fade" id="pf-about" role="tabpanel" tabindex="0">
              <dl class="row mb-0 pt-2">
                <dt class="col-sm-3 wdw-muted fw-medium">Phone</dt><dd class="col-sm-9">006 3435 22</dd>
                <dt class="col-sm-3 wdw-muted fw-medium">Email</dt><dd class="col-sm-9">[email protected]</dd>
                <dt class="col-sm-3 wdw-muted fw-medium">Location</dt><dd class="col-sm-9">Toronto, Canada</dd>
              </dl>
            </div>
            <div class="tab-pane fade" id="pf-resume" role="tabpanel" tabindex="0">
              <p class="pt-2 mb-0">Ten years across editorial, identity and interface design. Currently leading Bureau Oberhaeuser.</p>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>

Built on Bootstrap 5.3.8 with plain JavaScript — no jQuery. Supports light and dark mode via data-bs-theme.