import React, { useEffect, useState } from 'react'; import ReactDOM from 'react-dom/client'; import { BrowserRouter, Routes, Route } from 'react-router-dom'; import { ConfigProvider, theme as antdTheme } from 'antd'; import 'antd/dist/reset.css'; import App from './App'; import Admin from './admin/Admin'; import Login from './customer/Login'; import Register from './customer/Register'; import Account from './customer/Account'; import PrivacyPolicy from './customer/PrivacyPolicy'; import VerifyEmail from './customer/VerifyEmail'; import Cart from './cart/Cart'; import { CustomerAuthProvider } from './customer/CustomerAuthContext'; import { CartProvider } from './cart/CartContext'; import { ThemeModeProvider, useThemeMode } from './theme/ThemeContext'; import './styles.css'; const REDUCED_MOTION_QUERY = '(prefers-reduced-motion: reduce)'; // Respects the OS-level "reduce motion" accessibility setting by turning off // antd's transitions. Beyond the accessibility win, animated popups are a // standing source of flake in end-to-end tests, which drive the app with this // preference enabled. function usePrefersReducedMotion(): boolean { const [prefers, setPrefers] = useState( () => typeof window !== 'undefined' && window.matchMedia(REDUCED_MOTION_QUERY).matches ); useEffect(() => { const query = window.matchMedia(REDUCED_MOTION_QUERY); const update = () => setPrefers(query.matches); query.addEventListener('change', update); return () => query.removeEventListener('change', update); }, []); return prefers; } function Root() { const { mode } = useThemeMode(); const prefersReducedMotion = usePrefersReducedMotion(); return ( } /> } /> } /> } /> } /> } /> } /> } /> ); } ReactDOM.createRoot(document.getElementById('root')!).render( );