App.jsx 3.85 KB
Newer Older
fisherdaddy's avatar
fisherdaddy committed
1
import React, { Suspense, lazy } from 'react';
fisherdaddy's avatar
fisherdaddy committed
2 3 4
import { Routes, Route } from 'react-router-dom';
import Home from './pages/Home';
import Header from './components/Header';
fisherdaddy's avatar
fisherdaddy committed
5
import Footer from './components/Footer';
fisherdaddy's avatar
fisherdaddy committed
6
import NotFound from './pages/NotFound';
fisherdaddy's avatar
fisherdaddy committed
7
import Login from './pages/Login';
fisherdaddy's avatar
fisherdaddy committed
8

fisherdaddy's avatar
fisherdaddy committed
9 10 11 12 13
const DevTools = lazy(() => import('./pages/DevTools'));
const ImageTools = lazy(() => import('./pages/ImageTools'));
const Blog = lazy(() => import('./pages/Blog'));
const AIProduct = lazy(() => import('./pages/AIProduct'));

fisherdaddy's avatar
fisherdaddy committed
14
const JsonFormatter = lazy(() => import('./components/JsonFormatter'));
15
const MarkdownToImage = lazy(() => import('./components/MarkdownToImage'));
fisherdaddy's avatar
fisherdaddy committed
16
const UrlEnDecode = lazy(() => import('./components/UrlEnDecode'));
fisherdaddy's avatar
fisherdaddy committed
17
const About = lazy(() => import('./pages/About'));
fisherdaddy's avatar
fisherdaddy committed
18
const OpenAITimeline = lazy(() => import('./components/OpenAITimeline'));
19
const PricingCharts  = lazy(() => import('./components/PricingCharts'));
20
const HandwriteGen  = lazy(() => import('./components/HandwriteGen'));
21
const ImageBase64Converter  = lazy(() => import('./components/ImageBase64Converter'));
22
const QuoteCard = lazy(() => import('./components/QuoteCard'));
23
const LatexToImage = lazy(() => import('./components/LatexToImage'));
fisherdaddy's avatar
fisherdaddy committed
24
const TextDiff = lazy(() => import('./components/TextDiff'));
25
const SubtitleGenerator = lazy(() => import('./components/SubtitleGenerator'));
26
const ImageCompressor = lazy(() => import('./components/ImageCompressor'));
27
const ImageWatermark = lazy(() => import('./components/ImageWatermark'));
28
const TextBehindImage = lazy(() => import('./components/TextBehindImage'));
29
const BackgroundRemover = lazy(() => import('./components/BackgroundRemover'));
30 31
const AnthropicTimeline = lazy(() => import('./components/AnthropicTimeline'));

fisherdaddy's avatar
fisherdaddy committed
32
function App() {
fisherdaddy's avatar
fisherdaddy committed
33
  return (
fisherdaddy's avatar
fisherdaddy committed
34
    <div className="app-container min-h-screen flex flex-col">
fisherdaddy's avatar
fisherdaddy committed
35
      <Header />
fisherdaddy's avatar
fisherdaddy committed
36
      <div className="flex-grow">
37 38 39 40 41 42 43
        <div className="content-wrapper">
          <main>
            <Suspense fallback={<div>Loading...</div>}>
              <Routes>
                <Route path="/" element={<Home />} />
                <Route path="/login" element={<Login />} />
                <Route path="/about" element={<About />} />
fisherdaddy's avatar
fisherdaddy committed
44

45 46 47 48
                <Route path="/dev-tools" element={<DevTools />} />
                <Route path="/image-tools" element={<ImageTools />} />
                <Route path="/ai-products" element={<AIProduct />} />
                <Route path="/blog" element={<Blog />} />
fisherdaddy's avatar
fisherdaddy committed
49

50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
                <Route path="/markdown-to-image" element={<MarkdownToImage />} />
                <Route path="/json-formatter" element={<JsonFormatter />} />
                <Route path="/url-encode-and-decode" element={<UrlEnDecode />} />
                <Route path="/openai-timeline" element={<OpenAITimeline />} />
                <Route path="/llm-model-price" element={<PricingCharts />} />
                <Route path="/handwriting" element={<HandwriteGen />} />
                <Route path="/image-base64" element={<ImageBase64Converter />} />
                <Route path="/quote-card" element={<QuoteCard />} />
                <Route path="/latex-to-image" element={<LatexToImage />} />
                <Route path="/text-diff" element={<TextDiff />} />
                <Route path="/subtitle-to-image" element={<SubtitleGenerator />} />
                <Route path="/image-compressor" element={<ImageCompressor />} />
                <Route path="/image-watermark" element={<ImageWatermark />} />
                <Route path="/text-behind-image" element={<TextBehindImage />} /> 
                <Route path="/background-remover" element={<BackgroundRemover />} />
                <Route path="/anthropic-timeline" element={<AnthropicTimeline />} />
                <Route path="*" element={<NotFound />} />
fisherdaddy's avatar
fisherdaddy committed
67

68 69
              </Routes>
            </Suspense>
fisherdaddy's avatar
fisherdaddy committed
70
          </main>
71
        </div>
fisherdaddy's avatar
fisherdaddy committed
72
      </div>
fisherdaddy's avatar
fisherdaddy committed
73
      <Footer />
fisherdaddy's avatar
fisherdaddy committed
74 75 76 77 78
    </div>
  );
}

export default App;