From 99ef7f0134ba0f58c2b3ae5b5ec782743d4df2b9 Mon Sep 17 00:00:00 2001 From: U5 Date: Thu, 12 Feb 2026 22:50:31 +0900 Subject: [PATCH 01/14] =?UTF-8?q?update:Work=E5=9E=8B=E3=81=ABawards?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0#46?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/microcms.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib/microcms.ts b/src/lib/microcms.ts index 81be498..988f0ff 100644 --- a/src/lib/microcms.ts +++ b/src/lib/microcms.ts @@ -22,9 +22,15 @@ export interface Event extends MicroCMSListContent { thumbnail?: MicroCMSImage; } +export interface Award extends MicroCMSListContent { + title: string; + event: Event; +} + export interface Work extends MicroCMSListContent { title: string; creators: string; + awards?: Award[]; description: string; details: WorkDetail[]; thumbnail?: MicroCMSImage; From 6eb6f63333d4680b18de985582bae7fc25a61ed3 Mon Sep 17 00:00:00 2001 From: U5 Date: Thu, 12 Feb 2026 22:52:27 +0900 Subject: [PATCH 02/14] =?UTF-8?q?feature:award=E3=81=AE=E3=83=95=E3=82=A9?= =?UTF-8?q?=E3=83=BC=E3=83=9E=E3=83=83=E3=83=88=E9=96=A2=E6=95=B0=E4=BD=9C?= =?UTF-8?q?=E6=88=90#46?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/awardsFormatter.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/lib/awardsFormatter.ts diff --git a/src/lib/awardsFormatter.ts b/src/lib/awardsFormatter.ts new file mode 100644 index 0000000..addb310 --- /dev/null +++ b/src/lib/awardsFormatter.ts @@ -0,0 +1,19 @@ +export type formattedAward = { + eventId: string; + eventTitle: string; + awardTitle: string; +}; + +export function awardFormatter( + awards: Array | undefined | null, +): formattedAward[] { + if (!Array.isArray(awards)) return []; + + return awards.map((item) => ({ + eventId: String(item?.event?.id ?? ""), + eventTitle: item?.event?.title ?? "", + awardTitle: item?.title ?? "", + })); +} + +export default awardFormatter; From 25e91a659de2a4e54f5633554f76469565e34f80 Mon Sep 17 00:00:00 2001 From: U5 Date: Thu, 12 Feb 2026 22:54:22 +0900 Subject: [PATCH 03/14] =?UTF-8?q?feature:=E5=8F=97=E8=B3=9E=E3=83=90?= =?UTF-8?q?=E3=83=83=E3=82=B8=E4=BD=9C=E6=88=90#46?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ui/Badge/index.tsx | 24 +++++++++ src/components/ui/Badge/styles.module.css | 60 +++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 src/components/ui/Badge/index.tsx create mode 100644 src/components/ui/Badge/styles.module.css diff --git a/src/components/ui/Badge/index.tsx b/src/components/ui/Badge/index.tsx new file mode 100644 index 0000000..84a83be --- /dev/null +++ b/src/components/ui/Badge/index.tsx @@ -0,0 +1,24 @@ +import styles from "./styles.module.css"; + +const Badge = ({ children }: { children: string }) => { + const text = children ?? ""; + const len = text.length; + + let fontSizeRem = 1.6; + if (len > 6) fontSizeRem = 0.8; + else if (len > 4) fontSizeRem = 0.9; + else if (len > 3) fontSizeRem = 1.1; + else if (len > 2) fontSizeRem = 1.4; + + return ( +
+
+

+ {text} +

