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 (
+
+
+
+ );
+ })}
+
+
+
+ );
+}
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;