diff --git a/angular.json b/angular.json index f6d2af4..266edb7 100644 --- a/angular.json +++ b/angular.json @@ -26,13 +26,8 @@ "assets": [ { "glob": "**/*", - "input": "src/assets/optimized", - "output": "assets/optimized" - }, - { - "glob": "**/*", - "input": "src/assets/logos", - "output": "assets/logos" + "input": "src/assets", + "output": "assets" }, { "glob": "**/*", @@ -113,13 +108,8 @@ "assets": [ { "glob": "**/*", - "input": "src/assets/optimized", - "output": "assets/optimized" - }, - { - "glob": "**/*", - "input": "src/assets/logos", - "output": "assets/logos" + "input": "src/assets", + "output": "assets" }, { "glob": "**/*", diff --git a/package.json b/package.json index 7d78b46..1ae918b 100644 --- a/package.json +++ b/package.json @@ -24,11 +24,10 @@ "check": "npm run build && npm run lint && npm run format:check && npm run version:check && npm run text:check", "fix": "npm run version:place && npm run lint:fix && npm run text:fix && npm run format", "------ BUILD": "", - "clean": "del-cli dist", "generate:static-files": "node scripts/generate-static-files.cjs", "generate:assets": "npm run generate:static-files", "compress:assets": "node scripts/compress-assets.cjs", - "build": "npm run clean && npm run generate:assets && ng build --configuration production && npm run compress:assets && node scripts/copy-static-root-files.cjs", + "build": "npm run generate:assets && ng build --configuration production && npm run compress:assets && node scripts/copy-static-root-files.cjs", "------ STARTUP": "", "test": "ng test", "dev": "npm run generate:assets && ng serve", diff --git a/src/app/app.config.ts b/src/app/app.config.ts index 71c2a7b..2de7dd7 100644 --- a/src/app/app.config.ts +++ b/src/app/app.config.ts @@ -1,7 +1,7 @@ import type { ApplicationConfig } from '@angular/core'; -import { provideZoneChangeDetection } from '@angular/core'; +import { importProvidersFrom, provideZoneChangeDetection } from '@angular/core'; import { provideRouter, withInMemoryScrolling } from '@angular/router'; -import { provideClientHydration, withEventReplay } from '@angular/platform-browser'; +import { BrowserModule, provideClientHydration, withEventReplay } from '@angular/platform-browser'; import { routes } from './app.routes'; @@ -16,5 +16,6 @@ export const appConfig: ApplicationConfig = { }), ), provideClientHydration(withEventReplay()), + importProvidersFrom(BrowserModule), ], }; diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index 51fa04d..8d83b3d 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -1,17 +1,10 @@ import type { Routes } from '@angular/router'; +import { HomeComponent } from './home/home.component'; +import { ImprintComponent } from './imprint/imprint.component'; + export const routes: Routes = [ - { - path: '', - loadComponent: async () => - (await import('./home/home.component')).HomeComponent, - pathMatch: 'full', - }, - { - path: 'imprint', - loadComponent: async () => - (await import('./imprint/imprint.component')).ImprintComponent, - pathMatch: 'full', - }, + { path: '', component: HomeComponent, pathMatch: 'full' }, + { path: 'imprint', component: ImprintComponent, pathMatch: 'full' }, { path: '**', redirectTo: '' }, ]; diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html index 3b3d176..0a157c5 100644 --- a/src/app/home/home.component.html +++ b/src/app/home/home.component.html @@ -64,28 +64,13 @@ [title]="portraitHighlights.length > 1 ? 'Show next image' : 'Single image'" >
- - - - - + @if (currentPortraitHighlightIndex === 0) { Click me! } @@ -163,11 +148,7 @@ class="project-icon" [class.project-icon-circle]="project.CircleIcon !== false" [src]="project.icon" - [attr.width]="project.iconWidth ?? 108" - [attr.height]="project.iconHeight ?? 108" [alt]="project.title + ' icon'" - loading="lazy" - decoding="async" /> } diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts index b9a202c..a1d7528 100644 --- a/src/app/home/home.component.ts +++ b/src/app/home/home.component.ts @@ -22,6 +22,7 @@ import { FooterComponent } from '../footer/footer.component'; export class HomeComponent implements OnInit, AfterViewInit, OnDestroy { private readonly sanitizer = inject(DomSanitizer); private readonly zone = inject(NgZone); + private preloadedImages: HTMLImageElement[] = []; private tallestPortraitAspectRatio: number | null = null; private lockedHeroSectionMinHeight: number = 0; private projectEntryObserver: IntersectionObserver | null = null; @@ -81,7 +82,7 @@ export class HomeComponent implements OnInit, AfterViewInit, OnDestroy { } ngOnInit(): void { - this.initPortraitAspectRatio(); + this.preloadImageAssets(); this.initNameGradientScrollAnimation(); this.zone.runOutsideAngular((): void => { @@ -180,21 +181,88 @@ export class HomeComponent implements OnInit, AfterViewInit, OnDestroy { this.scrollToElementById('contact-links', this.getResponsiveScrollOffset(0.05)); } - private initPortraitAspectRatio(): void { - const minAspectRatio: number = this.portraitHighlights.reduce( - (minRatio: number, highlight: PortraitHighlight): number => { - if (highlight.width <= 0 || highlight.height <= 0) { - return minRatio; - } + private preloadImageAssets(): void { + if (typeof window === 'undefined') { + return; + } - const currentRatio: number = highlight.width / highlight.height; - return minRatio === 0 ? currentRatio : Math.min(minRatio, currentRatio); - }, - 0, + const projectIcons: string[] = this.projects + .map((project: PortfolioProject): string | undefined => project.icon) + .filter((icon: string | undefined): icon is string => Boolean(icon)); + + const uniqueImageUrls: string[] = Array.from( + new Set([ + ...this.portraitHighlights.map((highlight: PortraitHighlight): string => highlight.image), + ...projectIcons, + ]), ); - if (minAspectRatio > 0) { - this.tallestPortraitAspectRatio = minAspectRatio; + this.preloadedImages = uniqueImageUrls.map((url: string): HTMLImageElement => { + const image = new Image(); + image.decoding = 'async'; + image.loading = 'eager'; + image.src = url; + return image; + }); + + this.syncHeroHeightToLargestPortraitImage(); + } + + private syncHeroHeightToLargestPortraitImage(): void { + if (typeof window === 'undefined') { + return; + } + + const portraitImageUrls: Set = new Set( + this.portraitHighlights.map( + (highlight: PortraitHighlight): string => + new URL(highlight.image, window.location.href).href, + ), + ); + + const portraitImages: HTMLImageElement[] = this.preloadedImages.filter( + (image: HTMLImageElement): boolean => portraitImageUrls.has(image.src), + ); + + if (portraitImages.length === 0) { + return; + } + + const finalizeAspectRatio = (): void => { + const minAspectRatio: number = portraitImages.reduce( + (minRatio: number, image: HTMLImageElement): number => { + if (image.naturalWidth === 0 || image.naturalHeight === 0) { + return minRatio; + } + + const currentRatio: number = image.naturalWidth / image.naturalHeight; + return minRatio === 0 ? currentRatio : Math.min(minRatio, currentRatio); + }, + 0, + ); + + if (minAspectRatio > 0) { + this.tallestPortraitAspectRatio = minAspectRatio; + this.scheduleHeroSectionHeightUpdate(); + } + }; + + let pendingLoads: number = portraitImages.length; + const onImageSettled = (): void => { + pendingLoads -= 1; + if (pendingLoads === 0) { + finalizeAspectRatio(); + } + }; + + for (const image of portraitImages) { + if (image.complete) { + onImageSettled(); + continue; + } + + image.addEventListener('load', onImageSettled, { once: true }); + image.addEventListener('error', onImageSettled, { once: true }); } } diff --git a/src/assets/logos/synhost-dark.png b/src/assets/logos/synhost-dark.png deleted file mode 100644 index b4e4a86..0000000 Binary files a/src/assets/logos/synhost-dark.png and /dev/null differ diff --git a/src/assets/logos/synhost-dark.webp b/src/assets/logos/synhost-dark.webp deleted file mode 100644 index 15c2812..0000000 Binary files a/src/assets/logos/synhost-dark.webp and /dev/null differ diff --git a/src/assets/optimized/background-1280.avif b/src/assets/optimized/background-1280.avif deleted file mode 100644 index c002b7f..0000000 Binary files a/src/assets/optimized/background-1280.avif and /dev/null differ diff --git a/src/assets/optimized/background-1280.webp b/src/assets/optimized/background-1280.webp deleted file mode 100644 index 523a158..0000000 Binary files a/src/assets/optimized/background-1280.webp and /dev/null differ diff --git a/src/assets/optimized/background-1920.avif b/src/assets/optimized/background-1920.avif deleted file mode 100644 index c42d752..0000000 Binary files a/src/assets/optimized/background-1920.avif and /dev/null differ diff --git a/src/assets/optimized/background-1920.jpg b/src/assets/optimized/background-1920.jpg deleted file mode 100644 index 9c67fe8..0000000 Binary files a/src/assets/optimized/background-1920.jpg and /dev/null differ diff --git a/src/assets/optimized/background-1920.webp b/src/assets/optimized/background-1920.webp deleted file mode 100644 index 09d7500..0000000 Binary files a/src/assets/optimized/background-1920.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/culture-480.avif b/src/assets/optimized/portrait/culture-480.avif deleted file mode 100644 index 332bc93..0000000 Binary files a/src/assets/optimized/portrait/culture-480.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/culture-480.webp b/src/assets/optimized/portrait/culture-480.webp deleted file mode 100644 index b6301b3..0000000 Binary files a/src/assets/optimized/portrait/culture-480.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/culture-720.avif b/src/assets/optimized/portrait/culture-720.avif deleted file mode 100644 index 26afc65..0000000 Binary files a/src/assets/optimized/portrait/culture-720.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/culture-720.webp b/src/assets/optimized/portrait/culture-720.webp deleted file mode 100644 index 63d15cc..0000000 Binary files a/src/assets/optimized/portrait/culture-720.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/culture-960.avif b/src/assets/optimized/portrait/culture-960.avif deleted file mode 100644 index 69fc2a9..0000000 Binary files a/src/assets/optimized/portrait/culture-960.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/culture-960.jpg b/src/assets/optimized/portrait/culture-960.jpg deleted file mode 100644 index a466866..0000000 Binary files a/src/assets/optimized/portrait/culture-960.jpg and /dev/null differ diff --git a/src/assets/optimized/portrait/culture-960.webp b/src/assets/optimized/portrait/culture-960.webp deleted file mode 100644 index 8312874..0000000 Binary files a/src/assets/optimized/portrait/culture-960.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/love-480.avif b/src/assets/optimized/portrait/love-480.avif deleted file mode 100644 index 28b38a3..0000000 Binary files a/src/assets/optimized/portrait/love-480.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/love-480.webp b/src/assets/optimized/portrait/love-480.webp deleted file mode 100644 index 892f3b8..0000000 Binary files a/src/assets/optimized/portrait/love-480.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/love-720.avif b/src/assets/optimized/portrait/love-720.avif deleted file mode 100644 index a1a53bf..0000000 Binary files a/src/assets/optimized/portrait/love-720.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/love-720.webp b/src/assets/optimized/portrait/love-720.webp deleted file mode 100644 index 98fc8e4..0000000 Binary files a/src/assets/optimized/portrait/love-720.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/love-960.avif b/src/assets/optimized/portrait/love-960.avif deleted file mode 100644 index d4188bd..0000000 Binary files a/src/assets/optimized/portrait/love-960.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/love-960.jpg b/src/assets/optimized/portrait/love-960.jpg deleted file mode 100644 index 0ee88a2..0000000 Binary files a/src/assets/optimized/portrait/love-960.jpg and /dev/null differ diff --git a/src/assets/optimized/portrait/love-960.webp b/src/assets/optimized/portrait/love-960.webp deleted file mode 100644 index c13f364..0000000 Binary files a/src/assets/optimized/portrait/love-960.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/me-480.avif b/src/assets/optimized/portrait/me-480.avif deleted file mode 100644 index f5508dc..0000000 Binary files a/src/assets/optimized/portrait/me-480.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/me-480.webp b/src/assets/optimized/portrait/me-480.webp deleted file mode 100644 index bf84b7a..0000000 Binary files a/src/assets/optimized/portrait/me-480.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/me-720.avif b/src/assets/optimized/portrait/me-720.avif deleted file mode 100644 index 8b9e0ba..0000000 Binary files a/src/assets/optimized/portrait/me-720.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/me-720.webp b/src/assets/optimized/portrait/me-720.webp deleted file mode 100644 index 58abc91..0000000 Binary files a/src/assets/optimized/portrait/me-720.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/me-960.avif b/src/assets/optimized/portrait/me-960.avif deleted file mode 100644 index 6cd549c..0000000 Binary files a/src/assets/optimized/portrait/me-960.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/me-960.jpg b/src/assets/optimized/portrait/me-960.jpg deleted file mode 100644 index 7663e8b..0000000 Binary files a/src/assets/optimized/portrait/me-960.jpg and /dev/null differ diff --git a/src/assets/optimized/portrait/me-960.webp b/src/assets/optimized/portrait/me-960.webp deleted file mode 100644 index 73f1010..0000000 Binary files a/src/assets/optimized/portrait/me-960.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/scuba-480.avif b/src/assets/optimized/portrait/scuba-480.avif deleted file mode 100644 index f5b3df1..0000000 Binary files a/src/assets/optimized/portrait/scuba-480.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/scuba-480.webp b/src/assets/optimized/portrait/scuba-480.webp deleted file mode 100644 index 9510508..0000000 Binary files a/src/assets/optimized/portrait/scuba-480.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/scuba-720.avif b/src/assets/optimized/portrait/scuba-720.avif deleted file mode 100644 index 21bda25..0000000 Binary files a/src/assets/optimized/portrait/scuba-720.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/scuba-720.webp b/src/assets/optimized/portrait/scuba-720.webp deleted file mode 100644 index 1c4bb34..0000000 Binary files a/src/assets/optimized/portrait/scuba-720.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/scuba-960.avif b/src/assets/optimized/portrait/scuba-960.avif deleted file mode 100644 index 4a8b7f1..0000000 Binary files a/src/assets/optimized/portrait/scuba-960.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/scuba-960.jpg b/src/assets/optimized/portrait/scuba-960.jpg deleted file mode 100644 index ea8a7a1..0000000 Binary files a/src/assets/optimized/portrait/scuba-960.jpg and /dev/null differ diff --git a/src/assets/optimized/portrait/scuba-960.webp b/src/assets/optimized/portrait/scuba-960.webp deleted file mode 100644 index fb03a93..0000000 Binary files a/src/assets/optimized/portrait/scuba-960.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/trains-480.avif b/src/assets/optimized/portrait/trains-480.avif deleted file mode 100644 index 67841ff..0000000 Binary files a/src/assets/optimized/portrait/trains-480.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/trains-480.webp b/src/assets/optimized/portrait/trains-480.webp deleted file mode 100644 index afb249e..0000000 Binary files a/src/assets/optimized/portrait/trains-480.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/trains-720.avif b/src/assets/optimized/portrait/trains-720.avif deleted file mode 100644 index 57f07fc..0000000 Binary files a/src/assets/optimized/portrait/trains-720.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/trains-720.webp b/src/assets/optimized/portrait/trains-720.webp deleted file mode 100644 index 47a5afa..0000000 Binary files a/src/assets/optimized/portrait/trains-720.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/trains-960.avif b/src/assets/optimized/portrait/trains-960.avif deleted file mode 100644 index 798e3b5..0000000 Binary files a/src/assets/optimized/portrait/trains-960.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/trains-960.jpg b/src/assets/optimized/portrait/trains-960.jpg deleted file mode 100644 index e09ecd6..0000000 Binary files a/src/assets/optimized/portrait/trains-960.jpg and /dev/null differ diff --git a/src/assets/optimized/portrait/trains-960.webp b/src/assets/optimized/portrait/trains-960.webp deleted file mode 100644 index ba259f9..0000000 Binary files a/src/assets/optimized/portrait/trains-960.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/traveling-480.avif b/src/assets/optimized/portrait/traveling-480.avif deleted file mode 100644 index 95f1889..0000000 Binary files a/src/assets/optimized/portrait/traveling-480.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/traveling-480.webp b/src/assets/optimized/portrait/traveling-480.webp deleted file mode 100644 index 0c13d78..0000000 Binary files a/src/assets/optimized/portrait/traveling-480.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/traveling-720.avif b/src/assets/optimized/portrait/traveling-720.avif deleted file mode 100644 index 05c5891..0000000 Binary files a/src/assets/optimized/portrait/traveling-720.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/traveling-720.webp b/src/assets/optimized/portrait/traveling-720.webp deleted file mode 100644 index a76b55a..0000000 Binary files a/src/assets/optimized/portrait/traveling-720.webp and /dev/null differ diff --git a/src/assets/optimized/portrait/traveling-960.avif b/src/assets/optimized/portrait/traveling-960.avif deleted file mode 100644 index ef3c977..0000000 Binary files a/src/assets/optimized/portrait/traveling-960.avif and /dev/null differ diff --git a/src/assets/optimized/portrait/traveling-960.jpg b/src/assets/optimized/portrait/traveling-960.jpg deleted file mode 100644 index a5b43a1..0000000 Binary files a/src/assets/optimized/portrait/traveling-960.jpg and /dev/null differ diff --git a/src/assets/optimized/portrait/traveling-960.webp b/src/assets/optimized/portrait/traveling-960.webp deleted file mode 100644 index 8b8e099..0000000 Binary files a/src/assets/optimized/portrait/traveling-960.webp and /dev/null differ diff --git a/src/global.ts b/src/global.ts index fa22431..5685780 100644 --- a/src/global.ts +++ b/src/global.ts @@ -4,18 +4,11 @@ export interface PortfolioProject { description: string; languages: string[]; icon?: string; - iconWidth?: number; - iconHeight?: number; CircleIcon?: boolean; } export interface PortraitHighlight { image: string; - avifSrcset: string; - webpSrcset: string; - width: number; - height: number; - alt: string; text: string; } @@ -81,69 +74,27 @@ export const global: Global = { ], portraitHighlights: [ { - image: 'assets/optimized/portrait/me-960.jpg', - avifSrcset: - 'assets/optimized/portrait/me-480.avif 480w, assets/optimized/portrait/me-720.avif 720w, assets/optimized/portrait/me-960.avif 900w', - webpSrcset: - 'assets/optimized/portrait/me-480.webp 480w, assets/optimized/portrait/me-720.webp 720w, assets/optimized/portrait/me-960.webp 900w', - width: 900, - height: 1154, - alt: 'Portrait of Julian Lechner', + image: 'assets/portrait/me.png', text: 'ME', }, { - image: 'assets/optimized/portrait/love-960.jpg', - avifSrcset: - 'assets/optimized/portrait/love-480.avif 480w, assets/optimized/portrait/love-720.avif 720w, assets/optimized/portrait/love-960.avif 960w', - webpSrcset: - 'assets/optimized/portrait/love-480.webp 480w, assets/optimized/portrait/love-720.webp 720w, assets/optimized/portrait/love-960.webp 960w', - width: 960, - height: 1065, - alt: 'Julian with his partner', + image: 'assets/portrait/love.jpg', text: 'My Love', }, { - image: 'assets/optimized/portrait/scuba-960.jpg', - avifSrcset: - 'assets/optimized/portrait/scuba-480.avif 480w, assets/optimized/portrait/scuba-720.avif 720w, assets/optimized/portrait/scuba-960.avif 960w', - webpSrcset: - 'assets/optimized/portrait/scuba-480.webp 480w, assets/optimized/portrait/scuba-720.webp 720w, assets/optimized/portrait/scuba-960.webp 960w', - width: 960, - height: 720, - alt: 'Julian scuba diving', + image: 'assets/portrait/scuba.jpg', text: 'Scuba Diving', }, { - image: 'assets/optimized/portrait/trains-960.jpg', - avifSrcset: - 'assets/optimized/portrait/trains-480.avif 480w, assets/optimized/portrait/trains-720.avif 720w, assets/optimized/portrait/trains-960.avif 960w', - webpSrcset: - 'assets/optimized/portrait/trains-480.webp 480w, assets/optimized/portrait/trains-720.webp 720w, assets/optimized/portrait/trains-960.webp 960w', - width: 960, - height: 1275, - alt: 'Julian traveling by train', + image: 'assets/portrait/trains.jpg', text: 'Trains', }, { - image: 'assets/optimized/portrait/traveling-960.jpg', - avifSrcset: - 'assets/optimized/portrait/traveling-480.avif 480w, assets/optimized/portrait/traveling-720.avif 720w, assets/optimized/portrait/traveling-960.avif 960w', - webpSrcset: - 'assets/optimized/portrait/traveling-480.webp 480w, assets/optimized/portrait/traveling-720.webp 720w, assets/optimized/portrait/traveling-960.webp 960w', - width: 960, - height: 720, - alt: 'Julian traveling', + image: 'assets/portrait/traveling.jpg', text: 'Traveling', }, { - image: 'assets/optimized/portrait/culture-960.jpg', - avifSrcset: - 'assets/optimized/portrait/culture-480.avif 480w, assets/optimized/portrait/culture-720.avif 720w, assets/optimized/portrait/culture-960.avif 960w', - webpSrcset: - 'assets/optimized/portrait/culture-480.webp 480w, assets/optimized/portrait/culture-720.webp 720w, assets/optimized/portrait/culture-960.webp 960w', - width: 960, - height: 723, - alt: 'Julian visiting cultural landmarks', + image: 'assets/portrait/culture.jpg', text: 'Culture', }, ], @@ -163,9 +114,7 @@ export const global: Global = { description: 'A support system integrating various platforms and media to offer employees a unified overview.', languages: ['TypeScript'], - icon: 'assets/logos/synhost-dark.webp', - iconWidth: 230, - iconHeight: 136, + icon: 'https://gerlach-systems.de/IMAGES/SYNHOST/SYNHOST_DARK.png', CircleIcon: false, }, { @@ -174,9 +123,7 @@ export const global: Global = { description: 'A support system integrating various platforms and media to offer employees a unified overview.', languages: ['TypeScript'], - icon: 'assets/logos/synhost-dark.webp', - iconWidth: 230, - iconHeight: 136, + icon: 'https://gerlach-systems.de/IMAGES/SYNHOST/SYNHOST_DARK.png', CircleIcon: false, }, { @@ -185,9 +132,7 @@ export const global: Global = { description: 'A support system integrating various platforms and media to offer employees a unified overview.', languages: ['TypeScript'], - icon: 'assets/logos/synhost-dark.webp', - iconWidth: 230, - iconHeight: 136, + icon: 'https://gerlach-systems.de/IMAGES/SYNHOST/SYNHOST_DARK.png', CircleIcon: false, }, ], diff --git a/src/index.html b/src/index.html index b497578..54d5a22 100644 --- a/src/index.html +++ b/src/index.html @@ -5,19 +5,7 @@ - - + Lechner Julian diff --git a/src/styles.scss b/src/styles.scss index 5e0f533..4a58e2d 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -48,12 +48,7 @@ body { radial-gradient(circle at top left, rgba(217, 162, 140, 0.22), transparent 26%), radial-gradient(circle at bottom right, rgba(127, 78, 63, 0.28), transparent 28%), linear-gradient(180deg, rgba(9, 9, 12, 0.4), rgba(8, 8, 11, 0.82)), - image-set( - url('assets/optimized/background-1920.avif') type('image/avif'), - url('assets/optimized/background-1920.webp') type('image/webp'), - url('assets/optimized/background-1920.jpg') type('image/jpeg') - ) - center / cover no-repeat; + url('assets/background.jpg') center / cover fixed no-repeat; } a { @@ -156,21 +151,20 @@ hr { color: transparent; background-size: 100% 100%; background: linear-gradient( - to right, - #e40303 0%, - #e40303 16.66%, - #ff8c00 16.66%, - #ff8c00 33.33%, - #ffed00 33.33%, - #ffed00 50%, - #008026 50%, - #008026 66.66%, - #004dff 66.66%, - #004dff 83.33%, - #750787 83.33%, - #750787 100% - ) - no-repeat 0 50%; + to right, + #e40303 0%, + #e40303 16.66%, + #ff8c00 16.66%, + #ff8c00 33.33%, + #ffed00 33.33%, + #ffed00 50%, + #008026 50%, + #008026 66.66%, + #004dff 66.66%, + #004dff 83.33%, + #750787 83.33%, + #750787 100% + ) no-repeat 0 50%; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; @@ -302,21 +296,20 @@ hr { filter: blur(1.6px) saturate(0.88); background-size: 100% 100%; background: linear-gradient( - to right, - #e40303 0%, - #e40303 16.66%, - #ff8c00 16.66%, - #ff8c00 33.33%, - #ffed00 33.33%, - #ffed00 50%, - #008026 50%, - #008026 66.66%, - #004dff 66.66%, - #004dff 83.33%, - #750787 83.33%, - #750787 100% - ) - 0 50%; + to right, + #e40303 0%, + #e40303 16.66%, + #ff8c00 16.66%, + #ff8c00 33.33%, + #ffed00 33.33%, + #ffed00 50%, + #008026 50%, + #008026 66.66%, + #004dff 66.66%, + #004dff 83.33%, + #750787 83.33%, + #750787 100% + ) 0 50%; transform: translate(2px, 2px); } @@ -934,19 +927,6 @@ hr { } @media (max-width: 900px) { - body { - background: - radial-gradient(circle at top left, rgba(217, 162, 140, 0.18), transparent 28%), - radial-gradient(circle at bottom right, rgba(127, 78, 63, 0.22), transparent 30%), - linear-gradient(180deg, rgba(9, 9, 12, 0.42), rgba(8, 8, 11, 0.84)), - image-set( - url('assets/optimized/background-1280.avif') type('image/avif'), - url('assets/optimized/background-1280.webp') type('image/webp'), - url('assets/optimized/background-1920.jpg') type('image/jpeg') - ) - center / cover no-repeat; - } - .hero-section, .story-grid, .legal-grid,