From c09b2f87a43354efa88632a4cbed456e0485c3d1 Mon Sep 17 00:00:00 2001 From: Nikita Date: Tue, 15 Sep 2026 18:25:23 +0300 Subject: [PATCH 01/11] feat: add initiatives page hero --- front_end/messages/cs.json | 23 +- front_end/messages/en.json | 23 +- front_end/messages/es.json | 23 +- front_end/messages/pt.json | 23 +- front_end/messages/zh-TW.json | 23 +- front_end/messages/zh.json | 23 +- .../components/initiative_carousel.tsx | 337 ++++++++++++++++++ .../components/initiative_mark.tsx | 55 +++ front_end/src/app/(main)/initiatives/data.ts | 13 + .../app/(main)/initiatives/helpers/assets.ts | 6 + .../(main)/initiatives/helpers/contrast.ts | 31 ++ .../(main)/initiatives/helpers/emphasis.ts | 63 ++++ .../helpers/use_prefers_reduced_motion.ts | 19 + .../app/(main)/initiatives/initiatives.json | 69 ++++ front_end/src/app/(main)/initiatives/page.tsx | 24 ++ .../app/(main)/initiatives/sections/hero.tsx | 65 ++++ front_end/src/app/(main)/initiatives/types.ts | 42 +++ 17 files changed, 856 insertions(+), 6 deletions(-) create mode 100644 front_end/src/app/(main)/initiatives/components/initiative_carousel.tsx create mode 100644 front_end/src/app/(main)/initiatives/components/initiative_mark.tsx create mode 100644 front_end/src/app/(main)/initiatives/data.ts create mode 100644 front_end/src/app/(main)/initiatives/helpers/assets.ts create mode 100644 front_end/src/app/(main)/initiatives/helpers/contrast.ts create mode 100644 front_end/src/app/(main)/initiatives/helpers/emphasis.ts create mode 100644 front_end/src/app/(main)/initiatives/helpers/use_prefers_reduced_motion.ts create mode 100644 front_end/src/app/(main)/initiatives/initiatives.json create mode 100644 front_end/src/app/(main)/initiatives/page.tsx create mode 100644 front_end/src/app/(main)/initiatives/sections/hero.tsx create mode 100644 front_end/src/app/(main)/initiatives/types.ts diff --git a/front_end/messages/cs.json b/front_end/messages/cs.json index cbfd82f607..a6061af3a2 100644 --- a/front_end/messages/cs.json +++ b/front_end/messages/cs.json @@ -2503,5 +2503,26 @@ "loadFullComment": "Komentář zkrácen — načíst zbytek", "onlyBots": "Pouze boti", "humansOnly": "Pouze lidé", - "humansAndBots": "Lidé a boti" + "humansAndBots": "Lidé a boti", + "initiativesMetaTitle": "Iniciativy | Metaculus", + "initiativesMetaDescription": "Produkty, přehledy, zprávy, indexy a výzkumné projekty vytvořené s prognostickou komunitou Metaculus.", + "initiativesHeroEyebrow": "Objevte Metaculus", + "initiativesHeroHeading": "Iniciativy poháněné naší prognostickou komunitou", + "initiativesHeroDescription": "Od AI benchmarků přes geopolitické indexy a centra trhu práce až po volební mapy – prozkoumejte iniciativy, které pohání naše komunita 60 000 prognostiků a partnerů.", + "initiativesHeroPartnerCta": "Spolupracujte s Metaculusem", + "initiativesHeroLearnMoreCta": "Zjistit více", + "initiativesCarouselLabel": "Iniciativy Metaculus", + "initiativesCarouselSlideLabel": "{position} z {total}", + "initiativesCarouselShowInitiative": "Zobrazit {name}", + "initiativesCarouselVisitInitiative": "Přejít na {name}", + "initiativeFutureEvalName": "FutureEval", + "initiativeFutureEvalTagline": "Měříme přesnost predikcí umělé inteligence", + "initiativeMidtermsName": "Mezičasové volby", + "initiativeMidtermsTagline": "Předpovědi o sporných soubojích a politikách", + "initiativeCaseStudiesName": "Případové studie", + "initiativeCaseStudiesTagline": "Prognostická řešení pro ty, kdo rozhodují", + "initiativeRadiantName": "Radiant", + "initiativeRadiantTagline": "Zmapujte budoucnost dřív, než ji postavíte", + "initiativeLaborHubName": "Labor Hub", + "initiativeLaborHubTagline": "Budoucnost automatizace práce pomocí AI" } diff --git a/front_end/messages/en.json b/front_end/messages/en.json index 177908f8c4..13a237ee49 100644 --- a/front_end/messages/en.json +++ b/front_end/messages/en.json @@ -2492,5 +2492,26 @@ "midtermsHubEngagementNewsletterSuccess": "You're subscribed!", "midtermsHubEngagementEmailPlaceholder": "Email address", "midtermsHubEngagementToastSuccess": "Subscribed successfully!", - "midtermsHubEngagementToastError": "Failed to subscribe. Please try again." + "midtermsHubEngagementToastError": "Failed to subscribe. Please try again.", + "initiativesMetaTitle": "Initiatives | Metaculus", + "initiativesMetaDescription": "Products, dashboards, reports, indices, and research projects built with the Metaculus forecasting community.", + "initiativesHeroEyebrow": "Discover Metaculus", + "initiativesHeroHeading": "Initiatives powered by our forecasting community", + "initiativesHeroDescription": "From AI benchmarks to geopolitical indexes, labor-market hubs, and election maps — explore the initiatives that are powered by our community of 60,000 forecasters and partners.", + "initiativesHeroPartnerCta": "Partner with Metaculus", + "initiativesHeroLearnMoreCta": "Learn more", + "initiativesCarouselLabel": "Metaculus initiatives", + "initiativesCarouselSlideLabel": "{position} of {total}", + "initiativesCarouselShowInitiative": "Show {name}", + "initiativesCarouselVisitInitiative": "Visit {name}", + "initiativeFutureEvalName": "FutureEval", + "initiativeFutureEvalTagline": "Measuring the forecasting accuracy of AI", + "initiativeMidtermsName": "Midterms", + "initiativeMidtermsTagline": "Forecasts on contested races and policies", + "initiativeCaseStudiesName": "Case Studies", + "initiativeCaseStudiesTagline": "Forecasting solutions for decision-makers", + "initiativeRadiantName": "Radiant", + "initiativeRadiantTagline": "Map the future before you build it", + "initiativeLaborHubName": "Labor Hub", + "initiativeLaborHubTagline": "Future of the AI workforce automation" } diff --git a/front_end/messages/es.json b/front_end/messages/es.json index b61d7ad727..e8afc523aa 100644 --- a/front_end/messages/es.json +++ b/front_end/messages/es.json @@ -2503,5 +2503,26 @@ "loadFullComment": "Comentario truncado — carga el resto", "onlyBots": "Solo bots", "humansOnly": "Solo humanos", - "humansAndBots": "Humanos y Bots" + "humansAndBots": "Humanos y Bots", + "initiativesMetaTitle": "Iniciativas | Metaculus", + "initiativesMetaDescription": "Productos, paneles, informes, índices y proyectos de investigación creados con la comunidad de pronosticadores de Metaculus.", + "initiativesHeroEyebrow": "Descubre Metaculus", + "initiativesHeroHeading": "Iniciativas impulsadas por nuestra comunidad de pronosticadores", + "initiativesHeroDescription": "Desde comparativas de IA hasta índices geopolíticos, centros del mercado laboral y mapas electorales: explora las iniciativas impulsadas por nuestra comunidad de 60 000 pronosticadores y socios.", + "initiativesHeroPartnerCta": "Colabora con Metaculus", + "initiativesHeroLearnMoreCta": "Más información", + "initiativesCarouselLabel": "Iniciativas de Metaculus", + "initiativesCarouselSlideLabel": "{position} de {total}", + "initiativesCarouselShowInitiative": "Mostrar {name}", + "initiativesCarouselVisitInitiative": "Visitar {name}", + "initiativeFutureEvalName": "FutureEval", + "initiativeFutureEvalTagline": "Medimos la precisión de la IA al pronosticar", + "initiativeMidtermsName": "Elecciones intermedias", + "initiativeMidtermsTagline": "Pronósticos sobre contiendas reñidas y políticas", + "initiativeCaseStudiesName": "Estudios de caso", + "initiativeCaseStudiesTagline": "Soluciones de pronóstico para quienes toman decisiones", + "initiativeRadiantName": "Radiant", + "initiativeRadiantTagline": "Traza el futuro antes de construirlo", + "initiativeLaborHubName": "Labor Hub", + "initiativeLaborHubTagline": "El futuro de la automatización laboral con IA" } diff --git a/front_end/messages/pt.json b/front_end/messages/pt.json index eba4d3a2c6..a3c6d2ff0d 100644 --- a/front_end/messages/pt.json +++ b/front_end/messages/pt.json @@ -2501,5 +2501,26 @@ "loadFullComment": "Comentário truncado — carregar o resto", "onlyBots": "Apenas bots", "humansOnly": "Apenas humanos", - "humansAndBots": "Humanos e bots" + "humansAndBots": "Humanos e bots", + "initiativesMetaTitle": "Iniciativas | Metaculus", + "initiativesMetaDescription": "Produtos, painéis, relatórios, índices e projetos de pesquisa criados com a comunidade de previsores do Metaculus.", + "initiativesHeroEyebrow": "Descubra o Metaculus", + "initiativesHeroHeading": "Iniciativas impulsionadas pela nossa comunidade de previsores", + "initiativesHeroDescription": "De benchmarks de IA a índices geopolíticos, centros do mercado de trabalho e mapas eleitorais — explore as iniciativas impulsionadas pela nossa comunidade de 60.000 previsores e parceiros.", + "initiativesHeroPartnerCta": "Seja parceiro do Metaculus", + "initiativesHeroLearnMoreCta": "Saiba mais", + "initiativesCarouselLabel": "Iniciativas do Metaculus", + "initiativesCarouselSlideLabel": "{position} de {total}", + "initiativesCarouselShowInitiative": "Mostrar {name}", + "initiativesCarouselVisitInitiative": "Visitar {name}", + "initiativeFutureEvalName": "FutureEval", + "initiativeFutureEvalTagline": "Medindo a precisão da IA nas previsões", + "initiativeMidtermsName": "Eleições de meio de mandato", + "initiativeMidtermsTagline": "Previsões sobre disputas acirradas e políticas", + "initiativeCaseStudiesName": "Estudos de caso", + "initiativeCaseStudiesTagline": "Soluções de previsão para quem decide", + "initiativeRadiantName": "Radiant", + "initiativeRadiantTagline": "Mapeie o futuro antes de construí-lo", + "initiativeLaborHubName": "Labor Hub", + "initiativeLaborHubTagline": "O futuro da automação do trabalho com IA" } diff --git a/front_end/messages/zh-TW.json b/front_end/messages/zh-TW.json index 3856047747..b010cb8298 100644 --- a/front_end/messages/zh-TW.json +++ b/front_end/messages/zh-TW.json @@ -2500,5 +2500,26 @@ "loadFullComment": "評論被截斷 — 加載其餘部分", "onlyBots": "僅限機器人", "humansOnly": "僅限人類", - "humansAndBots": "人類和機器人" + "humansAndBots": "人類和機器人", + "initiativesMetaTitle": "專案 | Metaculus", + "initiativesMetaDescription": "與 Metaculus 預測社群共同打造的產品、儀表板、報告、指數與研究專案。", + "initiativesHeroEyebrow": "探索 Metaculus", + "initiativesHeroHeading": "由我們的預測社群共同打造的專案", + "initiativesHeroDescription": "從 AI 基準測試到地緣政治指數、勞動市場中心與選舉地圖——探索由我們 60,000 名預測者與合作夥伴共同打造的專案。", + "initiativesHeroPartnerCta": "與 Metaculus 合作", + "initiativesHeroLearnMoreCta": "了解更多", + "initiativesCarouselLabel": "Metaculus 專案", + "initiativesCarouselSlideLabel": "第 {position} 項,共 {total} 項", + "initiativesCarouselShowInitiative": "顯示 {name}", + "initiativesCarouselVisitInitiative": "造訪 {name}", + "initiativeFutureEvalName": "FutureEval", + "initiativeFutureEvalTagline": "衡量 AI 的預測準確度", + "initiativeMidtermsName": "期中選舉", + "initiativeMidtermsTagline": "對膠著選情與政策的預測", + "initiativeCaseStudiesName": "案例研究", + "initiativeCaseStudiesTagline": "為決策者提供的預測解決方案", + "initiativeRadiantName": "Radiant", + "initiativeRadiantTagline": "在建造未來之前先描繪它", + "initiativeLaborHubName": "Labor Hub", + "initiativeLaborHubTagline": "AI 勞動力自動化的未來" } diff --git a/front_end/messages/zh.json b/front_end/messages/zh.json index 7856b986b2..7199417eaf 100644 --- a/front_end/messages/zh.json +++ b/front_end/messages/zh.json @@ -2505,5 +2505,26 @@ "loadFullComment": "评论被截断——加载剩余部分", "onlyBots": "仅限机器人", "humansOnly": "仅限人类", - "humansAndBots": "人类和机器人" + "humansAndBots": "人类和机器人", + "initiativesMetaTitle": "项目 | Metaculus", + "initiativesMetaDescription": "与 Metaculus 预测社区共同打造的产品、仪表板、报告、指数与研究项目。", + "initiativesHeroEyebrow": "探索 Metaculus", + "initiativesHeroHeading": "由我们的预测社区共同打造的项目", + "initiativesHeroDescription": "从 AI 基准测试到地缘政治指数、劳动力市场中心和选举地图——探索由我们 60,000 名预测者和合作伙伴共同打造的项目。", + "initiativesHeroPartnerCta": "与 Metaculus 合作", + "initiativesHeroLearnMoreCta": "了解更多", + "initiativesCarouselLabel": "Metaculus 项目", + "initiativesCarouselSlideLabel": "第 {position} 项,共 {total} 项", + "initiativesCarouselShowInitiative": "显示 {name}", + "initiativesCarouselVisitInitiative": "访问 {name}", + "initiativeFutureEvalName": "FutureEval", + "initiativeFutureEvalTagline": "衡量 AI 的预测准确度", + "initiativeMidtermsName": "中期选举", + "initiativeMidtermsTagline": "对胶着选情与政策的预测", + "initiativeCaseStudiesName": "案例研究", + "initiativeCaseStudiesTagline": "为决策者提供的预测解决方案", + "initiativeRadiantName": "Radiant", + "initiativeRadiantTagline": "在建造未来之前先描绘它", + "initiativeLaborHubName": "Labor Hub", + "initiativeLaborHubTagline": "AI 劳动力自动化的未来" } diff --git a/front_end/src/app/(main)/initiatives/components/initiative_carousel.tsx b/front_end/src/app/(main)/initiatives/components/initiative_carousel.tsx new file mode 100644 index 0000000000..e7349e0130 --- /dev/null +++ b/front_end/src/app/(main)/initiatives/components/initiative_carousel.tsx @@ -0,0 +1,337 @@ +"use client"; + +import { faArrowRight } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import useEmblaCarousel from "embla-carousel-react"; +import Link from "next/link"; +import { useTranslations } from "next-intl"; +import { + FC, + KeyboardEvent, + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from "react"; + +import InitiativeMark from "./initiative_mark"; +import { + applyEmphasis, + DESIGN_MARK_SIZE, + getEmphasisStyle, +} from "../helpers/emphasis"; +import { usePrefersReducedMotion } from "../helpers/use_prefers_reduced_motion"; +import { Initiative } from "../types"; + +const AUTOPLAY_INTERVAL = 5000; +const AUTOPLAY_RESUME_DELAY = 4000; +const WHEEL_STEP_THRESHOLD = 40; +const WHEEL_IDLE_RESET = 200; + +const VISIBLE_ITEMS = 5; +const MIN_LOOP_SLIDES = VISIBLE_ITEMS + 1; + +type Props = { + initiatives: Initiative[]; + initialInitiativeId?: string; +}; + +const InitiativeCarousel: FC = ({ + initiatives, + initialInitiativeId, +}) => { + const t = useTranslations(); + const prefersReducedMotion = usePrefersReducedMotion(); + const requestedStartIndex = initiatives.findIndex( + ({ id }) => id === initialInitiativeId + ); + const startIndex = + requestedStartIndex >= 0 + ? requestedStartIndex + : Math.floor((initiatives.length - 1) / 2); + + const slides = useMemo(() => { + const cycles = Math.max(1, Math.ceil(MIN_LOOP_SLIDES / initiatives.length)); + const result: { + initiative: Initiative; + realIndex: number; + isRepeat: boolean; + }[] = []; + + for (let cycle = 0; cycle < cycles; cycle++) { + initiatives.forEach((initiative, realIndex) => { + result.push({ initiative, realIndex, isRepeat: cycle > 0 }); + }); + } + + return result; + }, [initiatives]); + + const [emblaRef, emblaApi] = useEmblaCarousel({ + align: "center", + loop: true, + startIndex, + watchFocus: true, + duration: prefersReducedMotion ? 0 : 25, + }); + + const [selectedIndex, setSelectedIndex] = useState(startIndex); + const [isAutoplayPaused, setIsAutoplayPaused] = useState(false); + const [isPointerDown, setIsPointerDown] = useState(false); + const resumeTimerRef = useRef(undefined); + + const autoplayEnabled = + !prefersReducedMotion && !isAutoplayPaused && !isPointerDown; + + const pauseAutoplay = useCallback(() => { + window.clearTimeout(resumeTimerRef.current); + setIsAutoplayPaused(true); + }, []); + + const scheduleAutoplayResume = useCallback(() => { + window.clearTimeout(resumeTimerRef.current); + resumeTimerRef.current = window.setTimeout( + () => setIsAutoplayPaused(false), + AUTOPLAY_RESUME_DELAY + ); + }, []); + + useEffect(() => () => window.clearTimeout(resumeTimerRef.current), []); + + useEffect(() => { + if (!emblaApi) return; + + const update = () => { + const viewportRect = emblaApi.rootNode().getBoundingClientRect(); + const viewportCenter = viewportRect.left + viewportRect.width / 2; + + for (const slide of emblaApi.slideNodes()) { + const visual = slide.firstElementChild; + if (!(visual instanceof HTMLElement)) continue; + + const mark = visual.firstElementChild; + const markSize = + mark instanceof HTMLElement ? mark.offsetWidth : DESIGN_MARK_SIZE; + + const slideRect = slide.getBoundingClientRect(); + const slideCenter = slideRect.left + slideRect.width / 2; + applyEmphasis( + visual, + (slideCenter - viewportCenter) / (slide.offsetWidth || 1), + markSize / DESIGN_MARK_SIZE + ); + } + }; + + update(); + emblaApi + .on("scroll", update) + .on("settle", update) + .on("resize", update) + .on("reInit", update); + + return () => { + emblaApi + .off("scroll", update) + .off("settle", update) + .off("resize", update) + .off("reInit", update); + }; + }, [emblaApi]); + + useEffect(() => { + if (!emblaApi) return; + + const onSelect = () => + setSelectedIndex(emblaApi.selectedScrollSnap() % initiatives.length); + + onSelect(); + emblaApi.on("select", onSelect).on("reInit", onSelect); + + return () => { + emblaApi.off("select", onSelect).off("reInit", onSelect); + }; + }, [emblaApi, initiatives.length]); + + useEffect(() => { + if (!emblaApi) return; + + const onPointerDown = () => { + setIsPointerDown(true); + pauseAutoplay(); + }; + const onPointerUp = () => { + setIsPointerDown(false); + scheduleAutoplayResume(); + }; + + emblaApi.on("pointerDown", onPointerDown).on("pointerUp", onPointerUp); + + return () => { + emblaApi.off("pointerDown", onPointerDown).off("pointerUp", onPointerUp); + }; + }, [emblaApi, pauseAutoplay, scheduleAutoplayResume]); + + useEffect(() => { + if (!emblaApi) return; + + const viewport = emblaApi.rootNode(); + let accumulated = 0; + let lastEventAt = 0; + + const onWheel = (event: WheelEvent) => { + if (Math.abs(event.deltaX) <= Math.abs(event.deltaY)) return; + event.preventDefault(); + pauseAutoplay(); + scheduleAutoplayResume(); + + if (event.timeStamp - lastEventAt > WHEEL_IDLE_RESET) accumulated = 0; + lastEventAt = event.timeStamp; + accumulated += event.deltaX; + + if (Math.abs(accumulated) < WHEEL_STEP_THRESHOLD) return; + if (accumulated > 0) { + emblaApi.scrollNext(); + } else { + emblaApi.scrollPrev(); + } + accumulated = 0; + }; + + viewport.addEventListener("wheel", onWheel, { passive: false }); + + return () => viewport.removeEventListener("wheel", onWheel); + }, [emblaApi, pauseAutoplay, scheduleAutoplayResume]); + + useEffect(() => { + if (!emblaApi || !autoplayEnabled) return; + + const intervalId = window.setInterval(() => { + if (document.hidden) return; + emblaApi.scrollNext(); + }, AUTOPLAY_INTERVAL); + + return () => window.clearInterval(intervalId); + }, [emblaApi, autoplayEnabled]); + + const handleKeyDown = (event: KeyboardEvent) => { + if (!emblaApi) return; + if (event.key !== "ArrowLeft" && event.key !== "ArrowRight") return; + + event.preventDefault(); + pauseAutoplay(); + scheduleAutoplayResume(); + + if (event.key === "ArrowLeft") { + emblaApi.scrollPrev(); + } else { + emblaApi.scrollNext(); + } + }; + + const activeInitiative = initiatives[selectedIndex] ?? initiatives[0]; + if (!activeInitiative) return null; + + const activeName = t(activeInitiative.nameKey); + + return ( +
+
+
+
    + {slides.map(({ initiative, realIndex, isRepeat }, index) => { + const name = t(initiative.nameKey); + + return ( +
  • +
    + +
    +
  • + ); + })} +
+
+
+
+
+ +
+ + + {activeName} + + + {t(activeInitiative.taglineKey)}{" "} + + +
+
+ ); +}; + +export default InitiativeCarousel; diff --git a/front_end/src/app/(main)/initiatives/components/initiative_mark.tsx b/front_end/src/app/(main)/initiatives/components/initiative_mark.tsx new file mode 100644 index 0000000000..91edbd0a77 --- /dev/null +++ b/front_end/src/app/(main)/initiatives/components/initiative_mark.tsx @@ -0,0 +1,55 @@ +import Image from "next/image"; +import { CSSProperties, FC } from "react"; + +import cn from "@/utils/core/cn"; + +import { resolveAssetSource } from "../helpers/assets"; +import { getReadableForeground } from "../helpers/contrast"; +import { Initiative } from "../types"; + +type Props = { + initiative: Initiative; + name: string; + className?: string; +}; + +const InitiativeMark: FC = ({ initiative, name, className }) => { + const { logo, brand } = initiative; + const logoSource = logo ? resolveAssetSource(logo) : null; + + return ( + + {logoSource ? ( + + ) : ( + + )} + + ); +}; + +export default InitiativeMark; diff --git a/front_end/src/app/(main)/initiatives/data.ts b/front_end/src/app/(main)/initiatives/data.ts new file mode 100644 index 0000000000..a3d6abc8c7 --- /dev/null +++ b/front_end/src/app/(main)/initiatives/data.ts @@ -0,0 +1,13 @@ +import rawInitiativesPageData from "./initiatives.json"; +import { Initiative, InitiativePlacement, InitiativesPageData } from "./types"; + +export const initiativesPageData = + rawInitiativesPageData as InitiativesPageData; + +export function getInitiativesByPlacement( + placement: InitiativePlacement +): Initiative[] { + return initiativesPageData.initiatives + .filter((initiative) => initiative.placements.includes(placement)) + .sort((a, b) => a.order - b.order); +} diff --git a/front_end/src/app/(main)/initiatives/helpers/assets.ts b/front_end/src/app/(main)/initiatives/helpers/assets.ts new file mode 100644 index 0000000000..c115d8ef0e --- /dev/null +++ b/front_end/src/app/(main)/initiatives/helpers/assets.ts @@ -0,0 +1,6 @@ +export function resolveAssetSource(src: string): { + src: string; + unoptimized: boolean; +} { + return { src, unoptimized: /^https?:\/\//i.test(src) }; +} diff --git a/front_end/src/app/(main)/initiatives/helpers/contrast.ts b/front_end/src/app/(main)/initiatives/helpers/contrast.ts new file mode 100644 index 0000000000..d150e800ec --- /dev/null +++ b/front_end/src/app/(main)/initiatives/helpers/contrast.ts @@ -0,0 +1,31 @@ +const LIGHT_FOREGROUND = "#ffffff"; +const DARK_FOREGROUND = "#283441"; + +function toLinear(channel: number): number { + const value = channel / 255; + return value <= 0.03928 + ? value / 12.92 + : Math.pow((value + 0.055) / 1.055, 2.4); +} + +export function getReadableForeground(backgroundColor: string): string { + const hex = backgroundColor.replace("#", ""); + const full = + hex.length === 3 + ? hex + .split("") + .map((character) => character + character) + .join("") + : hex; + + const red = parseInt(full.slice(0, 2), 16); + const green = parseInt(full.slice(2, 4), 16); + const blue = parseInt(full.slice(4, 6), 16); + + if ([red, green, blue].some(Number.isNaN)) return LIGHT_FOREGROUND; + + const luminance = + 0.2126 * toLinear(red) + 0.7152 * toLinear(green) + 0.0722 * toLinear(blue); + + return luminance > 0.4 ? DARK_FOREGROUND : LIGHT_FOREGROUND; +} diff --git a/front_end/src/app/(main)/initiatives/helpers/emphasis.ts b/front_end/src/app/(main)/initiatives/helpers/emphasis.ts new file mode 100644 index 0000000000..48df6719f0 --- /dev/null +++ b/front_end/src/app/(main)/initiatives/helpers/emphasis.ts @@ -0,0 +1,63 @@ +import { CSSProperties } from "react"; + +export const DESIGN_MARK_SIZE = 200; + +const STEPS = [ + { scale: 1, blur: 0, opacity: 1, shift: 0 }, + { scale: 0.72, blur: 10, opacity: 0.72, shift: 0 }, + { scale: 0.52, blur: 15, opacity: 0.45, shift: 48 }, +]; + +type Emphasis = { + blur: string; + scale: string; + opacity: string; + shift: string; +}; + +function getEmphasis(distance: number, markRatio: number): Emphasis { + const lastIndex = STEPS.length - 1; + const clamped = Math.min(Math.abs(distance), lastIndex); + const index = Math.min(Math.floor(clamped), lastIndex); + const from = STEPS[index]; + const to = STEPS[Math.min(index + 1, lastIndex)]; + + if (!from || !to) { + return { blur: "0px", scale: "1", opacity: "1", shift: "0px" }; + } + + const progress = clamped - index; + const lerp = (a: number, b: number) => a + (b - a) * progress; + const towardCentre = distance > 0 ? -1 : 1; + + return { + blur: `${(lerp(from.blur, to.blur) * markRatio).toFixed(2)}px`, + scale: lerp(from.scale, to.scale).toFixed(3), + opacity: lerp(from.opacity, to.opacity).toFixed(3), + shift: `${(lerp(from.shift, to.shift) * markRatio * towardCentre).toFixed(2)}px`, + }; +} + +export function getEmphasisStyle(distance: number): CSSProperties { + const { blur, scale, opacity, shift } = getEmphasis(distance, 1); + + return { + "--initiative-blur": blur, + "--initiative-scale": scale, + "--initiative-opacity": opacity, + "--initiative-shift": shift, + } as CSSProperties; +} + +export function applyEmphasis( + element: HTMLElement, + distance: number, + markRatio: number +): void { + const { blur, scale, opacity, shift } = getEmphasis(distance, markRatio); + + element.style.setProperty("--initiative-blur", blur); + element.style.setProperty("--initiative-scale", scale); + element.style.setProperty("--initiative-opacity", opacity); + element.style.setProperty("--initiative-shift", shift); +} diff --git a/front_end/src/app/(main)/initiatives/helpers/use_prefers_reduced_motion.ts b/front_end/src/app/(main)/initiatives/helpers/use_prefers_reduced_motion.ts new file mode 100644 index 0000000000..dcac7d6150 --- /dev/null +++ b/front_end/src/app/(main)/initiatives/helpers/use_prefers_reduced_motion.ts @@ -0,0 +1,19 @@ +"use client"; + +import { useSyncExternalStore } from "react"; + +const REDUCED_MOTION_QUERY = "(prefers-reduced-motion: reduce)"; + +const subscribe = (callback: () => void) => { + const mediaQuery = window.matchMedia(REDUCED_MOTION_QUERY); + mediaQuery.addEventListener("change", callback); + return () => mediaQuery.removeEventListener("change", callback); +}; + +const getSnapshot = () => window.matchMedia(REDUCED_MOTION_QUERY).matches; + +const getServerSnapshot = () => false; + +export function usePrefersReducedMotion(): boolean { + return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot); +} diff --git a/front_end/src/app/(main)/initiatives/initiatives.json b/front_end/src/app/(main)/initiatives/initiatives.json new file mode 100644 index 0000000000..64287b34d2 --- /dev/null +++ b/front_end/src/app/(main)/initiatives/initiatives.json @@ -0,0 +1,69 @@ +{ + "hero": { + "eyebrowKey": "initiativesHeroEyebrow", + "headingKey": "initiativesHeroHeading", + "descriptionKey": "initiativesHeroDescription", + "initialInitiativeId": "radiant", + "actions": [ + { + "id": "partner", + "labelKey": "initiativesHeroPartnerCta", + "href": "/services/", + "variant": "primary" + }, + { + "id": "learn-more", + "labelKey": "initiativesHeroLearnMoreCta", + "href": "#initiatives-featured", + "variant": "secondary" + } + ] + }, + "initiatives": [ + { + "id": "futureeval", + "nameKey": "initiativeFutureEvalName", + "taglineKey": "initiativeFutureEvalTagline", + "url": "/futureeval/", + "brand": { "color": "#7fa9dc" }, + "order": 1, + "placements": ["hero"] + }, + { + "id": "midterms", + "nameKey": "initiativeMidtermsName", + "taglineKey": "initiativeMidtermsTagline", + "url": "/midterms-2026/", + "brand": { "color": "#b0628f" }, + "order": 2, + "placements": ["hero"] + }, + { + "id": "case-studies", + "nameKey": "initiativeCaseStudiesName", + "taglineKey": "initiativeCaseStudiesTagline", + "url": "/services/", + "brand": { "color": "#d7c3af" }, + "order": 3, + "placements": ["hero"] + }, + { + "id": "radiant", + "nameKey": "initiativeRadiantName", + "taglineKey": "initiativeRadiantTagline", + "url": "/notebooks/42293/map-the-future-before-you-build-it/", + "brand": { "color": "#f95700" }, + "order": 4, + "placements": ["hero"] + }, + { + "id": "labor-hub", + "nameKey": "initiativeLaborHubName", + "taglineKey": "initiativeLaborHubTagline", + "url": "/labor-hub/", + "brand": { "color": "#45a48d" }, + "order": 5, + "placements": ["hero"] + } + ] +} diff --git a/front_end/src/app/(main)/initiatives/page.tsx b/front_end/src/app/(main)/initiatives/page.tsx new file mode 100644 index 0000000000..a28f776b77 --- /dev/null +++ b/front_end/src/app/(main)/initiatives/page.tsx @@ -0,0 +1,24 @@ +import { Metadata } from "next"; +import { getTranslations } from "next-intl/server"; + +import HeroSection from "./sections/hero"; + +export async function generateMetadata(): Promise { + const t = await getTranslations(); + + return { + title: t("initiativesMetaTitle"), + description: t("initiativesMetaDescription"), + }; +} + +export default function InitiativesPage() { + return ( +
+
+ + +
+ ); +} diff --git a/front_end/src/app/(main)/initiatives/sections/hero.tsx b/front_end/src/app/(main)/initiatives/sections/hero.tsx new file mode 100644 index 0000000000..ed2cf0a6bc --- /dev/null +++ b/front_end/src/app/(main)/initiatives/sections/hero.tsx @@ -0,0 +1,65 @@ +import { getTranslations } from "next-intl/server"; + +import Button from "@/components/ui/button"; +import cn from "@/utils/core/cn"; + +import InitiativeCarousel from "../components/initiative_carousel"; +import { getInitiativesByPlacement, initiativesPageData } from "../data"; + +const HeroSection = async () => { + const t = await getTranslations(); + const { hero } = initiativesPageData; + const heroInitiatives = getInitiativesByPlacement("hero"); + + return ( +
+

+

+ +

+ {t(hero.headingKey)} +

+ +

+ {t(hero.descriptionKey)} +

+ + {hero.actions.length > 0 && ( +
+ {hero.actions.map((action) => ( + + ))} +
+ )} + + {heroInitiatives.length > 0 && ( +
+ +
+ )} +
+ ); +}; + +export default HeroSection; diff --git a/front_end/src/app/(main)/initiatives/types.ts b/front_end/src/app/(main)/initiatives/types.ts new file mode 100644 index 0000000000..3c7ca207ec --- /dev/null +++ b/front_end/src/app/(main)/initiatives/types.ts @@ -0,0 +1,42 @@ +import { ButtonVariant } from "@/components/ui/button"; +import { TranslationKey } from "@/types/translations"; + +export type InitiativePlacement = "hero" | "featured" | "inventory"; + +export type InitiativeBrand = { + color: string; + darkColor?: string; +}; + +export type Initiative = { + id: string; + nameKey: TranslationKey; + taglineKey: TranslationKey; + url: string; + logo?: string; + artwork?: string; + brand: InitiativeBrand; + categoryId?: string; + order: number; + placements: InitiativePlacement[]; +}; + +export type InitiativesHeroAction = { + id: string; + labelKey: TranslationKey; + href: string; + variant: ButtonVariant; +}; + +export type InitiativesHero = { + eyebrowKey: TranslationKey; + headingKey: TranslationKey; + descriptionKey: TranslationKey; + initialInitiativeId?: string; + actions: InitiativesHeroAction[]; +}; + +export type InitiativesPageData = { + hero: InitiativesHero; + initiatives: Initiative[]; +}; From 2531a7508edfd801404626d59a6238d2f607016e Mon Sep 17 00:00:00 2001 From: Nikita Date: Wed, 16 Sep 2026 12:41:50 +0300 Subject: [PATCH 02/11] feat: support variable initiative carousel items --- .../components/initiative_carousel.tsx | 109 ++++++++++++++---- .../components/initiative_mark.tsx | 3 +- front_end/src/app/(main)/initiatives/page.tsx | 16 ++- .../app/(main)/initiatives/sections/hero.tsx | 25 ++-- front_end/src/app/(main)/initiatives/types.ts | 1 - 5 files changed, 109 insertions(+), 45 deletions(-) diff --git a/front_end/src/app/(main)/initiatives/components/initiative_carousel.tsx b/front_end/src/app/(main)/initiatives/components/initiative_carousel.tsx index e7349e0130..5af837a365 100644 --- a/front_end/src/app/(main)/initiatives/components/initiative_carousel.tsx +++ b/front_end/src/app/(main)/initiatives/components/initiative_carousel.tsx @@ -32,6 +32,63 @@ const WHEEL_IDLE_RESET = 200; const VISIBLE_ITEMS = 5; const MIN_LOOP_SLIDES = VISIBLE_ITEMS + 1; +type ActiveInitiativeLinkProps = { + initiative: Initiative; + name: string; + isActive: boolean; +}; + +const ActiveInitiativeLink: FC = ({ + initiative, + name, + isActive, +}) => { + const t = useTranslations(); + + return ( + + + {name} + + + {t(initiative.taglineKey)}{" "} + + + ); +}; + +const InitiativeDetails: FC<{ + initiatives: Initiative[]; + selectedIndex: number; + className?: string; +}> = ({ initiatives, selectedIndex, className }) => { + const t = useTranslations(); + + return ( +
+ {initiatives.map((initiative, index) => ( + + ))} +
+ ); +}; + type Props = { initiatives: Initiative[]; initialInitiativeId?: string; @@ -49,9 +106,11 @@ const InitiativeCarousel: FC = ({ const startIndex = requestedStartIndex >= 0 ? requestedStartIndex - : Math.floor((initiatives.length - 1) / 2); + : Math.max(0, Math.floor((initiatives.length - 1) / 2)); const slides = useMemo(() => { + if (initiatives.length < 2) return []; + const cycles = Math.max(1, Math.ceil(MIN_LOOP_SLIDES / initiatives.length)); const result: { initiative: Initiative; @@ -235,6 +294,25 @@ const InitiativeCarousel: FC = ({ const activeName = t(activeInitiative.nameKey); + if (initiatives.length < 2) { + return ( +
+
+ +
+ +
+ ); + } + return (
= ({ })}
-
-
+
+
- - - {activeName} - - - {t(activeInitiative.taglineKey)}{" "} - - +
); diff --git a/front_end/src/app/(main)/initiatives/components/initiative_mark.tsx b/front_end/src/app/(main)/initiatives/components/initiative_mark.tsx index 91edbd0a77..c6c0e4b4d5 100644 --- a/front_end/src/app/(main)/initiatives/components/initiative_mark.tsx +++ b/front_end/src/app/(main)/initiatives/components/initiative_mark.tsx @@ -20,13 +20,12 @@ const InitiativeMark: FC = ({ initiative, name, className }) => { return ( { @@ -14,11 +16,13 @@ export async function generateMetadata(): Promise { export default function InitiativesPage() { return ( -
-
- - -
+ +
+
+ + +
+
); } diff --git a/front_end/src/app/(main)/initiatives/sections/hero.tsx b/front_end/src/app/(main)/initiatives/sections/hero.tsx index ed2cf0a6bc..5108f67f02 100644 --- a/front_end/src/app/(main)/initiatives/sections/hero.tsx +++ b/front_end/src/app/(main)/initiatives/sections/hero.tsx @@ -12,20 +12,19 @@ const HeroSection = async () => { const heroInitiatives = getInitiativesByPlacement("hero"); return ( -
-

-

+
+
+

+

-

- {t(hero.headingKey)} -

+

+ {t(hero.headingKey)} +

+
-

+

{t(hero.descriptionKey)}

@@ -41,7 +40,7 @@ const HeroSection = async () => { "h-[42px] rounded-md px-[18px] py-0 text-sm leading-[14px]", action.variant === "primary" && "text-white", action.variant === "secondary" && - "border-[rgba(33,48,67,0.40)] bg-transparent font-semibold text-blue-900 dark:border-blue-500-dark dark:text-blue-900-dark" + "border-[rgba(33,48,67,0.40)] bg-transparent font-semibold text-blue-900" )} > {t(action.labelKey)} diff --git a/front_end/src/app/(main)/initiatives/types.ts b/front_end/src/app/(main)/initiatives/types.ts index 3c7ca207ec..e861e29bf2 100644 --- a/front_end/src/app/(main)/initiatives/types.ts +++ b/front_end/src/app/(main)/initiatives/types.ts @@ -5,7 +5,6 @@ export type InitiativePlacement = "hero" | "featured" | "inventory"; export type InitiativeBrand = { color: string; - darkColor?: string; }; export type Initiative = { From 2efecf8f7de9bb691a67d68ca29424908bbfd2ee Mon Sep 17 00:00:00 2001 From: Nikita Date: Wed, 16 Sep 2026 19:30:46 +0300 Subject: [PATCH 03/11] feat: add featured initiatives section --- front_end/messages/cs.json | 17 ++- front_end/messages/en.json | 17 ++- front_end/messages/es.json | 17 ++- front_end/messages/pt.json | 17 ++- front_end/messages/zh-TW.json | 17 ++- front_end/messages/zh.json | 17 ++- .../initiatives/futureeval-featured.png | Bin 0 -> 89630 bytes .../images/initiatives/labor-hub-featured.png | Bin 0 -> 103529 bytes .../renaissance-philanthropy-logo.svg | 34 +++++ .../schultz-family-foundation-logo.svg | 12 ++ .../components/featured_initiative_row.tsx | 143 ++++++++++++++++++ front_end/src/app/(main)/initiatives/data.ts | 16 +- .../app/(main)/initiatives/initiatives.json | 42 ++++- front_end/src/app/(main)/initiatives/page.tsx | 3 +- .../(main)/initiatives/sections/featured.tsx | 37 +++++ front_end/src/app/(main)/initiatives/types.ts | 17 +++ 16 files changed, 392 insertions(+), 14 deletions(-) create mode 100644 front_end/public/images/initiatives/futureeval-featured.png create mode 100644 front_end/public/images/initiatives/labor-hub-featured.png create mode 100644 front_end/public/partners/renaissance-philanthropy-logo.svg create mode 100644 front_end/public/partners/schultz-family-foundation-logo.svg create mode 100644 front_end/src/app/(main)/initiatives/components/featured_initiative_row.tsx create mode 100644 front_end/src/app/(main)/initiatives/sections/featured.tsx diff --git a/front_end/messages/cs.json b/front_end/messages/cs.json index a6061af3a2..ef0e283059 100644 --- a/front_end/messages/cs.json +++ b/front_end/messages/cs.json @@ -2524,5 +2524,20 @@ "initiativeRadiantName": "Radiant", "initiativeRadiantTagline": "Zmapujte budoucnost dřív, než ji postavíte", "initiativeLaborHubName": "Labor Hub", - "initiativeLaborHubTagline": "Budoucnost automatizace práce pomocí AI" + "initiativeLaborHubTagline": "Budoucnost automatizace práce pomocí AI", + "initiativesFeaturedTitle": "Vybrané iniciativy tohoto čtvrtletí", + "initiativesCategoryAI": "AI", + "initiativesCategoryPolicy": "Politika", + "initiativesFeaturedLearnMoreAbout": "Zjistit více o iniciativě {name}", + "initiativesFeaturedPartneringWith": "Ve spolupráci s", + "initiativesBadgeNew": "Nové", + "initiativesPartnerRenaissancePhilanthropy": "Renaissance Philanthropy", + "initiativesPartnerSchultzFamilyFoundation": "Schultz Family Foundation", + "initiativeLaborHubFeatureHeading": "Labor Hub", + "initiativeLaborHubFeatureDescription": "Aktuální předpovědi naší globální prognostické komunity o budoucnosti pracovní síly v USA s postupujícím rozvojem AI.", + "initiativesFeaturedLearnMore": "Zjistit více", + "initiativeFutureEvalFeatureHeading": "FutureEval", + "initiativeFutureEvalFeatureDescription": "FutureEval měří schopnost agentů AI předpovídat budoucí výsledky v různých odvětvích.", + "initiativeMidtermsFeatureHeading": "Přehled voleb v polovině mandátu v USA 2026", + "initiativeMidtermsFeatureDescription": "Předpovědi komunity Metaculus o sporných závodech a politikách, které utvářejí." } diff --git a/front_end/messages/en.json b/front_end/messages/en.json index 13a237ee49..1c03bce576 100644 --- a/front_end/messages/en.json +++ b/front_end/messages/en.json @@ -2513,5 +2513,20 @@ "initiativeRadiantName": "Radiant", "initiativeRadiantTagline": "Map the future before you build it", "initiativeLaborHubName": "Labor Hub", - "initiativeLaborHubTagline": "Future of the AI workforce automation" + "initiativeLaborHubTagline": "Future of the AI workforce automation", + "initiativesFeaturedTitle": "Featured this quarter", + "initiativesCategoryAI": "AI", + "initiativesCategoryPolicy": "Policy", + "initiativesFeaturedLearnMoreAbout": "Learn more about {name}", + "initiativesFeaturedPartneringWith": "Partnering with", + "initiativesBadgeNew": "New", + "initiativesPartnerRenaissancePhilanthropy": "Renaissance Philanthropy", + "initiativesPartnerSchultzFamilyFoundation": "Schultz Family Foundation", + "initiativeLaborHubFeatureHeading": "Labor Hub", + "initiativeLaborHubFeatureDescription": "Real-time forecasts from our global forecasting community on the future of the US workforce as AI advances.", + "initiativesFeaturedLearnMore": "Learn more", + "initiativeFutureEvalFeatureHeading": "FutureEval", + "initiativeFutureEvalFeatureDescription": "FutureEval measures the ability of AI agents to predict future outcomes in various industries.", + "initiativeMidtermsFeatureHeading": "2026 US Midterms Tracker", + "initiativeMidtermsFeatureDescription": "Forecasts from the Metaculus community on contested races and the policies they will shape." } diff --git a/front_end/messages/es.json b/front_end/messages/es.json index e8afc523aa..d3e9535521 100644 --- a/front_end/messages/es.json +++ b/front_end/messages/es.json @@ -2524,5 +2524,20 @@ "initiativeRadiantName": "Radiant", "initiativeRadiantTagline": "Traza el futuro antes de construirlo", "initiativeLaborHubName": "Labor Hub", - "initiativeLaborHubTagline": "El futuro de la automatización laboral con IA" + "initiativeLaborHubTagline": "El futuro de la automatización laboral con IA", + "initiativesFeaturedTitle": "Destacados de este trimestre", + "initiativesCategoryAI": "IA", + "initiativesCategoryPolicy": "Política", + "initiativesFeaturedLearnMoreAbout": "Más información sobre {name}", + "initiativesFeaturedPartneringWith": "En colaboración con", + "initiativesBadgeNew": "Nuevo", + "initiativesPartnerRenaissancePhilanthropy": "Renaissance Philanthropy", + "initiativesPartnerSchultzFamilyFoundation": "Schultz Family Foundation", + "initiativeLaborHubFeatureHeading": "Labor Hub", + "initiativeLaborHubFeatureDescription": "Pronósticos en tiempo real de nuestra comunidad global de pronosticadores sobre el futuro de la fuerza laboral de EE. UU. a medida que avanza la IA.", + "initiativesFeaturedLearnMore": "Más información", + "initiativeFutureEvalFeatureHeading": "FutureEval", + "initiativeFutureEvalFeatureDescription": "FutureEval mide la capacidad de los agentes de IA para predecir resultados futuros en diversos sectores.", + "initiativeMidtermsFeatureHeading": "Seguimiento de las elecciones intermedias de EE. UU. de 2026", + "initiativeMidtermsFeatureDescription": "Pronósticos de la comunidad de Metaculus sobre las contiendas disputadas y las políticas que moldearán el futuro." } diff --git a/front_end/messages/pt.json b/front_end/messages/pt.json index a3c6d2ff0d..4befad73ac 100644 --- a/front_end/messages/pt.json +++ b/front_end/messages/pt.json @@ -2522,5 +2522,20 @@ "initiativeRadiantName": "Radiant", "initiativeRadiantTagline": "Mapeie o futuro antes de construí-lo", "initiativeLaborHubName": "Labor Hub", - "initiativeLaborHubTagline": "O futuro da automação do trabalho com IA" + "initiativeLaborHubTagline": "O futuro da automação do trabalho com IA", + "initiativesFeaturedTitle": "Destaques deste trimestre", + "initiativesCategoryAI": "IA", + "initiativesCategoryPolicy": "Política", + "initiativesFeaturedLearnMoreAbout": "Saiba mais sobre {name}", + "initiativesFeaturedPartneringWith": "Em parceria com", + "initiativesBadgeNew": "Novo", + "initiativesPartnerRenaissancePhilanthropy": "Renaissance Philanthropy", + "initiativesPartnerSchultzFamilyFoundation": "Schultz Family Foundation", + "initiativeLaborHubFeatureHeading": "Labor Hub", + "initiativeLaborHubFeatureDescription": "Previsões em tempo real da nossa comunidade global de previsores sobre o futuro da força de trabalho dos EUA à medida que a IA avança.", + "initiativesFeaturedLearnMore": "Saiba mais", + "initiativeFutureEvalFeatureHeading": "FutureEval", + "initiativeFutureEvalFeatureDescription": "O FutureEval mede a capacidade dos agentes de IA de prever resultados futuros em vários setores.", + "initiativeMidtermsFeatureHeading": "Monitor das eleições de meio de mandato dos EUA de 2026", + "initiativeMidtermsFeatureDescription": "Previsões da comunidade Metaculus sobre as disputas contestadas e as políticas que moldarão." } diff --git a/front_end/messages/zh-TW.json b/front_end/messages/zh-TW.json index b010cb8298..90b150b7f2 100644 --- a/front_end/messages/zh-TW.json +++ b/front_end/messages/zh-TW.json @@ -2521,5 +2521,20 @@ "initiativeRadiantName": "Radiant", "initiativeRadiantTagline": "在建造未來之前先描繪它", "initiativeLaborHubName": "Labor Hub", - "initiativeLaborHubTagline": "AI 勞動力自動化的未來" + "initiativeLaborHubTagline": "AI 勞動力自動化的未來", + "initiativesFeaturedTitle": "本季精選", + "initiativesCategoryAI": "人工智慧", + "initiativesCategoryPolicy": "政策", + "initiativesFeaturedLearnMoreAbout": "進一步了解 {name}", + "initiativesFeaturedPartneringWith": "合作夥伴", + "initiativesBadgeNew": "新", + "initiativesPartnerRenaissancePhilanthropy": "Renaissance Philanthropy", + "initiativesPartnerSchultzFamilyFoundation": "Schultz Family Foundation", + "initiativeLaborHubFeatureHeading": "Labor Hub", + "initiativeLaborHubFeatureDescription": "來自我們全球預測社群的即時預測,關注 AI 發展下美國勞動力的未來。", + "initiativesFeaturedLearnMore": "了解更多", + "initiativeFutureEvalFeatureHeading": "FutureEval", + "initiativeFutureEvalFeatureDescription": "FutureEval 衡量 AI 代理預測各產業未來結果的能力。", + "initiativeMidtermsFeatureHeading": "2026 年美國期中選舉追蹤", + "initiativeMidtermsFeatureDescription": "Metaculus 社群對競爭激烈的選舉以及由此形塑的政策的預測。" } diff --git a/front_end/messages/zh.json b/front_end/messages/zh.json index 7199417eaf..5a672b3269 100644 --- a/front_end/messages/zh.json +++ b/front_end/messages/zh.json @@ -2526,5 +2526,20 @@ "initiativeRadiantName": "Radiant", "initiativeRadiantTagline": "在建造未来之前先描绘它", "initiativeLaborHubName": "Labor Hub", - "initiativeLaborHubTagline": "AI 劳动力自动化的未来" + "initiativeLaborHubTagline": "AI 劳动力自动化的未来", + "initiativesFeaturedTitle": "本季度精选", + "initiativesCategoryAI": "人工智能", + "initiativesCategoryPolicy": "政策", + "initiativesFeaturedLearnMoreAbout": "进一步了解 {name}", + "initiativesFeaturedPartneringWith": "合作伙伴", + "initiativesBadgeNew": "新", + "initiativesPartnerRenaissancePhilanthropy": "Renaissance Philanthropy", + "initiativesPartnerSchultzFamilyFoundation": "Schultz Family Foundation", + "initiativeLaborHubFeatureHeading": "Labor Hub", + "initiativeLaborHubFeatureDescription": "来自我们全球预测社区的实时预测,关注 AI 发展下美国劳动力的未来。", + "initiativesFeaturedLearnMore": "了解更多", + "initiativeFutureEvalFeatureHeading": "FutureEval", + "initiativeFutureEvalFeatureDescription": "FutureEval 衡量 AI 智能体预测各行业未来结果的能力。", + "initiativeMidtermsFeatureHeading": "2026 年美国中期选举追踪", + "initiativeMidtermsFeatureDescription": "Metaculus 社区对竞争激烈的选举以及由此塑造的政策的预测。" } diff --git a/front_end/public/images/initiatives/futureeval-featured.png b/front_end/public/images/initiatives/futureeval-featured.png new file mode 100644 index 0000000000000000000000000000000000000000..4f40e9433c5f69a5f2f085c31258165c09256af0 GIT binary patch literal 89630 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 i!WbAB*g#zzW(L1wMb4|jm!1KNFnGH9xvXy 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 ZHaq?2H*}bpnK9$nt-H1me#ZR%{{X6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/front_end/public/partners/schultz-family-foundation-logo.svg b/front_end/public/partners/schultz-family-foundation-logo.svg new file mode 100644 index 0000000000..6a1c322568 --- /dev/null +++ b/front_end/public/partners/schultz-family-foundation-logo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/front_end/src/app/(main)/initiatives/components/featured_initiative_row.tsx b/front_end/src/app/(main)/initiatives/components/featured_initiative_row.tsx new file mode 100644 index 0000000000..806c360301 --- /dev/null +++ b/front_end/src/app/(main)/initiatives/components/featured_initiative_row.tsx @@ -0,0 +1,143 @@ +import Image from "next/image"; +import { useTranslations } from "next-intl"; +import { FC } from "react"; + +import Button from "@/components/ui/button"; +import cn from "@/utils/core/cn"; + +import { resolveAssetSource } from "../helpers/assets"; +import { FeaturedInitiative } from "../types"; + +type Props = { + initiative: FeaturedInitiative; + artworkSide: "start" | "end"; +}; + +const FeaturedInitiativeRow: FC = ({ initiative, artworkSide }) => { + const t = useTranslations(); + const { feature } = initiative; + const name = t(initiative.nameKey); + const label = + initiative.categoryId === "ai" + ? t("initiativesCategoryAI") + : initiative.categoryId === "policy" + ? t("initiativesCategoryPolicy") + : name; + const artwork = initiative.artwork + ? resolveAssetSource(initiative.artwork) + : null; + + return ( +
+
+ {artwork && ( + + )} +
+ +
+
+ ); +}; + +export default FeaturedInitiativeRow; diff --git a/front_end/src/app/(main)/initiatives/data.ts b/front_end/src/app/(main)/initiatives/data.ts index a3d6abc8c7..94ac39d0c1 100644 --- a/front_end/src/app/(main)/initiatives/data.ts +++ b/front_end/src/app/(main)/initiatives/data.ts @@ -1,5 +1,10 @@ import rawInitiativesPageData from "./initiatives.json"; -import { Initiative, InitiativePlacement, InitiativesPageData } from "./types"; +import { + FeaturedInitiative, + Initiative, + InitiativePlacement, + InitiativesPageData, +} from "./types"; export const initiativesPageData = rawInitiativesPageData as InitiativesPageData; @@ -11,3 +16,12 @@ export function getInitiativesByPlacement( .filter((initiative) => initiative.placements.includes(placement)) .sort((a, b) => a.order - b.order); } + +export function getFeaturedInitiatives(): FeaturedInitiative[] { + return initiativesPageData.initiatives + .filter( + (initiative): initiative is FeaturedInitiative => + initiative.placements.includes("featured") && !!initiative.feature + ) + .sort((a, b) => a.feature.order - b.feature.order); +} diff --git a/front_end/src/app/(main)/initiatives/initiatives.json b/front_end/src/app/(main)/initiatives/initiatives.json index 64287b34d2..3e2f84d483 100644 --- a/front_end/src/app/(main)/initiatives/initiatives.json +++ b/front_end/src/app/(main)/initiatives/initiatives.json @@ -25,18 +25,31 @@ "nameKey": "initiativeFutureEvalName", "taglineKey": "initiativeFutureEvalTagline", "url": "/futureeval/", - "brand": { "color": "#7fa9dc" }, + "artwork": "/images/initiatives/futureeval-featured.png", + "brand": { "color": "#4BA79E" }, + "categoryId": "ai", "order": 1, - "placements": ["hero"] + "placements": ["hero", "featured"], + "feature": { + "order": 1, + "headingKey": "initiativeFutureEvalFeatureHeading", + "descriptionKey": "initiativeFutureEvalFeatureDescription" + } }, { "id": "midterms", "nameKey": "initiativeMidtermsName", "taglineKey": "initiativeMidtermsTagline", "url": "/midterms-2026/", - "brand": { "color": "#b0628f" }, + "brand": { "color": "#2C77B4" }, + "categoryId": "policy", "order": 2, - "placements": ["hero"] + "placements": ["hero", "featured"], + "feature": { + "order": 3, + "headingKey": "initiativeMidtermsFeatureHeading", + "descriptionKey": "initiativeMidtermsFeatureDescription" + } }, { "id": "case-studies", @@ -61,9 +74,26 @@ "nameKey": "initiativeLaborHubName", "taglineKey": "initiativeLaborHubTagline", "url": "/labor-hub/", - "brand": { "color": "#45a48d" }, + "artwork": "/images/initiatives/labor-hub-featured.png", + "brand": { "color": "#AF6994" }, + "categoryId": "ai", "order": 5, - "placements": ["hero"] + "placements": ["hero", "featured"], + "feature": { + "order": 2, + "headingKey": "initiativeLaborHubFeatureHeading", + "descriptionKey": "initiativeLaborHubFeatureDescription", + "partners": [ + { + "logo": "/partners/renaissance-philanthropy-logo.svg", + "nameKey": "initiativesPartnerRenaissancePhilanthropy" + }, + { + "logo": "/partners/schultz-family-foundation-logo.svg", + "nameKey": "initiativesPartnerSchultzFamilyFoundation" + } + ] + } } ] } diff --git a/front_end/src/app/(main)/initiatives/page.tsx b/front_end/src/app/(main)/initiatives/page.tsx index a098962512..be9feeece5 100644 --- a/front_end/src/app/(main)/initiatives/page.tsx +++ b/front_end/src/app/(main)/initiatives/page.tsx @@ -3,6 +3,7 @@ import { getTranslations } from "next-intl/server"; import { ThemeOverrideContainer } from "@/contexts/theme_override_context"; +import FeaturedSection from "./sections/featured"; import HeroSection from "./sections/hero"; export async function generateMetadata(): Promise { @@ -20,8 +21,8 @@ export default function InitiativesPage() {
- +
); diff --git a/front_end/src/app/(main)/initiatives/sections/featured.tsx b/front_end/src/app/(main)/initiatives/sections/featured.tsx new file mode 100644 index 0000000000..be54d2ab23 --- /dev/null +++ b/front_end/src/app/(main)/initiatives/sections/featured.tsx @@ -0,0 +1,37 @@ +import { useTranslations } from "next-intl"; + +import FeaturedInitiativeRow from "../components/featured_initiative_row"; +import { getFeaturedInitiatives } from "../data"; + +const FeaturedSection = () => { + const t = useTranslations(); + const featured = getFeaturedInitiatives(); + + if (featured.length === 0) return null; + + return ( + + ); +}; + +export default FeaturedSection; diff --git a/front_end/src/app/(main)/initiatives/types.ts b/front_end/src/app/(main)/initiatives/types.ts index e861e29bf2..8dd41a5e46 100644 --- a/front_end/src/app/(main)/initiatives/types.ts +++ b/front_end/src/app/(main)/initiatives/types.ts @@ -7,6 +7,20 @@ export type InitiativeBrand = { color: string; }; +export type InitiativePartner = { + logo: string; + nameKey: TranslationKey; + url?: string; +}; + +export type InitiativeFeature = { + order: number; + headingKey: TranslationKey; + descriptionKey: TranslationKey; + badgeKey?: TranslationKey; + partners?: InitiativePartner[]; +}; + export type Initiative = { id: string; nameKey: TranslationKey; @@ -18,8 +32,11 @@ export type Initiative = { categoryId?: string; order: number; placements: InitiativePlacement[]; + feature?: InitiativeFeature; }; +export type FeaturedInitiative = Initiative & { feature: InitiativeFeature }; + export type InitiativesHeroAction = { id: string; labelKey: TranslationKey; From 3fc2f33d1dad11539fb869c6b8608e7109cfee43 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 17 Sep 2026 20:24:59 +0300 Subject: [PATCH 04/11] feat: add optional initiatives testimonials and dark theme --- front_end/messages/cs.json | 3 +- front_end/messages/en.json | 3 +- front_end/messages/es.json | 3 +- front_end/messages/pt.json | 3 +- front_end/messages/zh-TW.json | 3 +- front_end/messages/zh.json | 3 +- .../components/featured_initiative_row.tsx | 20 ++-- .../components/initiative_carousel.tsx | 10 +- .../components/initiatives_testimonials.tsx | 107 ++++++++++++++++++ .../initiatives/helpers/testimonials.ts | 19 ++++ front_end/src/app/(main)/initiatives/page.tsx | 16 +-- .../(main)/initiatives/sections/featured.tsx | 31 ++++- .../app/(main)/initiatives/sections/hero.tsx | 17 +-- front_end/src/app/(main)/initiatives/types.ts | 21 ++++ 14 files changed, 215 insertions(+), 44 deletions(-) create mode 100644 front_end/src/app/(main)/initiatives/components/initiatives_testimonials.tsx create mode 100644 front_end/src/app/(main)/initiatives/helpers/testimonials.ts diff --git a/front_end/messages/cs.json b/front_end/messages/cs.json index ef0e283059..701689a2c4 100644 --- a/front_end/messages/cs.json +++ b/front_end/messages/cs.json @@ -2539,5 +2539,6 @@ "initiativeFutureEvalFeatureHeading": "FutureEval", "initiativeFutureEvalFeatureDescription": "FutureEval měří schopnost agentů AI předpovídat budoucí výsledky v různých odvětvích.", "initiativeMidtermsFeatureHeading": "Přehled voleb v polovině mandátu v USA 2026", - "initiativeMidtermsFeatureDescription": "Předpovědi komunity Metaculus o sporných závodech a politikách, které utvářejí." + "initiativeMidtermsFeatureDescription": "Předpovědi komunity Metaculus o sporných závodech a politikách, které utvářejí.", + "initiativesTestimonialsTitle": "Co říkají naši partneři" } diff --git a/front_end/messages/en.json b/front_end/messages/en.json index 1c03bce576..567e6e2af8 100644 --- a/front_end/messages/en.json +++ b/front_end/messages/en.json @@ -2528,5 +2528,6 @@ "initiativeFutureEvalFeatureHeading": "FutureEval", "initiativeFutureEvalFeatureDescription": "FutureEval measures the ability of AI agents to predict future outcomes in various industries.", "initiativeMidtermsFeatureHeading": "2026 US Midterms Tracker", - "initiativeMidtermsFeatureDescription": "Forecasts from the Metaculus community on contested races and the policies they will shape." + "initiativeMidtermsFeatureDescription": "Forecasts from the Metaculus community on contested races and the policies they will shape.", + "initiativesTestimonialsTitle": "What our partners say" } diff --git a/front_end/messages/es.json b/front_end/messages/es.json index d3e9535521..8719cbfaec 100644 --- a/front_end/messages/es.json +++ b/front_end/messages/es.json @@ -2539,5 +2539,6 @@ "initiativeFutureEvalFeatureHeading": "FutureEval", "initiativeFutureEvalFeatureDescription": "FutureEval mide la capacidad de los agentes de IA para predecir resultados futuros en diversos sectores.", "initiativeMidtermsFeatureHeading": "Seguimiento de las elecciones intermedias de EE. UU. de 2026", - "initiativeMidtermsFeatureDescription": "Pronósticos de la comunidad de Metaculus sobre las contiendas disputadas y las políticas que moldearán el futuro." + "initiativeMidtermsFeatureDescription": "Pronósticos de la comunidad de Metaculus sobre las contiendas disputadas y las políticas que moldearán el futuro.", + "initiativesTestimonialsTitle": "Lo que dicen nuestros socios" } diff --git a/front_end/messages/pt.json b/front_end/messages/pt.json index 4befad73ac..9f635602d2 100644 --- a/front_end/messages/pt.json +++ b/front_end/messages/pt.json @@ -2537,5 +2537,6 @@ "initiativeFutureEvalFeatureHeading": "FutureEval", "initiativeFutureEvalFeatureDescription": "O FutureEval mede a capacidade dos agentes de IA de prever resultados futuros em vários setores.", "initiativeMidtermsFeatureHeading": "Monitor das eleições de meio de mandato dos EUA de 2026", - "initiativeMidtermsFeatureDescription": "Previsões da comunidade Metaculus sobre as disputas contestadas e as políticas que moldarão." + "initiativeMidtermsFeatureDescription": "Previsões da comunidade Metaculus sobre as disputas contestadas e as políticas que moldarão.", + "initiativesTestimonialsTitle": "O que dizem nossos parceiros" } diff --git a/front_end/messages/zh-TW.json b/front_end/messages/zh-TW.json index 90b150b7f2..f24ada8669 100644 --- a/front_end/messages/zh-TW.json +++ b/front_end/messages/zh-TW.json @@ -2536,5 +2536,6 @@ "initiativeFutureEvalFeatureHeading": "FutureEval", "initiativeFutureEvalFeatureDescription": "FutureEval 衡量 AI 代理預測各產業未來結果的能力。", "initiativeMidtermsFeatureHeading": "2026 年美國期中選舉追蹤", - "initiativeMidtermsFeatureDescription": "Metaculus 社群對競爭激烈的選舉以及由此形塑的政策的預測。" + "initiativeMidtermsFeatureDescription": "Metaculus 社群對競爭激烈的選舉以及由此形塑的政策的預測。", + "initiativesTestimonialsTitle": "合作夥伴怎麼說" } diff --git a/front_end/messages/zh.json b/front_end/messages/zh.json index 5a672b3269..fec73ebb23 100644 --- a/front_end/messages/zh.json +++ b/front_end/messages/zh.json @@ -2541,5 +2541,6 @@ "initiativeFutureEvalFeatureHeading": "FutureEval", "initiativeFutureEvalFeatureDescription": "FutureEval 衡量 AI 智能体预测各行业未来结果的能力。", "initiativeMidtermsFeatureHeading": "2026 年美国中期选举追踪", - "initiativeMidtermsFeatureDescription": "Metaculus 社区对竞争激烈的选举以及由此塑造的政策的预测。" + "initiativeMidtermsFeatureDescription": "Metaculus 社区对竞争激烈的选举以及由此塑造的政策的预测。", + "initiativesTestimonialsTitle": "合作伙伴怎么说" } diff --git a/front_end/src/app/(main)/initiatives/components/featured_initiative_row.tsx b/front_end/src/app/(main)/initiatives/components/featured_initiative_row.tsx index 806c360301..5525b7297c 100644 --- a/front_end/src/app/(main)/initiatives/components/featured_initiative_row.tsx +++ b/front_end/src/app/(main)/initiatives/components/featured_initiative_row.tsx @@ -30,7 +30,7 @@ const FeaturedInitiativeRow: FC = ({ initiative, artworkSide }) => { return (
= ({ initiative, artworkSide }) => { : "md:col-start-1 md:row-start-1" )} > -
-

+

+

-

+

{t(feature.headingKey)}

-

+

{t(feature.descriptionKey)}

@@ -91,15 +91,15 @@ const FeaturedInitiativeRow: FC = ({ initiative, artworkSide }) => { variant="secondary" size="sm" aria-label={t("initiativesFeaturedLearnMoreAbout", { name })} - className="h-9 rounded-md border-[rgba(33,48,67,0.40)] bg-transparent px-3.5 py-0 font-semibold leading-[14px] text-blue-900" + className="h-9 rounded-md border-[rgba(33,48,67,0.40)] bg-transparent px-3.5 py-0 font-semibold leading-[14px] text-blue-900 dark:border-blue-500-dark dark:bg-transparent dark:text-blue-900-dark" > {t("initiativesFeaturedLearnMore")}
{feature.partners && feature.partners.length > 0 && ( -
-

+

+

{t("initiativesFeaturedPartneringWith")}

    @@ -112,7 +112,7 @@ const FeaturedInitiativeRow: FC = ({ initiative, artworkSide }) => { alt={t(partner.nameKey)} width={240} height={80} - className="h-8 w-auto opacity-50" + className="h-8 w-auto opacity-50 dark:invert" /> ); diff --git a/front_end/src/app/(main)/initiatives/components/initiative_carousel.tsx b/front_end/src/app/(main)/initiatives/components/initiative_carousel.tsx index 5af837a365..6772447bfa 100644 --- a/front_end/src/app/(main)/initiatives/components/initiative_carousel.tsx +++ b/front_end/src/app/(main)/initiatives/components/initiative_carousel.tsx @@ -53,10 +53,10 @@ const ActiveInitiativeLink: FC = ({ tabIndex={isActive ? undefined : -1} className={`group col-start-1 row-start-1 max-w-xs justify-self-center text-center no-underline ${isActive ? "" : "invisible"}`} > - + {name} - + {t(initiative.taglineKey)}{" "} = ({ })} aria-current={!isRepeat && realIndex === selectedIndex} onClick={() => emblaApi?.scrollTo(index)} - className="block rounded-[22%] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-800 focus-visible:ring-offset-2" + className="block rounded-[22%] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-800 focus-visible:ring-offset-2 dark:focus-visible:ring-blue-800-dark dark:focus-visible:ring-offset-blue-200-dark" > = ({ })}
-
-
+
+
= { + blue: "border-[#2C77B4]", + purple: "border-purple-700 dark:border-purple-700-dark", +}; + +type Props = { + testimonials: TestimonialContent[]; + id?: string; + className?: string; +}; + +const InitiativesTestimonials: FC = ({ + testimonials, + id = "initiatives-testimonials", + className, +}) => { + const t = useTranslations(); + + if (testimonials.length === 0) return null; + + const headingId = `${id}-title`; + + return ( +
+

+

+ +
    + {testimonials.map( + ({ id: testimonialId, quote, author, role, avatar, accent }) => { + const avatarSource = avatar ? resolveAssetSource(avatar) : null; + + return ( +
  • +
    +
    + {quote} +
    + +
    + {avatarSource ? ( + + ) : ( +
    +
    +
  • + ); + } + )} +
+
+ ); +}; + +export default InitiativesTestimonials; diff --git a/front_end/src/app/(main)/initiatives/helpers/testimonials.ts b/front_end/src/app/(main)/initiatives/helpers/testimonials.ts new file mode 100644 index 0000000000..ee90ff3424 --- /dev/null +++ b/front_end/src/app/(main)/initiatives/helpers/testimonials.ts @@ -0,0 +1,19 @@ +import { TranslationKey } from "@/types/translations"; + +import { InitiativesTestimonial, TestimonialContent } from "../types"; + +export function resolveTestimonials( + approved: InitiativesTestimonial[] | undefined, + translate: (key: TranslationKey) => string +): TestimonialContent[] { + return (approved ?? []).map( + ({ id, quoteKey, authorKey, roleKey, avatar, accent }) => ({ + id, + quote: translate(quoteKey), + author: translate(authorKey), + role: translate(roleKey), + avatar, + accent, + }) + ); +} diff --git a/front_end/src/app/(main)/initiatives/page.tsx b/front_end/src/app/(main)/initiatives/page.tsx index be9feeece5..b91df23e3a 100644 --- a/front_end/src/app/(main)/initiatives/page.tsx +++ b/front_end/src/app/(main)/initiatives/page.tsx @@ -1,8 +1,6 @@ import { Metadata } from "next"; import { getTranslations } from "next-intl/server"; -import { ThemeOverrideContainer } from "@/contexts/theme_override_context"; - import FeaturedSection from "./sections/featured"; import HeroSection from "./sections/hero"; @@ -17,13 +15,11 @@ export async function generateMetadata(): Promise { export default function InitiativesPage() { return ( - -
-
- -
- -
-
+
+
+ +
+ +
); } diff --git a/front_end/src/app/(main)/initiatives/sections/featured.tsx b/front_end/src/app/(main)/initiatives/sections/featured.tsx index be54d2ab23..e015e3375c 100644 --- a/front_end/src/app/(main)/initiatives/sections/featured.tsx +++ b/front_end/src/app/(main)/initiatives/sections/featured.tsx @@ -1,7 +1,9 @@ import { useTranslations } from "next-intl"; import FeaturedInitiativeRow from "../components/featured_initiative_row"; -import { getFeaturedInitiatives } from "../data"; +import InitiativesTestimonials from "../components/initiatives_testimonials"; +import { getFeaturedInitiatives, initiativesPageData } from "../data"; +import { resolveTestimonials } from "../helpers/testimonials"; const FeaturedSection = () => { const t = useTranslations(); @@ -9,23 +11,40 @@ const FeaturedSection = () => { if (featured.length === 0) return null; + const testimonials = resolveTestimonials( + initiativesPageData.testimonials, + (key) => t(key) + ); + const leading = featured.slice(0, 2); + const trailing = featured.slice(2); + return (