All files / varjoliitokauppa App.tsx

100% Statements 7/7
100% Branches 0/0
100% Functions 3/3
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81                                    1x 1x 1x 1x   1x     1x 1x                                                                                                          
import React from 'react';
import { HashRouter as Router, Routes, Route } from 'react-router-dom';
import { ShopProvider } from './context/ShopContext';
import { ToastProvider } from './context/ToastContext';
import { Header } from './components/Header';
import { Footer } from './components/Footer';
import Home from './pages/Home';
import Shop from './pages/Shop';
import ProductDetail from './pages/ProductDetail';
import Cart from './pages/Cart';
import Contact from './pages/Contact';
import Admin from './pages/Admin';
import { Section } from './components/Section';
 
// ScrollToTop component to reset scroll on route change
import { useEffect } from 'react';
import { useLocation } from 'react-router-dom';
 
const ScrollToTop = () => {
  const { pathname } = useLocation();
  useEffect(() => {
    window.scrollTo(0, 0);
  }, [pathname]);
  return null;
};
 
const App: React.FC = () => {
  return (
    <ToastProvider>
      <ShopProvider>
        <Router>
          <ScrollToTop />
          <div className="flex flex-col min-h-screen">
            <Header />
            <main className="flex-grow">
              <Routes>
                <Route path="/" element={<Home />} />
                <Route path="/kauppa" element={<Shop initialFilter="all" />} />
                <Route path="/tarjoukset" element={<Shop initialFilter="offers" />} /> 
                <Route path="/kaytetyt" element={<Shop initialFilter="used" />} /> 
                <Route path="/tuote/:id" element={<ProductDetail />} />
                <Route path="/kassa" element={<Cart />} />
                <Route path="/yhteystiedot" element={<Contact />} />
                <Route path="/admin" element={<Admin />} />
                
                {/* Properly laid out legal page placeholders */}
                <Route path="/toimitusehdot" element={
                  <Section variant="white" className="min-h-[50vh]">
                     <h1 className="text-3xl font-black mb-8">Toimitusehdot</h1>
                     <div className="prose prose-lg text-gray-600">
                        <p>Tähän tulisi verkkokaupan toimitusehdot. Koska tämä on demo, emme ole lisänneet pitkää lakitekstiä.</p>
                        <ul className="list-disc pl-5 mt-4 space-y-2">
                          <li>Toimitusaika 2-5 arkipäivää</li>
                          <li>Ilmainen palautus 14 vrk sisällä</li>
                          <li>Toimitus Postilla tai Matkahuollolla</li>
                        </ul>
                     </div>
                  </Section>
                } />
                
                <Route path="/tietosuojaseloste" element={
                   <Section variant="white" className="min-h-[50vh]">
                     <h1 className="text-3xl font-black mb-8">Tietosuojaseloste</h1>
                     <div className="prose prose-lg text-gray-600">
                        <p>Varjoliitokauppa kunnioittaa yksityisyyttäsi. Emme jaa tietojasi kolmansille osapuolille ilman lupaasi.</p>
                        <p className="mt-4">Rekisterinpitäjä: Varjoliitokauppa Oy<br/>Y-tunnus: 1234567-8</p>
                     </div>
                  </Section>
                } />
              </Routes>
            </main>
            <Footer />
          </div>
        </Router>
      </ShopProvider>
    </ToastProvider>
  );
};
 
export default App;