diff --git a/src/components/MobileStickyCtaBar.astro b/src/components/MobileStickyCtaBar.astro new file mode 100644 index 0000000..7e804b5 --- /dev/null +++ b/src/components/MobileStickyCtaBar.astro @@ -0,0 +1,187 @@ +--- +// MobileStickyCtaBar — Sticky bottom action bar for mobile/tablet (<768px) +// 3 equal columns: Call, WhatsApp, Quote +// - Fixed to bottom of viewport +// - Respects safe-area-inset-bottom on iOS +// - Hidden at md+ breakpoints (>=768px) +// - Hidden on print +// - Light + dark theme aware +--- + + + + diff --git a/src/components/WhatsAppFab.astro b/src/components/WhatsAppFab.astro new file mode 100644 index 0000000..ce4bd91 --- /dev/null +++ b/src/components/WhatsAppFab.astro @@ -0,0 +1,104 @@ +--- +// WhatsAppFab — Global floating WhatsApp contact button +// - Fixed bottom-right, 56x56, brand green (#25D366) +// - Visible on every page across desktop and mobile +// - Mobile: lifted above the MobileStickyCtaBar via safe CSS variable offset +// - Respects iOS safe-area-inset-bottom +// - Hidden when printing +--- + + + + + + diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro index e775a7a..0859ab9 100644 --- a/src/layouts/BaseLayout.astro +++ b/src/layouts/BaseLayout.astro @@ -6,6 +6,8 @@ import Header from '../components/Header.astro'; import Footer from '../components/Footer.astro'; import Analytics from '../components/Analytics.astro'; import PWAInstallPrompt from '../components/PWAInstallPrompt.astro'; +import WhatsAppFab from '../components/WhatsAppFab.astro'; +import MobileStickyCtaBar from '../components/MobileStickyCtaBar.astro'; import '../styles/global.css'; interface Props { @@ -290,6 +292,15 @@ const fullTitle = title === 'Home' ? siteName : `${title} | ${siteName}`;