From 0914361635ca52ff1c37536c6ca83b660601359a Mon Sep 17 00:00:00 2001 From: ArraysID Date: Sat, 10 May 2025 07:26:38 +0700 Subject: [PATCH] feat: update Community component to use Iconify for icons and adjust CommunitiesSection configuration --- .../app/(frontend)/_components/community.tsx | 43 ++++++++----------- .../src/collections/CommunitiesSection.ts | 13 ++---- package-lock.json | 22 ++++++++++ package.json | 1 + 4 files changed, 45 insertions(+), 34 deletions(-) diff --git a/apps/landing/src/app/(frontend)/_components/community.tsx b/apps/landing/src/app/(frontend)/_components/community.tsx index 7370a13..7a32022 100644 --- a/apps/landing/src/app/(frontend)/_components/community.tsx +++ b/apps/landing/src/app/(frontend)/_components/community.tsx @@ -1,32 +1,19 @@ 'use client'; -import { - Button, - FacebookIcon, - InstagramIcon, - MessageCircleIcon, -} from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { Icon } from '@iconify/react'; +import { buttonVariants } from '@imphnen-frontend-service/shadcn-ui/atoms'; +import { cn } from '@imphnen-frontend-service/utils'; import { CommunitiesSection } from 'apps/landing/src/payload-types'; import { motion, useInView } from 'framer-motion'; +import Link from 'next/link'; import { useRef } from 'react'; export function Community(props: CommunitiesSection) { - const { items: communities, stats } = props; + const { items, stats } = props; + const ref = useRef(null); const isInView = useInView(ref, { once: true, amount: 0.2 }); - const iconMap = { - FacebookIcon: ( - - ), - InstagramIcon: ( - - ), - MessageCircleIcon: ( - - ), - }; - const containerVariants = { hidden: { opacity: 0 }, visible: { @@ -77,7 +64,7 @@ export function Community(props: CommunitiesSection) { initial="hidden" animate={isInView ? 'visible' : 'hidden'} > - {communities?.map((c, i) => ( + {items?.map((c, i) => (
- {iconMap[c.iconName]} +

{c.title}

{c.description}

- +
diff --git a/apps/landing/src/collections/CommunitiesSection.ts b/apps/landing/src/collections/CommunitiesSection.ts index a60a903..56ae7db 100644 --- a/apps/landing/src/collections/CommunitiesSection.ts +++ b/apps/landing/src/collections/CommunitiesSection.ts @@ -10,7 +10,7 @@ export const CommunitiesSection: GlobalConfig = { required: true, defaultValue: [ { - iconName: 'FacebookIcon', + iconName: 'tabler:brand-facebook', title: 'Facebook Group', description: 'Bergabunglah dengan grup Facebook kami untuk diskusi santai dan berbagi artikel menarik.', @@ -18,7 +18,7 @@ export const CommunitiesSection: GlobalConfig = { buttonLink: 'https://facebook.com/groups/1032515944638255', }, { - iconName: 'InstagramIcon', + iconName: 'tabler:brand-instagram', title: 'Instagram', description: 'Ikuti kami di Instagram untuk tips programming, konten inspiratif, dan info event terbaru.', @@ -26,7 +26,7 @@ export const CommunitiesSection: GlobalConfig = { buttonLink: 'https://www.instagram.com/imphnen.dev', }, { - iconName: 'MessageCircleIcon', + iconName: 'tabler:brand-discord-filled', title: 'Discord Server', description: 'Diskusikan langsung dengan sesama programmer dan dapatkan bantuan langsung dari para ahli.', @@ -37,12 +37,7 @@ export const CommunitiesSection: GlobalConfig = { fields: [ { name: 'iconName', - type: 'select', - options: [ - { label: 'Facebook', value: 'FacebookIcon' }, - { label: 'Instagram', value: 'InstagramIcon' }, - { label: 'Discord', value: 'MessageCircleIcon' }, - ], + type: 'text', required: true, }, { name: 'title', type: 'text', required: true }, diff --git a/package-lock.json b/package-lock.json index 086d91c..c5d83b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@ant-design/icons": "^6.0.0", "@hookform/resolvers": "^5.0.1", + "@iconify/react": "^6.0.0", "@payloadcms/db-postgres": "^3.37.0", "@payloadcms/next": "^3.37.0", "@payloadcms/richtext-lexical": "^3.37.0", @@ -4628,6 +4629,27 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@iconify/react": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@iconify/react/-/react-6.0.0.tgz", + "integrity": "sha512-eqNscABVZS8eCpZLU/L5F5UokMS9mnCf56iS1nM9YYHdH8ZxqZL9zyjSwW60IOQFsXZkilbBiv+1paMXBhSQnw==", + "license": "MIT", + "dependencies": { + "@iconify/types": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/cyberalien" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.34.1", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", diff --git a/package.json b/package.json index 3377eb6..6069068 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "dependencies": { "@ant-design/icons": "^6.0.0", "@hookform/resolvers": "^5.0.1", + "@iconify/react": "^6.0.0", "@payloadcms/db-postgres": "^3.37.0", "@payloadcms/next": "^3.37.0", "@payloadcms/richtext-lexical": "^3.37.0",