From 8a54d9916be491174852de342b19a42c3cfea223 Mon Sep 17 00:00:00 2001
From: Zoey <friendlypossum@netc.fr>
Date: Tue, 10 Sep 2024 23:03:54 +0200
Subject: [PATCH] major rewrite

Signed-off-by: Zoey <friendlypossum@netc.fr>
---
 src/About.js                      |  9 ----
 src/App.css                       | 26 ++++++-----
 src/App.js                        | 19 ++------
 src/Home.js                       | 73 -------------------------------
 src/TopBar.js                     | 45 -------------------
 src/components/About.js           | 12 +++++
 src/components/Blog.js            | 12 +++++
 src/{ => components}/BottomBar.js |  2 +-
 src/{ => components}/Embed.js     |  0
 src/{ => components}/FilePage.js  |  0
 src/components/Home.js            | 62 ++++++++++++++++++++++++++
 src/components/Projects.js        | 12 +++++
 src/{ => components}/RTMP.js      |  0
 src/{ => components}/SideBar.js   |  0
 src/components/Stream.js          | 27 ++++++++++++
 src/components/TopBar.js          | 27 ++++++++++++
 src/index.js                      | 68 ++++++++++++++++++++++++++--
 17 files changed, 236 insertions(+), 158 deletions(-)
 delete mode 100644 src/About.js
 delete mode 100644 src/Home.js
 delete mode 100644 src/TopBar.js
 create mode 100644 src/components/About.js
 create mode 100644 src/components/Blog.js
 rename src/{ => components}/BottomBar.js (79%)
 rename src/{ => components}/Embed.js (100%)
 rename src/{ => components}/FilePage.js (100%)
 create mode 100644 src/components/Home.js
 create mode 100644 src/components/Projects.js
 rename src/{ => components}/RTMP.js (100%)
 rename src/{ => components}/SideBar.js (100%)
 create mode 100644 src/components/Stream.js
 create mode 100644 src/components/TopBar.js

diff --git a/src/About.js b/src/About.js
deleted file mode 100644
index 8f8e531..0000000
--- a/src/About.js
+++ /dev/null
@@ -1,9 +0,0 @@
-const AboutPage = () => {
-    return(
-        <div>
-            <p></p>
-        </div>
-    );
-}
-
-export default AboutPage;
\ No newline at end of file
diff --git a/src/App.css b/src/App.css
index 5a4a88c..3844986 100644
--- a/src/App.css
+++ b/src/App.css
@@ -20,7 +20,7 @@
 }
 
 .HeaderButt {
-  font-size: large;
+  font-size: larger;
   user-select: none;
 }
 
