/* global React, NA_DATA, NASite, naSupabase */ const { useState } = React; // ============== SHOP PAGE ============== function ShopPage() { const { Photo, Pill } = NASite; return (
Club / Shop

Club shop.

Match jerseys, training kit and club merch are on the way. We're finalising stock — nothing's listed yet so we don't promise anything we can't deliver.

Coming soon

The shop is being stocked.

We're putting together the full range — home and away jerseys, training tops, hoodies and accessories. Once stock is confirmed, everything will be available to order here with club sizing and custom names.

In the meantime, for kit enquiries email admin@nottinghamathletic.com or ask your coach.

Get notified in the club WhatsApp →
); } // ============== CONTACT PAGE ============== function ContactPage() { const { VENUES } = NA_DATA; const [status, setStatus] = useState('idle'); // 'idle' | 'sending' | 'sent' | 'error' const [errMsg, setErrMsg] = useState(''); const [form, setForm] = useState({ name: '', email: '', reason: 'Trial / join the club', message: '' }); const [hp, setHp] = useState(''); // honeypot — must stay empty const startedAt = React.useRef(Date.now()); const set = (k, v) => setForm(f => ({ ...f, [k]: v })); // Map the human-readable dropdown label to a stable enum value for storage. const reasonMap = { 'Trial / join the club': 'trial', 'Schools partnership (Academy CIC)': 'schools', 'Travel teams': 'travel', 'Sponsorship enquiry': 'sponsorship', 'Press / media': 'press', 'Parent question': 'parent', 'General': 'general', }; const submit = async (e) => { e.preventDefault(); setStatus('sending'); setErrMsg(''); // Spam guard: silently "succeed" without writing if it trips. if (naSupabase.looksLikeSpam({ honeypot: hp, startedAt: startedAt.current })) { setStatus('sent'); return; } const parts = form.name.trim().split(/\s+/); const first_name = parts[0] || ''; const last_name = parts.length > 1 ? parts.slice(1).join(' ') : ''; try { await naSupabase.submitEnquiry({ source: 'general_contact', first_name, last_name, email: form.email.trim(), reason: reasonMap[form.reason] || 'general', message: form.message.trim(), }); setStatus('sent'); } catch (err) { console.warn('submitEnquiry failed:', err); setErrMsg(err.message || 'Could not send. Try again or email admin@nottinghamathletic.com.'); setStatus('error'); } }; const sent = status === 'sent'; const sending = status === 'sending'; const reset = () => { setStatus('idle'); setForm({ name: '', email: '', reason: 'Trial / join the club', message: '' }); }; return (
Club / Join & Contact

Get in touch.

Trials, schools partnerships, sponsorship, press, parents' questions — use the form below or email us direct. Matt Parker, our founder, reads everything that comes in.

Where we play
{VENUES.map((v, i) => (
Venue 0{i + 1}

{v.name}

{v.area}
{v.addr}
{v.use}
))}
Direct
All enquiries
admin@nottinghamathletic.com
Founder & Director
Matt Parker
{/* WhatsApp groups — official club announcements + international tours */}
Club community · WhatsApp group
Official Nottingham Athletic announcements.

The official club community group. Match-day reminders, training updates, club news — straight from the coaches.

{/* International announcements WhatsApp group — early bird news on tours, sign-up forms, exclusive rates */}
International announcements · WhatsApp group
Join the tours announcements list.

Further information on upcoming trips abroad — be the first to know, receive sign-up forms and letters, and unlock exclusive early-bird rates.

Send a message
{sent ? (

Thanks. Got it.

Matt or one of the coaches will come back to you within a few days.

) : (
{/* Honeypot — hidden from humans, bots fill it. Leave empty. */}
set('name', e.target.value)} disabled={sending} />
set('email', e.target.value)} disabled={sending} />