diff --git a/apps/landing/public/hero.jpeg b/apps/landing/public/hero.jpeg
deleted file mode 100644
index 5e4ccd0..0000000
Binary files a/apps/landing/public/hero.jpeg and /dev/null differ
diff --git a/apps/landing/src/app/(frontend)/_components/hero.tsx b/apps/landing/src/app/(frontend)/_components/hero.tsx
index a1cc87b..5463b6d 100644
--- a/apps/landing/src/app/(frontend)/_components/hero.tsx
+++ b/apps/landing/src/app/(frontend)/_components/hero.tsx
@@ -6,13 +6,22 @@ import {
SparklesIcon,
UsersIcon,
} from '@imphnen-frontend-service/shadcn-ui/atoms';
+import { formatCMSImageDataToMedia } from 'apps/landing/src/lib/format';
import { HeroSection } from 'apps/landing/src/payload-types';
import { motion } from 'framer-motion';
import Image from 'next/image';
import { Fragment, useEffect, useState } from 'react';
export function Hero(props: HeroSection) {
- const { badgeText, buttons, description, highlight, title, stats } = props;
+ const {
+ badgeText,
+ buttons,
+ description,
+ highlight,
+ title,
+ stats,
+ heroImage,
+ } = props;
const [scrollY, setScrollY] = useState(0);
@@ -54,7 +63,7 @@ export function Hero(props: HeroSection) {
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5 }}
>
-
+
{badgeText}
@@ -125,13 +134,19 @@ font-bold text-black hover:text-white cursor-pointer"
-
+ {(() => {
+ const media = formatCMSImageDataToMedia(heroImage);
+ if (!media) return null;
+ return (
+
+ );
+ })()}
diff --git a/apps/landing/src/app/(payload)/admin/importMap.js b/apps/landing/src/app/(payload)/admin/importMap.js
index fad9d10..bd56203 100644
--- a/apps/landing/src/app/(payload)/admin/importMap.js
+++ b/apps/landing/src/app/(payload)/admin/importMap.js
@@ -1,6 +1,5 @@
-import { S3ClientUploadHandler as S3ClientUploadHandler_f97aa6c64367fa259c5bc0567239ef24 } from '@payloadcms/storage-s3/client';
+import { S3ClientUploadHandler as S3ClientUploadHandler_f97aa6c64367fa259c5bc0567239ef24 } from '@payloadcms/storage-s3/client'
export const importMap = {
- '@payloadcms/storage-s3/client#S3ClientUploadHandler':
- S3ClientUploadHandler_f97aa6c64367fa259c5bc0567239ef24,
-};
+ "@payloadcms/storage-s3/client#S3ClientUploadHandler": S3ClientUploadHandler_f97aa6c64367fa259c5bc0567239ef24
+}
diff --git a/apps/landing/src/collections/HeroSection.ts b/apps/landing/src/collections/HeroSection.ts
index 33c6490..6ba0109 100644
--- a/apps/landing/src/collections/HeroSection.ts
+++ b/apps/landing/src/collections/HeroSection.ts
@@ -4,6 +4,13 @@ export const HeroSection: GlobalConfig = {
slug: 'hero-section',
label: 'Hero Section',
fields: [
+ {
+ name: 'heroImage',
+ label: 'Hero Image',
+ type: 'upload',
+ relationTo: 'media',
+ required: true,
+ },
{
name: 'badgeText',
label: 'Badge Text',
diff --git a/apps/landing/src/lib/format.ts b/apps/landing/src/lib/format.ts
new file mode 100644
index 0000000..5c0dd9e
--- /dev/null
+++ b/apps/landing/src/lib/format.ts
@@ -0,0 +1,10 @@
+import { Media } from '../payload-types';
+
+export function formatCMSImageDataToMedia(
+ image: number | Media | null | undefined
+): Media | null {
+ if (image && typeof image === 'object' && 'url' in image) {
+ return image as Media;
+ }
+ return null;
+}
diff --git a/apps/landing/src/payload-types.ts b/apps/landing/src/payload-types.ts
index f9d36fa..3e3c26a 100644
--- a/apps/landing/src/payload-types.ts
+++ b/apps/landing/src/payload-types.ts
@@ -285,6 +285,7 @@ export interface PayloadMigrationsSelect {
*/
export interface HeroSection {
id: number;
+ heroImage: number | Media;
badgeText: string;
title: string;
highlight: string;
@@ -351,6 +352,7 @@ export interface CommunitiesSection {
* via the `definition` "hero-section_select".
*/
export interface HeroSectionSelect {
+ heroImage?: T;
badgeText?: T;
title?: T;
highlight?: T;