-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Feat:Create SuccessStory Section for ios devlopment page
- Loading branch information
1 parent
e075ab0
commit a7930e7
Showing
3 changed files
with
283 additions
and
11 deletions.
There are no files selected for viewing
Binary file added
BIN
+1.8 KB
vue-frontend/src/assets/images/ios-app-development/review-background-400w.webp
Binary file not shown.
266 changes: 266 additions & 0 deletions
266
vue-frontend/src/components/ios-app-development/SuccessStory.vue
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,266 @@ | ||
<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" | ||
/> | ||
<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.3, | ||
spaceBetween: 30, | ||
}, | ||
'1700': { | ||
slidesPerView: 1.2, | ||
spaceBetween: 20, | ||
}, | ||
'2200': { | ||
slidesPerView: 1.3, | ||
}, | ||
'2450': { | ||
slidesPerView: 1, | ||
}, | ||
}" | ||
:allowTouchMove="false" | ||
:spaceBetween="20" | ||
: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="tw-drop-shadow-md tw-rounded-[15px] tw-flex tw-flex-col tw-bg-white tw-h-[337px] tw-w-[20rem] lg:tw-w-[25rem] xl:tw-w-[30rem] card-rotate tw-relative" | ||
></div> | ||
<div | ||
class="tw-my-auto tw-px-12 tw-absolute tw-top-[32%] lg:tw-top-[35%] tw-left-0" | ||
> | ||
<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 tw-text-left"> | ||
<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> | ||
</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, | ||
spaceBetween: 0, | ||
}, | ||
'2200': { | ||
slidesPerView: 1.4, | ||
}, | ||
'2450': { | ||
slidesPerView: 1, | ||
}, | ||
}" | ||
:spaceBetween="20" | ||
:pagination="pagination" | ||
:modules="modules" | ||
class="swiper-container !tw-flex !tw-items-center tw-justify-left" | ||
> | ||
<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-mr-8 2xll:tw-mr-0 xl:tw-p-6 2xll: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.”", | ||
}, | ||
], | ||
}; | ||
}, | ||
components: { | ||
Swiper, | ||
SwiperSlide, | ||
FontAwesomeIcon, | ||
}, | ||
inject: ["mixpanel"], | ||
}; | ||
</script> | ||
<style lang="postcss"> | ||
@import "swiper/css"; | ||
.swiper-wrapper { | ||
@apply tw-items-center; | ||
} | ||
.card-rotate { | ||
transform: rotateY(3deg); | ||
} | ||
.card-contain { | ||
perspective: 120px; | ||
backface-visibility: hidden; | ||
} | ||
</style> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters