/* global React, ReactDOM */
const { useState: useStateA, useEffect: useEffectA } = React;
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
"displayFont": "Fraunces",
"bodyFont": "Inter Tight",
"accent": "#B5694F",
"vetColor": "#1E2A78",
"showEmergencyPill": true
}/*EDITMODE-END*/;
const VET_DEEP_MAP = {
'#1E2A78': '#0B1454',
'#1F3A5F': '#0B2240',
'#0E1A2E': '#040A18',
'#1F4F3A': '#0E2F22',
};
function App() {
const [route, setRouteState] = useStateA("home");
const [location, setLocation] = useStateA("jumeirah");
const [vetSlug, setVetSlug] = useStateA(null);
const [tweaks, setTweak] = window.useTweaks(TWEAK_DEFAULTS);
function setRoute(r) {
setRouteState(r);
window.scrollTo({ top: 0, behavior: 'instant' });
}
// apply tweak CSS variables
useEffectA(() => {
const root = document.documentElement.style;
root.setProperty('--font-display', `"${tweaks.displayFont}", "Times New Roman", serif`);
root.setProperty('--font-body', `"${tweaks.bodyFont}", "Helvetica Neue", Arial, sans-serif`);
root.setProperty('--vet', tweaks.vetColor);
root.setProperty('--vet-deep', VET_DEEP_MAP[tweaks.vetColor] || '#0B1454');
root.setProperty('--care', tweaks.accent);
}, [tweaks]);
const isObjectRoute = typeof route === 'object';
const routeName = isObjectRoute ? route.type : route;
function openVet(slug) { setVetSlug(slug); }
function closeVet() { setVetSlug(null); }
return (
{route === "home" && (
)}
{route === "services" && (
)}
{isObjectRoute && route.type === "service" && (
)}
{route === "team" && (
)}
{route === "locations" && (
)}
{isObjectRoute && route.type === "location" && (
)}
{route === "emergency" && (
)}
{route === "about" && (
)}
{route === "book" && (
)}
{tweaks.showEmergencyPill !== false && }
{vetSlug && }
setTweak('displayFont', v)}
options={['Fraunces', 'Playfair Display', 'Inter Tight']}
/>
setTweak('bodyFont', v)}
options={['Inter Tight', 'Inter', 'Manrope', 'DM Sans']}
/>
setTweak('vetColor', v)}
options={['#1E2A78', '#1F3A5F', '#0E1A2E', '#1F4F3A']}
/>
setTweak('accent', v)}
options={['#B5694F', '#6B8A6F', '#C29435', '#8E3349']}
/>
setTweak('showEmergencyPill', v)}
/>
);
}
ReactDOM.createRoot(document.getElementById('root')).render();