nice
This commit is contained in:
+171
-35
@@ -38,6 +38,11 @@
|
||||
rel="stylesheet"
|
||||
href="https://cdn.jsdelivr.net/npm/@slicemypage/motionflow@latest/dist/motionflow.min.css"
|
||||
/>
|
||||
<script
|
||||
defer
|
||||
data-domain="my-biz.app"
|
||||
src="https://plausible.odoo4projects.com/js/script.outbound-links.tagged-events.js"
|
||||
></script>
|
||||
<style>
|
||||
*,
|
||||
*::before,
|
||||
@@ -1704,7 +1709,9 @@
|
||||
text-align: left;
|
||||
font: inherit;
|
||||
cursor: pointer;
|
||||
transition: background 0.2s, color 0.2s;
|
||||
transition:
|
||||
background 0.2s,
|
||||
color 0.2s;
|
||||
}
|
||||
|
||||
.modal-select-option:hover,
|
||||
@@ -1861,7 +1868,11 @@
|
||||
<a href="#customization">Customization</a>
|
||||
</div>
|
||||
<div class="nav-right">
|
||||
<a class="nav-cta-book" href="#story">Book Meeting</a>
|
||||
<a
|
||||
class="nav-cta-book plausible-event-name=Meeting"
|
||||
href="#story"
|
||||
>Book Meeting</a
|
||||
>
|
||||
<div class="nav-chat" id="nav-chat">
|
||||
<div
|
||||
class="nav-chat-panel chat-panel"
|
||||
@@ -1906,8 +1917,17 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<a class="nav-cta" id="open-modal" href="#">Free Trial</a>
|
||||
<a class="nav-cta nav-cta-sm open-modal" href="#">Try Free</a>
|
||||
<a
|
||||
class="nav-cta plausible-event-name=Trial"
|
||||
id="open-modal"
|
||||
href="#"
|
||||
>Free Trial</a
|
||||
>
|
||||
<a
|
||||
class="nav-cta nav-cta-sm open-modal plausible-event-name=Trial"
|
||||
href="#"
|
||||
>Try Free</a
|
||||
>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
@@ -2241,7 +2261,9 @@
|
||||
class="hero-actions"
|
||||
style="margin-top: auto; justify-content: flex-end"
|
||||
>
|
||||
<a class="btn-secondary" href="#pricing"
|
||||
<a
|
||||
class="btn-secondary plausible-event-name=Meeting"
|
||||
href="#pricing"
|
||||
>Book Meeting</a
|
||||
>
|
||||
</div>
|
||||
@@ -2417,7 +2439,7 @@
|
||||
<li>Community support</li>
|
||||
</ul>
|
||||
<a
|
||||
class="pricing-cta open-modal"
|
||||
class="pricing-cta open-modal plausible-event-name=Trial"
|
||||
data-plan="Side Hustle"
|
||||
href="#"
|
||||
>Free Trial</a
|
||||
@@ -2447,7 +2469,7 @@
|
||||
<li>Email and chat support</li>
|
||||
</ul>
|
||||
<a
|
||||
class="pricing-cta open-modal"
|
||||
class="pricing-cta open-modal plausible-event-name=Trial"
|
||||
data-plan="On the Rise"
|
||||
href="#"
|
||||
>Free Trial</a
|
||||
@@ -2476,7 +2498,9 @@
|
||||
<li>Unlimited users</li>
|
||||
<li>Dedicated support line</li>
|
||||
</ul>
|
||||
<a class="pricing-cta open-modal" href="#"
|
||||
<a
|
||||
class="pricing-cta open-modal plausible-event-name=Trial"
|
||||
href="#"
|
||||
>Talk through hosting</a
|
||||
>
|
||||
</div>
|
||||
@@ -2534,7 +2558,9 @@
|
||||
reporting? Work with the people who already know the
|
||||
stack and can ship practical improvements without drama.
|
||||
</p>
|
||||
<a class="custom-link open-modal" href="#"
|
||||
<a
|
||||
class="custom-link open-modal plausible-event-name=Trial"
|
||||
href="#"
|
||||
>Request scoped help →</a
|
||||
>
|
||||
</div>
|
||||
@@ -2561,7 +2587,10 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="footer-contact-shell">
|
||||
<form class="footer-contact-form" id="footer-contact-form">
|
||||
<form
|
||||
class="footer-contact-form plausible-event-name=eMail+Feedback"
|
||||
id="footer-contact-form"
|
||||
>
|
||||
<input type="hidden" name="source" value="my-biz.app" />
|
||||
<div class="footer-contact-input-row">
|
||||
<input
|
||||
@@ -2604,14 +2633,23 @@
|
||||
<h4>About</h4>
|
||||
<ul>
|
||||
<li><a href="about.html#about-us">About Us</a></li>
|
||||
<li><a href="about.html#faq">FAQ</a></li>
|
||||
<li><a href="#" id="faq-chat-link">FAQ</a></li>
|
||||
<li><a href="about.html#careers">Careers</a></li>
|
||||
<li><a href="about.html#partners">Partners</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<span>© 2026 my-biz.app · All rights reserved.</span>
|
||||
<span>
|
||||
© 2026 my-biz.app · All rights reserved. · This service
|
||||
is powered by
|
||||
<a
|
||||
href="https://ODOO4projects.com"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>ODOO4projects</a
|
||||
>
|
||||
</span>
|
||||
<div class="footer-legal">
|
||||
<a href="legal.html#privacy">Privacy</a>
|
||||
<a href="legal.html#terms">Terms</a>
|
||||
@@ -2720,7 +2758,10 @@
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div class="modal-field-group modal-select" id="modal-location-select">
|
||||
<div
|
||||
class="modal-field-group modal-select"
|
||||
id="modal-location-select"
|
||||
>
|
||||
<label class="field-label" for="modal-location"
|
||||
>Server Location</label
|
||||
>
|
||||
@@ -2740,7 +2781,11 @@
|
||||
role="listbox"
|
||||
aria-labelledby="modal-location-button"
|
||||
>
|
||||
<button type="button" class="modal-select-option" data-value="Boston, US">
|
||||
<button
|
||||
type="button"
|
||||
class="modal-select-option"
|
||||
data-value="Boston, US"
|
||||
>
|
||||
🇺🇸 Boston
|
||||
</button>
|
||||
<button
|
||||
@@ -2750,7 +2795,11 @@
|
||||
>
|
||||
🇬🇧 Manchester
|
||||
</button>
|
||||
<button type="button" class="modal-select-option" data-value="Mumbai, IN">
|
||||
<button
|
||||
type="button"
|
||||
class="modal-select-option"
|
||||
data-value="Mumbai, IN"
|
||||
>
|
||||
🇮🇳 Mumbai
|
||||
</button>
|
||||
<button
|
||||
@@ -2760,10 +2809,18 @@
|
||||
>
|
||||
🇧🇷 São Paulo
|
||||
</button>
|
||||
<button type="button" class="modal-select-option" data-value="Meppel, NL">
|
||||
<button
|
||||
type="button"
|
||||
class="modal-select-option"
|
||||
data-value="Meppel, NL"
|
||||
>
|
||||
🇳🇱 Meppel
|
||||
</button>
|
||||
<button type="button" class="modal-select-option" data-value="Sydney, AU">
|
||||
<button
|
||||
type="button"
|
||||
class="modal-select-option"
|
||||
data-value="Sydney, AU"
|
||||
>
|
||||
🇦🇺 Sydney
|
||||
</button>
|
||||
</div>
|
||||
@@ -2887,12 +2944,20 @@
|
||||
applyToFields(document);
|
||||
applyToLinks(document);
|
||||
|
||||
function trackEvent(name, props) {
|
||||
if (typeof window.plausible !== "function") return;
|
||||
window.plausible(name, {
|
||||
props: props || {},
|
||||
});
|
||||
}
|
||||
|
||||
window._mbsTracking = {
|
||||
params: tracking,
|
||||
applyToLinks: applyToLinks,
|
||||
applyToFields: applyToFields,
|
||||
appendToFormData: appendToFormData,
|
||||
extendPayload: extendPayload,
|
||||
trackEvent: trackEvent,
|
||||
};
|
||||
})();
|
||||
</script>
|
||||
@@ -2912,6 +2977,11 @@
|
||||
if (window._mbsTracking)
|
||||
formData =
|
||||
window._mbsTracking.appendToFormData(formData);
|
||||
if (window._mbsTracking) {
|
||||
window._mbsTracking.trackEvent("eMail Feedback", {
|
||||
source: "footer",
|
||||
});
|
||||
}
|
||||
status.textContent = "Sending...";
|
||||
button.disabled = true;
|
||||
fetch(WEBHOOK, {
|
||||
@@ -3035,6 +3105,16 @@
|
||||
render();
|
||||
}
|
||||
|
||||
var searchTrackTimer = null;
|
||||
|
||||
function trackSearch() {
|
||||
var term = (search.value || "").trim();
|
||||
if (!term || !window._mbsTracking) return;
|
||||
window._mbsTracking.trackEvent("Search", {
|
||||
query: term,
|
||||
});
|
||||
}
|
||||
|
||||
prevBtn.addEventListener("click", function () {
|
||||
if (currentPage === 0) return;
|
||||
currentPage -= 1;
|
||||
@@ -3048,7 +3128,11 @@
|
||||
render();
|
||||
});
|
||||
|
||||
search.addEventListener("input", applyFilter);
|
||||
search.addEventListener("input", function () {
|
||||
applyFilter();
|
||||
clearTimeout(searchTrackTimer);
|
||||
searchTrackTimer = setTimeout(trackSearch, 450);
|
||||
});
|
||||
|
||||
fetch(POSTS_URL)
|
||||
.then(function (response) {
|
||||
@@ -3132,6 +3216,12 @@
|
||||
if (navChat) navChat.classList.add("open");
|
||||
panel.classList.add("open");
|
||||
panel.setAttribute("aria-hidden", "false");
|
||||
if (!panel.dataset.trackedOpen && window._mbsTracking) {
|
||||
panel.dataset.trackedOpen = "true";
|
||||
window._mbsTracking.trackEvent("Chat Agent", {
|
||||
entry: "open",
|
||||
});
|
||||
}
|
||||
if (!greeted) {
|
||||
greeted = true;
|
||||
appendMsg(
|
||||
@@ -3148,6 +3238,7 @@
|
||||
if (navChat) navChat.classList.remove("open");
|
||||
panel.classList.remove("open");
|
||||
panel.setAttribute("aria-hidden", "true");
|
||||
delete panel.dataset.trackedOpen;
|
||||
}
|
||||
|
||||
function togglePanel() {
|
||||
@@ -3174,6 +3265,12 @@
|
||||
if (!text || busy) return;
|
||||
busy = true;
|
||||
|
||||
if (window._mbsTracking) {
|
||||
window._mbsTracking.trackEvent("Chat Agent", {
|
||||
entry: "message",
|
||||
});
|
||||
}
|
||||
|
||||
appendMsg("user", text);
|
||||
openPanel();
|
||||
navInput.value = "";
|
||||
@@ -3243,6 +3340,19 @@
|
||||
});
|
||||
}
|
||||
|
||||
var faqChatLink = document.getElementById("faq-chat-link");
|
||||
if (faqChatLink) {
|
||||
faqChatLink.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
window.setTimeout(function () {
|
||||
openPanel();
|
||||
if (navInput) navInput.value = "FAQ";
|
||||
send("FAQ");
|
||||
}, 0);
|
||||
});
|
||||
}
|
||||
|
||||
document.addEventListener("click", function (e) {
|
||||
var nc = document.getElementById("nav-chat");
|
||||
if (
|
||||
@@ -3539,29 +3649,46 @@
|
||||
var planField = document.getElementById("modal-plan");
|
||||
var productField = document.getElementById("modal-product");
|
||||
var locationField = document.getElementById("modal-location");
|
||||
var locationSelect = document.getElementById("modal-location-select");
|
||||
var locationButton = document.getElementById("modal-location-button");
|
||||
var locationMenu = document.getElementById("modal-location-menu");
|
||||
var locationSelect = document.getElementById(
|
||||
"modal-location-select",
|
||||
);
|
||||
var locationButton = document.getElementById(
|
||||
"modal-location-button",
|
||||
);
|
||||
var locationMenu = document.getElementById(
|
||||
"modal-location-menu",
|
||||
);
|
||||
var defaultProduct = productField.value;
|
||||
|
||||
function syncLocationLabel() {
|
||||
var value = locationField.value || "";
|
||||
var selected = null;
|
||||
|
||||
locationMenu.querySelectorAll(".modal-select-option").forEach(function (option) {
|
||||
var isSelected = option.getAttribute("data-value") === value;
|
||||
if (isSelected) selected = option;
|
||||
option.classList.toggle("is-selected", isSelected);
|
||||
option.setAttribute("aria-selected", isSelected ? "true" : "false");
|
||||
});
|
||||
locationMenu
|
||||
.querySelectorAll(".modal-select-option")
|
||||
.forEach(function (option) {
|
||||
var isSelected =
|
||||
option.getAttribute("data-value") === value;
|
||||
if (isSelected) selected = option;
|
||||
option.classList.toggle("is-selected", isSelected);
|
||||
option.setAttribute(
|
||||
"aria-selected",
|
||||
isSelected ? "true" : "false",
|
||||
);
|
||||
});
|
||||
|
||||
locationButton.textContent = selected
|
||||
? selected.textContent.trim()
|
||||
: "Select your server location";
|
||||
locationButton.classList.toggle("is-placeholder", !selected);
|
||||
locationButton.classList.toggle(
|
||||
"is-placeholder",
|
||||
!selected,
|
||||
);
|
||||
locationButton.setAttribute(
|
||||
"aria-expanded",
|
||||
locationSelect.classList.contains("open") ? "true" : "false",
|
||||
locationSelect.classList.contains("open")
|
||||
? "true"
|
||||
: "false",
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3605,16 +3732,20 @@
|
||||
}
|
||||
|
||||
locationButton.addEventListener("click", function () {
|
||||
if (locationSelect.classList.contains("open")) closeLocationMenu();
|
||||
if (locationSelect.classList.contains("open"))
|
||||
closeLocationMenu();
|
||||
else openLocationMenu();
|
||||
});
|
||||
|
||||
locationMenu.querySelectorAll(".modal-select-option").forEach(function (option) {
|
||||
option.addEventListener("click", function () {
|
||||
locationField.value = option.getAttribute("data-value") || "";
|
||||
closeLocationMenu();
|
||||
locationMenu
|
||||
.querySelectorAll(".modal-select-option")
|
||||
.forEach(function (option) {
|
||||
option.addEventListener("click", function () {
|
||||
locationField.value =
|
||||
option.getAttribute("data-value") || "";
|
||||
closeLocationMenu();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
document
|
||||
.getElementById("open-modal")
|
||||
@@ -3660,6 +3791,11 @@
|
||||
if (window._mbsTracking)
|
||||
formData =
|
||||
window._mbsTracking.appendToFormData(formData);
|
||||
if (window._mbsTracking) {
|
||||
window._mbsTracking.trackEvent("Trial", {
|
||||
source: planField.value || "General Free Trial",
|
||||
});
|
||||
}
|
||||
btn.textContent = "Sending...";
|
||||
btn.disabled = true;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user