Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
import React, {ReactNode} from 'react';
import { Card, CardContent } from '@/components/ui/card';
import { parseFormattedText } from '@/utils/parseFormattedText';

interface SportpalyaTamogatasContentData {
title: string;
description: string;
application: {
title: string;
description: string
};
period: {
title: string;
items: string[]
};
condition: {
title: string;
intro: string;
items: string[];
outro: string
};
selection: {
title: string;
description: string;
items: string[]
};
result: {
title: string;
items: string[]
};

footer: string;
}

export default function SportpalyaTamogatasContent({ content }: { content: SportpalyaTamogatasContentData }) {
return (
<div className="flex flex-col gap-4 md:gap-6 lg:px-4 px-2 py-8">
{/* Introduction */}
<Card className="group hover:shadow-md transition-all duration-300">
<CardContent className="p-3 md:p-6">
<div className="flex flex-col gap-2 md:gap-3">
<Paragraph>
{parseFormattedText(content.description)}
</Paragraph>
</div>
</CardContent>
</Card>

{/* Application */}
<Card className="group hover:shadow-md transition-all duration-300">
<CardContent className="p-3 md:p-6">
<div className="flex flex-col gap-2 md:gap-3">
<h3 className="font-bold text-xl leading-tight text-gray-900 group-hover:text-[#862633] transition-colors">
{content.application.title}
</h3>
<Paragraph>{parseFormattedText(content.application.description)}</Paragraph>
</div>
</CardContent>
</Card>

{/* Support Period and Location */}
<Card className="group hover:shadow-md transition-all duration-300">
<CardContent className="p-3 md:p-6">
<div className="flex flex-col gap-2 md:gap-3">
<h3 className="font-bold text-xl leading-tight text-gray-900 group-hover:text-[#862633] transition-colors">
{content.period.title}
</h3>
<div className="space-y-2 text-gray-700">
<ul className="list-disc pl-5 space-y-2">
{content.period.items.map((item, i) => (
<li key={i}>{parseFormattedText(item)}</li>
))}
</ul>
</div>
</div>
</CardContent>
</Card>

{/* Conditions */}
<Card className="group hover:shadow-md transition-all duration-300">
<CardContent className="p-3 md:p-6">
<div className="flex flex-col gap-2 md:gap-3">
<h3 className="font-bold text-xl leading-tight text-gray-900 group-hover:text-[#862633] transition-colors">
{content.condition.title}
</h3>
<p>{parseFormattedText(content.condition.intro)}</p>
<ol className="list-decimal pl-5 space-y-1">
{content.condition.items.map((item, i) => (
<li key={i}>{parseFormattedText(item)}</li>
))}
</ol>
<div className="mt-4 p-3 bg-gray-50 rounded-lg border border-gray-100 text-sm font-semibold">
{parseFormattedText(content.condition.outro)}
</div>
</div>
</CardContent>
</Card>

{/* Selection */}
<Card className="group hover:shadow-md transition-all duration-300">
<CardContent className="p-3 md:p-6">
<div className="flex flex-col gap-2 md:gap-3">
<h3 className="font-bold text-xl leading-tight text-gray-900 group-hover:text-[#862633] transition-colors">
{content.selection.title}
</h3>
<Paragraph>{parseFormattedText(content.selection.description)}</Paragraph>
<ul className="list-disc pl-5 space-y-1">
{content.selection.items.map((item, i) => (
<li key={i}>{parseFormattedText(item)}</li>
))}
</ul>
</div>
</CardContent>
</Card>

{/* Result */}
<Card className="group hover:shadow-md transition-all duration-300">
<CardContent className="p-3 md:p-6">
<div className="flex flex-col gap-2 md:gap-3">
<h3 className="font-bold text-xl leading-tight text-gray-900 group-hover:text-[#862633] transition-colors">
{content.result.title}
</h3>
<ul className="list-disc pl-5 space-y-1">
{content.result.items.map((item, i) => (
<li key={i}>{parseFormattedText(item)}</li>
))}
</ul>
</div>
</CardContent>
</Card>
<p className="text-center text-sm text-gray-400 italic mt-4">{parseFormattedText(content.footer)}</p>
</div>
);
};

