Skip to content
  • No data uploaded
  • Instant results

Bootstrap 5 Pricing Table for Vue 3 — Glassmorphism

A production-ready glassmorphism pricing table: a three-tier pricing section with a monthly/yearly billing toggle, a highlighted “most popular” plan and feature checklists. Pick your brand color, toggle dark mode and corner radius — the live preview and the Vue 3 code update instantly in your browser.

Live component editor

Library
Framework
Style
Theme
Corner radius
Live preview
<script setup>
import 'bootstrap/dist/css/bootstrap.min.css';
import './theme.css';
import { ref } from 'vue';

const yearly = ref(false);
</script>

<template>
  <section class="py-5 px-4">
    <div class="mw-6xl mx-auto">
      <div class="text-center mb-5">
        <h2 class="fs-3 fw-bold text-body-emphasis">Simple, transparent pricing</h2>
        <p class="mt-2 text-body-secondary">Start free. Upgrade when you need more.</p>
        <button type="button" class="btn btn-outline-secondary fw-semibold rounded-2 mt-4" @click="yearly = !yearly">
          <span v-show="!yearly">Billed monthly · switch to yearly (save 20%)</span>
          <span v-show="yearly">Billed yearly · switch to monthly</span>
        </button>
      </div>
      <div class="row row-cols-1 row-cols-md-3 g-4">
        <div class="col">
          <div class="h-100 p-5 d-flex flex-column glass shadow-lg rounded-3">
            <div class="d-flex align-items-center justify-content-between">
              <h3 class="fs-5 fw-semibold text-body-emphasis">Starter</h3>
            </div>
            <p class="mt-1 small text-body-secondary">For side projects.</p>
            <p class="mt-4">
              <span class="fs-2 fw-bold text-body-emphasis"><span v-show="!yearly">$0</span><span v-show="yearly">$0</span></span>
              <span class="small text-body-secondary">/month</span>
            </p>
            <ul class="list-unstyled mt-4 mb-5 d-flex flex-column gap-2 flex-fill">
              <li class="d-flex align-items-start gap-2 small text-body"><svg class="flex-shrink-0 mt-1 text-brand" width="16" height="16" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M16.7 5.3a1 1 0 010 1.4l-8 8a1 1 0 01-1.4 0l-4-4a1 1 0 111.4-1.4L8 12.6l7.3-7.3a1 1 0 011.4 0z" clip-rule="evenodd"/></svg>1 project</li>
              <li class="d-flex align-items-start gap-2 small text-body"><svg class="flex-shrink-0 mt-1 text-brand" width="16" height="16" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M16.7 5.3a1 1 0 010 1.4l-8 8a1 1 0 01-1.4 0l-4-4a1 1 0 111.4-1.4L8 12.6l7.3-7.3a1 1 0 011.4 0z" clip-rule="evenodd"/></svg>Community support</li>
              <li class="d-flex align-items-start gap-2 small text-body"><svg class="flex-shrink-0 mt-1 text-brand" width="16" height="16" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M16.7 5.3a1 1 0 010 1.4l-8 8a1 1 0 01-1.4 0l-4-4a1 1 0 111.4-1.4L8 12.6l7.3-7.3a1 1 0 011.4 0z" clip-rule="evenodd"/></svg>Basic analytics</li>
            </ul>
            <a href="#" class="btn btn-outline-secondary fw-semibold rounded-2 w-100">Get started</a>
          </div>
        </div>
        <div class="col">
          <div class="h-100 p-5 d-flex flex-column glass shadow-lg rounded-3 border-brand">
            <div class="d-flex align-items-center justify-content-between">
              <h3 class="fs-5 fw-semibold text-body-emphasis">Pro</h3>
              <span class="badge rounded-pill bg-brand-subtle text-brand">Most popular</span>
            </div>
            <p class="mt-1 small text-body-secondary">For growing teams.</p>
            <p class="mt-4">
              <span class="fs-2 fw-bold text-body-emphasis"><span v-show="!yearly">$29</span><span v-show="yearly">$24</span></span>
              <span class="small text-body-secondary">/month</span>
            </p>
            <ul class="list-unstyled mt-4 mb-5 d-flex flex-column gap-2 flex-fill">
              <li class="d-flex align-items-start gap-2 small text-body"><svg class="flex-shrink-0 mt-1 text-brand" width="16" height="16" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M16.7 5.3a1 1 0 010 1.4l-8 8a1 1 0 01-1.4 0l-4-4a1 1 0 111.4-1.4L8 12.6l7.3-7.3a1 1 0 011.4 0z" clip-rule="evenodd"/></svg>Unlimited projects</li>
              <li class="d-flex align-items-start gap-2 small text-body"><svg class="flex-shrink-0 mt-1 text-brand" width="16" height="16" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M16.7 5.3a1 1 0 010 1.4l-8 8a1 1 0 01-1.4 0l-4-4a1 1 0 111.4-1.4L8 12.6l7.3-7.3a1 1 0 011.4 0z" clip-rule="evenodd"/></svg>Priority support</li>
              <li class="d-flex align-items-start gap-2 small text-body"><svg class="flex-shrink-0 mt-1 text-brand" width="16" height="16" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M16.7 5.3a1 1 0 010 1.4l-8 8a1 1 0 01-1.4 0l-4-4a1 1 0 111.4-1.4L8 12.6l7.3-7.3a1 1 0 011.4 0z" clip-rule="evenodd"/></svg>Advanced analytics</li>
              <li class="d-flex align-items-start gap-2 small text-body"><svg class="flex-shrink-0 mt-1 text-brand" width="16" height="16" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M16.7 5.3a1 1 0 010 1.4l-8 8a1 1 0 01-1.4 0l-4-4a1 1 0 111.4-1.4L8 12.6l7.3-7.3a1 1 0 011.4 0z" clip-rule="evenodd"/></svg>Custom domains</li>
            </ul>
            <a href="#" class="btn btn-brand fw-semibold rounded-2 w-100">Start free trial</a>
          </div>
        </div>
        <div class="col">
          <div class="h-100 p-5 d-flex flex-column glass shadow-lg rounded-3">
            <div class="d-flex align-items-center justify-content-between">
              <h3 class="fs-5 fw-semibold text-body-emphasis">Enterprise</h3>
            </div>
            <p class="mt-1 small text-body-secondary">For large organisations.</p>
            <p class="mt-4">
              <span class="fs-2 fw-bold text-body-emphasis"><span v-show="!yearly">$99</span><span v-show="yearly">$79</span></span>
              <span class="small text-body-secondary">/month</span>
            </p>
            <ul class="list-unstyled mt-4 mb-5 d-flex flex-column gap-2 flex-fill">
              <li class="d-flex align-items-start gap-2 small text-body"><svg class="flex-shrink-0 mt-1 text-brand" width="16" height="16" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M16.7 5.3a1 1 0 010 1.4l-8 8a1 1 0 01-1.4 0l-4-4a1 1 0 111.4-1.4L8 12.6l7.3-7.3a1 1 0 011.4 0z" clip-rule="evenodd"/></svg>SSO & SAML</li>
              <li class="d-flex align-items-start gap-2 small text-body"><svg class="flex-shrink-0 mt-1 text-brand" width="16" height="16" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M16.7 5.3a1 1 0 010 1.4l-8 8a1 1 0 01-1.4 0l-4-4a1 1 0 111.4-1.4L8 12.6l7.3-7.3a1 1 0 011.4 0z" clip-rule="evenodd"/></svg>Dedicated manager</li>
              <li class="d-flex align-items-start gap-2 small text-body"><svg class="flex-shrink-0 mt-1 text-brand" width="16" height="16" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M16.7 5.3a1 1 0 010 1.4l-8 8a1 1 0 01-1.4 0l-4-4a1 1 0 111.4-1.4L8 12.6l7.3-7.3a1 1 0 011.4 0z" clip-rule="evenodd"/></svg>Audit logs</li>
              <li class="d-flex align-items-start gap-2 small text-body"><svg class="flex-shrink-0 mt-1 text-brand" width="16" height="16" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path fill-rule="evenodd" d="M16.7 5.3a1 1 0 010 1.4l-8 8a1 1 0 01-1.4 0l-4-4a1 1 0 111.4-1.4L8 12.6l7.3-7.3a1 1 0 011.4 0z" clip-rule="evenodd"/></svg>99.99% SLA</li>
            </ul>
            <a href="#" class="btn btn-outline-secondary fw-semibold rounded-2 w-100">Start free trial</a>
          </div>
        </div>
      </div>
    </div>
  </section>
