Skip to content

Commit

Permalink
Feat:Create SuccessStory scetion of ios page
Browse files Browse the repository at this point in the history
  • Loading branch information
cp-priyanka-g committed Sep 20, 2023
1 parent e075ab0 commit b331c18
Show file tree
Hide file tree
Showing 3 changed files with 286 additions and 11 deletions.
Binary file not shown.
269 changes: 269 additions & 0 deletions vue-frontend/src/components/ios-app-development/SuccessStory.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,269 @@
<template>
<section class="tw-mb-20">
<div
class="tw-container md:tw-mt-36 lg:tw-mb-8 tw-mb-7 tw-mx-auto tw-text-center"
>
<span
class="tw-tracking-[-4%] tw-mb-2.5 tw-font-inter-bold tw-text-3xl tw-leading-[2.4375rem] tw-text-black-core/[0.87] md:!tw-mx-0 md:!tw-w-full md:tw-text-[2.65625rem] lg:tw-text-[3.4375rem] md:tw-leading-[3.796875rem] lg:tw-leading-[5.15625rem] xs:tw-mx-auto xs:tw-w-[71%]"
>
Success Stories</span
>
</div>
<!-- Mobile UI start -->
<div
class="tw-ml-auto md:tw-hidden tw-mx-auto tw-h-[30rem] tw-relative xll:tw-container tw-overflow-hidden"
>
<img
:src="reviewBackgroundImage"
:srcset="`${reviewBackgroundImage} 400w`"
class="tw-h-full tw-w-full tw-object-cover tw-ease-in-out tw-duration-1000"
alt="ios-review-image"
id="scaling-image"
/>
<div
class="tw-container swiper-content tw-absolute tw-p-4 tw-w-full tw-text-center tw-text-[#FFF] tw-transform tw-left-1/2 tw-top-1/2 tw--translate-x-1/2 tw--translate-y-1/2 xl:tw-w-[80%] md:tw-top-[49%] lg:tw-top-[48%]"
>
<swiper
:slidesPerView="1"
:centeredSlides="true"
:autoplay="{
delay: 3000,
disableOnInteraction: false,
}"
:speed="3000"
:loop="true"
:spaceBetween="20"
:pagination="pagination"
:modules="modules"
class="swiper-container"
>
<swiper-slide
v-for="(client, index) in clients"
:key="index"
class="tw-cursor-pointer tw-my-auto"
>
<div
class="tw-mx-auto sm:tw-px-10 md:tw-px-6 lg:tw-px-4 xl:tw-px-24 tw-text-white tw-flex tw-flex-col tw-justify-between tw-items-center tw-object-center"
>
<div
class="tw-font-inter-semibold tw-text-lg tw-leading-[1.6875rem] tw-transition-all tw-ease tw-duration-500 tw-tracking-[-2%]"
>
{{ client.review }}
</div>
<div class="tw-flex tw-flex-col tw-mt-8 tw-mb-2.5">
<span class="tw-flex tw-flex-row">
<font-awesome-icon
v-for="i in 5"
:key="i"
class="fa-star tw-w-5 tw-h-5 footer-icon"
icon="star"
/></span>
</div>
<div class="tw-flex tw-flex-col">
<span
class="tw-font-inter-semibold tw-text-base tw-leading-[1.2rem]"
>{{ client.name }}</span
>
<span
class="tw-font-inter-regular tw-text-xs tw-leading-[0.9rem] tw-mt-[0.3rem]"
>{{ client.designation }}</span
>
</div>
</div>
</swiper-slide>
</swiper>
</div>
</div>
<!-- Mobile UI END -->
<!-- Desktop UI -->
<div
class="tw-hidden tw-w-full tw-h-[850px] lg:tw-h-[750px] tw-bg-[#FFF8F5] md:tw-flex tw-justify-center tw-items-center tw-relative tw-overflow-hidden before:tw-content-[''] before:tw-absolute before:tw-bottom-[0%] lg:before:tw-bottom-[-8%] before:tw-w-full before:tw-bg-[#fff] before:tw-h-[7%] before:tw-rounded-[50%] before:tw-shadow-[15px_1px_0_100px_rgba(255,255,255)] after:tw-content-[''] after:tw-absolute after:tw-top-[-2%] lg:after:tw-top-[-11%] after:tw-w-full after:tw-bg-[#fff] after:tw-h-[10%] after:tw-rounded-[50%] after:tw-shadow-[15px_1px_0_100px_rgba(255,255,255)] top-curve xll:tw-container"
>
<swiper
dir="rtl"
:slidesPerView="1"
:speed="2000"
:loop="true"
:autoplay="{
delay: 2000,
disableOnInteraction: false,
}"
:breakpoints="{
'1400': {
slidesPerView: 1.28,
},
'1700': {
slidesPerView: 1.3,
},
'2450': {
slidesPerView: 1,
},
}"
:allowTouchMove="false"
:spaceBetween="10"
:pagination="pagination"
:modules="modules"
class="swiper-container tw-basis-[116rem] lg:tw-basis-[156rem] xl:tw-basis-[175rem]"
>
<swiper-slide
v-for="(client, index) in clients"
:key="index"
class="tw-flex tw-justify-center tw-items-center"
>
<div
class="tw-ml-4 lg:tw-ml-12 tw-p-5 tw-text-white tw-flex tw-flex-row tw-items-center tw-justify-end card-contain"
>
<div
class="author tw-drop-shadow-md tw-rounded-[15px] tw-flex tw-flex-col tw-bg-white tw-h-[337px] tw-w-[20rem] lg:tw-w-[30rem] tw-text-left card-rotate"
>
<div class="tw-my-auto tw-px-12">
<span class="tw-flex tw-flex-row tw-justify-end tw-mb-2.5">
<font-awesome-icon
v-for="i in 5"
:key="i"
class="fa-star tw-w-6 tw-h-6 footer-icon"
icon="star"
/></span>
<div class="tw-flex tw-flex-col">
<span
class="tw-font-inter-semibold tw-text-black-core/[0.87] tw-text-xl tw-leading-[1.875rem]"
>{{ client.name }}</span
>
<span
class="tw-font-inter-regular tw-text-black-core/[0.60] tw-text-[1.125rem] tw-leading-[1.6875rem] tw-mt-[0.3rem]"
>{{ client.designation }}</span
>
</div>
</div>
</div>
</div>
</swiper-slide>
</swiper>

