pricing: remove monthly/yearly billing toggle, default to yearly

- Remove billing-toggle-wrap HTML (switch + labels)
- Update all 4 pricing cards to show yearly prices by default
  with / year period and save percentage
- Simplify openOrderWidget() to always use yearly pricing only
- Remove billing toggle JS block (updatePrices, setBilling, event listeners)
- Remove billing toggle CSS (billing-toggle-wrap, .toggle-*, .toggle-switch)
- Update order widget default display to / year
- Update CTA note to 'Save money, less administration'
This commit is contained in:
2026-08-20 10:38:03 +00:00
parent 3e9a6d5c4b
commit a2cfa09558
3 changed files with 24 additions and 158 deletions
+18 -23
View File
@@ -237,23 +237,18 @@
<div class="container"> <div class="container">
<p class="section-kicker">Rates &amp; Suites</p> <p class="section-kicker">Rates &amp; Suites</p>
<h2 class="section-title">Your Plan, Your Timing: Upgrade Anytime</h2> <h2 class="section-title">Your Plan, Your Timing: Upgrade Anytime</h2>
<div class="billing-toggle-wrap">
<span class="toggle-label toggle-label-monthly active">Monthly <small>1 month free</small></span>
<div class="toggle-switch" id="billingSwitch"><div class="thumb"></div></div>
<span class="toggle-label toggle-label-yearly">Yearly <small>up to -10%</small></span>
</div>
<div class="pricing-grid"> <div class="pricing-grid">
<!-- Side Hustle --> <!-- Side Hustle -->
<div class="pcard"> <div class="pcard">
<div class="pcard-body"> <div class="pcard-body">
<h3>Side Hustle</h3> <h3>Side Hustle</h3>
<div class="price"> <div class="price">
<strong class="price-amount" data-monthly="19.40" data-yearly="214.00">$ 19.40</strong> <strong>$ 214.00</strong>
<small class="price-period">/ month</small> <small class="price-period">/ year</small>
<div class="price-save" style="display:none" data-monthly-text="FREE TRIAL coupon = 1 month free" data-yearly-text="Save 8%">1 month free</div> <div class="price-save">Save 8%</div>
</div> </div>
<p class="desc">&ldquo;ODOO Standard .. that is all my business needs&rdquo;</p> <p class="desc">&ldquo;ODOO Standard .. that is all my business needs&rdquo;</p>
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Side Hustle', 19.40, 214.0, false)">Buy Now</a> <a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Side Hustle', 214.00, false)">Buy Now</a>
<ul> <ul>
<li><i class="fas fa-check" style="color: var(--success)"></i> ODOO CE Hosting</li> <li><i class="fas fa-check" style="color: var(--success)"></i> ODOO CE Hosting</li>
<li><i class="fas fa-check" style="color: var(--success)"></i> Automatic Backups</li> <li><i class="fas fa-check" style="color: var(--success)"></i> Automatic Backups</li>
@@ -267,12 +262,12 @@
<div class="pcard-body"> <div class="pcard-body">
<h3>On the Rise</h3> <h3>On the Rise</h3>
<div class="price"> <div class="price">
<strong class="price-amount" data-monthly="36.25" data-yearly="395.00">$ 36.25</strong> <strong>$ 395.00</strong>
<small class="price-period">/ month</small> <small class="price-period">/ year</small>
<div class="price-save" style="display:none" data-monthly-text="FREE TRIAL coupon = 1 month free" data-yearly-text="Save 9%">1 month free</div> <div class="price-save">Save 9%</div>
</div> </div>
<p class="desc">&ldquo;I need some modules and professional reports&rdquo;</p> <p class="desc">&ldquo;I need some modules and professional reports&rdquo;</p>
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('On the Rise', 36.25, 395.0, false)">Buy Now</a> <a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('On the Rise', 395.00, false)">Buy Now</a>
<ul> <ul>
<li><i class="fas fa-check" style="color: var(--success)"></i> ODOO CE Hosting</li> <li><i class="fas fa-check" style="color: var(--success)"></i> ODOO CE Hosting</li>
<li><i class="fas fa-check" style="color: var(--success)"></i> Automatic Backups</li> <li><i class="fas fa-check" style="color: var(--success)"></i> Automatic Backups</li>
@@ -287,12 +282,12 @@
<div class="pcard-body"> <div class="pcard-body">
<h3>Powerhouse</h3> <h3>Powerhouse</h3>
<div class="price"> <div class="price">
<strong class="price-amount" data-monthly="49.60" data-yearly="535.00">$ 49.60</strong> <strong>$ 535.00</strong>
<small class="price-period">/ month</small> <small class="price-period">/ year</small>
<div class="price-save" style="display:none" data-monthly-text="FREE TRIAL coupon = 1 month free" data-yearly-text="Save 10%">1 month free</div> <div class="price-save">Save 10%</div>
</div> </div>
<p class="desc">&ldquo;ODOO Enterprise is a must have!&rdquo;</p> <p class="desc">&ldquo;ODOO Enterprise is a must have!&rdquo;</p>
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Powerhouse', 49.60, 535.0, false)">Buy Now</a> <a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Powerhouse', 535.00, false)">Buy Now</a>
<ul> <ul>
<li><i class="fas fa-check" style="color: var(--success)"></i> ODOO CE Hosting</li> <li><i class="fas fa-check" style="color: var(--success)"></i> ODOO CE Hosting</li>
<li><i class="fas fa-check" style="color: var(--success)"></i> Automatic Backups</li> <li><i class="fas fa-check" style="color: var(--success)"></i> Automatic Backups</li>
@@ -309,12 +304,12 @@
<div class="pcard-body"> <div class="pcard-body">
<h3>Empire</h3> <h3>Empire</h3>
<div class="price"> <div class="price">
<strong class="price-amount" data-monthly="80.00" data-yearly="950.00">&gt;$ 80.00</strong> <strong>&gt;$ 950.00</strong>
<small class="price-period">/ month</small> <small class="price-period">/ year</small>
<div class="price-save empire-no-save" style="display:none" data-monthly-text="" data-yearly-text=""></div> <div class="price-save"></div>
</div> </div>
<p class="desc">&ldquo;My house! My Horse! My Server!&rdquo;</p> <p class="desc">&ldquo;My house! My Horse! My Server!&rdquo;</p>
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Empire', 80.0, 950.0, true)">Get Custom Quote</a> <a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Empire', 950.00, true)">Get Custom Quote</a>
<ul> <ul>
<li><i class="fas fa-check" style="color: var(--success)"></i> Our service on your server</li> <li><i class="fas fa-check" style="color: var(--success)"></i> Our service on your server</li>
<li><i class="fas fa-check" style="color: var(--success)"></i> All modules &amp; features</li> <li><i class="fas fa-check" style="color: var(--success)"></i> All modules &amp; features</li>
@@ -325,7 +320,7 @@
<div class="pcard-foot">Instant setup, satisfied or reimbursed.</div> <div class="pcard-foot">Instant setup, satisfied or reimbursed.</div>
</div> </div>
</div> </div>
<p class="pricing-cta-note" id="pricingCtaNote">&#128274; Secure Stripe checkout &middot; Cancel anytime &middot; <strong>Satisfied or reimbursed</strong></p> <p class="pricing-cta-note">Save money, less administration</p>
</div> </div>
</section> </section>
@@ -336,7 +331,7 @@
<div class="ow-content"> <div class="ow-content">
<h2 class="ow-title" id="orderPlanTitle">On the Rise</h2> <h2 class="ow-title" id="orderPlanTitle">On the Rise</h2>
<p class="ow-price"> <p class="ow-price">
<span class="ow-price-amount" id="orderPlanPrice">$ 36.25</span> <span id="orderPlanPeriod">/ month</span> <span class="ow-price-amount" id="orderPlanPrice">$ 395.00</span> <span id="orderPlanPeriod">/ year</span>
<span class="ow-price-tax" id="orderPlanTax">+ tax</span> <span class="ow-price-tax" id="orderPlanTax">+ tax</span>
</p> </p>
<p class="ow-coupon-msg" id="orderCouponMsg">Use coupon <strong>FREE TRIAL</strong> at checkout for 1 month free</p> <p class="ow-coupon-msg" id="orderCouponMsg">Use coupon <strong>FREE TRIAL</strong> at checkout for 1 month free</p>
+6 -88
View File
@@ -112,7 +112,6 @@ var si = 0,
var orderPopupShown = false; var orderPopupShown = false;
function openOrderWidget( function openOrderWidget(
plan, plan,
monthlyPrice,
yearlyPrice, yearlyPrice,
isEmpire, isEmpire,
) { ) {
@@ -120,28 +119,15 @@ var si = 0,
"block"; "block";
var widget = document.getElementById("orderWidgetOverlay"); var widget = document.getElementById("orderWidgetOverlay");
document.getElementById("orderPlanTitle").textContent = plan; document.getElementById("orderPlanTitle").textContent = plan;
var yearly = yearlyMode; var price = yearlyPrice;
var price = yearly ? yearlyPrice : monthlyPrice;
var amountEl = document.getElementById("orderPlanPrice"); var amountEl = document.getElementById("orderPlanPrice");
var prefix = isEmpire ? ">$" : "$"; var prefix = isEmpire ? ">" : "";
amountEl.textContent = prefix + " " + price.toFixed(2); amountEl.textContent = prefix + "$ " + price.toFixed(2);
document.getElementById("orderPlanPeriod").textContent = yearly document.getElementById("orderPlanPeriod").textContent = "/ year";
? "/ year"
: "/ month";
var couponMsg = document.getElementById("orderCouponMsg"); var couponMsg = document.getElementById("orderCouponMsg");
var yearlySave = document.getElementById("orderYearlySave"); var yearlySave = document.getElementById("orderYearlySave");
if (!yearly) { couponMsg.style.display = "none";
couponMsg.style.display = "block"; yearlySave.style.display = "block";
yearlySave.style.display = "none";
} else {
couponMsg.style.display = "none";
yearlySave.style.display = "block";
var saved = Math.round(
(1 - yearlyPrice / (monthlyPrice * 12)) * 100,
);
document.getElementById("orderSavePercent").textContent =
saved;
}
var buyBtn = document.getElementById("orderBuyBtn"); var buyBtn = document.getElementById("orderBuyBtn");
var loc = document.getElementById("orderServerLocation").value; var loc = document.getElementById("orderServerLocation").value;
buyBtn.href = buyBtn.href =
@@ -203,74 +189,6 @@ var si = 0,
} }
status.style.display = "block"; status.style.display = "block";
} }
/* ---- Billing Toggle ---- */
var yearlyMode = false;
var biSwitch = document.getElementById("billingSwitch");
var labels = document.querySelectorAll(".toggle-label");
var monthlyLabel = document.querySelector(".toggle-label-monthly");
var yearlyLabel = document.querySelector(".toggle-label-yearly");
function updatePrices(yearly) {
var amounts = document.querySelectorAll(".price-amount");
for (var k = 0; k < amounts.length; k++) {
var el = amounts[k];
var val = yearly
? el.getAttribute("data-yearly")
: el.getAttribute("data-monthly");
var prefix =
el.textContent.trim().charAt(0) === ">" ? ">" : "";
el.textContent = prefix + "$ " + parseFloat(val).toFixed(2);
}
var periods = document.querySelectorAll(".price-period");
for (var k = 0; k < periods.length; k++) {
periods[k].textContent = yearly ? "/ year" : "/ month";
}
var saves = document.querySelectorAll(".price-save");
for (var k = 0; k < saves.length; k++) {
var s = saves[k];
if (yearly) {
s.style.display = "block";
s.textContent = s.getAttribute("data-yearly-text");
} else {
s.style.display = "block";
s.textContent = s.getAttribute("data-monthly-text");
}
}
var ctaNote = document.getElementById("pricingCtaNote");
if (ctaNote) {
ctaNote.innerHTML = yearly
? "Save money, less administration"
: "Perfect for trial, termination any time";
}
}
function setBilling(yearly) {
yearlyMode = yearly;
if (yearly) {
biSwitch.classList.add("yearly");
monthlyLabel.classList.remove("active");
yearlyLabel.classList.add("active");
} else {
biSwitch.classList.remove("yearly");
monthlyLabel.classList.add("active");
yearlyLabel.classList.remove("active");
}
updatePrices(yearly);
}
biSwitch.addEventListener("click", function () {
setBilling(!yearlyMode);
});
monthlyLabel.addEventListener("click", function () {
setBilling(false);
});
yearlyLabel.addEventListener("click", function () {
setBilling(true);
});
/* init billing display to monthly */
updatePrices(false);
/* ---- Blog Module ---- */ /* ---- Blog Module ---- */
var blogState = { var blogState = {
allPosts: [], allPosts: [],
-47
View File
@@ -626,53 +626,6 @@ img { max-width: 100%; height: auto; vertical-align: middle; }
color: var(--success); color: var(--success);
margin-top: 0.15rem; margin-top: 0.15rem;
} }
/* Billing Toggle */
.billing-toggle-wrap {
display: flex;
align-items: center;
justify-content: center;
gap: 0.75rem;
margin-bottom: 1.5rem;
}
.toggle-label {
font-size: 0.82rem;
font-weight: 500;
color: rgba(255,255,255,0.5);
cursor: pointer;
transition: color 0.2s;
user-select: none;
}
.toggle-label.active { color: #fff; font-weight: 600; }
.toggle-label small {
display: block;
font-size: 0.72rem;
font-weight: 500;
color: var(--success);
margin-top: 0.1rem;
}
.toggle-switch {
width: 48px;
height: 26px;
background: rgba(255,255,255,0.15);
border-radius: 13px;
cursor: pointer;
position: relative;
transition: background 0.25s;
flex-shrink: 0;
}
.toggle-switch.yearly { background: var(--brass); }
.toggle-switch .thumb {
position: absolute;
top: 3px;
left: 3px;
width: 20px;
height: 20px;
background: #fff;
border-radius: 50%;
transition: left 0.25s;
box-shadow: 0 1px 3px rgba(0,0,0,0.15);
}
.toggle-switch.yearly .thumb { left: 25px; }
.price-period { color: var(--ink-soft); font-size: 0.68rem; } .price-period { color: var(--ink-soft); font-size: 0.68rem; }
.pricing-cta-note { .pricing-cta-note {
text-align: center; text-align: center;