// Defensive fix for environments or extensions that attempt to assign window.fetch
// when window.fetch only has a getter defined.
(function() {
if (typeof window !== 'undefined') {
try {
let _fetch = window.fetch;
Object.defineProperty(window, 'fetch', {
get() {
return _fetch;
},
set(fn) {
_fetch = fn;
},
configurable: true,
enumerable: true
});
} catch (_) {
try {
let _fetch = window.fetch;
Object.defineProperty(Window.prototype, 'fetch', {
get() {
return _fetch;
},
set(fn) {
_fetch = fn;
},
configurable: true,
enumerable: true
});
} catch (_) {}
}
window.addEventListener('error', (event) => {
if (
event?.message &&
(event.message.includes('fetch') || event.message.includes('only a getter'))
) {
event.preventDefault();
}
}, true);
}
})();
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import App from './App.tsx';
import { TariffProvider } from './context/TariffContext.tsx';
import { Header } from './components/Header.tsx';
import { Footer } from './components/Footer.tsx';
import { OwnerAdminBar } from './components/OwnerAdminBar.tsx';
import { OwnerAuthModal } from './components/OwnerAuthModal.tsx';
import { TariffEditorModal } from './components/TariffEditorModal.tsx';
import { FloatingActions } from './components/FloatingActions.tsx';
import './index.css';
// 1. Homepage SPA full application mount
const rootElement = document.getElementById('root');
if (rootElement) {
createRoot(rootElement).render(
);
}
// 2. Shared Universal Header Mount (Used across all subpages)
const headerRoot = document.getElementById('site-header-root');
if (headerRoot) {
createRoot(headerRoot).render(
);
}
// 3. Shared Universal Footer & Floating Actions Mount (Used across all subpages)
const footerRoot = document.getElementById('site-footer-root');
if (footerRoot) {
createRoot(footerRoot).render(
);
}