<swiper
:slidesPerView="1"
:speed="2000"
:loop="true"
:allowTouchMove="false"
:autoplay="{
delay: 2000,
disableOnInteraction: false,
}"
:breakpoints="{
'1400': {
slidesPerView: 1.28,
},
'1700': {
slidesPerView: 1.3,
},
'2450': {
slidesPerView: 1,
},
}"
:spaceBetween="20"
:pagination="pagination"
:modules="modules"
class="swiper-container !tw-flex !tw-items-center"
>
<swiper-slide
v-for="(client, index) in clients"
:key="index"
class="tw-flex tw-justify-center tw-items-center"
>
<div
class="tw-p-4 xl:tw-p-12 tw-font-inter-medium tw-text-black-core/[0.87] tw-text-[1.75rem] tw-leading-[2.625rem] tw-transition-all tw-ease tw-duration-500 !tw-tracking-[-2%]"
>
{{ client.review }}
</div>
</swiper-slide>
</swiper>
</div>

<!-- Desktop UI END-->
</section>
</template>

<script>
import { Autoplay } from "swiper/modules";
import { Swiper, SwiperSlide } from "swiper/vue";
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import reviewBackgroundImage from "@/assets/images/ios-app-development/review-background-400w.webp";
export default {
data() {
return {
modules: [Autoplay],
reviewBackgroundImage,
clients: [
{
id: 1,
name: "Rebecca Kimura",
designation: "Founder at Togness, Australia",
review:
"“There was rarely ever a second explanation needed. Even if we struggled to explain technically what we wanted, they understood the first time.”",
},
{
id: 2,
name: "Elyass Bouchater",
designation: "Product Manager at Luxe, Morocco",
review:
"“The Play Store is the hardest app store to get good reviews on, and we've just reached a five-star rating, which has been one of our biggest achievements, partly thanks to Canopas' work.”",
},
{
id: 3,
name: "Rob Eberhard",
designation: "Founder at ActivScout, Canada",
review:
"“I was especially impressed with the skills of their backend developer and how well the project manager and she worked with one another to create a high performing iOS app.”",
},
{
id: 4,
name: "Lisa Weinstein",
designation: "Founder at Brickandbatten, USA",
review:
"“There is not enough space to say all the wonderful things I would want to share about Canopas. The team is incredibly helpful, stays calm even when we had to deal with tough issues on our app and always found a way to help us fix whatever was needed or roll out any new features for our app in both the iOS and Android stores.”",
},
{
id: 5,
name: "Cyril Trosset",
designation: "CTO at Udini, France",
review:
"“Multiple versions of this Android app have been successfully delivered over time. They are always very responsive on bug resolution. They are very efficient at producing complex interfaces and high quality apps.”",
},
],
};
},
mounted() {
const image = document.getElementById("scaling-image");
let scaleCount = 0;
function scaleImage() {
if (scaleCount <= 5) {
image.style.transform = `scale(${1 + scaleCount * 0.1})`;
scaleCount++;
} else {
image.style.transform = "scale(1)";
scaleCount = 0;
}
}
setInterval(scaleImage, 5000);
},
components: {
Swiper,
SwiperSlide,
FontAwesomeIcon,
},
inject: ["mixpanel"],
};
</script>
<style lang="postcss">
@import "swiper/css";
.swiper-wrapper {
@apply tw-items-center;
}
.card-rotate {
transform: rotateY(5deg);
}
.card-contain {
perspective: 200px;
}
</style>
28 changes: 17 additions & 11 deletions vue-frontend/src/pages/ios-app-development.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@
</template>
</metainfo>
<Header />
<LandingSection ref="landing" />
<DevelopmentSection ref="development" />
<FaqSection ref="faq" />
<CtaSection ref="cta1" />
<CtaSection2 ref="cta2" />
<NewFooter ref="footer" />
<LandingSection ref="iosLanding" />
<DevelopmentSection ref="iosDevelopment" />
<CtaSection ref="iosCta1" />
<SuccessStorySection ref="iosSuccessstory" />
<CtaSection2 ref="iosCta2" />
<FaqSection ref="iosFaq" />
<NewFooter ref="iosFooter" />
</div>
</template>