function Paragraph({ children }: { children: ReactNode }) {
return (
<div className="prose max-w-none text-gray-700 richtext">
<p>{children}</p>
</div>
);
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { getDictionary } from '@/get-dictionary';
import type { Locale } from '@/i18n-config';
import { PageHeader } from '@/components/common/PageHeader';
import GymSupportContent from './components/GymSupportContent';
import { PageHeader } from '@/components/common/PageHeader';
type SportpalyaTamogatasPageProps = {
params: Promise<{ lang: Locale }>;
};
Expand All @@ -13,11 +13,10 @@ export default async function SportpalyaTamogatasPage({
return (
<div className="min-h-screen bg-gray-50">
<div className="container mx-auto px-4 py-8">
<main className="container mx-auto py-10 px-4">
<PageHeader title={dictionary.sport.sportpalyaTamogatas.title} />
<GymSupportContent
content={dictionary.sport.sportpalyaTamogatas}
/>
</main>
</div>
</div>
);
Expand Down
2 changes: 1 addition & 1 deletion src/app/(app)/components/navigation-items.ts
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ export function getNavigationItems(lang: string): NavigationItem[] {
"Sportpálya támogatás pályázat",
"Sports field subsidy application"
),
href: link("/sport/sportpalya-tamogatas-palyazat"),
href: link("/sport/sportpalya-tamogatas"),
targetBlank: false,
},
{
Expand Down
38 changes: 37 additions & 1 deletion src/dictionaries/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -277,9 +277,45 @@
"description": "In case of questions: **bmesport@umsz.bme.hu**"
},
"footer": "*Accurate information is always contained in the call for applications published for the specific semester."
},

"sportpalyaTamogatas": {
"title": "Sports Field Support Application",
"description": "The **Budapest University of Technology and Economics Physical Education Center** and the **University Student Council (EHK)** are announcing a joint application to support the rental of a sports field for **BME student teams**. Our goal is to support regular sports activities among the university's citizens.",
"application": {
"title": "Who can apply?",
"description": "Any team that has **at least 80%** of its members in the given semester as full-time students with an active student status at BME can participate in the competition."
},
"period": {
"title": "The Period and Location of the Support",
"items": ["The support applies to **a semester** (fall or spring semester) of the given academic year.",
"You can apply not only for sports activities carried out at BME sports facilities (BME Sports Center, Bogdánfy Street Sports Complex, Kármán Tódor Dormitory, Bercsényi 28-30 Dormitory), but also for sports activities held at other external venues."]
},
"condition": {
"title": "Application Conditions and Submission",
"intro": "An application is valid if the team:",
"items": ["Complete and submit the **member list** published as an attachment to the application on time.",
"Complete and submit **the application form attached** to the application on time."],
"outro": "The application is submitted **electronically**, and the completed attachments must be sent to the email address **info@bmeehk.hu** by the deadline set in the schedule published on the EHK website."
},
"selection": {
"title": "Judging Criteria",
"description": "The applications are evaluated by the BME Physical Education Center in cooperation with the University Student Council (EHK). The main criteria are:",
"items": ["The team should regularly mobilize **as many people as possible** with the support required.",
"The team's **achievements in the last 2 years**.",
"The **proportion of full-time, active BME students** in the team."]
},
"result": {
"title": "Result and Remedy",
"items": ["The EHK will publish the final result **on its website** by the deadline set in the application schedule.",
"We are unable to accept applications that do not comply with the announcement (in terms of form or content) or that are submitted after the deadline.",
"In the event of an application with false content, the team may be punished by exclusion and disciplinary proceedings may also be initiated.",
"Questions about the application and any intention to object to the evaluation can be sent to the e-mail address **info@bmeehk.hu**."
]
},
"footer": "*Exact information is always included in the application announced for the given semester."
}
},

