From 494eb9266c375b9bcbd43b45ab62effa5ace33d1 Mon Sep 17 00:00:00 2001
From: ivelov-vm <ivelov_vm@groupbwt.com>
Date: Tue, 21 Mar 2023 14:00:47 +0200
Subject: [PATCH] feat: add decor to blogs and blog page. update hover effects
 on transparent header

---
 src/components/HeaderComponent.vue | 88 ++++++++++++++++++++----------
 src/pages/BlogPage.vue             | 45 +++++++++------
 src/pages/BlogsPage.vue            | 33 ++++++++---
 src/pages/HomePage.vue             |  2 +-
 4 files changed, 111 insertions(+), 57 deletions(-)

diff --git a/src/components/HeaderComponent.vue b/src/components/HeaderComponent.vue
index 49c4913..0390e7d 100644
--- a/src/components/HeaderComponent.vue
+++ b/src/components/HeaderComponent.vue
@@ -1,49 +1,72 @@
 <template>
-  <div class="sticky top-0 z-30 transition-all"
-  :class="{'bg-white':!transparent, 'shadow-14x28':withShadow}">
+  <div
+    class="sticky top-0 z-30 transition-all"
+    :class="{ 'bg-white': !transparent, 'shadow-14x28': withShadow }"
+  >
     <header
       v-if="width > 1000"
       class="flex justify-around items-center py-3.5"
-      :class="transparent?'text-white':'text-dark'"
+      :class="textWhite ? 'text-white' : 'text-dark'"
     >
-      <LogoSvg class="flex-auto basis-[28.57%] h-[46px]"
-      :class="transparent?'text-white':'text-blue'"></LogoSvg>
+      <div class="flex-auto basis-[28.57%] h-[46px] flex justify-center">
+        <router-link to="/">
+          <LogoSvg :class="textWhite ? 'text-white' : 'text-blue'"></LogoSvg>
+        </router-link>
+      </div>
 
       <nav class="flex justify-around flex-auto basis-[42.86%] text-xl">
         <router-link
           to="/"
-          class="hover:text-gray transition-colors"
-          :class="currentPage === 'home' ? 'font-bold' : ''"
+          class="transition-colors"
+          :class="[
+            currentPage === 'home' ? 'font-bold' : '',
+            textWhite ? 'hover:text-gray-bg' : 'hover:text-gray',
+          ]"
           >Home</router-link
         >
         <router-link
           to="/services"
-          class="hover:text-gray transition-colors"
-          :class="currentPage === 'services' ? 'font-bold' : ''"
+          class="transition-colors"
+          :class="[
+            currentPage === 'services' ? 'font-bold' : '',
+            textWhite ? 'hover:text-gray-bg' : 'hover:text-gray',
+          ]"
           >Services</router-link
         >
         <router-link
           to="/home"
-          class="hover:text-gray transition-colors"
-          :class="currentPage === 'about us' ? 'font-bold' : ''"
+          class="transition-colors"
+          :class="[
+            currentPage === 'about us' ? 'font-bold' : '',
+            textWhite ? 'hover:text-gray-bg' : 'hover:text-gray',
+          ]"
           >About us</router-link
         >
         <router-link
           to="/home"
-          class="hover:text-gray transition-colors"
-          :class="currentPage === 'team' ? 'font-bold' : ''"
+          class="transition-colors"
+          :class="[
+            currentPage === 'team' ? 'font-bold' : '',
+            textWhite ? 'hover:text-gray-bg' : 'hover:text-gray',
+          ]"
           >Team</router-link
         >
         <router-link
           to="/home"
-          class="hover:text-gray transition-colors"
-          :class="currentPage === 'contact' ? 'font-bold' : ''"
+          class="transition-colors"
+          :class="[
+            currentPage === 'contact' ? 'font-bold' : '',
+            textWhite ? 'hover:text-gray-bg' : 'hover:text-gray',
+          ]"
           >Contact</router-link
         >
         <router-link
           to="/blogs"
-          class="hover:text-gray transition-colors"
-          :class="currentPage === 'blog' ? 'font-bold' : ''"
+          class="transition-colors"
+          :class="[
+            currentPage === 'blog' ? 'font-bold' : '',
+            textWhite ? 'hover:text-gray-bg' : 'hover:text-gray',
+          ]"
           >Blog</router-link
         >
       </nav>
