Skip to content

Commit c870377

Browse files
committed
add testimonial section
1 parent 629a39a commit c870377

2 files changed

Lines changed: 102 additions & 0 deletions

File tree

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
<template>
2+
<section class="testimonials" id="testimonials">
3+
<div class="container">
4+
<h2 class="section-title text-center mb-5 fade-in">What Developers Say</h2>
5+
<div class="testimonial-list">
6+
<div class="testimonial-card fade-in" v-for="testimonial in testimonials" :key="testimonial.author">
7+
<p class="testimonial-quote">“{{ testimonial.quote }}”</p>
8+
<div class="testimonial-author">
9+
<a :href="testimonial.authorLink" target="_blank" rel="noopener" class="testimonial-name">{{ testimonial.author }}</a>
10+
<a :href="testimonial.link" v-if="testimonial.company" target="_blank" rel="noopener" class="testimonial-company">{{ (testimonial.author ? ', ' : '') + testimonial.company }}</a>
11+
<a v-if="testimonial.link" :href="testimonial.link" target="_blank" rel="noopener" class="testimonial-link">🔗</a>
12+
</div>
13+
</div>
14+
</div>
15+
</div>
16+
</section>
17+
</template>
18+
19+
<script setup lang="ts">
20+
const testimonials = [
21+
{
22+
quote: `Pipelab has made it super easy to quickly iterate and spread builds of DeadWire to the rest of the team. After setting it up the one click electron export and upload to steam can’t be beaten.`,
23+
author: 'Shotgun Anaconda',
24+
authorLink: 'https://x.com/shotgunanaconda',
25+
company: 'DeadWire',
26+
link: 'https://store.steampowered.com/app/2995100/DeadWire/'
27+
},
28+
{
29+
quote: `Pipelab is amazing. If you're a serious game developer, it has everything you need to automate your deploying process into multiple platforms, and it's all seamless.`,
30+
// author: 'Yin',
31+
company: 'Asteristic Game Studio',
32+
link: 'https://asteristic.com/'
33+
}
34+
];
35+
</script>
36+
37+
<style scoped>
38+
.testimonials {
39+
background: #f9f9fb;
40+
padding: 4rem 0 3rem 0;
41+
}
42+
.section-title {
43+
font-size: 2.2rem;
44+
color: var(--text-color);
45+
margin-bottom: 2.5rem;
46+
}
47+
.testimonial-list {
48+
display: flex;
49+
flex-wrap: wrap;
50+
gap: 2rem;
51+
justify-content: center;
52+
}
53+
.testimonial-card {
54+
background: #fff;
55+
border-radius: 12px;
56+
box-shadow: 0 3px 16px rgba(0,0,0,0.07);
57+
padding: 2rem 2.5rem;
58+
max-width: 420px;
59+
min-width: 260px;
60+
display: flex;
61+
flex-direction: column;
62+
align-items: flex-start;
63+
margin-bottom: 1.5rem;
64+
}
65+
.testimonial-quote {
66+
font-size: 1.1rem;
67+
font-style: italic;
68+
color: #333;
69+
margin-bottom: 1.2rem;
70+
}
71+
.testimonial-author {
72+
font-weight: bold;
73+
color: #1f2937;
74+
font-size: 1rem;
75+
display: flex;
76+
align-items: center;
77+
gap: 0.3rem;
78+
}
79+
.testimonial-company {
80+
color: #666;
81+
font-weight: normal;
82+
}
83+
.testimonial-link {
84+
/* margin-left: 0.4rem; */
85+
color: var(--primary-color);
86+
font-size: 0.rem;
87+
text-decoration: none;
88+
}
89+
@media (max-width: 768px) {
90+
.testimonial-list {
91+
flex-direction: column;
92+
align-items: center;
93+
}
94+
.testimonial-card {
95+
max-width: 95vw;
96+
padding: 1.2rem 1rem;
97+
}
98+
}
99+
</style>

src/views/home.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@
104104
</div>
105105
</section>
106106

107+
<TestimonialSection />
108+
107109
<section class="pricing" id="pricing">
108110
<div class="container">
109111
<h2 class="section-title text-center mb-5 fade-in">Pricing</h2>
@@ -191,6 +193,7 @@ import "primeflex/primeflex.css";
191193
import "primeicons/primeicons.css";
192194
import CircleConfirm from "@/components/CircleConfirm.vue";
193195
import AnimatedArrow from "@/components/AnimatedArrow.vue";
196+
import TestimonialSection from "@/components/TestimonialSection.vue";
194197
195198
interface Feature {
196199
name: string;

0 commit comments

Comments
 (0)