2026-05-02 08:26:18 +12:00
|
|
|
|
<script lang="ts">
|
|
|
|
|
|
import Icon from '$lib/components/Icon.svelte';
|
|
|
|
|
|
import type { FooterContent, LinkItem } from '$lib/types';
|
2026-05-11 21:02:24 +12:00
|
|
|
|
import { locationPages } from '$lib/content/locations';
|
2026-05-02 08:26:18 +12:00
|
|
|
|
|
|
|
|
|
|
export let footer: FooterContent;
|
|
|
|
|
|
|
2026-05-11 21:02:24 +12:00
|
|
|
|
|
2026-05-02 08:26:18 +12:00
|
|
|
|
const socialLinks: LinkItem[] = [
|
|
|
|
|
|
{ label: 'Instagram', href: 'https://www.instagram.com/goodwalk.nz/', external: true },
|
|
|
|
|
|
{ label: 'Facebook', href: 'https://facebook.com/goodwalk.nz', external: true },
|
|
|
|
|
|
{ label: 'Google', href: 'https://g.page/r/CUsvrWPhkYrAEB0', external: true }
|
|
|
|
|
|
];
|
2026-05-05 22:47:14 +12:00
|
|
|
|
|
|
|
|
|
|
const aboutLink: LinkItem = { label: 'About Us', href: '/about' };
|
|
|
|
|
|
|
|
|
|
|
|
function withAboutLink(links: LinkItem[]) {
|
|
|
|
|
|
if (links.some((link) => link.href === aboutLink.href || link.label === aboutLink.label)) {
|
|
|
|
|
|
return links;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const contactIndex = links.findIndex((link) => link.href === '/contact-us');
|
|
|
|
|
|
|
|
|
|
|
|
if (contactIndex === -1) {
|
|
|
|
|
|
return [...links, aboutLink];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return [...links.slice(0, contactIndex), aboutLink, ...links.slice(contactIndex)];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$: navigationLinks = withAboutLink(footer.navigationLinks);
|
2026-05-02 08:26:18 +12:00
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<footer>
|
|
|
|
|
|
<div class="footer-inner">
|
|
|
|
|
|
<div class="footer-brand">
|
2026-05-11 21:02:24 +12:00
|
|
|
|
<enhanced:img
|
|
|
|
|
|
src="$lib/images/goodwalk-auckland-dog-walking-logo.png"
|
2026-05-02 08:26:18 +12:00
|
|
|
|
alt="Goodwalk – Auckland dog walking service logo"
|
|
|
|
|
|
class="footer-logo"
|
2026-05-02 19:44:45 +12:00
|
|
|
|
loading="lazy"
|
|
|
|
|
|
decoding="async"
|
2026-05-02 08:26:18 +12:00
|
|
|
|
/>
|
|
|
|
|
|
<p>{footer.brandText}</p>
|
|
|
|
|
|
<div class="social-links">
|
|
|
|
|
|
<a href={socialLinks[0].href} target="_blank" rel="noopener" aria-label="Instagram">
|
|
|
|
|
|
<Icon name="fab fa-instagram" />
|
|
|
|
|
|
</a>
|
|
|
|
|
|
<a href={socialLinks[1].href} target="_blank" rel="noopener" aria-label="Facebook">
|
|
|
|
|
|
<Icon name="fab fa-facebook-f" />
|
|
|
|
|
|
</a>
|
|
|
|
|
|
<a href={socialLinks[2].href} target="_blank" rel="noopener" aria-label="Google">
|
|
|
|
|
|
<Icon name="fab fa-google" />
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="footer-explore">
|
2026-05-05 22:48:18 +12:00
|
|
|
|
<p class="footer-col-label">Explore Goodwalk</p>
|
2026-05-02 08:26:18 +12:00
|
|
|
|
<ul class="footer-nav">
|
2026-05-05 22:47:14 +12:00
|
|
|
|
{#each navigationLinks as link}
|
2026-05-02 08:26:18 +12:00
|
|
|
|
<li>
|
|
|
|
|
|
<a
|
|
|
|
|
|
href={link.href}
|
|
|
|
|
|
target={link.external ? '_blank' : undefined}
|
|
|
|
|
|
rel={link.external ? 'noopener' : undefined}
|
|
|
|
|
|
>
|
|
|
|
|
|
{link.label}
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
{/each}
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2026-05-11 21:02:24 +12:00
|
|
|
|
<div class="footer-locations">
|
|
|
|
|
|
<p class="footer-col-label">Areas we serve</p>
|
|
|
|
|
|
<ul class="footer-nav">
|
|
|
|
|
|
{#each locationPages as loc}
|
|
|
|
|
|
<li><a href="/locations/{loc.slug}">{loc.suburb}</a></li>
|
|
|
|
|
|
{/each}
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2026-05-06 17:42:43 +12:00
|
|
|
|
<div class="footer-action footer-panel footer-panel-accent">
|
2026-05-02 08:26:18 +12:00
|
|
|
|
<p class="footer-col-label">Get Started</p>
|
2026-05-06 17:42:43 +12:00
|
|
|
|
<h3 class="footer-action-title">Ready when you are</h3>
|
|
|
|
|
|
<p class="footer-action-copy">Questions, pricing, or your first Meet & Greet. Start here and we’ll reply within 24 hours.</p>
|
2026-05-02 11:24:11 +12:00
|
|
|
|
<a href="/contact-us" class="footer-book-btn">
|
2026-05-06 17:42:43 +12:00
|
|
|
|
Contact Us
|
2026-05-02 08:26:18 +12:00
|
|
|
|
<Icon name="fas fa-arrow-right" />
|
|
|
|
|
|
</a>
|
2026-05-06 17:42:43 +12:00
|
|
|
|
<p class="footer-book-note">Friendly, no-pressure first step</p>
|
2026-05-02 08:26:18 +12:00
|
|
|
|
<a
|
|
|
|
|
|
href="https://g.page/r/CUsvrWPhkYrAEB0/"
|
|
|
|
|
|
target="_blank"
|
|
|
|
|
|
rel="noopener"
|
|
|
|
|
|
class="footer-reviews"
|
|
|
|
|
|
>
|
2026-05-06 11:36:19 +12:00
|
|
|
|
<img
|
|
|
|
|
|
class="footer-google-logo"
|
|
|
|
|
|
src="/images/google-g-logo.svg"
|
|
|
|
|
|
alt=""
|
|
|
|
|
|
width="16"
|
|
|
|
|
|
height="17"
|
|
|
|
|
|
/>
|
2026-05-06 08:27:24 +12:00
|
|
|
|
<span>30+ five-star Google reviews</span>
|
2026-05-02 08:26:18 +12:00
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
|
|
{#if footer.email || footer.phone}
|
|
|
|
|
|
<div class="footer-contact">
|
|
|
|
|
|
{#if footer.email}
|
|
|
|
|
|
<a href="mailto:{footer.email}" class="footer-contact-link">
|
|
|
|
|
|
<Icon name="fas fa-envelope" />
|
|
|
|
|
|
{footer.email}
|
|
|
|
|
|
</a>
|
|
|
|
|
|
{/if}
|
|
|
|
|
|
{#if footer.phone}
|
|
|
|
|
|
<a href="tel:{footer.phone.replace(/[^0-9+]/g, '')}" class="footer-contact-link">
|
|
|
|
|
|
<Icon name="fas fa-phone" />
|
|
|
|
|
|
{footer.phone}
|
|
|
|
|
|
</a>
|
|
|
|
|
|
{/if}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
{/if}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="footer-bottom">
|
|
|
|
|
|
<span>{footer.copyright}</span>
|
|
|
|
|
|
<nav class="footer-legal">
|
|
|
|
|
|
<a href="/terms-and-conditions">Terms & Conditions</a>
|
|
|
|
|
|
<a href="/privacy-policy">Privacy Policy</a>
|
|
|
|
|
|
</nav>
|
2026-05-13 00:34:34 +12:00
|
|
|
|
<a href="#" class="footer-back-top" aria-label="Back to top">↑ Back to top</a>
|
2026-05-02 08:26:18 +12:00
|
|
|
|
</div>
|
|
|
|
|
|
</footer>
|