feat(homepage): add mod manager section and related content

- Introduced new strings for the mod manager feature in the English localization file.
- Updated the homepage to include a dedicated section for the GregModManager, featuring a description, download link, and hints for the latest release.
- Adjusted button styles for better consistency and user experience.

This commit enhances the homepage by providing users with direct access to the mod manager and its functionalities.
This commit is contained in:
Marvin
2026-04-10 03:26:13 +02:00
parent 3b245ee966
commit 8ad5acafda
7 changed files with 142 additions and 25 deletions

View File

@@ -9,6 +9,13 @@ export const en: HomepageContent = {
heroSub2: 'Technical reference for authors lives under Developers in the wiki.',
ctaStart: 'HELP FOR PLAYERS',
ctaMods: 'MOD CATALOG',
ctaModManager: 'DOWNLOAD MOD MANAGER',
modManagerSectionTitle: 'GregModManager',
modManagerSectionBody:
'The Gregtools desktop app for Workshop browsing, uploads, dependency checks, and project metadata. Builds are published on GitHub — use the button below to open the latest release (the URL always tracks the newest version).',
modManagerDownloadLabel: 'Download latest release',
modManagerLatestHint:
'Uses GitHubs /releases/latest redirect so you always land on the current release assets.',
docsPaths: 'Documentation paths',
featureTitles: ['Play with mods', 'Workshop & updates', 'Clear docs', 'Community'],
featureDescriptions: [

View File

@@ -16,6 +16,11 @@ export type HomepageContent = {
heroSub2: string;
ctaStart: string;
ctaMods: string;
ctaModManager: string;
modManagerSectionTitle: string;
modManagerSectionBody: string;
modManagerDownloadLabel: string;
modManagerLatestHint: string;
knowledgeSectionTitle: string;
workflowSectionTitle: string;
codeSectionTitle: string;

View File

@@ -5,7 +5,18 @@ import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import {motion, type Variants, useReducedMotion} from 'framer-motion';
import {getHomepageContent} from '../i18n/homepage';
import gregImage from '../image.png';
import {FaArrowUpRightFromSquare, FaDiscord, FaGithub, FaLifeRing, FaShop} from 'react-icons/fa6';
import {
FaArrowUpRightFromSquare,
FaDiscord,
FaDownload,
FaGithub,
FaLifeRing,
FaShop,
} from 'react-icons/fa6';
/** Always resolves to the newest GitHub release (redirect). */
const GREG_MODMANAGER_LATEST =
'https://github.com/mleem97/GregToolsModmanager/releases/latest';
const viewport = {once: true, margin: '-90px'};
@@ -130,7 +141,7 @@ export default function HomePage(): JSX.Element {
</motion.p>
<motion.div
className="flex flex-wrap items-center justify-center gap-4"
className="flex flex-wrap items-center justify-center gap-3 sm:gap-4"
initial="hidden"
whileInView="show"
viewport={viewport}
@@ -139,13 +150,22 @@ export default function HomePage(): JSX.Element {
>
<Link
to="/wiki/guides/players/overview"
className="btn-primary hero-glow rounded-lg px-10 py-4 text-lg"
className="btn-primary hero-glow rounded-lg px-8 py-4 text-lg md:px-10"
>
{t.ctaStart}
</Link>
<Link to="/mods" className="btn-outline rounded-lg px-10 py-4 text-lg">
<Link to="/mods" className="btn-outline rounded-lg px-8 py-4 text-lg md:px-10">
{t.ctaMods}
</Link>
<a
href={GREG_MODMANAGER_LATEST}
target="_blank"
rel="noopener noreferrer"
className="btn-outline inline-flex items-center justify-center gap-2 rounded-lg border-primary/35 px-8 py-4 text-lg text-on-surface hover:border-primary md:px-10"
>
<FaDownload className="text-lg" aria-hidden />
{t.ctaModManager}
</a>
</motion.div>
</section>
@@ -226,6 +246,43 @@ export default function HomePage(): JSX.Element {
</motion.div>
</motion.section>
<motion.section
id="greg-modmanager"
className="px-4 py-20"
initial="hidden"
whileInView="show"
viewport={viewport}
variants={variants.section}
>
<div className="relative mx-auto max-w-4xl overflow-hidden rounded-3xl border border-outline-variant/20 bg-gradient-to-br from-surface-container-high to-surface-container p-10 text-center md:p-14">
<div
className="absolute -right-16 -top-20 h-56 w-56 rounded-full bg-secondary/10 blur-[90px]"
aria-hidden
/>
<div className="relative z-10">
<span className="material-symbols-outlined mb-4 text-5xl text-primary" aria-hidden>
download_for_offline
</span>
<h2 className="mb-4 font-headline text-3xl font-bold text-on-surface md:text-4xl">
{t.modManagerSectionTitle}
</h2>
<p className="mx-auto mb-8 max-w-2xl text-lg leading-relaxed text-on-surface-variant">
{t.modManagerSectionBody}
</p>
<a
href={GREG_MODMANAGER_LATEST}
target="_blank"
rel="noopener noreferrer"
className="btn-primary hero-glow mb-4 inline-flex items-center gap-2 rounded-lg px-10 py-4 text-lg"
>
<FaDownload className="text-xl" aria-hidden />
{t.modManagerDownloadLabel}
</a>
<p className="text-sm text-on-surface-variant/90">{t.modManagerLatestHint}</p>
</div>
</div>
</motion.section>
<motion.section
id="code"
className="section-surface-alt px-4 py-24"