+
+
+ ); +}; + +export default Badge; diff --git a/src/components/ui/Badge/styles.module.css b/src/components/ui/Badge/styles.module.css new file mode 100644 index 0000000..5c90457 --- /dev/null +++ b/src/components/ui/Badge/styles.module.css @@ -0,0 +1,60 @@ +.badge-container { + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + background-color: #ff5733; + padding: 6px 10px; + max-width: 160px; + min-width: 50px; + min-height: 50px; +} + +.badge-container:before, +.badge-container:after, +.badge-wrapper, +.badge-wrapper:before { + position: absolute; + background-color: inherit; + width: 100%; + height: 100%; + border-radius: inherit; + content: ""; +} + +.badge-container:before { + transform: rotate(22deg); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +.badge-container:after { + transform: rotate(-22deg); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +.badge-wrapper { + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + z-index: 1; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + width: 100%; +} + +.badge-wrapper:before { + transform: rotate(45deg); + z-index: -1; +} + +.badge { + font-size: 1.6rem; + font-weight: bold; + letter-spacing: 0.02rem; + color: white; + padding: 0.1rem 0.2rem; + text-align: center; + white-space: normal; + word-break: break-word; + line-height: 1.1; +} From db8b813226502d3b18fe61096c0f17bc596741fd Mon Sep 17 00:00:00 2001 From: U5 Date: Thu, 12 Feb 2026 22:55:01 +0900 Subject: [PATCH 04/14] =?UTF-8?q?feature:=E5=8F=97=E8=B3=9E=E3=83=90?= =?UTF-8?q?=E3=83=83=E3=82=B8=E8=A1=A8=E7=A4=BA#46?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/CardList/index.tsx | 2 ++ src/components/WorkCard/index.tsx | 13 ++++++++++++- src/components/WorkCard/styles.module.css | 18 ++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/components/CardList/index.tsx b/src/components/CardList/index.tsx index cb0e169..82bc1d6 100644 --- a/src/components/CardList/index.tsx +++ b/src/components/CardList/index.tsx @@ -3,6 +3,7 @@ import EventCard from "@/components/EventCard"; import WorkCard from "@/components/WorkCard"; import type { Event, Work } from "@/lib/microcms"; import dateFormatter from "@/lib/dateFormater"; +import awardFormatter from "@/lib/awardsFormatter"; interface EventCardListProps { contents: Event[]; @@ -38,6 +39,7 @@ const CardList = ({ contents, isEvent, ...props }: CardListProps) => { id={work.id} title={work.title} thumbnailUrl={work.thumbnail?.url || "/dummy.jpg"} + awards={awardFormatter(work.awards)} tags={ work.tags?.map((tag) => tag.name).filter(Boolean) as | string[] diff --git a/src/components/WorkCard/index.tsx b/src/components/WorkCard/index.tsx index 6574d3f..5784e7c 100644 --- a/src/components/WorkCard/index.tsx +++ b/src/components/WorkCard/index.tsx @@ -3,11 +3,14 @@ import Image from "next/image"; import styles from "./styles.module.css"; import Tag from "@/components/ui/Tag"; import Link from "next/link"; +import Badge from "@/components/ui/Badge"; +import type { formattedAward } from "@/lib/awardsFormatter"; interface WorkCardProps { id: string; // idを追加 title: string; thumbnailUrl: string; + awards?: formattedAward[]; tags: string[]; eventId?: string; eventTitle?: string; @@ -17,6 +20,7 @@ const WorkCard = ({ id, title, thumbnailUrl, + awards, tags, eventId, eventTitle, @@ -28,7 +32,14 @@ const WorkCard = ({ return ( - + + {awards && ( +
+ {awards.map((award) => ( + {award.awardTitle} + ))} +
+ )}
Date: Thu, 12 Feb 2026 23:20:46 +0900 Subject: [PATCH 05/14] =?UTF-8?q?feature:=E4=BD=9C=E5=93=81=E8=A9=B3?= =?UTF-8?q?=E7=B4=B0=E3=81=AB=E5=8F=97=E8=B3=9E=E8=A1=A8=E7=A4=BA#46?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/works/[workId]/page.module.css | 15 ++++++++++++++- src/app/works/[workId]/page.tsx | 15 +++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/app/works/[workId]/page.module.css b/src/app/works/[workId]/page.module.css index ddc131f..4a77169 100644 --- a/src/app/works/[workId]/page.module.css +++ b/src/app/works/[workId]/page.module.css @@ -23,6 +23,19 @@ } } + .awards-label { + font-size: 1.6rem; + font-weight: 700; + margin-bottom: 1rem; + } + + .awards { + display: flex; + flex-direction: column; + gap: 8px; + font-size: 1.6rem; + } + .links { display: flex; flex-direction: column; @@ -88,5 +101,5 @@ align-items: center; height: calc(100vh - 200px); font-size: 1.6rem; - font-weight: 600;; + font-weight: 600; } diff --git a/src/app/works/[workId]/page.tsx b/src/app/works/[workId]/page.tsx index e2124ec..60f2d99 100644 --- a/src/app/works/[workId]/page.tsx +++ b/src/app/works/[workId]/page.tsx @@ -8,6 +8,7 @@ import { unstable_noStore as noStore } from "next/cache"; import Link from "next/link"; import { notFound } from "next/navigation"; import styles from "./page.module.css"; +import awardFormatter from "@/lib/awardsFormatter"; interface WorkDetailsParams { workId: string; @@ -124,6 +125,20 @@ export default async function WorkDetailsPage(props: WorkDetailsPageProps) { )}
+ {workData.awards && workData.awards.length > 0 && ( + +

受賞

+
+ {awardFormatter(workData.awards).map((award) => ( +
+ ・ {award.eventTitle} + - {award.awardTitle} +
+ ))} +
+
+ )} + {workData.details && workData.details.length > 0 && (
{workData.details.map((detail, index) => ( From 1dcbe00cb9c1b75f682b2ece1ffb23e74458a903 Mon Sep 17 00:00:00 2001 From: U5 Date: Thu, 12 Feb 2026 23:29:23 +0900 Subject: [PATCH 06/14] =?UTF-8?q?feature:=E5=8F=97=E8=B3=9E=E3=83=90?= =?UTF-8?q?=E3=83=83=E3=82=B8=E3=82=92=E3=81=9D=E3=81=AE=E3=82=A4=E3=83=99?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=81=AE=E8=B3=9E=E3=81=A0=E3=81=91=E3=81=AB?= =?UTF-8?q?#46?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/WorkCard/index.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/WorkCard/index.tsx b/src/components/WorkCard/index.tsx index 5784e7c..5631d0e 100644 --- a/src/components/WorkCard/index.tsx +++ b/src/components/WorkCard/index.tsx @@ -30,12 +30,16 @@ const WorkCard = ({ ? `/works/${id}?eventId=${eventId}&eventTitle=${encodeURIComponent(eventTitle)}` : `/works/${id}`; + const displayAwards = eventId + ? awards?.filter((a) => a.eventId === eventId) + : awards; + return ( - {awards && ( + {displayAwards && displayAwards.length > 0 && (
- {awards.map((award) => ( + {displayAwards.map((award) => ( {award.awardTitle} ))}
From a8ecd3f5b61e6f5cf9dc3f65df0a9ef4e02b5bd8 Mon Sep 17 00:00:00 2001 From: U5 Date: Fri, 13 Feb 2026 15:23:49 +0900 Subject: [PATCH 07/14] =?UTF-8?q?update:=E3=83=90=E3=83=83=E3=82=B8?= =?UTF-8?q?=E3=81=AE=E8=A6=8B=E3=81=9F=E7=9B=AE=E4=BF=AE=E6=AD=A3#46?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ui/Badge/styles.module.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/ui/Badge/styles.module.css b/src/components/ui/Badge/styles.module.css index 5c90457..4b0c720 100644 --- a/src/components/ui/Badge/styles.module.css +++ b/src/components/ui/Badge/styles.module.css @@ -8,6 +8,7 @@ max-width: 160px; min-width: 50px; min-height: 50px; + border-radius: 2px; } .badge-container:before, @@ -18,7 +19,7 @@ background-color: inherit; width: 100%; height: 100%; - border-radius: inherit; + border-radius: 2px; content: ""; } From acb222dee66b637839d16da8215966070abd1b1a Mon Sep 17 00:00:00 2001 From: U5 Date: Fri, 13 Feb 2026 17:49:32 +0900 Subject: [PATCH 08/14] =?UTF-8?q?feature:=E3=83=88=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B8=E4=BD=9C=E6=88=90#75?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/page.module.css | 114 ++++++++++++++++++++++++++++++++++++++++ src/app/page.tsx | 51 +++++++++++++++++- 2 files changed, 163 insertions(+), 2 deletions(-) diff --git a/src/app/page.module.css b/src/app/page.module.css index e69de29..9122254 100644 --- a/src/app/page.module.css +++ b/src/app/page.module.css @@ -0,0 +1,114 @@ +.container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 4rem 8rem; +} + +.title { + font-family: var(--font-roboto-slab); + font-size: 6rem; + color: #333; + margin-bottom: 2rem; +} + +.lead { + font-size: 1.8rem; + line-height: 1.8; + margin-bottom: 5rem; +} + +.grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 2rem; +} + +.card-title { + font-size: 2rem; + font-weight: 700; + margin-bottom: 2rem; +} + +.card-body { + font-size: 1.6rem; + color: #444; + margin-bottom: 3rem; +} + +.button { + display: inline-block; + width: 100%; + font-size: 1.6rem; + font-weight: 700; + background: var(--accent); + color: #444; + border-radius: 8px; + text-decoration: none; + text-align: center; + padding: 1.6rem 0; + position: relative; + transition: + background 160ms ease, + transform 160ms ease; +} + +.button::after { + content: "→"; + display: inline-block; + margin-left: 0.6rem; + transform: translateX(0); + transition: transform 160ms ease; + color: inherit; +} + +.button:hover { + background: color-mix(in srgb, var(--accent), #000 10%); +} + +.button:hover::after { + transform: translateX(6px); +} + +.link { + display: inline-block; + color: #0070f3; + text-decoration: underline; + font-size: 1.6rem; + font-weight: 600; + margin-top: 1rem; +} + +@media (max-width: 899px) { + .grid { + grid-template-columns: 1fr; + } +} + +@media (max-width: 640px) { + .container { + padding: 2rem 4rem; + } + + .title { + font-size: 4rem; + } + + .lead { + font-size: 1.4rem; + } + + .card-title { + font-size: 1.8rem; + } + + .card-body { + font-size: 1.4rem; + } + + .button { + font-size: 1.4rem; + padding: 1.2rem 0; + } +} diff --git a/src/app/page.tsx b/src/app/page.tsx index ec3dc11..674b4eb 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,5 +1,52 @@ -import { redirect } from "next/navigation"; +import React from "react"; +import Link from "next/link"; +import PageTitle from "@/components/ui/PageTitle"; +import styles from "./page.module.css"; +import Paper from "@/components/ui/Paper"; export default function Home() { - redirect("/events"); + return ( +
+

KCL Works

+ +

+ KCL Works は、KCL(Kyutech Code + Lab)に参加する九州工業大学の学生による作品と活動成果を紹介するポートフォリオサイトです。 +
+ ハッカソン、企業連携イベント、開発プロジェクトなど、学生の挑戦の記録を掲載しています。 +
+ + KCLについてはこちらをご覧ください + +

+

+ +
+ +

Events

+

+ KCLで行われたハッカソンや企業連携イベントを紹介します。 +

+ + イベントを見る + +
+ + +

Works

+

+ 学生が制作したアプリやプロダクトを掲載しています。 +

+ + 作品を見る + +
+
+
+ ); } From f9fb0792df3da19b4b0af2fc8edf3c22864077d7 Mon Sep 17 00:00:00 2001 From: U5 Date: Sat, 14 Feb 2026 11:12:22 +0900 Subject: [PATCH 09/14] =?UTF-8?q?update:=E3=83=88=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B8=E3=81=AE=E3=83=87=E3=82=B6=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E5=A4=89=E6=9B=B4#75?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/page.module.css | 18 ++++++++++++++-- src/app/page.tsx | 8 ++++--- src/components/CalenderIcon/index.tsx | 19 +++++++++++++++++ src/components/ProgramCodeIcon/index.tsx | 27 ++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 src/components/CalenderIcon/index.tsx create mode 100644 src/components/ProgramCodeIcon/index.tsx diff --git a/src/app/page.module.css b/src/app/page.module.css index 9122254..8aa9213 100644 --- a/src/app/page.module.css +++ b/src/app/page.module.css @@ -17,18 +17,32 @@ font-size: 1.8rem; line-height: 1.8; margin-bottom: 5rem; + text-align: center; } .grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2rem; + + div { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + svg { + width: 70px; + height: auto; + margin-bottom: 1rem; + } + } } .card-title { font-size: 2rem; font-weight: 700; - margin-bottom: 2rem; + margin-bottom: 3rem; } .card-body { @@ -52,6 +66,7 @@ transition: background 160ms ease, transform 160ms ease; + box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.1); } .button::after { @@ -73,7 +88,6 @@ .link { display: inline-block; - color: #0070f3; text-decoration: underline; font-size: 1.6rem; font-weight: 600; diff --git a/src/app/page.tsx b/src/app/page.tsx index 674b4eb..b114182 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,8 +1,8 @@ -import React from "react"; +import CalenderIcon from "@/components/CalenderIcon"; +import ProgramCodeIcon from "@/components/ProgramCodeIcon"; +import Paper from "@/components/ui/Paper"; import Link from "next/link"; -import PageTitle from "@/components/ui/PageTitle"; import styles from "./page.module.css"; -import Paper from "@/components/ui/Paper"; export default function Home() { return ( @@ -28,6 +28,7 @@ export default function Home() {
+

Events

KCLで行われたハッカソンや企業連携イベントを紹介します。 @@ -38,6 +39,7 @@ export default function Home() { +

Works

学生が制作したアプリやプロダクトを掲載しています。 diff --git a/src/components/CalenderIcon/index.tsx b/src/components/CalenderIcon/index.tsx new file mode 100644 index 0000000..a4da0ec --- /dev/null +++ b/src/components/CalenderIcon/index.tsx @@ -0,0 +1,19 @@ +const CalenderIcon = () => { + return ( + + Calender Icon + + + ); +}; + +export default CalenderIcon; diff --git a/src/components/ProgramCodeIcon/index.tsx b/src/components/ProgramCodeIcon/index.tsx new file mode 100644 index 0000000..e303528 --- /dev/null +++ b/src/components/ProgramCodeIcon/index.tsx @@ -0,0 +1,27 @@ +const ProgramCodeIcon = () => { + return ( + + Program Code Icon + + + + + ); +}; + +export default ProgramCodeIcon; From a8a46eefe400402cfb0bf9fab91598cd333eca01 Mon Sep 17 00:00:00 2001 From: U5 Date: Sat, 14 Feb 2026 11:20:02 +0900 Subject: [PATCH 10/14] =?UTF-8?q?update:=E3=83=88=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B8=E3=81=AE=E3=83=98=E3=83=83=E3=83=80?= =?UTF-8?q?=E3=83=BC=E3=82=92=E4=BF=AE=E6=AD=A3#75?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Header/index.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/Header/index.tsx b/src/components/Header/index.tsx index fe05709..6fd07cb 100644 --- a/src/components/Header/index.tsx +++ b/src/components/Header/index.tsx @@ -1,3 +1,6 @@ +"use client"; + +import { usePathname } from "next/navigation"; import Image from "next/image"; import Link from "next/link"; import Logo from "../../../public/logo_ver2.png"; @@ -5,12 +8,14 @@ import Toggle from "../ui/Toggle"; import styles from "./styles.module.css"; const Header = () => { + const pathname = usePathname(); + return (

- + KCL Works Logo - + {pathname !== "/" && }
); }; From 158e851008a44645da276d55255e535e4eb0ab8f Mon Sep 17 00:00:00 2001 From: U5 Date: Sat, 14 Feb 2026 11:54:28 +0900 Subject: [PATCH 11/14] =?UTF-8?q?update:=E5=8F=97=E8=B3=9E=E6=AC=84?= =?UTF-8?q?=E3=81=AE=E3=83=87=E3=82=B6=E3=82=A4=E3=83=B3=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?#46?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/works/[workId]/page.module.css | 17 ++++++++++++++--- src/app/works/[workId]/page.tsx | 15 +++++++-------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/app/works/[workId]/page.module.css b/src/app/works/[workId]/page.module.css index 4a77169..4b23de2 100644 --- a/src/app/works/[workId]/page.module.css +++ b/src/app/works/[workId]/page.module.css @@ -23,17 +23,28 @@ } } + .awards-row { + display: flex; + align-items: center; + gap: 1rem; + flex-wrap: wrap; + } + .awards-label { font-size: 1.6rem; font-weight: 700; - margin-bottom: 1rem; + margin-bottom: 0; + white-space: nowrap; + min-width: 5.2rem; } .awards { display: flex; - flex-direction: column; - gap: 8px; + flex-direction: row; + gap: 0.5rem; font-size: 1.6rem; + flex-wrap: wrap; + align-items: center; } .links { diff --git a/src/app/works/[workId]/page.tsx b/src/app/works/[workId]/page.tsx index 60f2d99..c9385d9 100644 --- a/src/app/works/[workId]/page.tsx +++ b/src/app/works/[workId]/page.tsx @@ -127,14 +127,13 @@ export default async function WorkDetailsPage(props: WorkDetailsPageProps) {
{workData.awards && workData.awards.length > 0 && ( -

受賞

-
- {awardFormatter(workData.awards).map((award) => ( -
- ・ {award.eventTitle} - - {award.awardTitle} -
- ))} +
+

受賞歴

+
+ {awardFormatter(workData.awards) + .map((award) => `${award.eventTitle} - ${award.awardTitle}`) + .join("、")} +
)} From 74f1fc0f41ec55bdef27547c39ea8c3f35078574 Mon Sep 17 00:00:00 2001 From: U5 Date: Sat, 14 Feb 2026 12:58:46 +0900 Subject: [PATCH 12/14] =?UTF-8?q?update:=E7=89=B9=E5=AE=9A=E3=81=AE?= =?UTF-8?q?=E6=97=A5=E3=82=88=E3=82=8A=E5=89=8D=E3=81=AB=E9=96=8B=E5=82=AC?= =?UTF-8?q?=E3=81=95=E3=82=8C=E3=81=9F=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=81=AF=E5=8F=96=E5=BE=97=E3=81=97=E3=81=AA=E3=81=84=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/microcms.ts | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/lib/microcms.ts b/src/lib/microcms.ts index 988f0ff..8b21166 100644 --- a/src/lib/microcms.ts +++ b/src/lib/microcms.ts @@ -53,9 +53,15 @@ export const client = createClient({ }); export const getEvents = async (queries?: MicroCMSQueries) => { + const minDate = "2010-01-01"; + const minDateFilter = `date[greater_than]${minDate}`; + const combinedFilters = queries?.filters + ? `${queries.filters} and ${minDateFilter}` + : minDateFilter; + return client.getList({ endpoint: "events", - queries, + queries: { ...queries, filters: combinedFilters }, }); }; @@ -92,10 +98,22 @@ export const getAllEventIds = async ( let offset = 0; const limit = 100; // microCMSの最大取得件数 + const minDate = "2010-01-01"; + const minDateFilter = `date[greater_than_or_equal]${minDate}`; + const baseFilters = queries?.filters + ? `${queries.filters} and ${minDateFilter}` + : minDateFilter; + while (true) { const data = await client.getList({ endpoint: "events", - queries: { ...queries, fields: "id", limit, offset }, + queries: { + ...queries, + fields: "id", + limit, + offset, + filters: baseFilters, + }, }); allContentIds = [ From 553a0f1de6b364f368230dcc276520fc81b57d4b Mon Sep 17 00:00:00 2001 From: U5 Date: Sat, 14 Feb 2026 20:42:45 +0900 Subject: [PATCH 13/14] fix:npm audit fix --- package-lock.json | 89 ++++++++++++++++++++++++++--------------------- package.json | 1 + 2 files changed, 51 insertions(+), 39 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8e8cfeb..9acb102 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "@types/react-dom": "^19", "@types/react-syntax-highlighter": "^15.5.13", "babel-plugin-react-compiler": "1.0.0", + "baseline-browser-mapping": "^2.9.19", "typescript": "^5" } }, @@ -710,15 +711,15 @@ } }, "node_modules/@next/env": { - "version": "16.0.10", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.0.10.tgz", - "integrity": "sha512-8tuaQkyDVgeONQ1MeT9Mkk8pQmZapMKFh5B+OrFUlG3rVmYTXcXlBetBgTurKXGaIZvkoqRT9JL5K3phXcgang==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.6.tgz", + "integrity": "sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==", "license": "MIT" }, "node_modules/@next/swc-darwin-arm64": { - "version": "16.0.10", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.0.10.tgz", - "integrity": "sha512-4XgdKtdVsaflErz+B5XeG0T5PeXKDdruDf3CRpnhN+8UebNa5N2H58+3GDgpn/9GBurrQ1uWW768FfscwYkJRg==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.6.tgz", + "integrity": "sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==", "cpu": [ "arm64" ], @@ -732,9 +733,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "16.0.10", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.0.10.tgz", - "integrity": "sha512-spbEObMvRKkQ3CkYVOME+ocPDFo5UqHb8EMTS78/0mQ+O1nqE8toHJVioZo4TvebATxgA8XMTHHrScPrn68OGw==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.6.tgz", + "integrity": "sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==", "cpu": [ "x64" ], @@ -748,9 +749,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "16.0.10", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.0.10.tgz", - "integrity": "sha512-uQtWE3X0iGB8apTIskOMi2w/MKONrPOUCi5yLO+v3O8Mb5c7K4Q5KD1jvTpTF5gJKa3VH/ijKjKUq9O9UhwOYw==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.6.tgz", + "integrity": "sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==", "cpu": [ "arm64" ], @@ -764,9 +765,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "16.0.10", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.0.10.tgz", - "integrity": "sha512-llA+hiDTrYvyWI21Z0L1GiXwjQaanPVQQwru5peOgtooeJ8qx3tlqRV2P7uH2pKQaUfHxI/WVarvI5oYgGxaTw==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.6.tgz", + "integrity": "sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==", "cpu": [ "arm64" ], @@ -780,9 +781,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "16.0.10", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.0.10.tgz", - "integrity": "sha512-AK2q5H0+a9nsXbeZ3FZdMtbtu9jxW4R/NgzZ6+lrTm3d6Zb7jYrWcgjcpM1k8uuqlSy4xIyPR2YiuUr+wXsavA==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.6.tgz", + "integrity": "sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==", "cpu": [ "x64" ], @@ -796,9 +797,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "16.0.10", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.0.10.tgz", - "integrity": "sha512-1TDG9PDKivNw5550S111gsO4RGennLVl9cipPhtkXIFVwo31YZ73nEbLjNC8qG3SgTz/QZyYyaFYMeY4BKZR/g==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.6.tgz", + "integrity": "sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==", "cpu": [ "x64" ], @@ -812,9 +813,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "16.0.10", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.0.10.tgz", - "integrity": "sha512-aEZIS4Hh32xdJQbHz121pyuVZniSNoqDVx1yIr2hy+ZwJGipeqnMZBJHyMxv2tiuAXGx6/xpTcQJ6btIiBjgmg==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.6.tgz", + "integrity": "sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==", "cpu": [ "arm64" ], @@ -828,9 +829,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "16.0.10", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.0.10.tgz", - "integrity": "sha512-E+njfCoFLb01RAFEnGZn6ERoOqhK1Gl3Lfz1Kjnj0Ulfu7oJbuMyvBKNj/bw8XZnenHDASlygTjZICQW+rYW1Q==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.6.tgz", + "integrity": "sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==", "cpu": [ "x64" ], @@ -988,6 +989,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001760", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz", @@ -2360,13 +2370,14 @@ } }, "node_modules/next": { - "version": "16.0.10", - "resolved": "https://registry.npmjs.org/next/-/next-16.0.10.tgz", - "integrity": "sha512-RtWh5PUgI+vxlV3HdR+IfWA1UUHu0+Ram/JBO4vWB54cVPentCD0e+lxyAYEsDTqGGMg7qpjhKh6dc6aW7W/sA==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/next/-/next-16.1.6.tgz", + "integrity": "sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==", "license": "MIT", "dependencies": { - "@next/env": "16.0.10", + "@next/env": "16.1.6", "@swc/helpers": "0.5.15", + "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" @@ -2378,14 +2389,14 @@ "node": ">=20.9.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "16.0.10", - "@next/swc-darwin-x64": "16.0.10", - "@next/swc-linux-arm64-gnu": "16.0.10", - "@next/swc-linux-arm64-musl": "16.0.10", - "@next/swc-linux-x64-gnu": "16.0.10", - "@next/swc-linux-x64-musl": "16.0.10", - "@next/swc-win32-arm64-msvc": "16.0.10", - "@next/swc-win32-x64-msvc": "16.0.10", + "@next/swc-darwin-arm64": "16.1.6", + "@next/swc-darwin-x64": "16.1.6", + "@next/swc-linux-arm64-gnu": "16.1.6", + "@next/swc-linux-arm64-musl": "16.1.6", + "@next/swc-linux-x64-gnu": "16.1.6", + "@next/swc-linux-x64-musl": "16.1.6", + "@next/swc-win32-arm64-msvc": "16.1.6", + "@next/swc-win32-x64-msvc": "16.1.6", "sharp": "^0.34.4" }, "peerDependencies": { diff --git a/package.json b/package.json index 2c2bfb7..eb1420c 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@types/react-dom": "^19", "@types/react-syntax-highlighter": "^15.5.13", "babel-plugin-react-compiler": "1.0.0", + "baseline-browser-mapping": "^2.9.19", "typescript": "^5" } } From cb7c8467dd5fb5ccbef75124044b4235962b7ecf Mon Sep 17 00:00:00 2001 From: U5 Date: Sat, 14 Feb 2026 21:05:07 +0900 Subject: [PATCH 14/14] =?UTF-8?q?fix:ISR=E8=A7=A3=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/events/[eventId]/page.tsx | 13 +------------ src/app/works/[workId]/page.tsx | 11 +---------- 2 files changed, 2 insertions(+), 22 deletions(-) diff --git a/src/app/events/[eventId]/page.tsx b/src/app/events/[eventId]/page.tsx index e7a16b6..3ee0ecc 100644 --- a/src/app/events/[eventId]/page.tsx +++ b/src/app/events/[eventId]/page.tsx @@ -3,7 +3,7 @@ import CardList from "@/components/CardList"; import MarkdownContent from "@/components/ui/MarkdownContent"; import PageTitle from "@/components/ui/PageTitle"; import Paper from "@/components/ui/Paper"; -import { getAllEventIds, getEvent, getWorks } from "@/lib/microcms"; +import { getEvent, getWorks } from "@/lib/microcms"; import { unstable_noStore as noStore } from "next/cache"; import { notFound } from "next/navigation"; import styles from "./page.module.css"; @@ -13,17 +13,6 @@ type EventDetailsPageProps = { searchParams: Promise<{ draftKey?: string }>; }; -export const revalidate = 60; - -// 静的パスを生成 -export async function generateStaticParams() { - // getAllEventIdsを使用して全てのイベントIDを取得 - const allEventIds = await getAllEventIds(); - return allEventIds.map((content) => ({ - eventId: content.id, - })); -} - // propsを直接受け取り、paramsをawaitで解決する export default async function EventDetailsPage(props: EventDetailsPageProps) { // paramsオブジェクト自体をawaitで解決 diff --git a/src/app/works/[workId]/page.tsx b/src/app/works/[workId]/page.tsx index c9385d9..b1b424a 100644 --- a/src/app/works/[workId]/page.tsx +++ b/src/app/works/[workId]/page.tsx @@ -3,7 +3,7 @@ import Hero from "@/components/ui/Hero"; import MarkdownContent from "@/components/ui/MarkdownContent"; import Paper from "@/components/ui/Paper"; import Tag from "@/components/ui/Tag"; -import { getAllWorkIds, getWork } from "@/lib/microcms"; +import { getWork } from "@/lib/microcms"; import { unstable_noStore as noStore } from "next/cache"; import Link from "next/link"; import { notFound } from "next/navigation"; @@ -25,15 +25,6 @@ interface WorkDetailsPageProps { searchParams: Promise; } -export const revalidate = 60; // ページデータの再検証間隔 - -export async function generateStaticParams() { - const allWorkIds = await getAllWorkIds(); // getAllWorkIdsを使用 - return allWorkIds.map((content) => ({ - workId: content.id, - })); -} - export default async function WorkDetailsPage(props: WorkDetailsPageProps) { const params = await props.params; const searchParams = await props.searchParams;