</template>
All components →

Free Bootstrap 5 Pricing Table for Vue 3 — Glassmorphism by pGento

Install Bootstrap 5 for Vue 3

Create a Vue 3 project with Vite and install Bootstrap:

npm create vite@latest my-app -- --template vue
cd my-app
npm install
npm install bootstrap

Save the generated theme.css next to the component; the component file already imports bootstrap/dist/css/bootstrap.min.css and ./theme.css. No Bootstrap JavaScript is required — interactivity uses ref().

Use the pricing table in Vue 3

<!-- App.vue -->
<script setup>
import PricingTable from './PricingTable.vue';
</script>

<template>
  <PricingTable />
</template>

Accessibility & customization

The billing switch is a real <button> with aria-pressed semantics handled by state, prices are plain text (no images), and decorative check icons are hidden with aria-hidden="true".

Every color, radius and dark-mode choice is baked into plain Bootstrap classes plus a tiny CSS-variable theme file, so the copied code has no runtime dependency on this site. The glass style relies on backdrop-filter, supported in all current browsers; place it over a colorful background for the best effect.

Compatibility

ItemDetails
CSS frameworkBootstrap 5.3+ (CSS only)
LibraryVue 3 (<script setup>)
Interactive stateyearly
Dark modeYes — toggle in the editor
StyleGlassmorphism (backdrop blur)

Frequently asked questions

How do I install this Bootstrap pricing table in Vue 3?
Create a Vue 3 project, install Bootstrap 5 as shown in the installation section, then paste the generated code. Also save the generated theme.css file.
Can I change the color of the pricing table?
Yes. Use the brand color picker or type any hex code — the preview and code update instantly, and the color is written directly into the classes you copy.
Does the pricing table support dark mode?
Yes. Toggle “Dark mode” in the editor to generate a dark palette version of the same component.
Is the pricing table accessible?
The billing switch is a real <button> with aria-pressed semantics handled by state, prices are plain text (no images), and decorative check icons are hidden with aria-hidden="true".
Is this component free for commercial use?
Yes. The generated code is yours to use in personal and commercial projects without attribution.
Bootstrap 5 Pricing Table for Vue 3 — Glassmorphism

Embed this tool on your site

Paste this code into any web page. It stays free, fast and ad-free inside your site.

Print or save as PDF

Prints just this tool and its result. Choose “Save as PDF” as the printer to get a file. Branding is stored only in this browser.