"language_education": {
"title": "Language Education",
"info_box": {
Expand Down
37 changes: 36 additions & 1 deletion src/dictionaries/hu.json
Original file line number Diff line number Diff line change
Expand Up @@ -277,9 +277,44 @@
"description": "Bármilyen felmerülő kérdéssel forduljanak a BME Üzemeltető és Műszaki Szolgáltató Kft. (BME ÜMSZ Kft.) Sport Divíziójához a **bmesport@umsz.bme.hu** e-mail címen."
},
"footer": "*A pontos információkat mindig az adott félévben kiírt pályázat tartalmazza."
},

"sportpalyaTamogatas": {
"title": "Sportpálya Támogatás Pályázat",
"description": "A **Budapesti Műszaki és Gazdaságtudományi Egyetem Testnevelési Központ** és az **Egyetemi Hallgatói Képviselet (EHK)** közös pályázatot hirdet a **BME hallgatói csapatok** sportpálya bérlésének támogatására. Célunk, hogy támogassuk a rendszeres sporttevékenységet az egyetem polgárai körében.",
"application": {
"title": "Kik Pályázhatnak?",
"description": "Pályázaton részt vehet minden olyan csapat, amelynek **legalább 80%-a** az adott félévben, a BME nappali tagozatos, aktív hallgatói jogviszonnyal rendelkező hallgatója."
},
"period": {
"title": "A Támogatás Időszaka és Helyszíne",
"items": ["A támogatás az adott tanév **egy szemeszterére** (őszi vagy tavaszi félév) vonatkozik.",
"Pályázni nem csak a BME sportlétesítményeiben (BME Sportközpont, Bogdánfy utcai Sporttelep, Kármán Tódor Kollégium, Bercsényi 28-30 Kollégium) végzett sporttevékenységgel lehet."]
},
"condition": {
"title": "Pályázati Feltételek és Benyújtás",
"intro": "A pályázat akkor érvényes, ha a csapat:",
"items": ["Hiánytalanul kitölti és időben elküldi a pályázat mellékleteként közzétett **taglistát**.",
"Hiánytalanul kitölti és időben elküldi a pályázat mellékleteként közzétett **igénylőlapot.**"],
"outro": "A pályázás **elektronikus formában** történik, a kitöltött mellékleteket az EHK honlapján közzétett ütemezésben rögzített időpontig kell elküldeni az **info@bmeehk.hu** e-mail címre."
},
"selection": {
"title": "Bírálási Szempontok",
"description": "A pályázatok elbírálását a BME Testnevelési Központ az EHK-val együttműködésben végzi. A legfőbb szempontok:",
"items": ["A csapat **minél több embert mozgasson meg rendszeresen** az igényelt támogatás segítségével.",
"A csapat **elért eredményei az elmúlt 2 évben**.",
"A **BME nappali tagozatos, aktív hallgatói aránya** a csapatban."]
},
"result": {
"title": "Eredmény és Jogorvoslat",
"items": ["A végleges eredményt az EHK a pályázati ütemezésben rögzített határidőig a **saját honlapján** teszi közzé.",
"A kiírásnak (formai vagy tartalmi) meg nem felelő, vagy a határidő után benyújtott pályázatokat nem áll módunkban elfogadni.",
"Valótlan tartalmú pályázat esetén a csapat kizárással büntethető, és fegyelmi eljárás is kezdeményezhető.",
"A pályázattal kapcsolatos kérdéseket és a felszólalási szándékot az elbírálás ellen az **info@bmeehk.hu** e-mail címen lehet jelezni."]
},
"footer": "*A pontos információkat mindig az adott félévben kiírt pályázat tartalmazza."
}
},

"language_education": {
"title": "Nyelvoktatás",
"info_box": {
Expand Down