From b580fb4ecf447cceb7d9e7f005b4d6e323a84193 Mon Sep 17 00:00:00 2001
From: genki_angel <genki@banii.cafe>
Date: Sat, 12 Apr 2025 22:49:34 +0100
Subject: [PATCH] basic site layout

---
 .gitignore                                 |   2 +
 bun.lock                                   |   4 +-
 index.html                                 |  31 ++--
 public/favicon.ico                         | Bin 4286 -> 0 bytes
 src/App.vue                                | 109 +++++-------
 src/assets/base.css                        |  86 ---------
 src/assets/logo.svg                        |   1 -
 src/assets/main.css                        |  87 ++++++---
 src/components/HelloWorld.vue              |  41 -----
 src/components/TheWelcome.vue              |  94 ----------
 src/components/WelcomeItem.vue             |  87 ---------
 src/components/bannerbar.vue               |  31 ++++
 src/components/blinkiebar.vue              |  31 ++++
 src/components/icons/IconCommunity.vue     |   7 -
 src/components/icons/IconDocumentation.vue |   7 -
 src/components/icons/IconEcosystem.vue     |   7 -
 src/components/icons/IconSupport.vue       |   7 -
 src/components/icons/IconTooling.vue       |  19 --
 src/components/marqueebar.vue              |  38 ++++
 src/components/navbar.vue                  | 197 +++++++++++++++++++++
 src/components/quotebanner.vue             |  41 +++++
 src/components/stamps.vue                  |  28 +++
 src/components/underconstruction.vue       |  29 +++
 src/components/wantedposter.vue            | 146 +++++++++++++++
 src/components/welcometitle.vue            |  35 ++++
 src/router/index.ts                        |  33 +++-
 src/views/AboutView.vue                    |  15 --
 src/views/HomeView.vue                     |  38 +++-
 src/views/PetsView.vue                     |   8 +
 src/views/PortfolioView.vue                |   8 +
 src/views/SocialsView.vue                  |   8 +
 31 files changed, 783 insertions(+), 492 deletions(-)
 delete mode 100644 public/favicon.ico
 delete mode 100644 src/assets/base.css
 delete mode 100644 src/assets/logo.svg
 delete mode 100644 src/components/HelloWorld.vue
 delete mode 100644 src/components/TheWelcome.vue
 delete mode 100644 src/components/WelcomeItem.vue
 create mode 100644 src/components/bannerbar.vue
 create mode 100644 src/components/blinkiebar.vue
 delete mode 100644 src/components/icons/IconCommunity.vue
 delete mode 100644 src/components/icons/IconDocumentation.vue
 delete mode 100644 src/components/icons/IconEcosystem.vue
 delete mode 100644 src/components/icons/IconSupport.vue
 delete mode 100644 src/components/icons/IconTooling.vue
 create mode 100644 src/components/marqueebar.vue
 create mode 100644 src/components/navbar.vue
 create mode 100644 src/components/quotebanner.vue
 create mode 100644 src/components/stamps.vue
 create mode 100644 src/components/underconstruction.vue
 create mode 100644 src/components/wantedposter.vue
 create mode 100644 src/components/welcometitle.vue
 delete mode 100644 src/views/AboutView.vue
 create mode 100644 src/views/PetsView.vue
 create mode 100644 src/views/PortfolioView.vue
 create mode 100644 src/views/SocialsView.vue

diff --git a/.gitignore b/.gitignore
index 37ad66e..b6a0645 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,5 @@ coverage
 *.tsbuildinfo
 
 /public
+/src/assets/fonts
+/src/assets/images
\ No newline at end of file
diff --git a/bun.lock b/bun.lock
index c27bc12..3e3e1f7 100644
--- a/bun.lock
+++ b/bun.lock
@@ -353,7 +353,7 @@
 
     "muggle-string": ["muggle-string@0.4.1", "", {}, "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ=="],
 
-    "nanoid": ["nanoid@3.3.10", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg=="],
+    "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
 
     "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="],
 
@@ -449,7 +449,7 @@
 
     "yoctocolors": ["yoctocolors@2.1.1", "", {}, "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ=="],
 
-    "@vue/devtools-core/nanoid": ["nanoid@5.1.4", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-GTFcMIDgR7tqji/LpSY8rtg464VnJl/j6ypoehYnuGb+Y8qZUdtKB8WVCXon0UEZgFDbuUxpIl//6FHLHgXSNA=="],
+    "@vue/devtools-core/nanoid": ["nanoid@5.1.5", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw=="],
 
     "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
 
diff --git a/index.html b/index.html
index 9e5fc8f..7b97a63 100644
--- a/index.html
+++ b/index.html
@@ -1,13 +1,20 @@
 <!DOCTYPE html>
-<html lang="">
-  <head>
-    <meta charset="UTF-8">
-    <link rel="icon" href="/favicon.ico">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Vite App</title>
-  </head>
-  <body>
-    <div id="app"></div>
-    <script type="module" src="/src/main.ts"></script>
-  </body>
-</html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <link rel="icon" href="/favicon.ico">
+  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+  <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+  <link rel="manifest" href="/site.webmanifest">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>banii cafe</title>
+</head>
+
+<body>
+  <div id="app"></div>
+  <script type="module" src="/src/main.ts"></script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index df36fcfb72584e00488330b560ebcf34a41c64c2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4286
zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj
zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56
zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy
zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei
z@g6Xq-pDoPl=MANPiR7%172VA%r)kev<ISBgE$F{SFy+(=9Z)f)De0Se}ZDZW}Z3B
zElCeVrw;K0Fdl_Cg=gZOFXXc3pL)Q05CAuT+XucQ<8g~3dteP~|7s7c6QYP;fy;mF
zMN;>tV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX
zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm
zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp=
zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8
zx!=3<4seY*%=OlbCbcae?<QnEgvj4i?s}Yk=qA2z`-^*<eK3c)MS4JOdbsTQEOa0)
z0NWqlna2rzs>5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO
z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3
z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD
zsW0Ab)ZK@0cIW%W7<X*Er!BfRbvU93$DH%#v6dRt^6HBxz1xBNHx=$&_Gv<&J}Ljk
zJN<Fzx(`Oe@KgQ0F$<14=XV#WK`o#6Ku>z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6
z={Xwx{T<?%b6i9IjI)Ls)S{-*mq<@~R{?$}ZKjf;^k75i_}(2MXt}^SEBVg7AI@28
zo_uPg2V)_e-`2Ois=PYoe%9u*n9({PFR)OnHJPi{dNx>Kx<YG`4QQ>D#iCLfl2<BD
h7L=-;Q>vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S

