App.jsx 4.58 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
const AnthropicTimeline = lazy(() => import('./components/AnthropicTimeline'));
31
const DrugsList = lazy(() => import('./components/DrugsList'));
32
const DeepSeekTimeline = lazy(() => import('./components/DeepSeekTimeline'));
33
const WechatFormatter = lazy(() => import('./components/WechatFormatter'));
34
const ImageAnnotator = lazy(() => import('./components/ImageAnnotator'));
35
const AITimelinePage = lazy(() => import('./pages/AITimelinePage'));
36

fisherdaddy's avatar
fisherdaddy committed
37
function App() {
fisherdaddy's avatar
fisherdaddy committed
38
  return (
fisherdaddy's avatar
fisherdaddy committed
39
    <div className="app-container min-h-screen flex flex-col">
fisherdaddy's avatar
fisherdaddy committed
40
      <Header />
fisherdaddy's avatar
fisherdaddy committed
41
      <div className="flex-grow">
42 43 44 45 46 47 48
        <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
49

50 51 52 53
                <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
54

55 56 57 58
                <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 />} />
59
                <Route path="/anthropic-timeline" element={<AnthropicTimeline />} />
60
                <Route path="/llm-model-price" element={<PricingCharts />} />
61
                <Route path="/drugs-list" element={<DrugsList />} />
62 63 64 65 66 67 68 69 70 71
                <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 />} />
72
                <Route path="/deepseek-timeline" element={<DeepSeekTimeline />} />
73
                <Route path="/wechat-formatter" element={<WechatFormatter />} />
74
                <Route path="/image-annotator" element={<ImageAnnotator />} />
75
                <Route path="/ai-timeline" element={<AITimelinePage />} />
76 77 78
                <Route path="*" element={<NotFound />} />
              </Routes>
            </Suspense>
fisherdaddy's avatar
fisherdaddy committed
79
          </main>
80
        </div>
fisherdaddy's avatar
fisherdaddy committed
81
      </div>
fisherdaddy's avatar
fisherdaddy committed
82
      <Footer />
fisherdaddy's avatar
fisherdaddy committed
83 84 85 86 87
    </div>
  );
}

export default App;