Skip to content
Open
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,145 @@
import React, {JSX, ReactNode} from 'react';
import { Card, CardContent } from '@/components/ui/card';
import { PageHeader } from '@/components/common/PageHeader';
Comment on lines +1 to +3
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

React and JSX are imported but not used. This is likely to trigger lint/TS unused import errors; consider importing only ReactNode (or nothing, if your TS/JSX runtime doesn’t require React in scope).

Suggested change
import React, {JSX, ReactNode} from 'react';
import { Card, CardContent } from '@/components/ui/card';
import { PageHeader } from '@/components/common/PageHeader';
import type { ReactNode } from 'react';
import { Card, CardContent } from '@/components/ui/card';

Copilot uses AI. Check for mistakes.
import { parseFormattedText } from '@/utils/emailKatt-felkover'; //todo merge masik branchrol h letezzen a fuggveny
Comment on lines +1 to +4
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@/utils/emailKatt-felkover does not exist in this branch (and the comment indicates it is expected from another branch). This will break the build. Please add the missing utility in this PR or switch to an existing formatting utility used elsewhere in the repo.

Copilot uses AI. Check for mistakes.

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">
<PageHeader title={content.title} />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mozgasd át ezt a page.tsx fájlba, oda jobban illik.


{/* 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-disc pl-5 space-y-1">
{content.condition.items.map((item, i) => (
<li key={i}>{parseFormattedText(item)}</li>
))}
</ol>
Comment on lines +90 to +94
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This list is rendered as an <ol> but styled with list-disc (bullets), which is inconsistent semantics. Use <ul> for a bulleted list, or change the styling to list-decimal if the order matters.

Suggested change
<ol className="list-disc pl-5 space-y-1">
{content.condition.items.map((item, i) => (
<li key={i}>{parseFormattedText(item)}</li>
))}
</ol>
<ul className="list-disc pl-5 space-y-1">
{content.condition.items.map((item, i) => (
<li key={i}>{parseFormattedText(item)}</li>
))}
</ul>

Copilot uses AI. Check for mistakes.
<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>
);
}
24 changes: 24 additions & 0 deletions src/app/(app)/[lang]/sport/sportpalyaTamogatas/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { getDictionary } from '@/get-dictionary';
import type { Locale } from '@/i18n-config';
import { PageHeader } from '@/components/common/PageHeader';
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PageHeader is imported but never used in this page component, which will fail lint/TS checks in setups that enforce no-unused-vars. Remove the unused import or render the header here (and remove it from the child component) to keep a single source of truth.

Suggested change
import { PageHeader } from '@/components/common/PageHeader';

Copilot uses AI. Check for mistakes.
import SportteremContent from './components/GymSupportContent';
type SportteremIgenylesPageProps = {
params: Promise<{ lang: Locale }>;
};
export default async function SportteremIgenylesPage({
params,
}: SportteremIgenylesPageProps) {
const { lang } = await params;
const dictionary = await getDictionary(lang);
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">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ezt nem teljesen értem miért kell. Valamint ettől a tag-től más lesz az oldal tetején a layout mint a többi oldalon. Ezt töröld ki.

<SportteremContent
Comment on lines +4 to +17
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The component/page/type names here refer to "Sportterem igénylés" (gym booking), but this route renders the sports field support page (dictionary.sport.sportpalyaTamogatas). Please rename the props type, page function, and local component variable to match the actual page purpose to avoid confusion and incorrect future refactors.

Suggested change
import SportteremContent from './components/GymSupportContent';
type SportteremIgenylesPageProps = {
params: Promise<{ lang: Locale }>;
};
export default async function SportteremIgenylesPage({
params,
}: SportteremIgenylesPageProps) {
const { lang } = await params;
const dictionary = await getDictionary(lang);
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">
<SportteremContent
import SportpalyaTamogatasContent from './components/GymSupportContent';
type SportpalyaTamogatasPageProps = {
params: Promise<{ lang: Locale }>;
};
export default async function SportpalyaTamogatasPage({
params,
}: SportpalyaTamogatasPageProps) {
const { lang } = await params;
const dictionary = await getDictionary(lang);
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">
<SportpalyaTamogatasContent

Copilot uses AI. Check for mistakes.
content={dictionary.sport.sportpalyaTamogatas}
/>
</main>
</div>
</div>
);
}
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 @@ -149,7 +149,7 @@ export function getNavigationItems(lang: string): NavigationItem[] {
"Sportpálya támogatás pályázat",
"Sports field subsidy application"
),
href: "#",
href: link("/sport/sportpalya-tamogatas"),
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The navigation href points to /sport/sportpalya-tamogatas, but the new route directory is sport/sportpalyaTamogatas (camelCase). This will 404 at runtime. Please align the path by either renaming the folder to sportpalya-tamogatas (consistent with other routes) or updating the href to match the actual segment.

Suggested change
href: link("/sport/sportpalya-tamogatas"),
href: link("/sport/sportpalyaTamogatas"),

Copilot uses AI. Check for mistakes.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Jól észrevette a copilot hogy nem jó link viszont legyen ez az url: /sport/sportpalya-tamogatas, hogy ezzel működjön át kell írni a mappa nevét erre: sportpalya-tamogatas. És akkor maradhat ez a navigation-items-ben:
href: link("/sport/sportpalya-tamogatas"),

targetBlank: false,
},
{
Expand Down
38 changes: 38 additions & 0 deletions src/dictionaries/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,44 @@
"eszb_website": "ESZB website"
}
},
"sport": {
"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.",
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Markdown bold formatting has an extra space before the closing ** in **University Student Council (EHK) **, which can render oddly depending on the formatter. Consider changing it to **University Student Council (EHK)**.

Suggested change
"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.",
"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.",

Copilot uses AI. Check for mistakes.
"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)."]
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This sentence is incomplete/awkward in English ("You can apply not only for sports activities carried out at BME sports facilities ..."). It reads like it’s missing the "but also elsewhere" part that exists in the HU version, so EN users may misunderstand the eligibility. Please revise the EN translation to match the HU meaning.

Suggested change
"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)."]
"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."]

Copilot uses AI. Check for mistakes.
},
"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 Hungarian Academy of Sciences. The main criteria are:",
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This text says the applications are evaluated "in cooperation with the Hungarian Academy of Sciences", but the Hungarian version states cooperation with EHK. This looks like an incorrect translation that will show wrong information to users; please correct the organization name in the EN dictionary entry.

Suggested change
"description": "The applications are evaluated by the BME Physical Education Center in cooperation with the Hungarian Academy of Sciences. The main criteria are:",
"description": "The applications are evaluated by the BME Physical Education Center in cooperation with the University Student Council (EHK). The main criteria are:",

Copilot uses AI. Check for mistakes.
"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: 37 additions & 0 deletions src/dictionaries/hu.json
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,43 @@
"eszb_website": "ESZB honlapja"
}
},
"sport": {
"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