diff --git a/apps/landing/src/app/(public)/(home)/_components/communities.tsx b/apps/landing/src/app/(public)/(home)/_components/communities.tsx new file mode 100644 index 0000000..c39e82b --- /dev/null +++ b/apps/landing/src/app/(public)/(home)/_components/communities.tsx @@ -0,0 +1,154 @@ +'use client'; + +import SOCIALS from '@/data/socials.json'; +import { motion, useInView } from 'framer-motion'; +import { useRef } from 'react'; +import { + FaArrowRight, + FaDiscord, + FaFacebook, + FaInstagram, + FaLinkedin, + FaTiktok, +} from 'react-icons/fa'; + +export function Communities() { + const ref = useRef(null); + const isInView = useInView(ref, { once: true, amount: 0.2 }); + + const containerVariants = { + hidden: { opacity: 0 }, + visible: { + opacity: 1, + transition: { + staggerChildren: 0.1, + delayChildren: 0.2, + }, + }, + }; + + const itemVariants = { + hidden: { y: 20, opacity: 0 }, + visible: { + y: 0, + opacity: 1, + transition: { + duration: 0.4, + ease: [0.25, 0.46, 0.45, 0.94], + }, + }, + }; + + const getIconComponent = (iconName: string) => { + switch (iconName) { + case 'FaFacebook': + return FaFacebook; + case 'FaDiscord': + return FaDiscord; + case 'FaInstagram': + return FaInstagram; + case 'FaTiktok': + return FaTiktok; + case 'FaLinkedin': + return FaLinkedin; + default: + return FaArrowRight; + } + }; + + const getPlatformColors = (iconName: string) => { + switch (iconName) { + case 'FaFacebook': + return { + iconColor: 'text-[#1877F2]', + }; + case 'FaDiscord': + return { + iconColor: 'text-[#5865F2]', + }; + case 'FaInstagram': + return { + iconColor: 'text-[#E4405F]', + }; + case 'FaTiktok': + return { + iconColor: 'text-[#000000]', + }; + case 'FaLinkedin': + return { + iconColor: 'text-[#0A66C2]', + }; + default: + return { + iconColor: 'text-primary-500', + }; + } + }; + + return ( +
+
+
+ +

+ Bergabung dengan Komunitas Kami di + + Berbagai Platform + +

+

+ Terhubung dengan sesama developer di komunitas kami +

+
+
+ + + {SOCIALS.map((community, index) => { + const IconComponent = getIconComponent(community.icon); + const colors = getPlatformColors(community.icon); + + return ( + +
+
+ +

+ {community.name} +

+
+

+ {community.description} +

+ + Jelajahi Komunitas + + +
+
+ ); + })} +
+
+
+ ); +} diff --git a/apps/landing/src/app/(public)/(home)/_components/hero.tsx b/apps/landing/src/app/(public)/(home)/_components/hero.tsx index 8d7e6a3..71affed 100644 --- a/apps/landing/src/app/(public)/(home)/_components/hero.tsx +++ b/apps/landing/src/app/(public)/(home)/_components/hero.tsx @@ -60,7 +60,7 @@ export function Hero() {

- {headingLine1}
+ {headingLine1}{' '} {headingLine2} diff --git a/apps/landing/src/app/(public)/(home)/page.tsx b/apps/landing/src/app/(public)/(home)/page.tsx index 1a487d1..a174df9 100644 --- a/apps/landing/src/app/(public)/(home)/page.tsx +++ b/apps/landing/src/app/(public)/(home)/page.tsx @@ -1,9 +1,11 @@ +import { Communities } from './_components/communities'; import { Hero } from './_components/hero'; export default function Page() { return ( <> + ); } diff --git a/apps/landing/src/app/_components/providers.tsx b/apps/landing/src/app/_components/providers.tsx index fd41e76..a8f9024 100644 --- a/apps/landing/src/app/_components/providers.tsx +++ b/apps/landing/src/app/_components/providers.tsx @@ -2,20 +2,20 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import type { ThemeProviderProps } from 'next-themes'; -import { ThemeProvider as NextThemesProvider } from 'next-themes'; import { ReactNode } from 'react'; +// import { ThemeProvider as NextThemesProvider } from 'next-themes'; export function Providers({ children }: ThemeProviderProps) { return ( - - {children} - + > */} + {children} + {/* */} ); } @@ -28,6 +28,6 @@ function QueryProvider({ children }: { children: ReactNode }) { ); } -function ThemeProvider({ children, ...props }: ThemeProviderProps) { - return {children}; -} +// function ThemeProvider({ children, ...props }: ThemeProviderProps) { +// return {children}; +// } diff --git a/apps/landing/src/data/socials.json b/apps/landing/src/data/socials.json new file mode 100644 index 0000000..a0e7768 --- /dev/null +++ b/apps/landing/src/data/socials.json @@ -0,0 +1,44 @@ +[ + { + "name": "Facebook Group", + "icon": "FaFacebook", + "color": "#1877F2", + "description": "Join discussions and share knowledge", + "link": "#" + }, + { + "name": "Facebook Group II", + "icon": "FaFacebook", + "color": "#1877F2", + "description": "Join discussions and share knowledge", + "link": "#" + }, + { + "name": "Discord Server", + "icon": "FaDiscord", + "color": "#5865F2", + "description": "Real-time collaboration chat", + "link": "#" + }, + { + "name": "Instagram", + "icon": "FaInstagram", + "color": "#E4405F", + "description": "Daily coding tips & showcases", + "link": "#" + }, + { + "name": "TikTok", + "icon": "FaTiktok", + "color": "#000000", + "description": "Short coding tutorials", + "link": "#" + }, + { + "name": "LinkedIn", + "icon": "FaLinkedin", + "color": "#0A66C2", + "description": "Professional networking", + "link": "#" + } +] diff --git a/libs/shadcn-ui/src/index.css b/libs/shadcn-ui/src/index.css index 7c623cc..efa9f02 100644 --- a/libs/shadcn-ui/src/index.css +++ b/libs/shadcn-ui/src/index.css @@ -140,7 +140,7 @@ --sidebar-ring: oklch(0.623 0.214 259.815); } -.dark { +/* .dark { --background: oklch(0.141 0.005 285.823); --foreground: oklch(0.985 0 0); --card: oklch(0.21 0.006 285.885); @@ -172,7 +172,7 @@ --sidebar-accent-foreground: oklch(0.985 0 0); --sidebar-border: oklch(1 0 0 / 10%); --sidebar-ring: oklch(0.488 0.243 264.376); -} +} */ @layer base { * { @@ -191,6 +191,7 @@ padding-right: 2rem; width: 100%; } + @media (min-width: 1536px) { .container { max-width: 1400px;