diff --git a/public/images/cover_logo.png b/public/images/cover_logo.png new file mode 100644 index 0000000..827bfe2 Binary files /dev/null and b/public/images/cover_logo.png differ diff --git a/public/images/csarnok.jpg b/public/images/csarnok.jpg new file mode 100644 index 0000000..813f2db Binary files /dev/null and b/public/images/csarnok.jpg differ diff --git a/public/images/individual_event.png b/public/images/individual_event.png new file mode 100644 index 0000000..4f4de51 Binary files /dev/null and b/public/images/individual_event.png differ diff --git a/public/images/team_event.png b/public/images/team_event.png new file mode 100644 index 0000000..8f74215 Binary files /dev/null and b/public/images/team_event.png differ diff --git a/src/app/app.html b/src/app/app.html index a1c4296..618976a 100644 --- a/src/app/app.html +++ b/src/app/app.html @@ -1,344 +1,9 @@ - - - - - - - - - - +
-
-
- -

Hello, {{ title() }}

-

Congratulations! Your app is running. 🎉

-
- -
-
- @for (item of [ - { title: 'Explore the Docs', link: 'https://angular.dev' }, - { title: 'Learn with Tutorials', link: 'https://angular.dev/tutorials' }, - { title: 'Prompt and best practices for AI', link: 'https://angular.dev/ai/develop-with-ai'}, - { title: 'CLI Docs', link: 'https://angular.dev/tools/cli' }, - { title: 'Angular Language Service', link: 'https://angular.dev/tools/language-service' }, - { title: 'Angular DevTools', link: 'https://angular.dev/tools/devtools' }, - ]; track item.title) { - - {{ item.title }} - - - - - } -
- -
-
+ + + + +
- - - - - - - - - - - diff --git a/src/app/app.ts b/src/app/app.ts index dad7357..bdc22fe 100644 --- a/src/app/app.ts +++ b/src/app/app.ts @@ -1,11 +1,16 @@ import { Component, signal } from '@angular/core'; import { RouterOutlet } from '@angular/router'; +import { Header } from './header/header'; +import { Cover } from './cover/cover'; +import { Welcome } from './welcome/welcome'; +import { TwoEvents } from './two-events/two-events'; +import { Venue } from './venue/venue'; @Component({ selector: 'app-root', - imports: [RouterOutlet], + imports: [RouterOutlet, Header, Cover, Welcome, TwoEvents, Venue], templateUrl: './app.html', - styleUrl: './app.css' + styleUrl: './app.css', }) export class App { protected readonly title = signal('ejc'); diff --git a/src/app/bus/bus.css b/src/app/bus/bus.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/bus/bus.html b/src/app/bus/bus.html new file mode 100644 index 0000000..017768f --- /dev/null +++ b/src/app/bus/bus.html @@ -0,0 +1,10 @@ + + + diff --git a/src/app/bus/bus.spec.ts b/src/app/bus/bus.spec.ts new file mode 100644 index 0000000..1bb7879 --- /dev/null +++ b/src/app/bus/bus.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Bus } from './bus'; + +describe('Bus', () => { + let component: Bus; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Bus], + }).compileComponents(); + + fixture = TestBed.createComponent(Bus); + component = fixture.componentInstance; + await fixture.whenStable(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/bus/bus.ts b/src/app/bus/bus.ts new file mode 100644 index 0000000..01bdcf4 --- /dev/null +++ b/src/app/bus/bus.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-bus', + imports: [], + templateUrl: './bus.html', + styleUrl: './bus.css', +}) +export class Bus {} diff --git a/src/app/car/car.css b/src/app/car/car.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/car/car.html b/src/app/car/car.html new file mode 100644 index 0000000..187ecb6 --- /dev/null +++ b/src/app/car/car.html @@ -0,0 +1,10 @@ + + + diff --git a/src/app/car/car.spec.ts b/src/app/car/car.spec.ts new file mode 100644 index 0000000..5f4c7ec --- /dev/null +++ b/src/app/car/car.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Car } from './car'; + +describe('Car', () => { + let component: Car; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Car], + }).compileComponents(); + + fixture = TestBed.createComponent(Car); + component = fixture.componentInstance; + await fixture.whenStable(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/car/car.ts b/src/app/car/car.ts new file mode 100644 index 0000000..92886ac --- /dev/null +++ b/src/app/car/car.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-car', + imports: [], + templateUrl: './car.html', + styleUrl: './car.css', +}) +export class Car {} diff --git a/src/app/chevron-right/chevron-right.css b/src/app/chevron-right/chevron-right.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/chevron-right/chevron-right.html b/src/app/chevron-right/chevron-right.html new file mode 100644 index 0000000..6741d2c --- /dev/null +++ b/src/app/chevron-right/chevron-right.html @@ -0,0 +1,10 @@ + + + diff --git a/src/app/chevron-right/chevron-right.spec.ts b/src/app/chevron-right/chevron-right.spec.ts new file mode 100644 index 0000000..d3afa89 --- /dev/null +++ b/src/app/chevron-right/chevron-right.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ChevronRight } from './chevron-right'; + +describe('ChevronRight', () => { + let component: ChevronRight; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ChevronRight], + }).compileComponents(); + + fixture = TestBed.createComponent(ChevronRight); + component = fixture.componentInstance; + await fixture.whenStable(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/chevron-right/chevron-right.ts b/src/app/chevron-right/chevron-right.ts new file mode 100644 index 0000000..f3691a2 --- /dev/null +++ b/src/app/chevron-right/chevron-right.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-chevron-right', + imports: [], + templateUrl: './chevron-right.html', + styleUrl: './chevron-right.css', +}) +export class ChevronRight {} diff --git a/src/app/cover/cover.css b/src/app/cover/cover.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/cover/cover.html b/src/app/cover/cover.html new file mode 100644 index 0000000..643a5c6 --- /dev/null +++ b/src/app/cover/cover.html @@ -0,0 +1,11 @@ +
+ EJC2026 logo +
+ 2026 European Junior
Championships +
+
+ 18-27 Augustus 2026 +
+
diff --git a/src/app/cover/cover.spec.ts b/src/app/cover/cover.spec.ts new file mode 100644 index 0000000..cd92fae --- /dev/null +++ b/src/app/cover/cover.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Cover } from './cover'; + +describe('Cover', () => { + let component: Cover; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Cover], + }).compileComponents(); + + fixture = TestBed.createComponent(Cover); + component = fixture.componentInstance; + await fixture.whenStable(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/cover/cover.ts b/src/app/cover/cover.ts new file mode 100644 index 0000000..ad72dad --- /dev/null +++ b/src/app/cover/cover.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-cover', + imports: [], + templateUrl: './cover.html', + styleUrl: './cover.css', +}) +export class Cover {} diff --git a/src/app/header/header.css b/src/app/header/header.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/header/header.html b/src/app/header/header.html new file mode 100644 index 0000000..bec522e --- /dev/null +++ b/src/app/header/header.html @@ -0,0 +1,51 @@ + +
+
logo
+ + + + @if (isMenuOpen) { + + } +
diff --git a/src/app/header/header.spec.ts b/src/app/header/header.spec.ts new file mode 100644 index 0000000..9ef7403 --- /dev/null +++ b/src/app/header/header.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Header } from './header'; + +describe('Header', () => { + let component: Header; + let fixture: ComponentFixture
; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Header], + }).compileComponents(); + + fixture = TestBed.createComponent(Header); + component = fixture.componentInstance; + await fixture.whenStable(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/header/header.ts b/src/app/header/header.ts new file mode 100644 index 0000000..d70a92a --- /dev/null +++ b/src/app/header/header.ts @@ -0,0 +1,37 @@ +import { Component, ElementRef, HostListener, ViewChild } from '@angular/core'; + +@Component({ + selector: 'app-header', + imports: [], + templateUrl: './header.html', + styleUrl: './header.css', +}) +export class Header { + isMenuOpen = false; + + @ViewChild('menuContainer') + menuContainer!: ElementRef; + + toggleMenu(): void { + this.isMenuOpen = !this.isMenuOpen; + } + + closeMenu(): void { + this.isMenuOpen = false; + } + + @HostListener('document:click', ['$event']) + onDocumentClick(event: MouseEvent): void { + if (!this.isMenuOpen) { + return; + } + + const clickedInside = this.menuContainer.nativeElement.contains( + event.target, + ); + + if (!clickedInside) { + this.closeMenu(); + } + } +} diff --git a/src/app/marker/marker.css b/src/app/marker/marker.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/marker/marker.html b/src/app/marker/marker.html new file mode 100644 index 0000000..952803f --- /dev/null +++ b/src/app/marker/marker.html @@ -0,0 +1,10 @@ + + + diff --git a/src/app/marker/marker.spec.ts b/src/app/marker/marker.spec.ts new file mode 100644 index 0000000..19635ac --- /dev/null +++ b/src/app/marker/marker.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Marker } from './marker'; + +describe('Marker', () => { + let component: Marker; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Marker], + }).compileComponents(); + + fixture = TestBed.createComponent(Marker); + component = fixture.componentInstance; + await fixture.whenStable(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/marker/marker.ts b/src/app/marker/marker.ts new file mode 100644 index 0000000..d0bdf53 --- /dev/null +++ b/src/app/marker/marker.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-marker', + imports: [], + templateUrl: './marker.html', + styleUrl: './marker.css', +}) +export class Marker {} diff --git a/src/app/two-events/two-events.css b/src/app/two-events/two-events.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/two-events/two-events.html b/src/app/two-events/two-events.html new file mode 100644 index 0000000..1e966c0 --- /dev/null +++ b/src/app/two-events/two-events.html @@ -0,0 +1,39 @@ +
+
+ Follow the two events! +
+
+ Team Event +
+ 2026 European Junior Team Championships +
+
+ 18-22 Aug 2026 +
+
+
+ More info + +
+
+
+
+ Individual Event +
+ 2026 European Junior Championships +
+
+ 22-27 Aug 2026 +
+
+
+ More info + +
+
+
+
diff --git a/src/app/two-events/two-events.spec.ts b/src/app/two-events/two-events.spec.ts new file mode 100644 index 0000000..8afa788 --- /dev/null +++ b/src/app/two-events/two-events.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TwoEvents } from './two-events'; + +describe('TwoEvents', () => { + let component: TwoEvents; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [TwoEvents], + }).compileComponents(); + + fixture = TestBed.createComponent(TwoEvents); + component = fixture.componentInstance; + await fixture.whenStable(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/two-events/two-events.ts b/src/app/two-events/two-events.ts new file mode 100644 index 0000000..7f4a1e5 --- /dev/null +++ b/src/app/two-events/two-events.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; +import { ChevronRight } from "../chevron-right/chevron-right"; + +@Component({ + selector: 'app-two-events', + imports: [ChevronRight], + templateUrl: './two-events.html', + styleUrl: './two-events.css', +}) +export class TwoEvents {} diff --git a/src/app/venue/venue.css b/src/app/venue/venue.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/venue/venue.html b/src/app/venue/venue.html new file mode 100644 index 0000000..5cefecf --- /dev/null +++ b/src/app/venue/venue.html @@ -0,0 +1,38 @@ +
+ Hall +
Venue
+
+ The Tatabánya Multifunctional Sports Hall is a state-of-the-art indoor + sports arena with a seating capacity of around 6,000, opened in 2022. + Designed to host international and high-level competitions, it offers + versatile facilities suitable for badminton, handball, basketball, + volleyball and other indoor sports, as well as major cultural and sporting + events. +
+
+
+ +
+ 2800 Tatabánya, Olimpikon u. +
+
+
+ +
+ 500 parkingplaces are available +
+
+
+ +
+ Shuttle buses from and to the official hotels +
+
+
+ +
+ The schedule is available on the Sportity app +
+
+
+
diff --git a/src/app/venue/venue.spec.ts b/src/app/venue/venue.spec.ts new file mode 100644 index 0000000..5c61c50 --- /dev/null +++ b/src/app/venue/venue.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Venue } from './venue'; + +describe('Venue', () => { + let component: Venue; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Venue], + }).compileComponents(); + + fixture = TestBed.createComponent(Venue); + component = fixture.componentInstance; + await fixture.whenStable(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/venue/venue.ts b/src/app/venue/venue.ts new file mode 100644 index 0000000..8707ba0 --- /dev/null +++ b/src/app/venue/venue.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { Marker } from '../marker/marker'; +import { Car } from "../car/car"; +import { Bus } from "../bus/bus"; + +@Component({ + selector: 'app-venue', + imports: [Marker, Car, Bus], + templateUrl: './venue.html', + styleUrl: './venue.css', +}) +export class Venue {} diff --git a/src/app/welcome/welcome.css b/src/app/welcome/welcome.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/welcome/welcome.html b/src/app/welcome/welcome.html new file mode 100644 index 0000000..e3d0619 --- /dev/null +++ b/src/app/welcome/welcome.html @@ -0,0 +1,4 @@ +
+ Welcome to the 2026 Europen Junior Championships in Tatabánya, Hungary! +
diff --git a/src/app/welcome/welcome.spec.ts b/src/app/welcome/welcome.spec.ts new file mode 100644 index 0000000..35386ed --- /dev/null +++ b/src/app/welcome/welcome.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Welcome } from './welcome'; + +describe('Welcome', () => { + let component: Welcome; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [Welcome], + }).compileComponents(); + + fixture = TestBed.createComponent(Welcome); + component = fixture.componentInstance; + await fixture.whenStable(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/welcome/welcome.ts b/src/app/welcome/welcome.ts new file mode 100644 index 0000000..f5245f2 --- /dev/null +++ b/src/app/welcome/welcome.ts @@ -0,0 +1,9 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-welcome', + imports: [], + templateUrl: './welcome.html', + styleUrl: './welcome.css', +}) +export class Welcome {} diff --git a/src/styles.css b/src/styles.css index 70d3686..11cd1ac 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1,3 +1,21 @@ /* You can add global styles to this file, and also import other style files */ @import 'tailwindcss'; + +@import '@fontsource/inter'; +@import "@fontsource/inter/800.css"; + +@theme { + --breakpoint-xs: 30rem; + + --color-ejc-blue: #153255; + --color-ejc-yellow: #ffd24f; + --color-ejc-dark-blue: #111c4e; + --color-ejc-orange: #efab46; + --color-ejc-light-blue: #3d4985; + --color-ejc-dark: #011111; + + --font-sans: + 'Inter', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', + 'Segoe UI Symbol', 'Noto Color Emoji'; +}