bpb-website/contact/index.html
chris 252865f626 Contact form: split name into first/last, add ntfy notification
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 00:32:10 -04:00

212 lines
9.8 KiB
HTML

<!DOCTYPE html>
<html lang="en" data-theme="light">
<head>
<script defer data-domain="beachpartyballoons.com" src="https://plausible.io/js/script.hash.outbound-links.js"></script>
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
<link rel="apple-touch-icon" sizes="180x180" href="../assets/favicon/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="../assets/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="../assets/favicon/favicon-16x16.png">
<link rel="manifest" href="../assets/favicon/site.webmanifest">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Beach Party Balloons - Your go-to shop for stunning balloon decorations, walk-in arrangements, and deliveries in CT.">
<title>Beach Party Balloons</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@1.0.2/css/bulma.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Autour+One&family=Mogra&family=Rubik+Glitch&display=swap" rel="stylesheet">
<link rel="stylesheet" href="../style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css" integrity="sha512-Evv84Mr4kqVGRNSgIGL/F/aIDqQb7xQ2vcrdIwxfjThSH8CSR7PBEakCr51Ck+w+/U6swU2Im1vVX0SVk9ABhg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<style>
h1 { margin-bottom: 2.1rem; }
.section-title { font-size: 3rem; margin-bottom: 2rem; color: #2c3e50; }
.article { margin-bottom: 3rem; }
#dropzone {
border: 2px dashed #b5b5b5;
border-radius: 6px;
padding: 1.25rem 1rem;
text-align: center;
cursor: pointer;
background: #fafafa;
transition: border-color 0.2s;
}
#dropzone:hover, #dropzone.drag-over { border-color: #209cee; }
#photoPreview { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 0.5rem; }
.preview-wrap { position: relative; display: inline-block; }
.preview-wrap img {
width: 80px; height: 80px; object-fit: cover;
border-radius: 4px; border: 1px solid #ddd; display: block;
}
.preview-wrap .remove-btn {
position: absolute; top: 2px; right: 2px;
background: rgba(0,0,0,.55); color: #fff;
border: none; border-radius: 50%;
width: 20px; height: 20px; font-size: 13px;
cursor: pointer; display: flex; align-items: center; justify-content: center;
}
</style>
</head>
<body>
<nav class="navbar is-info is-spaced has-shadow" role="navigation" aria-label="main navigation">
<div class="navbar-brand is-size-1">
<a class="navbar-item" href="../">
<img style="background-color: white;" src="../assets/logo/BeachPartyBalloons-logo.webp" alt="Beach Party Balloons logo">
</a>
<a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false" data-target="navbarBasicExample">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>
<div id="navbarBasicExample" class="navbar-menu has-text-right">
<div class="navbar-end">
<a class="navbar-item" href="../">Home</a>
<a class="navbar-item" href="https://shop.beachpartyballoons.com">Shop</a>
<a class="navbar-item" href="../about/">About Us</a>
<a class="navbar-item" href="../faq/">FAQ</a>
<a class="navbar-item" href="../terms/">Terms</a>
<a class="navbar-item" href="../gallery/">Gallery</a>
<a class="navbar-item" href="../color/">Colors</a>
<a class="navbar-item is-tab is-active" href="../contact/">Contact</a>
</div>
</div>
</nav>
<button onclick="topFunction()" class="has-text-dark" id="top" title="Go to top">Top</button>
<div class="is-flex-direction-column is-dark">
<h2 class="is-size-4" style="text-align: center;">
<a target="_blank" href="https://maps.app.goo.gl/gRk6NztgMRUsSVJf9">554 Boston Post Road, Milford, CT 06460</a>
</h2>
<h2 class="is-size-4" style="text-align: center;"><a href="tel:2032835626">203.283.5626</a></h2>
<h2 class="is-size-4" style="text-align: center;"><a id="email-link" href="#">&#8203;</a></h2>
</div>
<div class="form-container">
<form id="contactForm" novalidate>
<!-- Honeypot: hidden from humans, filled by bots -->
<div style="display:none;" aria-hidden="true">
<input type="text" name="website" tabindex="-1" autocomplete="off">
</div>
<div class="columns is-mobile">
<div class="column">
<div class="field">
<label class="label">First name <span class="has-text-danger">*</span></label>
<div class="control">
<input class="input" type="text" name="firstName" placeholder="Jane" required autocomplete="given-name">
</div>
<p class="help is-danger" id="err-firstName" style="display:none;"></p>
</div>
</div>
<div class="column">
<div class="field">
<label class="label">Last name <span class="has-text-danger">*</span></label>
<div class="control">
<input class="input" type="text" name="lastName" placeholder="Smith" required autocomplete="family-name">
</div>
<p class="help is-danger" id="err-lastName" style="display:none;"></p>
</div>
</div>
</div>
<div class="field">
<label class="label">Email <span class="has-text-danger">*</span></label>
<div class="control">
<input class="input" type="email" name="email" placeholder="you@example.com" required autocomplete="email">
</div>
<p class="help is-danger" id="err-email" style="display:none;"></p>
</div>
<div class="field">
<label class="label">Phone Number <span class="has-text-danger">*</span></label>
<div class="control">
<input class="input" type="tel" name="phone" placeholder="(203) 555-0123" required autocomplete="tel">
</div>
<p class="help is-danger" id="err-phone" style="display:none;"></p>
</div>
<div class="columns is-mobile">
<div class="column">
<div class="field">
<label class="label">Event Type</label>
<div class="control">
<div class="select is-fullwidth">
<select name="eventType">
<option value="">Select a type…</option>
<option value="Birthday">Birthday</option>
<option value="Corporate">Corporate</option>
<option value="Wedding">Wedding</option>
<option value="Walk-in">Walk-in</option>
<option value="Other">Other</option>
</select>
</div>
</div>
</div>
</div>
<div class="column">
<div class="field">
<label class="label">Event Date</label>
<div class="control">
<input class="input" type="date" name="eventDate">
</div>
</div>
</div>
</div>
<div class="field">
<label class="label">Message <span class="has-text-danger">*</span></label>
<div class="control">
<textarea class="textarea" name="message" placeholder="Tell us about your event…" rows="4" required></textarea>
</div>
<p class="help is-danger" id="err-message" style="display:none;"></p>
</div>
<div class="field">
<label class="label">Photos <span class="has-text-grey is-size-7">(up to 3 images)</span></label>
<div class="control">
<div id="dropzone">
<p><i class="fas fa-images"></i> Drag &amp; drop photos here, or <span class="has-text-info" style="text-decoration:underline;">browse</span></p>
<p class="is-size-7 has-text-grey mt-1">JPEG · PNG · HEIC · WebP — max 10 MB each</p>
<input id="photoInput" type="file" name="photos" accept="image/*" multiple style="display:none;">
</div>
<div id="photoPreview"></div>
<p id="photoError" class="help is-danger" style="display:none;">Maximum 3 photos — extras were ignored.</p>
</div>
</div>
<div id="formAlert" class="notification" style="display:none;"></div>
<div class="field">
<div class="control">
<button type="submit" id="submitBtn" class="button is-info is-fullwidth">Send Message</button>
</div>
</div>
</form>
</div>
<footer class="footer has-background-primary-light">
<div class="content has-text-centered">
<div>
<a target="_blank" href="https://mastodon.social/@beachpartyballoons@mastodon.social"><i class="fa-brands fa-mastodon is-size-2"></i></a>
<a target="_blank" href="https://www.facebook.com/beachpartyballoons"><i class="fa-brands fa-facebook-f is-size-2"></i></a>
<a target="_blank" href="https://www.instagram.com/beachpartyballoons/"><i class="fa-brands fa-instagram is-size-2"></i></a>
<a target="_blank" href="https://bsky.app/profile/beachpartyballoons.bsky.social"><i class="fa-brands fa-bluesky is-size-2"></i></a>
</div>
<p>Copyright &copy; <span id="year"></span> Beach Party Balloons</p>
<p>All images &amp; content are property of Beach Party Balloons. Use of images without written permission is prohibited.</p>
</div>
</footer>
<script src="../script.js"></script>
<script>
const u = 'info', d = 'beachpartyballoons.com';
const link = document.getElementById('email-link');
link.href = 'mailto:' + u + '@' + d;
link.textContent = u + '@' + d;
</script>
<script src="../contact-form.js"></script>
</body>
</html>