diff --git a/src/App.vue b/src/App.vue
index 7905b05..a8d9d0e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,85 +1,60 @@
 <script setup lang="ts">
 import { RouterLink, RouterView } from 'vue-router'
-import HelloWorld from './components/HelloWorld.vue'
+import Welcometitle from './components/welcometitle.vue';
+import Quotebanner from './components/quotebanner.vue';
+import Blinkiebar from './components/blinkiebar.vue';
+import Navbar from './components/navbar.vue';
+import Bannerbar from './components/bannerbar.vue';
+import Marqueebar from './components/marqueebar.vue';
+
+const name = "BANII.CAFE"
+
+const bannerFolder = "banners"
 </script>
 
 <template>
   <header>
-    <img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" />
-
-    <div class="wrapper">
-      <HelloWorld msg="You did it!" />
-
-      <nav>
-        <RouterLink to="/">Home</RouterLink>
-        <RouterLink to="/about">About</RouterLink>
-      </nav>
-    </div>
+    <Welcometitle :title="name" />
+    <Quotebanner :quote="'meaaaooooowwww x3'" />
+    <Blinkiebar />
   </header>
+  <main>
+    <Navbar />
+    <div id="view">
+      <RouterView />
+    </div>
+  </main>
+
+  <footer>
+    <Bannerbar />
+  </footer>
 
-  <RouterView />
 </template>
 
 <style scoped>