@@ -56,8 +79,15 @@
       </div>
     </header>
 
-    <header v-else class="flex justify-between items-center mx-[7%] py-3.5 text-white">
-      <LogoSvg class="h-[46px]" :class="transparent?'text-white':'text-blue'"></LogoSvg>
+    <header
+      v-else
+      class="flex justify-between items-center mx-[7%] py-3.5 text-white"
+    >
+    <div class="h-[46px] flex justify-center">
+        <router-link to="/">
+          <LogoSvg :class="textWhite ? 'text-white' : 'text-blue'"></LogoSvg>
+        </router-link>
+      </div>
 
       <div class="relative">
         <button @click="expand">
@@ -158,17 +188,13 @@
                 to="#"
                 class="flex justify-between items-center gap-3"
               >
-                <span
-                  class="w-24"
-                  >Book an online</span
-                >
+                <span class="w-24">Book an online</span>
                 <RightArrow class="w-[7px] h-3 inline"></RightArrow>
               </router-link>
             </div>
           </nav>
         </div>
       </div>
-
     </header>
   </div>
 </template>
@@ -190,14 +216,18 @@ export default {
     currentPage: {
       type: String,
     },
-    transparent:{
+    transparent: {
       type: Boolean,
-      default: false
+      default: false,
     },
-    withShadow:{
+    withShadow: {
       type: Boolean,
-      default: false
-    }
+      default: false,
+    },
+    textWhite: {
+      type: Boolean,
+      default: false,
+    },
   },
   mounted() {
     window.addEventListener("resize", this.onWidthChange);
diff --git a/src/pages/BlogPage.vue b/src/pages/BlogPage.vue
index 24053c3..e85fa10 100644
--- a/src/pages/BlogPage.vue
+++ b/src/pages/BlogPage.vue
@@ -1,14 +1,24 @@
 <template>
   <div>
-    <HeaderComponent current-page="blogs" :with-shadow="scroll > 50"></HeaderComponent>
-    <div class="overflow-hidden relative">
+    <HeaderComponent
+      current-page="blogs"
+      :transparent="scroll < 50"
+      :with-shadow="scroll > 50"
+    ></HeaderComponent>
+    <div class="overflow-hidden relative mt-[-80px] pt-20">
+      <div
+        class="absolute bg-gray-bg blur-[58px] rounded-[190px] w-[380px] h-[380px] z-0 -right-[82px] -top-[51px]"
+      ></div>
+      
       <section class="relative z-10 px-[6.7%] mt-6">
-        <router-link to="/blogs" class="text-dark hover:text-gray-600 flex items-center leading-6 text-lg font-light">
+        <router-link
+          to="/blogs"
+          class="text-dark hover:text-gray-600 flex items-center leading-6 text-lg font-light"
+        >
           <LeftArrow class="inline w-6 h-6 mr-1"></LeftArrow>
           Back to all articles
         </router-link>
-        
-        
+
         <h1 class="text-dark text-5xl mt-11 leading-[3.32.rem]">
           {{ blog.title }}
         </h1>
@@ -16,16 +26,15 @@
           <small>{{ blog.date }}</small>
         </p>
 
-       <img :src="blog.image" alt="Title image" class="w-full mt-5">
-       <p class="mt-6 text-gray-600 text-xl leading-7" v-html="blog.content">
-
-       </p>
-
-       
+        <img :src="blog.image" alt="Title image" class="w-full mt-5" />
+        <p
+          class="mt-6 text-gray-600 text-xl leading-7"
+          v-html="blog.content"
+        ></p>
       </section>
       <div
-          class="absolute bg-gray-bg blur-[58px] rounded-[190px] w-[238px] h-[238px] z-0 -left-[91px] top-[50%]"
-        ></div>
+        class="absolute bg-gray-bg blur-[58px] rounded-[190px] w-[238px] h-[238px] z-0 -left-[91px] top-[50%]"
+      ></div>
       <FooterComponent class="mt-[92px]"></FooterComponent>
     </div>
   </div>
@@ -42,14 +51,14 @@ export default {
   data() {
     return {
       scroll: window.scrollY,
-      blog: {}
+      blog: {},
     };
   },
   mounted() {
-    window.addEventListener('scroll', this.onScroll);
+    window.addEventListener("scroll", this.onScroll);
 
-    if(!this.$route.params.id || !this.blogs[this.$route.params.id - 1]){
-      this.$router.push('/blogs');
+    if (!this.$route.params.id || !this.blogs[this.$route.params.id - 1]) {
+      this.$router.push("/blogs");
       return;
     }
 
@@ -59,7 +68,7 @@ export default {
     window.removeEventListener("scroll", this.onScroll);
   },
   methods: {
-    onScroll(){
+    onScroll() {
       this.scroll = window.scrollY;
     },
   },
diff --git a/src/pages/BlogsPage.vue b/src/pages/BlogsPage.vue
index 8196cf0..56c8d9e 100644
--- a/src/pages/BlogsPage.vue
+++ b/src/pages/BlogsPage.vue
@@ -1,7 +1,15 @@
 <template>
   <div>
-    <HeaderComponent current-page="blogs" :with-shadow="scroll > 50"></HeaderComponent>
-    <div class="overflow-hidden">
+    <HeaderComponent
+      current-page="blogs"
+      :transparent="scroll < 50"
+      :with-shadow="scroll > 50"
+    ></HeaderComponent>
+    <div class="overflow-hidden mt-[-80px] pt-20">
+      <div
+        class="absolute bg-gray-bg blur-[58px] rounded-[190px] w-[380px] h-[380px] z-0 -right-[82px] -top-[51px]"
+      ></div>
+
       <section class="relative z-10 px-[6.7%] mt-[63px]">
         <h1 class="text-black text-[2rem]">
           Blog
@@ -11,17 +19,24 @@
         </h1>
 
         <ul class="mt-2">
-          <li v-for="blog in blogs" :key="blog.id" >
+          <li v-for="blog in blogs" :key="blog.id">
             <article class="p-4 mt-6 rounded-2xl bg-white shadow-3x28">
-              <img :src="blog.image" alt="Title image" class="w-full mb-4">
-              <router-link :to="`/blogs/${blog.id}`" class="font-medium text-xl text-dark leading-[1.66rem] hover:text-blue-text transition-colors">
+              <img :src="blog.image" alt="Title image" class="w-full mb-4" />
+              <router-link
+                :to="`/blogs/${blog.id}`"
+                class="font-medium text-xl text-dark leading-[1.66rem] hover:text-blue-text transition-colors"
+              >
                 {{ blog.title }}
               </router-link>
               <p class="mt-2 leading-5 text-gray-text">
                 <small>{{ blog.date }}</small>
               </p>
               <p class="mt-4 text-gray-600">
-                {{ blog.content.length > 340? blog.content.slice(0, 340) + '...' : blog.content}}
+                {{
+                  blog.content.length > 340
+                    ? blog.content.slice(0, 340) + "..."
+                    : blog.content
+                }}
               </p>
             </article>
           </li>
@@ -43,17 +58,17 @@ export default {
   name: "BlogsPage",
   data() {
     return {
-      scroll: window.scrollY
+      scroll: window.scrollY,
     };
   },
   mounted() {
-    window.addEventListener('scroll', this.onScroll);
+    window.addEventListener("scroll", this.onScroll);
   },
   beforeDestroy() {
     window.removeEventListener("scroll", this.onScroll);
   },
   methods: {
-    onScroll(){
+    onScroll() {
       this.scroll = window.scrollY;
     },
   },
diff --git a/src/pages/HomePage.vue b/src/pages/HomePage.vue
index 4507e1e..61325df 100644
--- a/src/pages/HomePage.vue
+++ b/src/pages/HomePage.vue
@@ -1,6 +1,6 @@
 <template>
   <div >
-    <HeaderComponent current-page="home" :transparent="scroll < 100" :with-shadow="scroll > 100"></HeaderComponent>
+    <HeaderComponent current-page="home" :transparent="scroll < 100" :with-shadow="scroll > 100" :text-white="scroll < 100"></HeaderComponent>
     <section
       class="relative mt-[-80px] z-10 text-white h-[700px] sm:h-[900px] rounded-b-lg bg-cover bg-no-repeat bg-center bg-blend-multiply bg-gray-300 bg-[url('../public/img/home-header.jfif')]"
     >
-- 
GitLab