Snippets Layout

Bootstrap 5 User Profile Layouts (Cover, Sidebar, Card, Edit)

A set of four modern user profile layouts: a cover-photo header with tabs, a sidebar profile with post composer, a compact photo card with stats, and an editable details form.

Bootstrap 5 No jQuery Oct 2020 2.1K views

<section class="up-section wdw-stage">
  <div class="container up-wrap">
    <div class="d-flex flex-column flex-md-row align-items-md-center justify-content-between gap-3 mb-4">
      <div>
        <span class="wdw-eyebrow">Profiles</span>
        <h2 class="h3 wdw-heading mb-1">User profile layouts</h2>
        <p class="text-body-secondary mb-0">Four ways to present a member profile.</p>
      </div>
      <div class="nav nav-pills up-switch bg-body rounded-pill p-1 wdw-card-sm" role="tablist" aria-label="Profile style">
        <button class="nav-link rounded-pill active" data-bs-toggle="pill" data-bs-target="#up-s1" role="tab" aria-selected="true">Cover</button>
        <button class="nav-link rounded-pill" data-bs-toggle="pill" data-bs-target="#up-s2" role="tab" aria-selected="false">Sidebar</button>
        <button class="nav-link rounded-pill" data-bs-toggle="pill" data-bs-target="#up-s3" role="tab" aria-selected="false">Card</button>
        <button class="nav-link rounded-pill" data-bs-toggle="pill" data-bs-target="#up-s4" role="tab" aria-selected="false">Edit</button>
      </div>
    </div>

    <div class="tab-content">
      <!-- Style 1: cover -->
      <div class="tab-pane fade show active" id="up-s1" role="tabpanel">
        <article class="card wdw-card overflow-hidden">
          <div class="up-cover wdw-aurora"></div>
          <div class="px-4 px-md-5 pb-4">
            <div class="d-flex flex-wrap align-items-end gap-3 up-lift">
              <img class="up-avatar rounded-circle" src="https://i.pravatar.cc/200?img=47" width="112" height="112" alt="Camila Smith">
              <div class="flex-grow-1 pb-1">
                <h3 class="h4 fw-bold mb-0">Camila Smith</h3>
                <p class="text-body-secondary mb-0">UI Designer · Sydney, Australia</p>
              </div>
              <div class="d-flex gap-2 pb-1">
                <button type="button" class="btn btn-outline-secondary text-body rounded-pill px-3">Message</button>
                <button type="button" class="btn btn-primary rounded-pill px-3">Follow</button>
              </div>
            </div>
            <ul class="nav nav-underline mt-4 border-bottom" role="tablist">
              <li class="nav-item" role="presentation"><button class="nav-link active" data-bs-toggle="tab" data-bs-target="#up-about" role="tab">About</button></li>
              <li class="nav-item" role="presentation"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#up-work" role="tab">Projects</button></li>
              <li class="nav-item" role="presentation"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#up-act" role="tab">Activity <span class="badge text-bg-primary rounded-pill ms-1">9</span></button></li>
            </ul>
            <div class="tab-content pt-4">
              <div class="tab-pane fade show active" id="up-about" role="tabpanel">
                <div class="row g-4">
                  <div class="col-lg-7">
                    <p class="text-body-secondary">Product designer focused on calm, accessible interfaces. Currently shaping design systems for fintech teams and mentoring junior designers.</p>
                    <dl class="row up-dl mb-0">
                      <dt class="col-5 col-sm-4">Occupation</dt><dd class="col-7 col-sm-8">UI Designer</dd>
                      <dt class="col-5 col-sm-4">Birthday</dt><dd class="col-7 col-sm-8">13 July 1983</dd>
                      <dt class="col-5 col-sm-4">Country</dt><dd class="col-7 col-sm-8">Australia</dd>
                      <dt class="col-5 col-sm-4">Email</dt><dd class="col-7 col-sm-8">[email protected]</dd>
                      <dt class="col-5 col-sm-4">Mobile</dt><dd class="col-7 col-sm-8">(12) 03 4567 890</dd>
                    </dl>
                  </div>
                  <div class="col-lg-5">
                    <div class="row g-0 text-center rounded-4 border py-3">
                      <div class="col-4"><div class="up-num">1.3k</div><small class="text-body-secondary">Followers</small></div>
                      <div class="col-4 border-start border-end"><div class="up-num">219</div><small class="text-body-secondary">Following</small></div>
                      <div class="col-4"><div class="up-num">92</div><small class="text-body-secondary">Stories</small></div>
                    </div>
                    <div class="mt-4 d-flex flex-wrap gap-2">
                      <span class="up-chip rounded-pill">Figma</span>
                      <span class="up-chip rounded-pill">Design systems</span>
                      <span class="up-chip rounded-pill">Prototyping</span>
                      <span class="up-chip rounded-pill">Research</span>
                    </div>
                  </div>
                </div>
              </div>
              <div class="tab-pane fade" id="up-work" role="tabpanel">
                <div class="row g-3">
                  <div class="col-md-6"><div class="p-3 border rounded-4"><div class="d-flex justify-content-between"><strong>Envato Website</strong><span class="text-body-secondary small">35%</span></div><div class="progress mt-2" style="height:6px"><div class="progress-bar" style="width:35%"></div></div></div></div>
                  <div class="col-md-6"><div class="p-3 border rounded-4"><div class="d-flex justify-content-between"><strong>CMS Dashboard</strong><span class="text-body-secondary small">63%</span></div><div class="progress mt-2" style="height:6px"><div class="progress-bar" style="width:63%"></div></div></div></div>
                  <div class="col-md-6"><div class="p-3 border rounded-4"><div class="d-flex justify-content-between"><strong>Portfolio</strong><span class="text-body-secondary small">75%</span></div><div class="progress mt-2" style="height:6px"><div class="progress-bar" style="width:75%"></div></div></div></div>
                  <div class="col-md-6"><div class="p-3 border rounded-4"><div class="d-flex justify-content-between"><strong>Muse Template</strong><span class="text-body-secondary small">50%</span></div><div class="progress mt-2" style="height:6px"><div class="progress-bar" style="width:50%"></div></div></div></div>
                </div>
              </div>
              <div class="tab-pane fade" id="up-act" role="tabpanel">
                <ul class="list-group list-group-flush">
                  <li class="list-group-item px-0">Published <strong>Spring design kit</strong> · 2h ago</li>
                  <li class="list-group-item px-0">Commented on <strong>Onboarding flow v3</strong> · yesterday</li>
                  <li class="list-group-item px-0">Joined the <strong>Accessibility guild</strong> · 3 days ago</li>
                </ul>
              </div>
            </div>
          </div>
        </article>
      </div>

      <!-- Style 2: sidebar -->
      <div class="tab-pane fade" id="up-s2" role="tabpanel">
        <div class="row g-4">
          <div class="col-md-4">
            <div class="card wdw-card h-100">
              <div class="card-body text-center p-4">
                <img class="rounded-circle mb-3 up-ring" src="https://i.pravatar.cc/200?img=47" width="104" height="104" alt="Camila Smith">
                <h3 class="h5 fw-bold mb-0">Camila Smith</h3>
                <p class="text-body-secondary small mb-3">[email protected]</p>
                <div class="list-group list-group-flush text-start">
                  <a href="#" class="list-group-item list-group-item-action active rounded-3 border-0 mb-1" aria-current="true">Profile</a>
                  <a href="#" class="list-group-item list-group-item-action rounded-3 border-0 mb-1 d-flex justify-content-between align-items-center">Recent activity <span class="badge text-bg-primary rounded-pill">9</span></a>
                  <a href="#" class="list-group-item list-group-item-action rounded-3 border-0">Edit profile</a>
                </div>
              </div>
            </div>
          </div>
          <div class="col-md-8">
            <div class="card wdw-card mb-4">
              <div class="card-body p-3">
                <label for="up-post" class="visually-hidden">Post</label>
                <textarea id="up-post" class="form-control border-0 bg-body-tertiary rounded-3" rows="2" placeholder="What's on your mind today?"></textarea>
                <div class="d-flex justify-content-between align-items-center mt-3">
                  <div class="d-flex gap-1">
                    <button type="button" class="btn bg-body-tertiary text-body rounded-circle up-ico" aria-label="Add photo"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="5" width="18" height="14" rx="3"/><circle cx="12" cy="12" r="3.5"/></svg></button>
                    <button type="button" class="btn bg-body-tertiary text-body rounded-circle up-ico" aria-label="Add location"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 21s7-6.2 7-11a7 7 0 1 0-14 0c0 4.800 7 11 7 11z"/><circle cx="12" cy="10" r="2.5"/></svg></button>
                  </div>
                  <button type="button" class="btn btn-primary rounded-pill px-4">Post</button>
                </div>
              </div>
            </div>
            <div class="card wdw-card">
              <div class="card-body p-4">
                <h3 class="h6 text-uppercase text-body-secondary fw-semibold mb-3">Bio</h3>
                <dl class="row up-dl mb-0 gy-1">
                  <dt class="col-4 col-sm-3">First name</dt><dd class="col-8 col-sm-3">Camila</dd>
                  <dt class="col-4 col-sm-3">Last name</dt><dd class="col-8 col-sm-3">Smith</dd>
                  <dt class="col-4 col-sm-3">Country</dt><dd class="col-8 col-sm-3">Australia</dd>
                  <dt class="col-4 col-sm-3">Birthday</dt><dd class="col-8 col-sm-3">13 July 1983</dd>
                  <dt class="col-4 col-sm-3">Occupation</dt><dd class="col-8 col-sm-3">UI Designer</dd>
                  <dt class="col-4 col-sm-3">Phone</dt><dd class="col-8 col-sm-3">88 (02) 123456</dd>
                </dl>
              </div>
            </div>
          </div>
        </div>
      </div>

      <!-- Style 3: card -->
      <div class="tab-pane fade" id="up-s3" role="tabpanel">
        <div class="card wdw-card overflow-hidden mx-auto up-card3">
          <div class="position-relative">
            <img class="up-photo" src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=700&q=80&auto=format&fit=crop" alt="Jane Doe smiling outdoors">
            <div class="up-scrim position-absolute bottom-0 start-0 end-0 p-4 text-white">
              <h3 class="h4 fw-bold mb-0">Jane C. Doe</h3>
              <p class="mb-0 small opacity-75">Designer & coffee lover</p>
            </div>
          </div>
          <div class="card-body p-4 text-center">
            <p class="text-body-secondary">“Where there is coffee, there is life. Loves to read, paint and sleep.”</p>
            <div class="row g-0 text-center border rounded-4 py-3 mb-3">
              <div class="col-4"><div class="h5 fw-bold mb-0">1,293</div><small class="text-body-secondary">Followers</small></div>
              <div class="col-4 border-start border-end"><div class="h5 fw-bold mb-0">219</div><small class="text-body-secondary">Following</small></div>
              <div class="col-4"><div class="h5 fw-bold mb-0">92</div><small class="text-body-secondary">Stories</small></div>
            </div>
            <button type="button" class="btn btn-primary rounded-pill w-100 py-2" data-up-follow aria-pressed="false">Follow</button>
          </div>
        </div>
      </div>

      <!-- Style 4: edit -->
      <div class="tab-pane fade" id="up-s4" role="tabpanel">
        <form class="card wdw-card" onsubmit="return false">
          <div class="card-body p-4 p-md-5">
            <div class="d-flex align-items-center gap-3 mb-4">
              <img class="rounded-circle" src="https://i.pravatar.cc/120?img=12" width="64" height="64" alt="John Doe">
              <div><h3 class="h5 fw-bold mb-0">Edit profile</h3><p class="text-body-secondary small mb-0">Update how others see you.</p></div>
            </div>
            <div class="row g-3">
              <div class="col-md-6"><div class="form-floating"><input type="text" class="form-control" id="up-n" value="John Doe" placeholder="Name"><label for="up-n">Full name</label></div></div>
              <div class="col-md-6"><div class="form-floating"><input type="text" class="form-control" id="up-r" value="Web & frontend developer" placeholder="Role"><label for="up-r">Role</label></div></div>
              <div class="col-md-6"><div class="form-floating"><input type="tel" class="form-control" id="up-m" value="+1 (847) 367-8924" placeholder="Mobile"><label for="up-m">Mobile</label></div></div>
              <div class="col-md-6"><div class="form-floating"><select class="form-select" id="up-c"><option selected>United States</option><option>Canada</option><option>Australia</option></select><label for="up-c">Country</label></div></div>
              <div class="col-12"><div class="form-floating"><textarea class="form-control" id="up-a" placeholder="About" style="height:96px">I build fast, accessible interfaces.</textarea><label for="up-a">About me</label></div></div>
            </div>
            <div class="d-flex justify-content-end gap-2 mt-4">
              <button type="reset" class="btn btn-outline-secondary text-body rounded-pill px-4">Cancel</button>
              <button type="submit" class="btn btn-primary rounded-pill px-4">Save changes</button>
            </div>
          </div>
        </form>
      </div>
    </div>
  </div>
</section>

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

Free to use in personal and commercial projects under the MIT license.