diff --git a/apps/landing/src/app/(frontend)/(home)/_components/testimonials/index.tsx b/apps/landing/src/app/(frontend)/(home)/_components/testimonials/index.tsx new file mode 100644 index 0000000..d4c6065 --- /dev/null +++ b/apps/landing/src/app/(frontend)/(home)/_components/testimonials/index.tsx @@ -0,0 +1,143 @@ +'use client'; + +import { Button } from '@components/atoms'; +import { motion, useInView } from 'framer-motion'; +import Image from 'next/image'; +import { useRef } from 'react'; +import { ImPencil2 } from 'react-icons/im'; + +const testimonials = [ + { + author: { + name: 'Ega', + role: 'Backend Engineer', + avatar: '/ega.webp', + }, + quote: + 'Tralalero Tralala, IMPHENOTRUNASA merupakan anomali yang sering datang ketika melihat orang ngoding', + }, + { + author: { + name: 'Rasyid', + role: 'Fullsnack Engineer', + avatar: '/rasyid.webp', + }, + quote: + 'Dapet job dari meme yang di-share disini. Gak nyangka yapping random bisa jadi koneksi kerja akwokaowkoak', + }, + { + author: { + name: 'Maulana Sodiqin', + role: 'Backend Engineer', + avatar: '/maulana.webp', + }, + quote: 'Anjay aku bohong? Admin yang bohong', + }, +]; + +export function Testimonials() { + const ref = useRef(null); + const isInView = useInView(ref, { once: true, amount: 0.2 }); + + // Double the testimonials for seamless loop + const duplicatedTestimonials = [...testimonials, ...testimonials]; + + return ( +
+
+
+
+
+ +
+ +

+ + Testimoni{' '} + + Member +

+

+ Apa kata mereka yang telah bergabung dengan komunitas IMPHNEN? +

+
+ + {/* Infinite Marquee Section */} +
+ + {duplicatedTestimonials.map((testimonial, i) => ( +
+
+

+ “{testimonial.quote}” +

+
+ {' '} + {/* This pushes the author info to the bottom */} +
+
+ {testimonial.author.name} +
+
+

{testimonial.author.name}

+

+ {testimonial.author.role} +

+
+
+
+
+
+ ))} +
+
+ + {/* Call to Action */} + + + +
+
+ ); +} diff --git a/apps/landing/src/app/(frontend)/(home)/page.tsx b/apps/landing/src/app/(frontend)/(home)/page.tsx index 419e65e..a21c71d 100644 --- a/apps/landing/src/app/(frontend)/(home)/page.tsx +++ b/apps/landing/src/app/(frontend)/(home)/page.tsx @@ -1,11 +1,13 @@ import { Communities } from './_components/communites'; import { Hero } from './_components/hero'; +import { Testimonials } from './_components/testimonials'; export default async function Page() { return ( <> + ); } diff --git a/apps/landing/src/styles/globals.css b/apps/landing/src/styles/globals.css index 6756676..0e7d2c8 100644 --- a/apps/landing/src/styles/globals.css +++ b/apps/landing/src/styles/globals.css @@ -1,3 +1,22 @@ @import 'tailwindcss'; -@import "../../../../libs/shadcn-ui/src/index.css"; +@import '../../../../libs/shadcn-ui/src/index.css'; @source "../../../../libs/shadcn-ui/src/atoms/**/*.{ts,tsx}"; + +@layer utilities { + .marquee-container { + mask-image: linear-gradient( + to right, + transparent 0%, + black 5%, + black 95%, + transparent 100% + ); + -webkit-mask-image: linear-gradient( + to right, + transparent 0%, + black 5%, + black 95%, + transparent 100% + ); + } +}