opus / src / App.jsx
188 words
 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
import React, { Suspense, lazy } from 'react';
import HeroWithOpusLoop from './components/HeroWithOpusLoop';
import ProductSection from './components/ProductSection';
import Footer from './components/Footer';
import EmailSignupForm from './components/EmailSignupForm';
import cynicalIcon from './assets/cynicalIcon.png';
import assnIcon from './assets/assnIcon.png';

// Lazy load heavy background components
const CynicalBackground = lazy(() => import('./components/backgrounds/CynicalBackground'));
const AssnBackground = lazy(() => import('./components/backgrounds/AssnBackground'));

// Loading fallback
const LoadingBackground = () => <div style={{ width: '100%', height: '100%', background: '#000' }} />;

// Placeholder components until they are implemented
const Placeholder = ({ text }) => <div style={{ height: '100vh', display: 'flex', justifyContent: 'center', alignItems: 'center', border: '1px solid #333' }}>{text}</div>;

function App() {
  return (
    <div className="app">
      <HeroWithOpusLoop />

      {/* CyniCal Section */}
      <ProductSection
        title="CyniCal"
        description="The brain was not designed to hold onto gift ideas for more than 48 hours. Yours especially."
        appIcon={cynicalIcon}
        BackgroundComponent={() => (
          <Suspense fallback={<LoadingBackground />}>
            <CynicalBackground />
          </Suspense>
        )}
        comingSoonText="Coming soon"
        hidePhone={true}
        renderAction={() => <EmailSignupForm appName="cynical" />}
      />

      {/* ASSN Section */}
      <ProductSection
        title="ass.network"
        description="anti-social social network"
        appIcon={assnIcon}
        BackgroundComponent={() => (
          <Suspense fallback={<LoadingBackground />}>
            <AssnBackground />
          </Suspense>
        )}
        comingSoonText="Coming in Q2 2026"
        hidePhone={true}
        renderAction={() => <EmailSignupForm appName="assn" />}
      />

      <Footer />
    </div>
  );
}

export default App;

static mirror of HEAD · about · clone: git clone https://git.makefuture.ro/opus.git