diff options
| author | Fuwn <[email protected]> | 2021-11-03 23:52:24 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2021-11-03 23:52:24 -0700 |
| commit | 70f5f5ab700ecdc8d5f65fe9a52e3d37280e718e (patch) | |
| tree | c4d380afbef990e5c71492da13ce1d2d8d67a191 /components | |
| parent | feat(index): add press pack link (diff) | |
| download | yucky.fun-70f5f5ab700ecdc8d5f65fe9a52e3d37280e718e.tar.xz yucky.fun-70f5f5ab700ecdc8d5f65fe9a52e3d37280e718e.zip | |
feat: new
Diffstat (limited to 'components')
| -rw-r--r-- | components/README.md | 7 | ||||
| -rw-r--r-- | components/extra/ExtraComingSoon.vue | 33 | ||||
| -rw-r--r-- | components/navigation/Bar.vue | 45 | ||||
| -rw-r--r-- | components/navigation/Footer.vue | 87 | ||||
| -rw-r--r-- | components/navigation/ResponsiveBar.vue | 234 | ||||
| -rw-r--r-- | components/ui/contacts/ContactsHero.vue | 37 | ||||
| -rw-r--r-- | components/ui/home/HomeHero.vue | 32 | ||||
| -rw-r--r-- | components/ui/interests/InterestsHero.vue | 41 | ||||
| -rw-r--r-- | components/ui/interests/InterestsListing.vue | 72 | ||||
| -rw-r--r-- | components/ui/members/MembersHero.vue | 44 | ||||
| -rw-r--r-- | components/ui/members/MembersListing.vue | 72 |
11 files changed, 704 insertions, 0 deletions
diff --git a/components/README.md b/components/README.md new file mode 100644 index 0000000..a079f10 --- /dev/null +++ b/components/README.md @@ -0,0 +1,7 @@ +# COMPONENTS + +**This directory is not required, you can delete it if you don't want to use it.** + +The components directory contains your Vue.js Components. + +_Nuxt.js doesn't supercharge these components._ diff --git a/components/extra/ExtraComingSoon.vue b/components/extra/ExtraComingSoon.vue new file mode 100644 index 0000000..2632f44 --- /dev/null +++ b/components/extra/ExtraComingSoon.vue @@ -0,0 +1,33 @@ +<template> + <div class="hero"> + <div class="header"> + <img + class="wow fadeInUp" + data-wow-delay="1s" + src="../../assets/images/manipal.gif" + alt="lost gif" + > + <br> + + <div style="text-align: center"> + <small class="wow fadeInUp" data-wow-delay="1.2s">coming soon...</small> + <br><br> + + <a href="/"> + <img + class="wow fadeInUp" + data-wow-delay="1s" + src="../../assets/images/home-glitter.gif" + alt="home gif" + > + </a> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'ExtraComingSoon' +} +</script> diff --git a/components/navigation/Bar.vue b/components/navigation/Bar.vue new file mode 100644 index 0000000..9a4cab6 --- /dev/null +++ b/components/navigation/Bar.vue @@ -0,0 +1,45 @@ +<template> + <div> + <nav> + <span id="brand"> + <a href="/">::</a> + </span> + + <ul id="menu"> + <li><a id="menu-item-1" href="/">/home</a></li> + <li> + <a id="menu-item-2" href="/members">/members</a> + </li> + <!-- <li><a id="menu-item-3" href="/projects">/projects</a></li> --> + <!-- <li><a id="menu-item-4" href="/about">/about me</a></li> --> + <!-- <li><a id="menu-item-5" href="https://blog.fuwn.me">/blog</a></li> --> + </ul> + + <div id="toggle"> + <div class="span"> + menu + </div> + </div> + </nav> + + <div id="resize"> + <div class="close-btn"> + close + </div> + + <ul id="menu"> + <li><a href="/">home<span>.</span></a></li> + <li><a href="/members">members<span>.</span></a></li> + <li><a href="/projects">projects<span>.</span></a></li> + <li><a href="/about">about me<span>.</span></a></li> + <li><a href="/blog">blog<span>.</span></a></li> + </ul> + </div> + </div> +</template> + +<script> +export default { + name: 'Header' +} +</script> diff --git a/components/navigation/Footer.vue b/components/navigation/Footer.vue new file mode 100644 index 0000000..c991981 --- /dev/null +++ b/components/navigation/Footer.vue @@ -0,0 +1,87 @@ +<template> + <div class="footer"> + <div class="container"> + <br><br><br><br> + + <div class="info"> + <div class="row"> + <div id="personal" class="col-lg-4"> + <p class="wow fadeInUp"> + <code>println!("{}", Yucky.copyright);<br></code> + </p> + <h4 class="wow fadeInUp" data-wow-delay="0.2s"> + <a id="info-item-1" href="/">yucky! 2020</a> + </h4> + <br><br> + </div> + + <div id="media" class="col-lg-4"> + <p class="wow fadeInUp" data-wow-delay="0s"> + <code>$ ls -a links/<br></code> + </p> + + <ul> + <li id="tw" class="wow fadeInUp" data-wow-delay="0.8s"> + <a id="media-item-1" :href="'https://twitter.com/' + socials.twitter">twitter</a> + </li> + <li id="gh" class="wow fadeInUp" data-wow-delay="1s"> + <a id="media-item-2" :href="'https://github.com/' + socials.github">github</a> + </li> + <li id="dc" class="wow fadeInUp" data-wow-delay="1s"> + <a id="media-item-3" :href="'https://discord.io/' + socials.discord">discord</a> + </li> + <li id="ap" class="wow fadeInUp" data-wow-delay="1s"> + <a id="media-item-4" :href="socials.apply">apply</a> + </li> + <li id="st" class="wow fadeInUp" data-wow-delay="1s"> + <a id="media-item-5" :href="'https://steamcommunity.com/groups/' + socials.steam">steam</a> + </li> + <li id="yt" class="wow fadeInUp" data-wow-delay="1s"> + <a id="media-item-6" :href="'https://www.youtube.com/channel/' + socials.youtube">youtube</a> + </li> + <li id="pp" class="wow fadeInUp" data-wow-delay="1s"> + <a id="media-item-7" :href="'https://drive.google.com/drive/folders/' + socials.press_pack">press</a> + </li> + <li id="em" class="wow fadeInUp" data-wow-delay="1s"> + <a id="media-item-8" :href="socials.email">email</a> + </li> + </ul> + <br><br> + </div> + + <div id="address" class="col-lg-4"> + <p class="wow fadeInUp" data-wow-delay="0s"> + <code>$ echo $APPLY<br></code> + </p> + <h4 class="wow fadeInUp" data-wow-delay="0.2s"> + <a href="https://fuwn.link/apply2yucky"> + <img + src="../../assets/images/apply.gif" + alt="" + > + </a> + </h4> + <br><br> + </div> + </div> + <div> + <small>the grind never stops.</small> + <br><br> + </div> + </div> + </div> + </div> +</template> + +<script> +import socials from '../../assets/json/socials.json' + +export default { + name: 'Footer', + data: () => { + return { + socials + } + } +} +</script> diff --git a/components/navigation/ResponsiveBar.vue b/components/navigation/ResponsiveBar.vue new file mode 100644 index 0000000..d59547b --- /dev/null +++ b/components/navigation/ResponsiveBar.vue @@ -0,0 +1,234 @@ +<template> + <nav> + <input id="nav" type="checkbox" class="hidden"> + <label for="nav" class="nav-btn"> + <i /> + <i /> + <i /> + </label> + <div class="logo"> + <a href="/">::</a> + </div> + <div class="nav-wrapper"> + <ul> + <!-- <li>$ ls -a routes/</li> --> + <li><a href="/">..</a></li> + <li><a href="/members">members</a></li> + <li><a href="https://fuwn.link/apply2yucky">apply</a></li> + </ul> + </div> + </nav> +</template> + +<script> +export default { + name: 'ResponsiveBar' +} +</script> + +<style scoped lang="scss"> + +* { + box-sizing: border-box; +} + +html { + margin: 0; + padding: 0; + width: 100%; + height: 100vh; +} + +body { + margin: 0; + padding: 0; + width: 100%; + height: 100vh; + /* font-family: Poppins, serif; */ + font-weight: 400; + background-position: center; + background-size: cover; +} + +nav { + padding: 8px; +} + +.logo { + float: left; + padding: 8px; + margin-left: 16px; + margin-top: 8px; + color: white; +} + +.logo a { + color: white; + /* text-transform: uppercase; */ + font-weight: 700; + font-size: 18px; + letter-spacing: 0; /* px */ + text-decoration: none; +} + +nav ul { + float: right; +} + +nav ul li { + display: inline-block; + float: left; +} + +nav ul li:not(:first-child) { + margin-left: 48px; +} + +nav ul li:last-child { + margin-right: 24px; +} + +nav ul li a { + display: inline-block; + outline: none; + color: white; + /* text-transform: uppercase; */ + text-decoration: none; + font-size: 14px; + letter-spacing: 1.2px; + // font-weight: 600; +} + +@media screen and (max-width: 864px) { + .logo { + padding: 0; + } + + .nav-wrapper { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: -1; + background: #0f0f0f; + opacity: 0; + transition: all 0.2s ease; + } + + .nav-wrapper ul { + position: absolute; + top: 50%; + transform: translateY(-50%); + width: 100%; + } + + .nav-wrapper ul li { + display: block; + float: none; + width: 100%; + text-align: right; + margin-bottom: 10px; + } + + .nav-wrapper ul li:nth-child(1) a { + transition-delay: 0.2s; + } + + .nav-wrapper ul li:nth-child(2) a { + transition-delay: 0.3s; + } + + .nav-wrapper ul li:nth-child(3) a { + transition-delay: 0.4s; + } + + .nav-wrapper ul li:nth-child(4) a { + transition-delay: 0.5s; + } + + .nav-wrapper ul li:not(:first-child) { + margin-left: 0; + } + + .nav-wrapper ul li a { + padding: 10px 24px; + opacity: 0; + color: white; /* #000 */ + font-size: 14px; + // font-weight: 600; + letter-spacing: 1.2px; + transform: translateX(-20px); + transition: all 0.2s ease; + } + + .nav-btn { + position: fixed; + right: 10px; + top: 10px; + display: block; + width: 48px; + height: 48px; + cursor: pointer; + z-index: 9999; + border-radius: 50%; + } + + .nav-btn i { + display: block; + width: 20px; + height: 2px; + background: white; + border-radius: 2px; + margin-left: 14px; + } + + .nav-btn i:nth-child(1) { + margin-top: 16px; + } + + .nav-btn i:nth-child(2) { + margin-top: 4px; + opacity: 1; + } + + .nav-btn i:nth-child(3) { + margin-top: 4px; + } +} + +#nav:checked + .nav-btn { + transform: rotate(45deg); +} + +#nav:checked + .nav-btn i { + background: white; + transition: transform 0.2s ease; +} + +#nav:checked + .nav-btn i:nth-child(1) { + transform: translateY(6px) rotate(180deg); +} + +#nav:checked + .nav-btn i:nth-child(2) { + opacity: 0; +} + +#nav:checked + .nav-btn i:nth-child(3) { + transform: translateY(-6px) rotate(90deg); +} + +#nav:checked ~ .nav-wrapper { + z-index: 9990; + opacity: 1; +} + +#nav:checked ~ .nav-wrapper ul li a { + opacity: 1; + transform: translateX(0); +} + +.hidden { + display: none; +} +</style> diff --git a/components/ui/contacts/ContactsHero.vue b/components/ui/contacts/ContactsHero.vue new file mode 100644 index 0000000..7167b5c --- /dev/null +++ b/components/ui/contacts/ContactsHero.vue @@ -0,0 +1,37 @@ +<template> + <div class="container"> + <div class="hero-content"> + <br><br><br><br> + + <div class="row"> + <div class="col-lg-8"> + <h3 class="wow fadeInUp" data-wow-delay="1s"> + contacts + </h3> + + <p class="wow fadeInUp" data-wow-delay="1.2s"> + <code> + n/a<br> + </code> + + {{ description }} + </p> + </div> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'ContactsHero', + props: { + description: { + type: String, + default: () => { + return 'a few ways to get a hold of me' + } + } + } +} +</script> diff --git a/components/ui/home/HomeHero.vue b/components/ui/home/HomeHero.vue new file mode 100644 index 0000000..6d950a8 --- /dev/null +++ b/components/ui/home/HomeHero.vue @@ -0,0 +1,32 @@ +<template> + <div class="hero"> + <div class="header"> + <!-- <img + class="wow fadeInUp" + data-wow-delay="1s" + src="../../../assets/images/underconstruction-flash.gif" + alt="1990s era under constriction gif" + > --> + <h1>yucky! aiming</h1> + <br> + + <div style="text-align: center;"> + <small class="wow fadeInUp" data-wow-delay="1.2s">nasty, even.</small> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'Hero', + props: { + updated: { + type: String, + default: () => { + return '1991. 01. 11.' + } + } + } +} +</script> diff --git a/components/ui/interests/InterestsHero.vue b/components/ui/interests/InterestsHero.vue new file mode 100644 index 0000000..525864c --- /dev/null +++ b/components/ui/interests/InterestsHero.vue @@ -0,0 +1,41 @@ +<template> + <div class="container"> + <div class="hero-content"> + <br><br><br><br> + + <div class="row"> + <div class="col-lg-8"> + <h3 class="wow fadeInUp" data-wow-delay="1s"> + interests + </h3> + + <p class="wow fadeInUp" data-wow-delay="1.2s"> + <code> + handle <- openFile "interests_description.txt" ReadMode <br> + contents <- hGetContents handle <br> + putStr contents <br> + hClose handle <br> + </code> + + {{ description }} + </p> + </div> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'InterestsHero', + props: { + description: { + type: String, + default: () => { + return 'just a few things that i think are pretty cool and am ' + + 'considering picking up sometime in the future.' + } + } + } +} +</script> diff --git a/components/ui/interests/InterestsListing.vue b/components/ui/interests/InterestsListing.vue new file mode 100644 index 0000000..8c9e561 --- /dev/null +++ b/components/ui/interests/InterestsListing.vue @@ -0,0 +1,72 @@ +<template> + <div class="container"> + <div class="hero-content"> + <br> + + <div class="row"> + <div class="col-lg-8"> + <div v-for="(category, heading) in interests" :key="category"> + <!-- Main categories --> + <h5 :id="heading" class="wow fadeInUp" data-wow-delay="1.2s"> + # {{ heading }} + </h5> + + <!-- If category is an array... --> + <ul v-if="Array.isArray(category)"> + <li v-for="item in category" :key="item"> + {{ item }} + </li> + </ul> + <!-- If the category is an object... --> + <ul v-for="(sub_category, sub_heading) in category" v-else :key="sub_category"> + <!-- Sub categories --> + <h6 :id="sub_heading"> + ## {{ sub_heading }} + </h6> + + <!-- If category is an array... --> + <ul v-if="Array.isArray(sub_category)"> + <li v-for="item in sub_category" :key="item"> + {{ item }} + </li> + </ul> + <!-- If the category is an object... --> + <ul v-for="(subsub_category, subsub_heading) in sub_category" v-else :key="subsub_category"> + <h6 :id="subsub_heading"> + ### {{ subsub_heading }} + </h6> + + <!-- If category is an array... --> + <ul v-if="Array.isArray(subsub_category)"> + <li v-for="item in subsub_category" :key="item"> + {{ item }} + </li> + </ul> + + <!-- If the current iterated item is the last of the currently + iterated object, add a line-break... --> + <br + v-if="(Object.keys(sub_category).length - 1) + !== Object.keys(sub_category).indexOf(subsub_heading)" + > + </ul> + </ul> + </div> + </div> + </div> + </div> + </div> +</template> + +<script> +import interests from '../../../assets/json/interests.json' + +export default { + name: 'MembersListing', + data: () => { + return { + interests + } + } +} +</script> diff --git a/components/ui/members/MembersHero.vue b/components/ui/members/MembersHero.vue new file mode 100644 index 0000000..491abe1 --- /dev/null +++ b/components/ui/members/MembersHero.vue @@ -0,0 +1,44 @@ +<template> + <div class="container"> + <div class="hero-content"> + <br><br><br><br> + + <div class="row"> + <div class="col-lg-8"> + <h3 class="wow fadeInUp" data-wow-delay="1s"> + members + </h3> + + <!-- <img + class="wow fadeInUp" + data-wow-delay="1.15s" + src="https://web.archive.org/web/20090809234237/http://www.geocities.com/lateralusspiraleyes/neo_coding_flash.gif" + alt="neo" + > + <br> --> + + <p class="wow fadeInUp" data-wow-delay="1.2s"> + <code>$ cat members.txt <br></code> + {{ description }} + </p> + </div> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'MembersHero', + props: { + description: { + type: String, + default: () => { + /* return 'despite working in full-stack, i not only have a mild distaste ' + + 'for front-end, but i\'m sub-par at it so don\'t expect much in that front.' */ + return null + } + } + } +} +</script> diff --git a/components/ui/members/MembersListing.vue b/components/ui/members/MembersListing.vue new file mode 100644 index 0000000..5374fbc --- /dev/null +++ b/components/ui/members/MembersListing.vue @@ -0,0 +1,72 @@ +<template> + <div class="container"> + <div class="hero-content"> + <br> + + <div class="row"> + <div class="col-lg-8"> + <div v-for="(category, heading) in members" :key="category"> + <!-- Main categories --> + <h5 :id="heading" class="wow fadeInUp" data-wow-delay="1.2s"> + # {{ heading }} + </h5> + + <!-- If category is an array... --> + <ul v-if="Array.isArray(category)"> + <li v-for="item in category" :key="item"> + {{ item }} + </li> + </ul> + <!-- If the category is an object... --> + <ul v-for="(sub_category, sub_heading) in category" v-else :key="sub_category"> + <!-- Sub categories --> + <h6 :id="sub_heading"> + ## {{ sub_heading }} + </h6> + + <!-- If category is an array... --> + <ul v-if="Array.isArray(sub_category)"> + <li v-for="item in sub_category" :key="item"> + {{ item }} + </li> + </ul> + <!-- If the category is an object... --> + <ul v-for="(subsub_category, subsub_heading) in sub_category" v-else :key="subsub_category"> + <h6 :id="subsub_heading"> + ### {{ subsub_heading }} + </h6> + + <!-- If category is an array... --> + <ul v-if="Array.isArray(subsub_category)"> + <li v-for="item in subsub_category" :key="item"> + {{ item }} + </li> + </ul> + + <!-- If the current iterated item is the last of the currently + iterated object, add a line-break... --> + <br + v-if="(Object.keys(sub_category).length - 1) + !== Object.keys(sub_category).indexOf(subsub_heading)" + > + </ul> + </ul> + </div> + </div> + </div> + </div> + </div> +</template> + +<script> +import members from 'assets/json/members.json' + +export default { + name: 'MembersListing', + data: () => { + return { + members + } + } +} +</script> |