From 60d67bb989880ec99486a6add2bffd3c8cb542d6 Mon Sep 17 00:00:00 2001 From: Tom Elliott Date: Mon, 2 Jun 2025 10:56:06 +1200 Subject: [PATCH] images on projects --- media/images/project_inzight.png | Bin 0 -> 32375 bytes media/images/project_matau.png | Bin 0 -> 14210 bytes payload-types.ts | 62 +++---- .../components/Home/Hero/02-data.tsx | 2 +- .../components/Home/Projects/index.tsx | 92 +++++++++-- src/app/(website)/components/PayloadImage.tsx | 28 ++++ src/app/(website)/globals.css | 4 + src/app/(website)/page.tsx | 10 -- src/collections/Projects.ts | 151 +++++++++--------- src/collections/media/Images.ts | 86 +++++----- src/globals/Home/Projects.ts | 36 ++--- 11 files changed, 287 insertions(+), 184 deletions(-) create mode 100644 media/images/project_inzight.png create mode 100644 media/images/project_matau.png create mode 100644 src/app/(website)/components/PayloadImage.tsx diff --git a/media/images/project_inzight.png b/media/images/project_inzight.png new file mode 100644 index 0000000000000000000000000000000000000000..b399406276e8f228ae7252c9eebbf33818283f24 GIT binary patch literal 32375 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 literal 0 HcmV?d00001 diff --git a/media/images/project_matau.png b/media/images/project_matau.png new file mode 100644 index 0000000000000000000000000000000000000000..e7cbdb7ad916766d614ea0e88893d20bfb1a863f GIT binary patch literal 14210 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 literal 0 HcmV?d00001 diff --git a/payload-types.ts b/payload-types.ts index 08585cc..fbe7b7f 100644 --- a/payload-types.ts +++ b/payload-types.ts @@ -159,6 +159,7 @@ export interface Project { * Show this project on the homepage. */ featured?: boolean | null; + banner?: (number | null) | Image; links?: | { link: string; @@ -173,36 +174,6 @@ export interface Project { updatedAt: string; createdAt: string; } -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "news". - */ -export interface News { - id: number; - title: string; - /** - * The slug is used to identify the news item in the URL. - */ - slug: string; - content: { - root: { - type: string; - children: { - type: string; - version: number; - [k: string]: unknown; - }[]; - direction: ('ltr' | 'rtl') | null; - format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; - indent: number; - version: number; - }; - [k: string]: unknown; - }; - updatedAt: string; - createdAt: string; - _status?: ('draft' | 'published') | null; -} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "images". @@ -249,6 +220,36 @@ export interface Image { }; }; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "news". + */ +export interface News { + id: number; + title: string; + /** + * The slug is used to identify the news item in the URL. + */ + slug: string; + content: { + root: { + type: string; + children: { + type: string; + version: number; + [k: string]: unknown; + }[]; + direction: ('ltr' | 'rtl') | null; + format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; + indent: number; + version: number; + }; + [k: string]: unknown; + }; + updatedAt: string; + createdAt: string; + _status?: ('draft' | 'published') | null; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "documents". @@ -389,6 +390,7 @@ export interface ProjectsSelect { slug?: T; content?: T; featured?: T; + banner?: T; links?: | T | { diff --git a/src/app/(website)/components/Home/Hero/02-data.tsx b/src/app/(website)/components/Home/Hero/02-data.tsx index 2d556ea..b3713b4 100644 --- a/src/app/(website)/components/Home/Hero/02-data.tsx +++ b/src/app/(website)/components/Home/Hero/02-data.tsx @@ -72,7 +72,7 @@ const Item = ({ return (
= 1024; + return (
@@ -54,20 +62,84 @@ export default function Projects({
-
+
{[...projects, ...projects].map((project, i) => ( -
setActive(i)} > -

{project.title}

+ {project.banner && typeof project.banner !== "number" && ( + + + + )} + {(!largeScreen || active === i) && ( + +
+

+ {project.title} +

-
- -
-
+ + + +
+ + )} + ))}
+ +
+
+

Have a project idea?

+ +

Get in touch >

+ +
+
); } diff --git a/src/app/(website)/components/PayloadImage.tsx b/src/app/(website)/components/PayloadImage.tsx new file mode 100644 index 0000000..2d000f8 --- /dev/null +++ b/src/app/(website)/components/PayloadImage.tsx @@ -0,0 +1,28 @@ +import type { Image as PImage } from "@payload-types"; +import Image from "next/image"; + +export default function PayloadImage({ + img, + className, +}: { + img: PImage; + className: string; +}) { + const url = img.url; + const width = img.width; + const height = img.height; + + if (!url || !width || !height) return <>; + + console.log("URL: ", url); + + return ( + {img.alt + ); +} diff --git a/src/app/(website)/globals.css b/src/app/(website)/globals.css index ef4dcaa..e8eb517 100644 --- a/src/app/(website)/globals.css +++ b/src/app/(website)/globals.css @@ -35,3 +35,7 @@ /* Other vars */ --header-height: 100px; } + +.payload-richtext p { + @apply mb-2; +} diff --git a/src/app/(website)/page.tsx b/src/app/(website)/page.tsx index f2c79c4..fe1cf42 100644 --- a/src/app/(website)/page.tsx +++ b/src/app/(website)/page.tsx @@ -7,7 +7,6 @@ import HeroData from "./components/Home/Hero/02-data"; import bgImage from "./bg.jpg"; import Image from "next/image"; import Projects from "./components/Home/Projects"; -import Link from "next/link"; export default async function Home() { const payload = await getPayload({ config }); @@ -47,15 +46,6 @@ export default async function Home() { /> - -
-
-

Have a project idea?

- -

Get in touch >

- -
-
); diff --git a/src/collections/Projects.ts b/src/collections/Projects.ts index 6b98ea9..e33a595 100644 --- a/src/collections/Projects.ts +++ b/src/collections/Projects.ts @@ -2,83 +2,86 @@ import { formatSlug } from "@/lib/slugs"; import { CollectionConfig } from "payload"; export const Projects: CollectionConfig = { - slug: 'projects', - fields: [ + slug: "projects", + fields: [ + { + name: "title", + label: "Title", + type: "text", + required: true, + }, + { + name: "slug", + label: "Slug", + type: "text", + required: true, + unique: true, + admin: { + position: "sidebar", + description: "The slug is used to identify the news item in the URL.", + // readOnly: true, + }, + hooks: { + beforeValidate: [formatSlug("title")], + }, + }, + { + name: "content", + label: "Content", + type: "richText", + required: true, + }, + // list of files + // gallery + // keywords + // is featured? + { + name: "featured", + label: "Featured", + type: "checkbox", + defaultValue: false, + admin: { + position: "sidebar", + description: "Show this project on the homepage.", + }, + }, + { + name: "banner", + label: "Banner", + type: "upload", + relationTo: "images", + }, + // links + { + name: "links", + label: "Links", + type: "array", + fields: [ { - name: 'title', - label: 'Title', - type: 'text', - required: true, + name: "link", + label: "Link", + type: "text", + required: true, }, { - name: 'slug', - label: 'Slug', - type: 'text', - required: true, - unique: true, - admin: { - position: 'sidebar', - description: 'The slug is used to identify the news item in the URL.', - // readOnly: true, - }, - hooks: { - beforeValidate: [ - formatSlug('title'), - ] - } + name: "description", + label: "Description", + type: "text", + required: false, }, { - name: 'content', - label: 'Content', - type: 'richText', - required: true, + name: "group", + label: "Group", + type: "text", + required: false, + admin: { + description: "Optional: organise link under this heading", + }, }, - // list of files - // gallery - // keywords - // is featured? - { - name: 'featured', - label: 'Featured', - type: 'checkbox', - defaultValue: false, - admin: { - position: 'sidebar', - description: 'Show this project on the homepage.', - } - }, - // links - { - name: 'links', - label: 'Links', - type: 'array', - fields: [ - { - name: 'link', - label: 'Link', - type: 'text', - required: true, - }, - { - name: 'description', - label: 'Description', - type: 'text', - required: false, - }, - { - name: 'group', - label: 'Group', - type: 'text', - required: false, - admin: { - description: 'Optional: organise link under this heading', - }, - } - ], - admin: { - position: 'sidebar', - - } - }, - ] -} + ], + admin: { + position: "sidebar", + }, + }, + ], +}; diff --git a/src/collections/media/Images.ts b/src/collections/media/Images.ts index 7094f60..8c0f6b7 100644 --- a/src/collections/media/Images.ts +++ b/src/collections/media/Images.ts @@ -1,45 +1,49 @@ import type { CollectionConfig } from "payload"; export const Images: CollectionConfig = { - slug: 'images', - upload: { - staticDir: 'media/images', - imageSizes: [ - { - name: 'thumbnail', - width: 400, - height: 300, - position: 'centre', - }, - { - name: 'card', - width: 768, - height: 1024, - position: 'centre', - }, - { - name: 'tablet', - width: 1024, - height: undefined, - position: 'centre', - } - ], - adminThumbnail: 'thumbnail', - mimeTypes: ['image/*'], - }, - fields: [ - { - name: 'alt', - label: 'Alt Text', - type: 'text', - }, - { - name: 'description', - label: 'Description', - type: 'textarea', - } + slug: "images", + access: { + // TODO: fix this + read: () => true, + }, + upload: { + staticDir: "media/images", + imageSizes: [ + { + name: "thumbnail", + width: 400, + height: 300, + position: "centre", + }, + { + name: "card", + width: 768, + height: 1024, + position: "centre", + }, + { + name: "tablet", + width: 1024, + height: undefined, + position: "centre", + }, ], - admin: { - group: 'Media', - } -} + adminThumbnail: "thumbnail", + mimeTypes: ["image/*"], + }, + fields: [ + { + name: "alt", + label: "Alt Text", + type: "text", + }, + { + name: "description", + label: "Description", + type: "textarea", + }, + ], + admin: { + group: "Media", + }, +}; diff --git a/src/globals/Home/Projects.ts b/src/globals/Home/Projects.ts index 39c7eb1..74a5fa3 100644 --- a/src/globals/Home/Projects.ts +++ b/src/globals/Home/Projects.ts @@ -1,22 +1,22 @@ import { GlobalConfig } from "payload"; export const HomeProjects: GlobalConfig = { - slug: 'homeProjects', - label: 'Projects', - fields: [ - { - name: 'projectsTitle', - label: 'Projects Title', - type: 'text', - defaultValue: 'We do data differently' - }, - { - name: 'projectsDescription', - label: 'Projects Description', - type: 'richText' - } - ], - admin: { - group: 'Home page' - } + slug: "homeProjects", + label: "Projects", + fields: [ + { + name: "projectsTitle", + label: "Projects Title", + type: "text", + defaultValue: "We do data differently", + }, + { + name: "projectsDescription", + label: "Projects Description", + type: "richText", + }, + ], + admin: { + group: "Home page", + }, };