@@ -67,7 +67,12 @@
 
 .BunnyLogo {
   user-select: none;
-  pointer-events: none;
+  cursor: pointer;
+}
+
+.BunnyLogo:hover {
+  transform:scale(0.56);
+  animation: LogoHoverAnime 0.1s ease-in-out;
 }
 
 .Teardrop {
@@ -158,21 +163,20 @@
 
 .MainBG {
   background: linear-gradient(
-  360deg,
-  #69233b,
-  #473b21,
-  #520a22,
-  #3f2749
+    to right,
+    #69233b,
+    #61182a,
+    #520a22,
+    #312436
   );
   background-size: 600% 600%;
   animation: Gradient 120s ease infinite;
-  animation: Gradient 120s ease infinite;
 }
 
 @keyframes Gradient {
-  0% {background-position: 0% 50%;}
-  50% {background-position: 100% 50%;}
-  100% {background-position: 0% 50%;}
+  0% { background-position: 0% 50%; }
+  50% { background-position: 100% 50%; }
+  100% { background-position: 0% 50%; }
 }
 
 @keyframes DarkModeButton-spin {
diff --git a/src/App.js b/src/App.js
index 86ce36a..06b4678 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,27 +1,16 @@
-//import logo from './logo.svg';
-
-import React from 'react';
-import ReactDOM from 'react-dom';
-
+import React, { Component } from 'react';
 import './App.css';
-import TopBar from './TopBar';
-import BottomBar from './BottomBar';
-import StreamEmbed from './Embed';
-import AboutPage from './About';
-//import SideBar from './SideBar';
+import StreamEmbed from './components/Embed';
 
-import Home from './Home';
+import Home from './components/Home';
 
 
 function App() {
   return (
     <div className="body">    
       <Home/>
-      <TopBar/>
-      <AboutPage/>
-      <StreamEmbed/>
-      <BottomBar/>
     </div>
+    
   );
 }
 
diff --git a/src/Home.js b/src/Home.js
deleted file mode 100644
index 366d523..0000000
--- a/src/Home.js
+++ /dev/null
@@ -1,73 +0,0 @@
-import { useEffect, useState } from 'react';
-import RTMP from './RTMP';
-
-function Home() {
-  const [Versions, setVersions] = useState('');
-
-  useEffect(() => {
-    const fetchFiles = async () => {
-      try {
-        const Response = await fetch('versions.txt');
-        const Text = await Response.text();
-        setVersions(Text);
-      } catch (error) {
-        console.error('Error fetching file:', error);
-      }
-    };
-
-    fetchFiles();
-  }, []);
-
-  return (
-    <div className="flex w-screen h-screen overflow-hidden MainBG">
-      <div className="flex flex-col backdrop-brightness-75 backdrop-blur-md justify-center text-secondary rounded-md min-w-fit">
-
-        <p className="text-xl self-center justify-start mt-10 mb-2 shadow-2xl SubHeaders">Public Services.</p>
-
-        <div className="backdrop-grayscale flex-col self-center">
-          <div className="flex-col align-middle h-auto">
-            <a href="https://git.li-yo.ts.net/" target="_blank" rel="noopener noreferrer" className="bg-primary shadow-md rounded-md ml-4 mr-4 p-1 flex LogoBoxesPub">
-              <img className="Logos" draggable="false" src={process.env.PUBLIC_URL + "/forgejologo.svg"} alt="Memos"></img>
-              <p className="self-center ml-2 mr-2 PubP">Forgejo</p>
-            </a>
-            <a href="https://lemmy.li-yo.ts.net/" target="_blank" rel="noopener noreferrer" className="bg-primary shadow-md rounded-md ml-4 mr-4 p-1 flex LogoBoxesPub">
-              <img className="Logos" draggable="false" src={process.env.PUBLIC_URL + "/lemmylogo.svg"} alt="Lemmy"></img>
-              <p className="self-center ml-2 mr-2 PubP">Lemmy</p>
-            </a>
-            <a href="https://clips.li-yo.ts.net/" target="_blank" rel="noopener noreferrer" className="bg-primary shadow-md rounded-md ml-4 mr-4 p-1 flex LogoBoxesPub">
-              <img className="Logos" draggable="false" src={process.env.PUBLIC_URL + "/firesharelogo.png"} alt="Owncast"></img>
-              <p className="self-center ml-2 mr-2 PubP">Fireshare</p>
-            </a>
-            <a href="https://memos.li-yo.ts.net/" target="_blank" rel="noopener noreferrer" className="bg-primary shadow-md rounded-md ml-4 mr-4 p-1 flex LogoBoxesPub">
-              <img className="Logos" draggable="false" src={process.env.PUBLIC_URL + "/memoslogo.png"} alt="Memos"></img>
-              <p className="self-center ml-2 mr-2 PubP">Memos</p>
-            </a>
-            <a href="https://send.li-yo.ts.net/" target="_blank" rel="noopener noreferrer" className="bg-primary shadow-md rounded-md ml-4 mr-4 p-1 flex LogoBoxesPub">
-              <img className="Logos" draggable="false" src={process.env.PUBLIC_URL + "/sendlogo.svg"} alt="Memos"></img>
-              <p className="self-center ml-2 mr-2 PubP">Send</p>
-            </a>
-          </div>
-        </div>
-        <p className="text-xl self-center justify-start mb-1 mt-4 shadow-2xl SubHeaders">My Streams.</p>
-        <div>
-          <a href="https://cast.li-yo.ts.net/" target="_blank" rel="noopener noreferrer" className="bg-primary shadow-md rounded-md ml-4 mr-4 p-1 flex LogoBoxesPub">
-            <img className="Logos" draggable="false" src={process.env.PUBLIC_URL + "/owncastlogo.png"} alt="Owncast"></img>
-            <p className="self-center ml-2 mr-2 PubP">Owncast</p>
-          </a>
-        </div>
-      </div>
-      <div className="flex flex-col backdrop-brightness-75 text-secondary rounded-md ml-5 mr-5 mt-16 mb-12 w-screen overflow-auto">
-        <div className="flex justify-center top-0">
-          <p className="flex UpdatesTitle">Welcome to Zoey's Bits.</p>
-        </div>
-        <div className="flex flex-col ml-5 mt-2 justify-center text-wrap">
-          <p className="UpdatesContent">I don't really know what to put here yet.</p>
-          <p className="UpdatesContent">You are free to use any of the services in the sidebar.</p>
-          <RTMP/>
-        </div>
-      </div>
-    </div>
-  );
-}
-
-export default Home;
\ No newline at end of file
diff --git a/src/TopBar.js b/src/TopBar.js
deleted file mode 100644
index 20ebd0d..0000000
--- a/src/TopBar.js
+++ /dev/null
@@ -1,45 +0,0 @@
-const TopBar = () => {
-    return (
-        <div className="fixed top-0 left-0 h-12 w-screen flex flex-row bg-primary text-secondary 
-        shadow-md justify-center items-center space-x-2">
-        <div className="topbar-clickables">
-                <div className="flex items-center justify-center overflow-hidden">
-                    <div className="Teardrop"> 
-                        <div className="fixed mt-12 top-0 left-0 w-60">
-                            <img draggable="false" src={process.env.PUBLIC_URL + "/teardropdark.svg"} alt="Teardrop"/>
-                        </div>
-                    </div>
-                    <div className="BunnyLogo"> 
-                        <div className="fixed top-0 left-0 ml-3">
-                            <img draggable="false" src={process.env.PUBLIC_URL + "/bunnie96px.svg"} alt="Bunnie"/>
-                        </div>
-                    </div>
-                    <div className="flex ml-40">
-                        <p className="mr-20 top-1 left-28 fixed HeaderName">Zoey's Bits</p>
-                        <div className="">
-                            <button className="mx-3 HeaderButt">News</button>
-                        </div>
-                        <div className="">
-                            <button className="mx-3 HeaderButt">Projects</button>
-                        </div>
-                        <div className="">
-                            <button className="mx-3 HeaderButt">Stream</button>
-                        </div>
-                        <div className="">
-                            <button className="mx-3 HeaderButt">About</button>
-                        </div>
-                    </div>
-                    <div className="fixed right-0 mr-6">                       
-                        <div className="DarkModeButton">
-                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="half-crescent-moon">
-                                <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
-                        </svg>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    );
-};
-
-export default TopBar;
\ No newline at end of file
diff --git a/src/components/About.js b/src/components/About.js
new file mode 100644
index 0000000..f65e371
--- /dev/null
+++ b/src/components/About.js
@@ -0,0 +1,12 @@
+import BottomBar from "./BottomBar";
+import TopBar from "./TopBar";
+
+const AboutPage = () => {
+    return(  
+        <div className="flex justify-center items-center w-screen h-screen text-xl text-secondary MainBG">
+            <h1>WIP butt</h1>
+        </div>
+    );
+}
+
+export default AboutPage;
\ No newline at end of file
diff --git a/src/components/Blog.js b/src/components/Blog.js
new file mode 100644
index 0000000..956e441
--- /dev/null
+++ b/src/components/Blog.js
@@ -0,0 +1,12 @@
+import BottomBar from "./BottomBar";
+import TopBar from "./TopBar";
+
+const BlogPage = () => {
+    return(  
+        <div className="flex justify-center items-center w-screen h-screen text-xl text-secondary MainBG">
+            <h1>WIP blogpage</h1>
+        </div>
+    );
+}
+
+export default BlogPage;
\ No newline at end of file
diff --git a/src/BottomBar.js b/src/components/BottomBar.js
similarity index 79%
rename from src/BottomBar.js
rename to src/components/BottomBar.js
index 8be016f..74dd7aa 100644
--- a/src/BottomBar.js
+++ b/src/components/BottomBar.js
@@ -1,6 +1,6 @@
 const BottomBar = () => {
     return (
-        <div className="fixed bottom-0 left-0 h-8 w-screen flex flex-row bg-primary text-secondary shadow-sm justify-center items-center">
+        <div className="fixed bottom-0 left-0 h-8 w-screen flex flex-row backdrop-brightness-50 text-secondary justify-center items-center">
             <div className="fixed flex justify-center">
                 <p className="text-sm">&copy; LibreBun 2024</p>
             </div>
diff --git a/src/Embed.js b/src/components/Embed.js
similarity index 100%
rename from src/Embed.js
rename to src/components/Embed.js
diff --git a/src/FilePage.js b/src/components/FilePage.js
similarity index 100%
rename from src/FilePage.js
rename to src/components/FilePage.js
diff --git a/src/components/Home.js b/src/components/Home.js
new file mode 100644
index 0000000..14043dc
--- /dev/null
+++ b/src/components/Home.js
@@ -0,0 +1,62 @@
+import { useEffect, useState } from 'react';
+
+function Home() {
+  const [Versions, setVersions] = useState('');
+
+  useEffect(() => {
+    const fetchFiles = async () => {
+      try {
+        const Response = await fetch('versions.txt');
+        const Text = await Response.text();
+        setVersions(Text);
+      } catch (error) {
+        console.error('Error fetching file:', error);
+      }
+    };
+
+    fetchFiles();
+  }, []);
+
+  return (
+    <div className='flex flex-col justify-center items-center w-screen h-screen overflow-hidden MainBG'>
+      <div className='flex flex-col items-center'>
+        <p className='text-4xl mb-2 text-secondary'>Welcome to Zoey's Bits!</p>
+        <p className='text-xl mb-8 text-secondary'>The home of all my bits and pieces.</p>
+      </div>
+      <div className='flex'>
+        <div className='flex flex-col w-fit h-fit text-secondary rounded-md items-center'>
+          <p className='text-xl'>Feel free to use my public services.</p>
+          <div className='grid grid-cols-3 grid-rows-2 gap-4 mx-2 my-2'>
+            <a href='https://git.li-yo.ts.net/' target='_blank' rel='noopener noreferrer' className='backdrop-brightness-75 shadow-md rounded-md p-1 flex LogoBoxesPub'>
+              <img className='Logos' draggable='false' src={process.env.PUBLIC_URL + '/forgejologo.svg'} alt='Memos' />
+              <p className='self-center mx-2 PubP'>Forgejo</p>
+            </a>
+            <a href='https://lemmy.li-yo.ts.net/' target='_blank' rel='noopener noreferrer' className='backdrop-brightness-75 shadow-md rounded-md p-1 flex LogoBoxesPub'>
+              <img className='Logos' draggable='false' src={process.env.PUBLIC_URL + '/lemmylogo.svg'} alt='Lemmy' />
+              <p className='self-center mx-2 PubP'>Lemmy</p>
+            </a>
+            <a href='https://clips.li-yo.ts.net/' target='_blank' rel='noopener noreferrer' className='backdrop-brightness-75 shadow-md rounded-md p-1 flex LogoBoxesPub'>
+              <img className='Logos' draggable='false' src={process.env.PUBLIC_URL + '/firesharelogo.png'} alt='Fireshare' />
+              <p className='self-center mx-2 PubP'>Fireshare</p>
+            </a>
+            <a href='https://memos.li-yo.ts.net/' target='_blank' rel='noopener noreferrer' className='backdrop-brightness-75 shadow-md rounded-md p-1 flex LogoBoxesPub'>
+              <img className='Logos' draggable='false' src={process.env.PUBLIC_URL + '/memoslogo.png'} alt='Memos' />
+              <p className='self-center mx-2 PubP'>Memos</p>
+            </a>
+            <a href='https://send.li-yo.ts.net/' target='_blank' rel='noopener noreferrer' className='backdrop-brightness-75 shadow-md rounded-md p-1 flex LogoBoxesPub'>
+              <img className='Logos' draggable='false' src={process.env.PUBLIC_URL + '/sendlogo.svg'} alt='Send' />
+              <p className='self-center mx-2 PubP'>Send</p>
+            </a>
+            <a href='https://cast.li-yo.ts.net/' target='_blank' rel='noopener noreferrer' className='backdrop-brightness-75 shadow-md rounded-md p-1 flex LogoBoxesPub'>
+              <img className='Logos' draggable='false' src={process.env.PUBLIC_URL + '/owncastlogo.png'} alt='Owncast' />
+              <p className='self-center mx-2 PubP'>Owncast</p>
+            </a>
+          </div>
+        </div>
+      </div>
+    </div>
+  );
+  
+}
+
+export default Home;
\ No newline at end of file
diff --git a/src/components/Projects.js b/src/components/Projects.js
new file mode 100644
index 0000000..d70f113
--- /dev/null
+++ b/src/components/Projects.js
@@ -0,0 +1,12 @@
+import BottomBar from "./BottomBar";
+import TopBar from "./TopBar";
+
+const ProjectsPage = () => {
+    return(  
+        <div className="flex justify-center items-center w-screen h-screen text-xl text-secondary MainBG">
+            <h1>WIP projectspage</h1>
+        </div>
+    );
+}
+
+export default ProjectsPage;
\ No newline at end of file
diff --git a/src/RTMP.js b/src/components/RTMP.js
similarity index 100%
rename from src/RTMP.js
rename to src/components/RTMP.js
diff --git a/src/SideBar.js b/src/components/SideBar.js
similarity index 100%
rename from src/SideBar.js
rename to src/components/SideBar.js
diff --git a/src/components/Stream.js b/src/components/Stream.js
new file mode 100644
index 0000000..61c5c55
--- /dev/null
+++ b/src/components/Stream.js
@@ -0,0 +1,27 @@
+import BottomBar from "./BottomBar";
+import TopBar from "./TopBar";
+
+const StreamPage = () => {
+    return(  
+        <div className="flex flex-col items-center justify-center w-screen h-screen text-xl text-secondary MainBG">
+            <div className="flex flex-row items-center justify-center w-screen h-5/6 mt-8 text-xl text-secondary">    
+                <iframe
+                    className="mt-5 overflow-hidden justify-left flex"
+                    src="https://cast.li-yo.ts.net/embed/video"
+                    title="Owncast"
+                    height="100%" width="60%"
+                    referrerpolicy="origin"
+                    allowfullscreen>
+                </iframe>
+                <iframe
+                    className="ml-5 mt-5 overflow-scroll"
+                    src="https://cast.li-yo.ts.net/embed/chat/readwrite/"
+                    height="100%" width="30%">
+                </iframe>
+            </div>
+            <a href="https://cast.li-yo.ts.net/" className="my-5">Join me on my actual Owncast site!</a>
+        </div>
+    );
+}
+
+export default StreamPage;
\ No newline at end of file
diff --git a/src/components/TopBar.js b/src/components/TopBar.js
new file mode 100644
index 0000000..e797a71
--- /dev/null
+++ b/src/components/TopBar.js
@@ -0,0 +1,27 @@
+import React from "react";
+import { useNavigate } from "react-router-dom";
+
+const TopBar = () => {
+    const navigate = useNavigate();
+    return (
+        <div className="fixed top-0 left-0 h-16 w-screen flex flex-row backdrop-brightness-75 text-secondary items-center">
+        <div className="topbar-clickables">
+                <div className="flex flex-row">
+                    <div className="scale-50 BunnyLogo"> 
+                        <div className="">
+                            <img onClick={() => navigate("/")} draggable="false" src={process.env.PUBLIC_URL + "/bunnie96px.svg"} alt="Bunnie"/>
+                        </div>
+                    </div>
+                    <div className="flex space-x-3">
+                        <button className="HeaderButt" onClick={() => navigate("/blog")}>Blog</button>
+                        <button className="HeaderButt" onClick={() => navigate("/projects")}>Projects</button>
+                        <button className="HeaderButt" onClick={() => navigate("/stream")}>Stream</button>
+                        <button className="HeaderButt" onClick={() => navigate("/about")}>About</button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    );
+};
+
+export default TopBar;
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
index 8d5cddf..8d7e273 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,14 +1,74 @@
-import React from 'react';
+import React, { StrictMode } from 'react';
 import ReactDOM from 'react-dom/client';
 import './index.css';
 import App from './App';
 import reportWebVitals from './reportWebVitals';
+import {createBrowserRouter,RouterProvider} from "react-router-dom";
+import AboutPage from './components/About';
+import StreamPage from './components/Stream';
+import ProjectsPage from './components/Projects';
+import BlogPage from './components/Blog';
+import TopBar from './components/TopBar';
+import BottomBar from './components/BottomBar';
+
+const router = createBrowserRouter([
+  {
+    path: "/",
+    element: (
+    <> 
+    <TopBar/>
+    <App/>
+    <BottomBar/>
+    </>
+    ),
+  },
+  {
+    path: "/about",
+    element: (
+    <> 
+    <AboutPage/>
+    <TopBar/>
+    <BottomBar/>
+    </>
+    ),
+  },
+  {
+    path: "/stream",
+    element: (
+    <> 
+    <StreamPage/>
+    <TopBar/>
+    <BottomBar/>
+    </>
+    ),
+  },
+  {
+    path: "/projects",
+    element: (
+    <> 
+    <ProjectsPage/>
+    <TopBar/>
+    <BottomBar/>
+    </>
+    ),
+  },
+  {
+    path: "/blog",
+    element: (
+    <> 
+    <BlogPage/>
+    <TopBar/>
+    <BottomBar/>
+    </>
+    ),
+  }
+]);
 
 const root = ReactDOM.createRoot(document.getElementById('root'));
 root.render(
-  <React.StrictMode>
-    <App />
-  </React.StrictMode>
+  <StrictMode>
+  <RouterProvider router={router} />
+  </StrictMode>
 );
 
 reportWebVitals();