From aedc2b5dfbe5429b1b22bae594273b4a77611e16 Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sun, 27 Apr 2025 05:49:50 +0700 Subject: [PATCH] feat: migrate testimonials component --- .../src/app/_components/testimonials.tsx | 190 ++++++++++++++++++ apps/landing/src/app/page.tsx | 2 + libs/shadcn-ui/src/atoms/icons.tsx | 2 + 3 files changed, 194 insertions(+) create mode 100644 apps/landing/src/app/_components/testimonials.tsx diff --git a/apps/landing/src/app/_components/testimonials.tsx b/apps/landing/src/app/_components/testimonials.tsx new file mode 100644 index 0000000..243792d --- /dev/null +++ b/apps/landing/src/app/_components/testimonials.tsx @@ -0,0 +1,190 @@ +'use client'; + +import { QuoteIcon } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { motion, useInView } from 'framer-motion'; +import Image from 'next/image'; +import { useRef } from 'react'; + +export function Testimonials() { + const ref = useRef(null); + const isInView = useInView(ref, { once: true, amount: 0.2 }); + + const testimonials = [ + { + quote: + 'Saya yang tadinya tidak mengerti apa-apa tentang programming, sekarang bisa membuat website sendiri dengan mudah. Terima kasih IMPHNEN!', + name: 'Budi Santoso', + role: 'Web Developer Pemula', + avatar: '/placeholder.svg?height=64&width=64', + }, + { + quote: + 'Komunitas yang sangat supportif! Setiap pertanyaan selalu dijawab dengan cepat dan jelas. Diskusi programnya mudah dipahami.', + name: 'Anita Ratna', + role: 'Mobile App Developer', + avatar: '/placeholder.svg?height=64&width=64', + }, + { + quote: + 'Server Discord IMPHNEN adalah tempat belajar terbaik untuk programmer pemula seperti saya. Materinya lengkap dan komunitasnya sangat membantu!', + name: 'Dedi Permana', + role: 'Data Scientist', + avatar: '/placeholder.svg?height=64&width=64', + }, + ]; + + const containerVariants = { + hidden: { opacity: 0 }, + visible: { + opacity: 1, + transition: { + staggerChildren: 0.1, + }, + }, + }; + + const itemVariants = { + hidden: { y: 20, opacity: 0 }, + visible: { + y: 0, + opacity: 1, + transition: { duration: 0.5 }, + }, + }; + + return ( +
+ {/* Background Elements */} +
+
+
+
+ +
+
+ +

+ Testimoni{' '} + + Member + +

+

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

+
+
+ + + {testimonials.map((testimonial, index) => ( + +
+ +
+ +
+

+ "{testimonial.quote}" +

+ +
+
+ {testimonial.name} +
+
+

{testimonial.name}

+

+ {testimonial.role} +

+
+
+
+ +
+ + ))} + + + {/* Testimonial Stats */} + +
+
+

+ Bergabunglah dengan{' '} + + 10,000+ + {' '} + programmer Indonesia lainnya +

+

+ Komunitas kami terus berkembang dengan programmer dari berbagai + latar belakang dan tingkat keahlian. Bersama-sama, kita belajar, + berbagi, dan tumbuh sebagai profesional. +

+
+
+
+
+ 98% +
+
+ Tingkat Kemalasan +
+
+
+
+ 4.9/5 +
+
+ Rating Drama +
+
+
+
+ 85% +
+
+ Mendapat Pekerjaan +
+
+
+
+ 24/7 +
+
Yapping
+
+
+
+
+
+
+ ); +} diff --git a/apps/landing/src/app/page.tsx b/apps/landing/src/app/page.tsx index 75ed85f..7aca711 100644 --- a/apps/landing/src/app/page.tsx +++ b/apps/landing/src/app/page.tsx @@ -3,6 +3,7 @@ import { Features } from './_components/features'; import { Header } from './_components/header'; import { Hero } from './_components/hero'; import { LearningResources } from './_components/learning-resources'; +import { Testimonials } from './_components/testimonials'; export default function Page() { return ( @@ -13,6 +14,7 @@ export default function Page() { + ); diff --git a/libs/shadcn-ui/src/atoms/icons.tsx b/libs/shadcn-ui/src/atoms/icons.tsx index db87bcd..4b45951 100644 --- a/libs/shadcn-ui/src/atoms/icons.tsx +++ b/libs/shadcn-ui/src/atoms/icons.tsx @@ -7,6 +7,7 @@ import { LuLaptop as LaptopIcon, LuMenu as MenuIcon, LuMessageCircle as MessageCircleIcon, + LuQuote as QuoteIcon, LuShare2 as Share2Icon, LuSparkles as SparklesIcon, LuUsers as UsersIcon, @@ -23,6 +24,7 @@ export { LaptopIcon, MenuIcon, MessageCircleIcon, + QuoteIcon, Share2Icon, SparklesIcon, UsersIcon,