Expand All @@ -23,6 +24,9 @@ import { defineAsyncComponent } from "vue";
import { elementInViewPort } from "@/utils.js";
import LandingSection from "@/components/ios-app-development/LandingSection.vue";
import DevelopmentSection from "@/components/ios-app-development/DevelopmentSection.vue";
const SuccessStorySection = defineAsyncComponent(() =>
import("@/components/ios-app-development/SuccessStory.vue"),
);
const FaqSection = defineAsyncComponent(() =>
import("@/components/ios-app-development/FaqSection.vue"),
);
Expand All @@ -41,11 +45,12 @@ export default {
return {
event: "",
events: {
landing: "view_ios_development_landing_section",
development: "view_ios_app_development_section",
faq: "view_ios_development_faq_section",
cta1: "view_cta_1_ios_app_development_section",
cta2: "view_cta_2_ios_app_development_section",
iosLanding: "view_ios_development_landing_section",
iosDevelopment: "view_ios_app_development_section",
iosSuccessstory: "view_ios_app_development_section",
iosFaq: "view_ios_development_faq_section",
iosCta1: "view_cta_1_ios_app_development_section",
iosCta2: "view_cta_2_ios_app_development_section",
},
};
},
Expand Down Expand Up @@ -73,6 +78,7 @@ export default {
Header,
LandingSection,
DevelopmentSection,
SuccessStorySection,
FaqSection,
CtaSection,
CtaSection2,
Expand Down

0 comments on commit b331c18

Please sign in to comment.