diff --git a/apps/landing/src/app/_components/learning-resources.tsx b/apps/landing/src/app/_components/learning-resources.tsx new file mode 100644 index 0000000..cfddf3a --- /dev/null +++ b/apps/landing/src/app/_components/learning-resources.tsx @@ -0,0 +1,192 @@ +'use client'; + +import { + BookOpenIcon, + Button, + CodeIcon, + Share2Icon, + VideoIcon, +} from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { motion, useInView } from 'framer-motion'; + +import { useRef } from 'react'; + +export function LearningResources() { + const ref = useRef(null); + const isInView = useInView(ref, { once: true, amount: 0.2 }); + + const resources = [ + { + icon: , + iconBg: 'bg-blue-100 dark:bg-blue-900', + title: 'Video Tutorial', + description: + 'Belajar melalui tutorial video dari langkah awal hingga mahir.', + buttonText: 'Lihat Semua Video', + buttonLink: '#', + color: 'from-blue-500 to-blue-700', + }, + { + icon: ( + + ), + iconBg: 'bg-blue-100 dark:bg-blue-900', + title: 'Artikel & Tutorial', + description: + 'Pelajari konsep programming melalui artikel yang disusun secara terstruktur.', + buttonText: 'Baca Artikel', + buttonLink: '#', + color: 'from-blue-500 to-blue-700', + }, + { + icon: , + iconBg: 'bg-blue-100 dark:bg-blue-900', + title: 'Tantangan Koding', + description: + 'Uji kemampuan koding kamu dengan tantangan yang menyenangkan dan menantang.', + buttonText: 'Mulai Tantangan', + buttonLink: '#', + color: 'from-blue-500 to-blue-700', + }, + { + icon: , + iconBg: 'bg-blue-100 dark:bg-blue-900', + title: 'Sharing Session', + description: + 'Ikuti sesi berbagi pengalaman dari programmer berpengalaman dan belajar dari pengalaman mereka.', + buttonText: 'Jadwal Session', + buttonLink: '#', + color: 'from-blue-500 to-blue-700', + }, + ]; + + 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 */} +
+
+
+
+
+ +
+
+ +

+ Sumber{' '} + + Belajar + +

+

+ Akses berbagai materi belajar yang akan membantu kamu menguasai + konsep programming dengan cara yang menyenangkan. +

+
+
+ + + {resources.map((resource, index) => ( + +
+ +
+
+ {resource.icon} +
+

{resource.title}

+

+ {resource.description} +

+ +
+ +
+ + ))} + + + {/* Featured Resource */} + +
+
+
+ Rekomendasi Terbaik +
+

+ Kursus Lengkap Web Development +

+

+ Pelajari HTML, CSS, JavaScript, React, dan Node.js dalam satu + kursus komprehensif yang dirancang untuk pemula hingga tingkat + menengah. +

+
+ + +
+
+
+
+
+
+
+
+
+
+
+ +
+
+ ); +} diff --git a/apps/landing/src/app/page.tsx b/apps/landing/src/app/page.tsx index d0cd7cd..75ed85f 100644 --- a/apps/landing/src/app/page.tsx +++ b/apps/landing/src/app/page.tsx @@ -2,6 +2,7 @@ import { Community } from './_components/community'; import { Features } from './_components/features'; import { Header } from './_components/header'; import { Hero } from './_components/hero'; +import { LearningResources } from './_components/learning-resources'; export default function Page() { return ( @@ -11,6 +12,7 @@ export default function Page() { + ); diff --git a/libs/shadcn-ui/src/atoms/icons.tsx b/libs/shadcn-ui/src/atoms/icons.tsx index 2021c2a..db87bcd 100644 --- a/libs/shadcn-ui/src/atoms/icons.tsx +++ b/libs/shadcn-ui/src/atoms/icons.tsx @@ -7,8 +7,10 @@ import { LuLaptop as LaptopIcon, LuMenu as MenuIcon, LuMessageCircle as MessageCircleIcon, + LuShare2 as Share2Icon, LuSparkles as SparklesIcon, LuUsers as UsersIcon, + LuVideo as VideoIcon, LuX as XIcon, } from 'react-icons/lu'; @@ -21,7 +23,9 @@ export { LaptopIcon, MenuIcon, MessageCircleIcon, + Share2Icon, SparklesIcon, UsersIcon, + VideoIcon, XIcon, };