-header {
-  line-height: 1.5;
-  max-height: 100vh;
+main {
+  margin-top: .2em;
+  font-size: 32px;
+  display: flex;
+  gap: .2em;
+  @media screen and (max-width: 1250px) {
+    flex-direction: column;
+  }
 }
 
-.logo {
-  display: block;
-  margin: 0 auto 2rem;
+#view {
+  border: 2px solid rgba(222, 222, 108, 1);
+  flex-grow: 1;
+  height: fit-content;
+  padding: .5em;
 }
 
-nav {
+footer {
+  position: fixed;
   width: 100%;
-  font-size: 12px;
-  text-align: center;
-  margin-top: 2rem;
-}
-
-nav a.router-link-exact-active {
-  color: var(--color-text);
-}
-
-nav a.router-link-exact-active:hover {
-  background-color: transparent;
-}
-
-nav a {
-  display: inline-block;
-  padding: 0 1rem;
-  border-left: 1px solid var(--color-border);
-}
-
-nav a:first-of-type {
-  border: 0;
-}
-
-@media (min-width: 1024px) {
-  header {
-    display: flex;
-    place-items: center;
-    padding-right: calc(var(--section-gap) / 2);
-  }
-
-  .logo {
-    margin: 0 2rem 0 0;
-  }
-
-  header .wrapper {
-    display: flex;
-    place-items: flex-start;
-    flex-wrap: wrap;
-  }
-
-  nav {
-    text-align: left;
-    margin-left: -1rem;
-    font-size: 1rem;
-
-    padding: 1rem 0;
-    margin-top: 1rem;
-  }
+  height: fit-content;
+  bottom: 0;
+  left: 0;
+  right: 0;
 }
 </style>
diff --git a/src/assets/base.css b/src/assets/base.css
deleted file mode 100644
index 8816868..0000000
--- a/src/assets/base.css
+++ /dev/null
@@ -1,86 +0,0 @@
-/* color palette from <https://github.com/vuejs/theme> */
-:root {
-  --vt-c-white: #ffffff;
-  --vt-c-white-soft: #f8f8f8;
-  --vt-c-white-mute: #f2f2f2;
-
-  --vt-c-black: #181818;
-  --vt-c-black-soft: #222222;
-  --vt-c-black-mute: #282828;
-
-  --vt-c-indigo: #2c3e50;
-
-  --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
-  --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
-  --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
-  --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
-
-  --vt-c-text-light-1: var(--vt-c-indigo);
-  --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
-  --vt-c-text-dark-1: var(--vt-c-white);
-  --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
-}
-
-/* semantic color variables for this project */
-:root {
-  --color-background: var(--vt-c-white);
-  --color-background-soft: var(--vt-c-white-soft);
-  --color-background-mute: var(--vt-c-white-mute);
-
-  --color-border: var(--vt-c-divider-light-2);
-  --color-border-hover: var(--vt-c-divider-light-1);
-
-  --color-heading: var(--vt-c-text-light-1);
-  --color-text: var(--vt-c-text-light-1);
-
-  --section-gap: 160px;
-}
-
-@media (prefers-color-scheme: dark) {
-  :root {
-    --color-background: var(--vt-c-black);
-    --color-background-soft: var(--vt-c-black-soft);
-    --color-background-mute: var(--vt-c-black-mute);
-
-    --color-border: var(--vt-c-divider-dark-2);
-    --color-border-hover: var(--vt-c-divider-dark-1);
-
-    --color-heading: var(--vt-c-text-dark-1);
-    --color-text: var(--vt-c-text-dark-2);
-  }
-}
-
-*,
-*::before,
-*::after {
-  box-sizing: border-box;
-  margin: 0;
-  font-weight: normal;
-}
-
-body {
-  min-height: 100vh;
-  color: var(--color-text);
-  background: var(--color-background);
-  transition:
-    color 0.5s,
-    background-color 0.5s;
-  line-height: 1.6;
-  font-family:
-    Inter,
-    -apple-system,
-    BlinkMacSystemFont,
-    'Segoe UI',
-    Roboto,
-    Oxygen,
-    Ubuntu,
-    Cantarell,
-    'Fira Sans',
-    'Droid Sans',
-    'Helvetica Neue',
-    sans-serif;
-  font-size: 15px;
-  text-rendering: optimizeLegibility;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
diff --git a/src/assets/logo.svg b/src/assets/logo.svg
deleted file mode 100644
index 7565660..0000000
--- a/src/assets/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.76 226.69"><path d="M161.096.001l-30.225 52.351L100.647.001H-.005l130.877 226.688L261.749.001z" fill="#41b883"/><path d="M161.096.001l-30.225 52.351L100.647.001H52.346l78.526 136.01L209.398.001z" fill="#34495e"/></svg>
diff --git a/src/assets/main.css b/src/assets/main.css
index 36fb845..798cfce 100644
--- a/src/assets/main.css
+++ b/src/assets/main.css
@@ -1,35 +1,68 @@
-@import './base.css';
-
-#app {
-  max-width: 1280px;
-  margin: 0 auto;
-  padding: 2rem;
-  font-weight: normal;
+@font-face {
+    font-family: 'vcr_osd_mono';
+    src: url('./fonts/vcr_osd_mono-webfont.woff2') format('woff2'),
+        url('./fonts/vcr_osd_mono-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
 }
 
-a,
-.green {
-  text-decoration: none;
-  color: hsla(160, 100%, 37%, 1);
-  transition: 0.4s;
-  padding: 3px;
+@font-face {
+    font-family: 'easvhsregular';
+    src: url('./fonts/easvhs-webfont.woff2') format('woff2'),
+        url('./fonts/easvhs-webfont.woff') format('woff');
+    font-weight: normal;
+    font-style: normal;
 }
 
-@media (hover: hover) {
-  a:hover {
-    background-color: hsla(160, 100%, 37%, 0.2);
-  }
+body {
+    background-image: url(/bg.webp);
+    background-size: 256px;
+
+    font-family: "easvhsregular";
+    color: #fefefe;
+
+    padding: 2em;
+    padding-bottom: 4em;
 }
 
-@media (min-width: 1024px) {
-  body {
-    display: flex;
-    place-items: center;
-  }
+@keyframes marquee {
+    0% {
+        transform: translate3d(0, 0, 0);
+    }
 
-  #app {
-    display: grid;
-    grid-template-columns: 1fr 1fr;
-    padding: 0 2rem;
-  }
+    100% {
+        transform: translate3d(-50%, 0, 0);
+    }
 }
+
+@keyframes billboard {
+    0% {
+        transform: translate3d(100%, 0, 0);
+    }
+
+    25% {
+        transform: translate3d(0%, 0, 0);
+    }
+
+    75% {
+        transform: translate3d(0%, 0, 0);
+    }
+
+    100% {
+        transform: translate3d(-100%, 0, 0);
+    }
+}
+
+.highlight {
+    color: rgba(222, 222, 108, 1);
+}
+.warning {
+    color: #cc4c4c;
+}
+.info {
+    color: #00fffa;
+}
+
+.font {
+    font-family: "vcr_osd_mono";
+}
\ No newline at end of file
diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue
deleted file mode 100644
index d174cf8..0000000
--- a/src/components/HelloWorld.vue
+++ /dev/null
@@ -1,41 +0,0 @@
-<script setup lang="ts">
-defineProps<{
-  msg: string
-}>()
-</script>
-
-<template>
-  <div class="greetings">
-    <h1 class="green">{{ msg }}</h1>
-    <h3>
-      You’ve successfully created a project with
-      <a href="https://vite.dev/" target="_blank" rel="noopener">Vite</a> +
-      <a href="https://vuejs.org/" target="_blank" rel="noopener">Vue 3</a>. What's next?
-    </h3>
-  </div>
-</template>
-
-<style scoped>
-h1 {
-  font-weight: 500;
-  font-size: 2.6rem;
-  position: relative;
-  top: -10px;
-}
-
-h3 {
-  font-size: 1.2rem;
-}
-
-.greetings h1,
-.greetings h3 {
-  text-align: center;
-}
-
-@media (min-width: 1024px) {
-  .greetings h1,
-  .greetings h3 {
-    text-align: left;
-  }
-}
-</style>
diff --git a/src/components/TheWelcome.vue b/src/components/TheWelcome.vue
deleted file mode 100644
index ae6eec3..0000000
--- a/src/components/TheWelcome.vue
+++ /dev/null
@@ -1,94 +0,0 @@
-<script setup lang="ts">
-import WelcomeItem from './WelcomeItem.vue'
-import DocumentationIcon from './icons/IconDocumentation.vue'
-import ToolingIcon from './icons/IconTooling.vue'
-import EcosystemIcon from './icons/IconEcosystem.vue'
-import CommunityIcon from './icons/IconCommunity.vue'
-import SupportIcon from './icons/IconSupport.vue'
-
-const openReadmeInEditor = () => fetch('/__open-in-editor?file=README.md')
-</script>
-
-<template>
-  <WelcomeItem>
-    <template #icon>
-      <DocumentationIcon />
-    </template>
-    <template #heading>Documentation</template>
-
-    Vue’s
-    <a href="https://vuejs.org/" target="_blank" rel="noopener">official documentation</a>
-    provides you with all information you need to get started.
-  </WelcomeItem>
-
-  <WelcomeItem>
-    <template #icon>
-      <ToolingIcon />
-    </template>
-    <template #heading>Tooling</template>
-
-    This project is served and bundled with
-    <a href="https://vite.dev/guide/features.html" target="_blank" rel="noopener">Vite</a>. The
-    recommended IDE setup is
-    <a href="https://code.visualstudio.com/" target="_blank" rel="noopener">VSCode</a>
-    +
-    <a href="https://github.com/johnsoncodehk/volar" target="_blank" rel="noopener">Volar</a>. If
-    you need to test your components and web pages, check out
-    <a href="https://vitest.dev/" target="_blank" rel="noopener">Vitest</a>
-    and
-    <a href="https://www.cypress.io/" target="_blank" rel="noopener">Cypress</a>
-    /
-    <a href="https://playwright.dev/" target="_blank" rel="noopener">Playwright</a>.
-
-    <br />
-
-    More instructions are available in
-    <a href="javascript:void(0)" @click="openReadmeInEditor"><code>README.md</code></a
-    >.
-  </WelcomeItem>
-
-  <WelcomeItem>
-    <template #icon>
-      <EcosystemIcon />
-    </template>
-    <template #heading>Ecosystem</template>
-
-    Get official tools and libraries for your project:
-    <a href="https://pinia.vuejs.org/" target="_blank" rel="noopener">Pinia</a>,
-    <a href="https://router.vuejs.org/" target="_blank" rel="noopener">Vue Router</a>,
-    <a href="https://test-utils.vuejs.org/" target="_blank" rel="noopener">Vue Test Utils</a>, and
-    <a href="https://github.com/vuejs/devtools" target="_blank" rel="noopener">Vue Dev Tools</a>. If
-    you need more resources, we suggest paying
-    <a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">Awesome Vue</a>
-    a visit.
-  </WelcomeItem>
-
-  <WelcomeItem>
-    <template #icon>
-      <CommunityIcon />
-    </template>
-    <template #heading>Community</template>
-
-    Got stuck? Ask your question on
-    <a href="https://chat.vuejs.org" target="_blank" rel="noopener">Vue Land</a>
-    (our official Discord server), or
-    <a href="https://stackoverflow.com/questions/tagged/vue.js" target="_blank" rel="noopener"
-      >StackOverflow</a
-    >. You should also follow the official
-    <a href="https://bsky.app/profile/vuejs.org" target="_blank" rel="noopener">@vuejs.org</a>
-    Bluesky account or the
-    <a href="https://x.com/vuejs" target="_blank" rel="noopener">@vuejs</a>
-    X account for latest news in the Vue world.
-  </WelcomeItem>
-
-  <WelcomeItem>
-    <template #icon>
-      <SupportIcon />
-    </template>
-    <template #heading>Support Vue</template>
-
-    As an independent project, Vue relies on community backing for its sustainability. You can help
-    us by
-    <a href="https://vuejs.org/sponsor/" target="_blank" rel="noopener">becoming a sponsor</a>.
-  </WelcomeItem>
-</template>
diff --git a/src/components/WelcomeItem.vue b/src/components/WelcomeItem.vue
deleted file mode 100644
index 6d7086a..0000000
--- a/src/components/WelcomeItem.vue
+++ /dev/null
@@ -1,87 +0,0 @@
-<template>
-  <div class="item">
-    <i>
-      <slot name="icon"></slot>
-    </i>
-    <div class="details">
-      <h3>
-        <slot name="heading"></slot>
-      </h3>
-      <slot></slot>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-.item {
-  margin-top: 2rem;
-  display: flex;
-  position: relative;
-}
-
-.details {
-  flex: 1;
-  margin-left: 1rem;
-}
-
-i {
-  display: flex;
-  place-items: center;
-  place-content: center;
-  width: 32px;
-  height: 32px;
-
-  color: var(--color-text);
-}
-
-h3 {
-  font-size: 1.2rem;
-  font-weight: 500;
-  margin-bottom: 0.4rem;
-  color: var(--color-heading);
-}
-
-@media (min-width: 1024px) {
-  .item {
-    margin-top: 0;
-    padding: 0.4rem 0 1rem calc(var(--section-gap) / 2);
-  }
-
-  i {
-    top: calc(50% - 25px);
-    left: -26px;
-    position: absolute;
-    border: 1px solid var(--color-border);
-    background: var(--color-background);
-    border-radius: 8px;
-    width: 50px;
-    height: 50px;
-  }
-
-  .item:before {
-    content: ' ';
-    border-left: 1px solid var(--color-border);
-    position: absolute;
-    left: 0;
-    bottom: calc(50% + 25px);
-    height: calc(50% - 25px);
-  }
-
-  .item:after {
-    content: ' ';
-    border-left: 1px solid var(--color-border);
-    position: absolute;
-    left: 0;
-    top: calc(50% + 25px);
-    height: calc(50% - 25px);
-  }
-
-  .item:first-of-type:before {
-    display: none;
-  }
-
-  .item:last-of-type:after {
-    display: none;
-  }
-}
-</style>
diff --git a/src/components/bannerbar.vue b/src/components/bannerbar.vue
new file mode 100644
index 0000000..efa3d28
--- /dev/null
+++ b/src/components/bannerbar.vue
@@ -0,0 +1,31 @@
+<template>
+    <div id="holder">
+        <div id="marquee">
+            <img v-for="(item, path) in banners" :src="path" />
+            <img v-for="(item, path) in banners" :src="path" />
+        </div>
+    </div>
+</template>
+
+<script setup lang="ts">
+const banners = import.meta.glob("@/assets/images/banners/*")
+</script>
+
+<style lang="css" scoped>
+#holder {
+    overflow: hidden;   
+    font-size: 0;
+}
+
+#marquee {
+    animation: marquee 60s linear infinite;
+    white-space: nowrap;
+    display: inline-block;
+}
+
+img {
+    width: 88px;
+    height: 31px;
+    margin-right: 5px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/blinkiebar.vue b/src/components/blinkiebar.vue
new file mode 100644
index 0000000..717c4f6
--- /dev/null
+++ b/src/components/blinkiebar.vue
@@ -0,0 +1,31 @@
+<template>
+    <div id="holder">
+        <div id="marquee">
+            <img v-for="(item, path) in blinkies" :src="path" />
+            <img v-for="(item, path) in blinkies" :src="path" />
+        </div>
+    </div>
+</template>
+
+<script setup lang="ts">
+const blinkies = import.meta.glob("@/assets/images/blinkies/*")
+</script>
+
+<style lang="css" scoped>
+#holder {
+    overflow: hidden;   
+    font-size: 0;
+}
+
+#marquee {
+    animation: marquee 60s linear infinite;
+    white-space: nowrap;
+    display: inline-block;
+}
+
+img {
+    width: 150px;
+    height: 20px;
+    margin-right: 5px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/icons/IconCommunity.vue b/src/components/icons/IconCommunity.vue
deleted file mode 100644
index 2dc8b05..0000000
--- a/src/components/icons/IconCommunity.vue
+++ /dev/null
@@ -1,7 +0,0 @@
-<template>
-  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
-    <path
-      d="M15 4a1 1 0 1 0 0 2V4zm0 11v-1a1 1 0 0 0-1 1h1zm0 4l-.707.707A1 1 0 0 0 16 19h-1zm-4-4l.707-.707A1 1 0 0 0 11 14v1zm-4.707-1.293a1 1 0 0 0-1.414 1.414l1.414-1.414zm-.707.707l-.707-.707.707.707zM9 11v-1a1 1 0 0 0-.707.293L9 11zm-4 0h1a1 1 0 0 0-1-1v1zm0 4H4a1 1 0 0 0 1.707.707L5 15zm10-9h2V4h-2v2zm2 0a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2zm1 1v6h2V7h-2zm0 6a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2zm-1 1h-2v2h2v-2zm-3 1v4h2v-4h-2zm1.707 3.293l-4-4-1.414 1.414 4 4 1.414-1.414zM11 14H7v2h4v-2zm-4 0c-.276 0-.525-.111-.707-.293l-1.414 1.414C5.42 15.663 6.172 16 7 16v-2zm-.707 1.121l3.414-3.414-1.414-1.414-3.414 3.414 1.414 1.414zM9 12h4v-2H9v2zm4 0a3 3 0 0 0 3-3h-2a1 1 0 0 1-1 1v2zm3-3V3h-2v6h2zm0-6a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2zm-3-3H3v2h10V0zM3 0a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1V0zM0 3v6h2V3H0zm0 6a3 3 0 0 0 3 3v-2a1 1 0 0 1-1-1H0zm3 3h2v-2H3v2zm1-1v4h2v-4H4zm1.707 4.707l.586-.586-1.414-1.414-.586.586 1.414 1.414z"
-    />
-  </svg>
-</template>
diff --git a/src/components/icons/IconDocumentation.vue b/src/components/icons/IconDocumentation.vue
deleted file mode 100644
index 6d4791c..0000000
--- a/src/components/icons/IconDocumentation.vue
+++ /dev/null
@@ -1,7 +0,0 @@
-<template>
-  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" fill="currentColor">
-    <path
-      d="M11 2.253a1 1 0 1 0-2 0h2zm-2 13a1 1 0 1 0 2 0H9zm.447-12.167a1 1 0 1 0 1.107-1.666L9.447 3.086zM1 2.253L.447 1.42A1 1 0 0 0 0 2.253h1zm0 13H0a1 1 0 0 0 1.553.833L1 15.253zm8.447.833a1 1 0 1 0 1.107-1.666l-1.107 1.666zm0-14.666a1 1 0 1 0 1.107 1.666L9.447 1.42zM19 2.253h1a1 1 0 0 0-.447-.833L19 2.253zm0 13l-.553.833A1 1 0 0 0 20 15.253h-1zm-9.553-.833a1 1 0 1 0 1.107 1.666L9.447 14.42zM9 2.253v13h2v-13H9zm1.553-.833C9.203.523 7.42 0 5.5 0v2c1.572 0 2.961.431 3.947 1.086l1.107-1.666zM5.5 0C3.58 0 1.797.523.447 1.42l1.107 1.666C2.539 2.431 3.928 2 5.5 2V0zM0 2.253v13h2v-13H0zm1.553 13.833C2.539 15.431 3.928 15 5.5 15v-2c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM5.5 15c1.572 0 2.961.431 3.947 1.086l1.107-1.666C9.203 13.523 7.42 13 5.5 13v2zm5.053-11.914C11.539 2.431 12.928 2 14.5 2V0c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM14.5 2c1.573 0 2.961.431 3.947 1.086l1.107-1.666C18.203.523 16.421 0 14.5 0v2zm3.5.253v13h2v-13h-2zm1.553 12.167C18.203 13.523 16.421 13 14.5 13v2c1.573 0 2.961.431 3.947 1.086l1.107-1.666zM14.5 13c-1.92 0-3.703.523-5.053 1.42l1.107 1.666C11.539 15.431 12.928 15 14.5 15v-2z"
-    />
-  </svg>
-</template>
diff --git a/src/components/icons/IconEcosystem.vue b/src/components/icons/IconEcosystem.vue
deleted file mode 100644
index c3a4f07..0000000
--- a/src/components/icons/IconEcosystem.vue
+++ /dev/null
@@ -1,7 +0,0 @@
-<template>
-  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="20" fill="currentColor">
-    <path
-      d="M11.447 8.894a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm0 1.789a1 1 0 1 0 .894-1.789l-.894 1.789zM7.447 7.106a1 1 0 1 0-.894 1.789l.894-1.789zM10 9a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0H8zm9.447-5.606a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm2 .789a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zM18 5a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0h-2zm-5.447-4.606a1 1 0 1 0 .894-1.789l-.894 1.789zM9 1l.447-.894a1 1 0 0 0-.894 0L9 1zm-2.447.106a1 1 0 1 0 .894 1.789l-.894-1.789zm-6 3a1 1 0 1 0 .894 1.789L.553 4.106zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zm-2-.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 2.789a1 1 0 1 0 .894-1.789l-.894 1.789zM2 5a1 1 0 1 0-2 0h2zM0 7.5a1 1 0 1 0 2 0H0zm8.553 12.394a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 1a1 1 0 1 0 .894 1.789l-.894-1.789zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zM8 19a1 1 0 1 0 2 0H8zm2-2.5a1 1 0 1 0-2 0h2zm-7.447.394a1 1 0 1 0 .894-1.789l-.894 1.789zM1 15H0a1 1 0 0 0 .553.894L1 15zm1-2.5a1 1 0 1 0-2 0h2zm12.553 2.606a1 1 0 1 0 .894 1.789l-.894-1.789zM17 15l.447.894A1 1 0 0 0 18 15h-1zm1-2.5a1 1 0 1 0-2 0h2zm-7.447-5.394l-2 1 .894 1.789 2-1-.894-1.789zm-1.106 1l-2-1-.894 1.789 2 1 .894-1.789zM8 9v2.5h2V9H8zm8.553-4.894l-2 1 .894 1.789 2-1-.894-1.789zm.894 0l-2-1-.894 1.789 2 1 .894-1.789zM16 5v2.5h2V5h-2zm-4.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zm-2.894-1l-2 1 .894 1.789 2-1L8.553.106zM1.447 5.894l2-1-.894-1.789-2 1 .894 1.789zm-.894 0l2 1 .894-1.789-2-1-.894 1.789zM0 5v2.5h2V5H0zm9.447 13.106l-2-1-.894 1.789 2 1 .894-1.789zm0 1.789l2-1-.894-1.789-2 1 .894 1.789zM10 19v-2.5H8V19h2zm-6.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zM2 15v-2.5H0V15h2zm13.447 1.894l2-1-.894-1.789-2 1 .894 1.789zM18 15v-2.5h-2V15h2z"
-    />
-  </svg>
-</template>
diff --git a/src/components/icons/IconSupport.vue b/src/components/icons/IconSupport.vue
deleted file mode 100644
index 7452834..0000000
--- a/src/components/icons/IconSupport.vue
+++ /dev/null
@@ -1,7 +0,0 @@
-<template>
-  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor">
-    <path
-      d="M10 3.22l-.61-.6a5.5 5.5 0 0 0-7.666.105 5.5 5.5 0 0 0-.114 7.665L10 18.78l8.39-8.4a5.5 5.5 0 0 0-.114-7.665 5.5 5.5 0 0 0-7.666-.105l-.61.61z"
-    />
-  </svg>
-</template>
diff --git a/src/components/icons/IconTooling.vue b/src/components/icons/IconTooling.vue
deleted file mode 100644
index 660598d..0000000
--- a/src/components/icons/IconTooling.vue
+++ /dev/null
@@ -1,19 +0,0 @@
-<!-- This icon is from <https://github.com/Templarian/MaterialDesign>, distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license-->
-<template>
-  <svg
-    xmlns="http://www.w3.org/2000/svg"
-    xmlns:xlink="http://www.w3.org/1999/xlink"
-    aria-hidden="true"
-    role="img"
-    class="iconify iconify--mdi"
-    width="24"
-    height="24"
-    preserveAspectRatio="xMidYMid meet"
-    viewBox="0 0 24 24"
-  >
-    <path
-      d="M20 18v-4h-3v1h-2v-1H9v1H7v-1H4v4h16M6.33 8l-1.74 4H7v-1h2v1h6v-1h2v1h2.41l-1.74-4H6.33M9 5v1h6V5H9m12.84 7.61c.1.22.16.48.16.8V18c0 .53-.21 1-.6 1.41c-.4.4-.85.59-1.4.59H4c-.55 0-1-.19-1.4-.59C2.21 19 2 18.53 2 18v-4.59c0-.32.06-.58.16-.8L4.5 7.22C4.84 6.41 5.45 6 6.33 6H7V5c0-.55.18-1 .57-1.41C7.96 3.2 8.44 3 9 3h6c.56 0 1.04.2 1.43.59c.39.41.57.86.57 1.41v1h.67c.88 0 1.49.41 1.83 1.22l2.34 5.39z"
-      fill="currentColor"
-    ></path>
-  </svg>
-</template>
diff --git a/src/components/marqueebar.vue b/src/components/marqueebar.vue
new file mode 100644
index 0000000..dc4efbc
--- /dev/null
+++ b/src/components/marqueebar.vue
@@ -0,0 +1,38 @@
+<template>
+    <div id="holder">
+        <div id="marquee" :style="{'animation': 'marquee ' + props.time + 's ' + 'linear infinite'}">
+            <img :style="{'height': props.height + 'px', 'width': props.width + 'px' }" v-for="(item, path) in images" :src="path" />
+            <img :style="{'height': props.height + 'px', 'width': props.width + 'px' }" v-for="(item, path) in images" :src="path" />
+        </div>
+    </div>
+</template>
+
+<script setup lang="ts">
+const props = defineProps({
+    image: String,
+    width: Number,
+    height: Number,
+    time: Number
+})
+
+const path = ``
+
+let images: Record<string, () => Promise<unknown>>;
+switch(props.image) {
+    case "blinkies": images = import.meta.glob("@/assets/images/blinkies/*")
+    case "banners": images = import.meta.glob("@/assets/images/banners/*")
+}
+</script>
+
+<style lang="css" scoped>
+#holder {
+    overflow: hidden;   
+    font-size: 0;
+}
+
+#marquee {
+    /* animation: marquee 60s linear infinite; */
+    white-space: nowrap;
+    display: inline-block;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/navbar.vue b/src/components/navbar.vue
new file mode 100644
index 0000000..5772596
--- /dev/null
+++ b/src/components/navbar.vue
@@ -0,0 +1,197 @@
+<template>
+    <nav>
+        <h1>set destination</h1>
+        <div>
+            <input type="checkbox" id="navmenu" class="navmenu">
+            <ul>
+                <li v-for="link in Links">
+                    <!-- <img src="../assets/images/star.gif"><RouterLink :to="link.url">{{ link.name }}</RouterLink><img src="../assets/images/star.gif"> -->
+                    <RouterLink :to="link.url"><img src="../assets/images/star.gif"><span class="font">></span> {{
+                        link.name
+                    }} <img src="../assets/images/star.gif"></RouterLink>
+                    <!-- <RouterLink :to="link.url">> {{ link.name }}</RouterLink> -->
+                </li>
+            </ul>
+            <div id="toggle" class="info">
+                <label for="navmenu"><span id="openmenu">
+                        <div class="burger"></div>
+                        <div class="burger"></div>
+                        <div class="burger"></div>
+                    </span><span class="font" id="closemenu">X</span></label>
+            </div>
+        </div>
+    </nav>
+</template>
+<script setup lang="ts">
+const Links = [
+    { name: "home", url: "/" },
+    { name: "socials", url: "/socials" },
+    { name: "creatures", url: "/pets" },
+    { name: "portfolio", url: "/portfolio" }
+]
+</script>
+<style scoped>
+nav {
+    border: 2px solid rgba(222, 222, 108, 1);
+    min-width: 20%;
+    height: fit-content;
+    padding: .5em;
+
+    @media screen and (max-width: 500px) {
+        padding: 2px;
+    }
+}
+
+h1 {
+    text-align: center;
+    font-size: 40px;
+    text-decoration: underline;
+    margin-bottom: 1em;
+
+    @media screen and (max-width: 600px) {
+        font-size: 24px;
+    }
+}
+
+ul {
+    list-style-type: none;
+    padding: 0;
+    text-align: center;
+    display: flex;
+    flex-direction: column;
+
+    @media screen and (max-width: 1250px) {
+        flex-direction: row;
+        justify-content: center;
+        flex-wrap: wrap;
+        gap: .5em;
+
+        li {
+            border: rgba(222, 222, 108, 1) solid 2px;
+            width: fit-content;
+            height: fit-content;
+            /* padding: 1em; */
+            margin: 0;
+
+            a {
+                width: 250px;
+                height: 100px;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                background-color: black;
+            }
+
+            @media screen and (max-width: 500px) {
+                a {
+                    width: 175px;
+                    height: 50px;
+                    font-size: 20px;
+                }
+
+                span {
+                    font-size: 28px;
+                    margin-right: .5em;
+                }
+            }
+        }
+    }
+}
+
+li {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    margin: .5em 0;
+
+    height: 32px;
+}
+
+#toggle {
+    text-align: center;
+    border: 2px solid;
+    margin: .5em;
+
+    @media screen and (min-width: 450px) {
+        display: none;
+    }
+}
+
+label {
+    text-align: center;
+}
+
+input {
+    display: none;
+}
+
+@media screen and (max-width: 450px) {
+    ul {
+        display: none;
+    }
+}
+
+#closemenu {
+    display: none;
+}
+
+#openmenu {
+    display: flex;
+    flex-direction: column;
+    cursor: pointer;
+    user-select: none;
+
+    justify-content: space-evenly;
+    align-items: center;
+}
+
+.burger {
+    height: 2px;
+    width: 32px;
+    background-color: #fefefe;
+}
+
+.navmenu:checked~* #openmenu {
+    display: none;
+}
+
+.navmenu:checked~* #closemenu {
+    display: block;
+    cursor: pointer;
+    user-select: none;
+    color: #fefefe;
+}
+
+.navmenu:checked+ul {
+    display: flex;
+}
+
+span {
+    height: 32px;
+}
+
+a {
+    text-decoration: none;
+    color: #fefefe;
+
+    img {
+        display: none;
+    }
+}
+
+a:hover {
+    text-decoration: underline;
+
+    img {
+        display: inline;
+    }
+
+    span {
+        display: none;
+    }
+}
+
+a:active {
+    color: rgba(222, 222, 108, 1);
+}
+</style>
\ No newline at end of file
diff --git a/src/components/quotebanner.vue b/src/components/quotebanner.vue
new file mode 100644
index 0000000..0d8e84c
--- /dev/null
+++ b/src/components/quotebanner.vue
@@ -0,0 +1,41 @@
+<template>
+    <div id="billboard">
+        <div id="quote">
+            <img src="../assets/images/star.gif">
+            {{ props.quote || "oops, something has gone wrong x3" }}
+            <img src="../assets/images/star.gif">
+        </div>
+    </div>
+</template>
+
+<script setup lang="ts">
+const props = defineProps({
+    quote: String
+})
+</script>
+
+<style scoped>
+#billboard {
+    border: solid 2px rgba(222, 222, 108, 1);
+    text-align: center;
+    padding: .2em;
+
+    margin-top: .2em;
+    margin-bottom: .2em;
+
+    font-size: 32px;
+    @media screen and (max-width: 500px) {
+        font-size: 16px;
+    }
+    overflow: hidden;
+}
+
+#quote {
+    animation: billboard 20s linear infinite;
+
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    gap: .5em;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/stamps.vue b/src/components/stamps.vue
new file mode 100644
index 0000000..12ae594
--- /dev/null
+++ b/src/components/stamps.vue
@@ -0,0 +1,28 @@
+<template>
+    <div>
+        <h2>stampbook</h2>
+        <div id="stamp">
+            <img v-for="(item, path) in stamps" :src="path" />
+        </div>
+    </div>
+</template>
+<script setup lang="ts">
+const stamps = import.meta.glob("@/assets/images/stamps/*")
+</script>
+<style scoped>
+h2 {
+    margin: 0;
+    text-align: center;
+}
+
+img {
+    height: 56px;
+    width: 99px;
+}
+
+#stamp {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: center;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/underconstruction.vue b/src/components/underconstruction.vue
new file mode 100644
index 0000000..f50778d
--- /dev/null
+++ b/src/components/underconstruction.vue
@@ -0,0 +1,29 @@
+<template>
+    <div>
+        <img src="../assets/images/construction/barraconstruction.gif">
+        <h1>UNDER CONSTRUCTION</h1>
+        <img src="../assets/images/construction/ICONE_EN_CONSTRUCTION.GIF">
+        <p>come back soon!!!</p>
+    </div>
+</template>
+<style scoped>
+
+div {
+    display: flex;
+    flex-direction: column;
+
+    justify-content: center;
+    align-items: center;
+    text-align: center;
+}
+
+@media screen and (max-width: 800px) {
+    img {
+        width: 100%;
+    }
+    h1 {
+        font-size: 32px;
+    }
+}
+
+</style>
\ No newline at end of file
diff --git a/src/components/wantedposter.vue b/src/components/wantedposter.vue
new file mode 100644
index 0000000..eff6c34
--- /dev/null
+++ b/src/components/wantedposter.vue
@@ -0,0 +1,146 @@
+<template>
+    <div id="poster">
+        <h1 class="warning"><span class="font">$$</span> FBI's most wanted <span class="font">$$</span></h1>
+        <div id="profile">
+            <img class="info" src="../assets/images/pfp.png">
+            <table>
+                <tbody>
+                    <tr>
+                        <td>name:</td>
+                        <td>genki</td>
+                    </tr>
+                    <tr>
+                        <td>height:</td>
+                        <td>mouse-sized</td>
+                    </tr>
+                    <tr>
+                        <td>species:</td>
+                        <td><span class="info">space cabbit</span></td>
+                    </tr>
+                    <tr>
+                        <td><span class="warning">wanted</span> for:</td>
+                        <td>being too silly :3</td>
+                    </tr>
+                    <tr>
+                        <td>last seen:</td>
+                        <td><span class="warning">inside your walls...</span></td>
+                    </tr>
+                </tbody>
+            </table>
+        </div>
+        <p><span class="info">!INFO</span><br> likes to smell plants and imprison bugs... can be found eating plastic
+            from your bins and
+            drinking kerosene at your nearest airport </p>
+        <p><span class="warning">!CAUTION</span><br> <img src="../assets/images/warningsign.gif"> will <span
+                class="highlight">bark</span> very loud if approached <img src="../assets/images/warningsign.gif"></p>
+        <div id="reward">
+            <img src="../assets/images/missile.gif">
+            <div>
+                <h1 class="highlight">!REWARD!</h1>
+                <p>second-hand <span class="highlight">Hwasong-18</span> ICBM<br>[fuel not included] </p>
+            </div>
+            <img src="../assets/images/missile.gif">
+        </div>
+    </div>
+</template>
+<script setup lang="ts"></script>
+<style scoped>
+h1 {
+    text-decoration: underline;
+    text-align: center;
+    margin: 0;
+    @media screen and (max-width: 900px) {
+        font-size: 32px;
+    }
+    @media screen and (max-width: 600px) {
+        font-size: 24px;
+    }
+    @media screen and (max-width: 400px) {
+        font-size: 20px;
+    }
+}
+
+p {
+    /* width: 100%; */
+    margin: 0;
+    text-align: center;
+}
+
+#poster {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    gap: 1em;
+    @media screen and (max-width: 600px) {
+        font-size: 24px;
+    }
+    @media screen and (max-width: 500px) {
+        font-size: 16px;
+    }
+}
+
+#profile {
+    display: flex;
+    gap: 1em;
+
+    align-items: center;
+
+    img {
+        height: 256px;
+        border: solid 2px;
+        background-color: black;
+    }
+
+    @media screen and (max-width: 900px) {
+        flex-direction: column;
+        img {
+            height: 128px;
+        }
+    }
+}
+
+#reward {
+    display: flex;
+    height: fit-content;
+    align-items: center;
+    gap: .5em;
+
+    border: 2px solid rgba(222, 222, 108, 1);
+    padding: 1em;
+
+    background-color: black;
+    img {
+        height: 64px;
+    }
+    @media screen and (max-width: 600px) {
+        img {
+        height: 32px;
+    }
+    }
+    
+}
+
+td {
+    text-align: center;
+    padding: .2em;
+}
+
+table,
+th,
+td {
+    border: 2px solid white;
+    border-collapse: collapse;
+    background-color: black;
+    @media screen and (max-width: 600px) {
+        font-size: 24px;
+    }
+    @media screen and (max-width: 500px) {
+        font-size: 16px;
+    }
+}
+
+td:nth-child(odd) {
+    text-align: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/welcometitle.vue b/src/components/welcometitle.vue
new file mode 100644
index 0000000..ce98291
--- /dev/null
+++ b/src/components/welcometitle.vue
@@ -0,0 +1,35 @@
+<template>
+    <p>welcome to...</p>
+    <h1>{{ props.title }}</h1>
+</template>
+
+<script setup lang="ts">
+import { ref } from 'vue';
+
+const props = defineProps({
+    title: String
+})
+</script>
+
+<style scoped>
+h1 {
+    margin: 0;
+    padding-top: .25em;
+    padding-left: .25em;
+
+    color: black;
+    font-size: 72px;
+
+    @media screen and (max-width: 500px) {
+        font-size: 32px;
+    }
+
+    background: linear-gradient(90deg, rgba(222, 222, 108, 1) 0%, rgba(222, 222, 108, 1) 25%, rgba(0, 212, 255, 0) 100%);
+}
+
+p {
+    margin: 0;
+
+    font-size: 32px;
+}
+</style>
diff --git a/src/router/index.ts b/src/router/index.ts
index 3e49915..cf15ff3 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -1,5 +1,9 @@
 import { createRouter, createWebHistory } from 'vue-router'
-import HomeView from '../views/HomeView.vue'
+
+import HomeView from '@/views/HomeView.vue'
+import SocialsView from '@/views/SocialsView.vue'
+import PetsView from '@/views/PetsView.vue'
+import PortfolioView from '@/views/PortfolioView.vue'
 
 const router = createRouter({
   history: createWebHistory(import.meta.env.BASE_URL),
@@ -10,13 +14,28 @@ const router = createRouter({
       component: HomeView,
     },
     {
-      path: '/about',
-      name: 'about',
-      // route level code-splitting
-      // this generates a separate chunk (About.[hash].js) for this route
-      // which is lazy-loaded when the route is visited.
-      component: () => import('../views/AboutView.vue'),
+      path: '/socials',
+      name: 'socials',
+      component: SocialsView,
     },
+    {
+      path: '/pets',
+      name: 'pets',
+      component: PetsView,
+    },
+    {
+      path: '/portfolio',
+      name: 'portfolio',
+      component: PortfolioView,
+    },
+    // {
+    //   path: '/about',
+    //   name: 'about',
+    //   // route level code-splitting
+    //   // this generates a separate chunk (About.[hash].js) for this route
+    //   // which is lazy-loaded when the route is visited.
+    //   component: () => import('../views/AboutView.vue'),
+    // },
   ],
 })
 
diff --git a/src/views/AboutView.vue b/src/views/AboutView.vue
deleted file mode 100644
index 756ad2a..0000000
--- a/src/views/AboutView.vue
+++ /dev/null
@@ -1,15 +0,0 @@
-<template>
-  <div class="about">
-    <h1>This is an about page</h1>
-  </div>
-</template>
-
-<style>
-@media (min-width: 1024px) {
-  .about {
-    min-height: 100vh;
-    display: flex;
-    align-items: center;
-  }
-}
-</style>
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
index d5c0217..928efcf 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -1,9 +1,35 @@
+<template>
+    <div id="holder">
+        <div class="window">hello!!! welcome to my site, feel free to look around and learn something your government doesn't want you
+            to know :3</div>
+        <Wantedposter class="window" />
+        <Stamps class="window"/>
+    </div>
+</template>
 <script setup lang="ts">
-import TheWelcome from '../components/TheWelcome.vue'
+import Stamps from '@/components/stamps.vue';
+import Wantedposter from '@/components/wantedposter.vue';
+
 </script>
 
-<template>
-  <main>
-    <TheWelcome />
-  </main>
-</template>
+<style scoped>
+.window {
+    border: 2px dashed rgba(222, 222, 108, 1);
+    padding: 1em;
+    @media screen and (max-width: 500px) {
+        padding: .5em;
+        font-size: 24px;
+        background-color: black;
+        text-align: center;
+    }
+}
+#holder {
+    display: flex;
+    flex-wrap: wrap;
+
+    justify-content: center;
+
+    gap: 1em;
+    
+}
+</style>
\ No newline at end of file
diff --git a/src/views/PetsView.vue b/src/views/PetsView.vue
new file mode 100644
index 0000000..0bf0604
--- /dev/null
+++ b/src/views/PetsView.vue
@@ -0,0 +1,8 @@
+<template>
+    <Underconstruction />
+</template>
+<script setup lang="ts">
+import Underconstruction from '@/components/underconstruction.vue';
+
+</script>
+<style scoped></style>
\ No newline at end of file
diff --git a/src/views/PortfolioView.vue b/src/views/PortfolioView.vue
new file mode 100644
index 0000000..0bf0604
--- /dev/null
+++ b/src/views/PortfolioView.vue
@@ -0,0 +1,8 @@
+<template>
+    <Underconstruction />
+</template>
+<script setup lang="ts">
+import Underconstruction from '@/components/underconstruction.vue';
+
+</script>
+<style scoped></style>
\ No newline at end of file
diff --git a/src/views/SocialsView.vue b/src/views/SocialsView.vue
new file mode 100644
index 0000000..0bf0604
--- /dev/null
+++ b/src/views/SocialsView.vue
@@ -0,0 +1,8 @@
+<template>
+    <Underconstruction />
+</template>
+<script setup lang="ts">
+import Underconstruction from '@/components/underconstruction.vue';
+
+</script>
+<style scoped></style>
\ No newline at end of file