From 664aed47a652002590e12ebd4e01b7640aa7a6f9 Mon Sep 17 00:00:00 2001 From: Lobo Date: Sat, 29 Nov 2025 11:56:30 +0100 Subject: [PATCH] Update Angular and dependencies, add sponsor logos Upgraded Angular packages and related dependencies to version 20.3.14 and updated several @inquirer and other dependencies. Added new sponsor logos to the assets folder and updated the About page to display them, including changes to constants, HTML, SCSS, TypeScript, and i18n files. Minor style and content adjustments were made to the About page. --- package-lock.json | 626 ++++++++++++----------- package.json | 24 +- src/app/constants/AssetsConstants.ts | 8 + src/app/pages/about/about.component.html | 78 +++ src/app/pages/about/about.component.scss | 100 +++- src/app/pages/about/about.component.ts | 41 +- src/assets/i18n/de.json | 77 ++- src/assets/i18n/en.json | 77 ++- src/assets/logos/assyst_gmbh_logo.jpg | Bin 0 -> 2950 bytes src/assets/logos/bingen-logo-white.svg | 19 + src/assets/logos/dmixcloud_logo.jpg | Bin 0 -> 2142 bytes src/assets/logos/teraport_gmbh_logo.jpg | Bin 0 -> 2545 bytes src/index.html | 2 +- src/styles.scss | 2 + 14 files changed, 736 insertions(+), 318 deletions(-) create mode 100644 src/assets/logos/assyst_gmbh_logo.jpg create mode 100644 src/assets/logos/bingen-logo-white.svg create mode 100644 src/assets/logos/dmixcloud_logo.jpg create mode 100644 src/assets/logos/teraport_gmbh_logo.jpg diff --git a/package-lock.json b/package-lock.json index 55b21eb..d82ef29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,26 +8,26 @@ "name": "playground-frontend", "version": "0.1.0", "dependencies": { - "@angular-devkit/build-angular": "~20.3.9", - "@angular/animations": "20.3.10", + "@angular-devkit/build-angular": "~20.3.12", + "@angular/animations": "20.3.14", "@angular/cdk": "20.2.11", - "@angular/common": "20.3.10", - "@angular/compiler": "20.3.10", - "@angular/core": "20.3.10", - "@angular/forms": "20.3.10", + "@angular/common": "~20.3.14", + "@angular/compiler": "20.3.14", + "@angular/core": "20.3.14", + "@angular/forms": "~20.3.14", "@angular/material": "20.2.11", - "@angular/platform-browser": "20.3.10", - "@angular/router": "20.3.10", + "@angular/platform-browser": "~20.3.14", + "@angular/router": "~20.3.14", "@ngx-translate/core": "~17.0.0", "@ngx-translate/http-loader": "~17.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0" }, "devDependencies": { - "@angular/build": "20.3.9", - "@angular/cli": "20.3.9", - "@angular/compiler-cli": "20.3.10", - "@angular/platform-browser-dynamic": "20.3.10", + "@angular/build": "20.3.12", + "@angular/cli": "20.3.12", + "@angular/compiler-cli": "20.3.14", + "@angular/platform-browser-dynamic": "~20.3.14", "@types/jasmine": "~5.1.0", "jasmine-core": "~5.9.0", "karma": "~6.4.0", @@ -261,12 +261,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.2003.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.9.tgz", - "integrity": "sha512-p0GO2H8hiZjRHI9sm4tXTF3OpWaEnkqvB0GBGJfGp8RvpPfDA2t3j2NAUNtd75H+B0xdfyWLmNq9YJGpy6gznA==", + "version": "0.2003.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.12.tgz", + "integrity": "sha512-5H40lAFF4CKY32C4HOp6bTlOF1f4WsGCwe7FjFQp9A+T7yoCBiHpIWt2JKTwV4sBoTKVDZOnuf0GG+UVKjQT4A==", "license": "MIT", "dependencies": { - "@angular-devkit/core": "20.3.9", + "@angular-devkit/core": "20.3.12", "rxjs": "7.8.2" }, "engines": { @@ -276,16 +276,16 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "20.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-20.3.9.tgz", - "integrity": "sha512-DCzHY+EQ98u0h1n8s9add1KVSNWco1RW/Rl8TRkEuGmRQ43MpOfTIZQvlnnqaeMcNH0fZ4zkybVBDj7korJbZg==", + "version": "20.3.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-20.3.12.tgz", + "integrity": "sha512-HPepPbJA5vprYTWJaSCfpk0s1bPT6Ui6VjFOSb9oY+p9iq+MGkuB1I+swNcRcMLttyMD+FpbMd27F8jSeX5XVw==", "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2003.9", - "@angular-devkit/build-webpack": "0.2003.9", - "@angular-devkit/core": "20.3.9", - "@angular/build": "20.3.9", + "@angular-devkit/architect": "0.2003.12", + "@angular-devkit/build-webpack": "0.2003.12", + "@angular-devkit/core": "20.3.12", + "@angular/build": "20.3.12", "@babel/core": "7.28.3", "@babel/generator": "7.28.3", "@babel/helper-annotate-as-pure": "7.27.3", @@ -296,7 +296,7 @@ "@babel/preset-env": "7.28.3", "@babel/runtime": "7.28.3", "@discoveryjs/json-ext": "0.6.3", - "@ngtools/webpack": "20.3.9", + "@ngtools/webpack": "20.3.12", "ansi-colors": "4.1.3", "autoprefixer": "10.4.21", "babel-loader": "10.0.0", @@ -351,7 +351,7 @@ "@angular/platform-browser": "^20.0.0", "@angular/platform-server": "^20.0.0", "@angular/service-worker": "^20.0.0", - "@angular/ssr": "^20.3.9", + "@angular/ssr": "^20.3.12", "@web/test-runner": "^0.20.0", "browser-sync": "^3.0.2", "jest": "^29.5.0 || ^30.2.0", @@ -408,12 +408,12 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.2003.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2003.9.tgz", - "integrity": "sha512-2VSKR4BR/M3g5VvAJpKdytAErPt8Oj+HzTKp+ujVeJEBs3U48bpb6mZJOMTxU1YFf2hvawDQo5aiwkondS1qLg==", + "version": "0.2003.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2003.12.tgz", + "integrity": "sha512-IkhCU0nAsXYBQOfHu2gQBcYBKhaV1c8wYtu7MmelBcN/iUrG8hRf1sZx+ppUgsdZuBYxCiDiLpcfRVRCIASkvw==", "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2003.9", + "@angular-devkit/architect": "0.2003.12", "rxjs": "7.8.2" }, "engines": { @@ -427,9 +427,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "20.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.9.tgz", - "integrity": "sha512-bXsAGIUb4p60x548YmvnMvjwd3FwWz6re1uTM7dV0XH8nQn3XMhOQ3Q3sAckzJHxkDuaRhB3K/a4kupoOmVfTQ==", + "version": "20.3.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.12.tgz", + "integrity": "sha512-ReFxd/UOoVDr3+kIUjmYILQZF89qg62POdY7a7OqBH7plmInFlYVSEDouJvGqj3LVCPiqTk2ZOSChbhS/eLxXA==", "license": "MIT", "dependencies": { "ajv": "8.17.1", @@ -454,13 +454,13 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "20.3.9", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.3.9.tgz", - "integrity": "sha512-oaIjAKPmHMZBTC0met5M7dbXBeZnCNwmHacT/kBHNVBAz/NI95fuAfb2P0Jxt7gWdQXejDSxWp0tL+sZIyO0xw==", + "version": "20.3.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.3.12.tgz", + "integrity": "sha512-JqJ1u59y+Ud51k/8MHYzSP+aQOeC2PJBaDmMnvqfWVaIt6n3x4gc/VtuhqhpJ0SKulbFuOWgAfI6QbPFrgUYQQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "20.3.9", + "@angular-devkit/core": "20.3.12", "jsonc-parser": "3.3.1", "magic-string": "0.30.17", "ora": "8.2.0", @@ -473,9 +473,9 @@ } }, "node_modules/@angular/animations": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.3.10.tgz", - "integrity": "sha512-WSKHyF82URlAQkYGWZjozZgSYj2ClH40GDunayz6kuRewup639iH91HE8sbFfVqKgqELKIAy2E0LhmtDKnMwZA==", + "version": "20.3.14", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.3.14.tgz", + "integrity": "sha512-Sx3/XNu2rR+R8T8JkJEaIpZDZPk0IecS0Ayt6HTanNUZXuw0HVou3vkjR5B2St5nM4MXs0gh+S6aLNuArtqJTQ==", "license": "MIT", "peer": true, "dependencies": { @@ -485,17 +485,17 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "20.3.10" + "@angular/core": "20.3.14" } }, "node_modules/@angular/build": { - "version": "20.3.9", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.9.tgz", - "integrity": "sha512-Ulimvg6twPSCraaZECEmENfKBlD4M1yqeHlg6dCzFNM4xcwaGUnuG6O3cIQD59DaEvaG73ceM2y8ftYdxAwFow==", + "version": "20.3.12", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.12.tgz", + "integrity": "sha512-iAZve4VPviC8y6RFctyh3qFXSlP5mth9K46/0zasB4LV4pcmu8BrzIHERxIn/jCDNdVdPh973kxo1ksO4WpyuA==", "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2003.9", + "@angular-devkit/architect": "0.2003.12", "@babel/core": "7.28.3", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", @@ -537,7 +537,7 @@ "@angular/platform-browser": "^20.0.0", "@angular/platform-server": "^20.0.0", "@angular/service-worker": "^20.0.0", - "@angular/ssr": "^20.3.9", + "@angular/ssr": "^20.3.12", "karma": "^6.4.0", "less": "^4.2.0", "ng-packagr": "^20.0.0", @@ -603,19 +603,19 @@ } }, "node_modules/@angular/cli": { - "version": "20.3.9", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-20.3.9.tgz", - "integrity": "sha512-4eKpRDg96B20yrKJqjA24zgxYy1RiRd70FvF/KG1hqSowsWwtzydtEJ3VM6iFWS9t1D8truuVpKjMEnn1Y274A==", + "version": "20.3.12", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-20.3.12.tgz", + "integrity": "sha512-vqVyVjbFPCRMjA5evL7tV2JeR6Anuzb9WcXTMB17fr7uzKNNAvo7KyRaOJjp+TU4JDARTNyGPy0aywfPx7R60A==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.2003.9", - "@angular-devkit/core": "20.3.9", - "@angular-devkit/schematics": "20.3.9", + "@angular-devkit/architect": "0.2003.12", + "@angular-devkit/core": "20.3.12", + "@angular-devkit/schematics": "20.3.12", "@inquirer/prompts": "7.8.2", "@listr2/prompt-adapter-inquirer": "3.0.1", "@modelcontextprotocol/sdk": "1.17.3", - "@schematics/angular": "20.3.9", + "@schematics/angular": "20.3.12", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.35.0", "ini": "5.0.0", @@ -638,9 +638,9 @@ } }, "node_modules/@angular/common": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.10.tgz", - "integrity": "sha512-12fEzvKbEqjqy1fSk9DMYlJz6dF1MJVXuC5BB+oWWJpd+2lfh4xJ62pkvvLGAICI89hfM5n9Cy5kWnXwnqPZsA==", + "version": "20.3.14", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.14.tgz", + "integrity": "sha512-OOUvjTtnpktJLsNupA+GFT2q5zNocPdpOENA8aSrXvAheNybLjgi+otO3U3sQsvB1VwaoEZ9GT5O3lZlstnA/A==", "license": "MIT", "peer": true, "dependencies": { @@ -650,14 +650,14 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "20.3.10", + "@angular/core": "20.3.14", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.10.tgz", - "integrity": "sha512-cW939Lr8GZjPSYfbQKIDNrUaHWmn2M+zBbERThfq5skLuY+xM60bJFv4NqBekfX6YqKLCY62ilUZlnImYIXaqA==", + "version": "20.3.14", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.14.tgz", + "integrity": "sha512-KFbfPPAbclzGDujCVruflCD9j4Zwwxvrg7Y4C9GJYs3LZ85t+BfIMDDnvpBUM07ZLnfY4TO4gQdHmJAcaGGXDQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -667,9 +667,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.3.10.tgz", - "integrity": "sha512-9BemvpFxA26yIVdu8ROffadMkEdlk/AQQ2Jb486w7RPkrvUQ0pbEJukhv9aryJvhbMopT66S5H/j4ipOUMzmzQ==", + "version": "20.3.14", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.3.14.tgz", + "integrity": "sha512-lFg9ikwRClzDPjdFiwynbVFIi1RJZf/0i+OHa3Ns2gzXxJeHNKMJrHHjWZ2DU4N2UpxH0YAPe22N9Bie28IuQQ==", "license": "MIT", "peer": true, "dependencies": { @@ -690,7 +690,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "20.3.10", + "@angular/compiler": "20.3.14", "typescript": ">=5.8 <6.0" }, "peerDependenciesMeta": { @@ -700,9 +700,9 @@ } }, "node_modules/@angular/core": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.10.tgz", - "integrity": "sha512-g99Qe+NOVo72OLxowVF9NjCckswWYHmvO7MgeiZTDJbTjF9tXH96dMx7AWq76/GUinV10sNzDysVW16NoAbCRQ==", + "version": "20.3.14", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.14.tgz", + "integrity": "sha512-rpyEbhWF6Fj/xI9IvNLZh5QBUYnoXuF7vX54CCtyQ2MHALxRR/aa1WRxjRM96cF2OqodQ/Gj3oYW8ei8hlBh4w==", "license": "MIT", "peer": true, "dependencies": { @@ -712,7 +712,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "20.3.10", + "@angular/compiler": "20.3.14", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.15.0" }, @@ -726,9 +726,9 @@ } }, "node_modules/@angular/forms": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.10.tgz", - "integrity": "sha512-9yWr51EUauTEINB745AaHwZNTHLpXIm4uxuykxzOg+g2QskEgVfH26uS8G2ogdNuwYpB8wnsXWr34qhM3qgOWw==", + "version": "20.3.14", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.14.tgz", + "integrity": "sha512-fGrJ589tU+AKoxf+kaRrEw7wlSfVr1/z/Fz625ggFCc6ySQEityKW3JsnLfNkh5qGrdxib4BOfF78f9J7Pyk+w==", "license": "MIT", "peer": true, "dependencies": { @@ -738,9 +738,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.3.10", - "@angular/core": "20.3.10", - "@angular/platform-browser": "20.3.10", + "@angular/common": "20.3.14", + "@angular/core": "20.3.14", + "@angular/platform-browser": "20.3.14", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -762,9 +762,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.10.tgz", - "integrity": "sha512-UV8CGoB5P3FmJciI3/I/n3L7C3NVgGh7bIlZ1BaB/qJDtv0Wq0rRAGwmT/Z3gwmrRtfHZWme7/CeQ2CYJmMyUQ==", + "version": "20.3.14", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.14.tgz", + "integrity": "sha512-Lviz9GfsIyOIBDal8QhIBKU8OMH29A0RhFw2opTC50sqKadXLN9CD7iSaAwQbNLc4mc3JAF4zth0AzKdHLbz7Q==", "license": "MIT", "peer": true, "dependencies": { @@ -774,9 +774,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/animations": "20.3.10", - "@angular/common": "20.3.10", - "@angular/core": "20.3.10" + "@angular/animations": "20.3.14", + "@angular/common": "20.3.14", + "@angular/core": "20.3.14" }, "peerDependenciesMeta": { "@angular/animations": { @@ -785,9 +785,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-20.3.10.tgz", - "integrity": "sha512-gtZPCuxfxxkMzHYBdTU9tJeTiHj+Aty3C408DJGtGU+7rZgKt9hDC14vQN9OVzB9Ly9Jwj2yr8u7AH80TxxCJw==", + "version": "20.3.14", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-20.3.14.tgz", + "integrity": "sha512-g9z/g8gIOrBCX1SQ/GWwB0+JXBC6CKe0+yRyy9GGeBLm/YXWZHxTkmnDmueXXfPtUl8TOAInE22wlLcfunWTrg==", "dev": true, "license": "MIT", "dependencies": { @@ -797,16 +797,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.3.10", - "@angular/compiler": "20.3.10", - "@angular/core": "20.3.10", - "@angular/platform-browser": "20.3.10" + "@angular/common": "20.3.14", + "@angular/compiler": "20.3.14", + "@angular/core": "20.3.14", + "@angular/platform-browser": "20.3.14" } }, "node_modules/@angular/router": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-20.3.10.tgz", - "integrity": "sha512-Z03cfH1jgQ7XMDJj4R8qAGqivcvhdG3wYBwaiN1K1ODBgPhbFKNeD4stKqYp7xBNtswmM2O2jMxrL/Djwju4Gg==", + "version": "20.3.14", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-20.3.14.tgz", + "integrity": "sha512-gi7/NuHRS9n9RCwh03VuVFizVMa2lKL/s+7yP3Ecq2nQ5uSeTMWb/91OmGEBwncI3wKPkYdQ9g3n6PvK/O8uDQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -815,9 +815,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.3.10", - "@angular/core": "20.3.10", - "@angular/platform-browser": "20.3.10", + "@angular/common": "20.3.14", + "@angular/core": "20.3.14", + "@angular/platform-browser": "20.3.14", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -2800,26 +2800,26 @@ } }, "node_modules/@inquirer/ansi": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.1.tgz", - "integrity": "sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@inquirer/checkbox": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.0.tgz", - "integrity": "sha512-5+Q3PKH35YsnoPTh75LucALdAxom6xh5D1oeY561x4cqBuH24ZFVyFREPe14xgnrtmGu3EEt1dIi60wRVSnGCw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.1", - "@inquirer/core": "^10.3.0", - "@inquirer/figures": "^1.0.14", - "@inquirer/type": "^3.0.9", - "yoctocolors-cjs": "^2.1.2" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { "node": ">=18" @@ -2855,19 +2855,19 @@ } }, "node_modules/@inquirer/core": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.0.tgz", - "integrity": "sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==", + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.1", - "@inquirer/figures": "^1.0.14", - "@inquirer/type": "^3.0.9", + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" + "yoctocolors-cjs": "^2.1.3" }, "engines": { "node": ">=18" @@ -2882,15 +2882,15 @@ } }, "node_modules/@inquirer/editor": { - "version": "4.2.21", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.21.tgz", - "integrity": "sha512-MjtjOGjr0Kh4BciaFShYpZ1s9400idOdvQ5D7u7lE6VztPFoyLcVNE5dXBmEEIQq5zi4B9h2kU+q7AVBxJMAkQ==", + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.0", - "@inquirer/external-editor": "^1.0.2", - "@inquirer/type": "^3.0.9" + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" }, "engines": { "node": ">=18" @@ -2905,15 +2905,15 @@ } }, "node_modules/@inquirer/expand": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.21.tgz", - "integrity": "sha512-+mScLhIcbPFmuvU3tAGBed78XvYHSvCl6dBiYMlzCLhpr0bzGzd8tfivMMeqND6XZiaZ1tgusbUHJEfc6YzOdA==", + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.0", - "@inquirer/type": "^3.0.9", - "yoctocolors-cjs": "^2.1.2" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { "node": ">=18" @@ -2928,13 +2928,13 @@ } }, "node_modules/@inquirer/external-editor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.2.tgz", - "integrity": "sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dev": true, "license": "MIT", "dependencies": { - "chardet": "^2.1.0", + "chardet": "^2.1.1", "iconv-lite": "^0.7.0" }, "engines": { @@ -2950,23 +2950,23 @@ } }, "node_modules/@inquirer/figures": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.14.tgz", - "integrity": "sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==", + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@inquirer/input": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.5.tgz", - "integrity": "sha512-7GoWev7P6s7t0oJbenH0eQ0ThNdDJbEAEtVt9vsrYZ9FulIokvd823yLyhQlWHJPGce1wzP53ttfdCZmonMHyA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.0", - "@inquirer/type": "^3.0.9" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { "node": ">=18" @@ -2981,14 +2981,14 @@ } }, "node_modules/@inquirer/number": { - "version": "3.0.21", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.21.tgz", - "integrity": "sha512-5QWs0KGaNMlhbdhOSCFfKsW+/dcAVC2g4wT/z2MCiZM47uLgatC5N20kpkDQf7dHx+XFct/MJvvNGy6aYJn4Pw==", + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.0", - "@inquirer/type": "^3.0.9" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { "node": ">=18" @@ -3003,15 +3003,15 @@ } }, "node_modules/@inquirer/password": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.21.tgz", - "integrity": "sha512-xxeW1V5SbNFNig2pLfetsDb0svWlKuhmr7MPJZMYuDnCTkpVBI+X/doudg4pznc1/U+yYmWFFOi4hNvGgUo7EA==", + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.1", - "@inquirer/core": "^10.3.0", - "@inquirer/type": "^3.0.9" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { "node": ">=18" @@ -3057,15 +3057,15 @@ } }, "node_modules/@inquirer/rawlist": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.9.tgz", - "integrity": "sha512-AWpxB7MuJrRiSfTKGJ7Y68imYt8P9N3Gaa7ySdkFj1iWjr6WfbGAhdZvw/UnhFXTHITJzxGUI9k8IX7akAEBCg==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.0", - "@inquirer/type": "^3.0.9", - "yoctocolors-cjs": "^2.1.2" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { "node": ">=18" @@ -3080,16 +3080,16 @@ } }, "node_modules/@inquirer/search": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.0.tgz", - "integrity": "sha512-a5SzB/qrXafDX1Z4AZW3CsVoiNxcIYCzYP7r9RzrfMpaLpB+yWi5U8BWagZyLmwR0pKbbL5umnGRd0RzGVI8bQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.0", - "@inquirer/figures": "^1.0.14", - "@inquirer/type": "^3.0.9", - "yoctocolors-cjs": "^2.1.2" + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { "node": ">=18" @@ -3104,17 +3104,17 @@ } }, "node_modules/@inquirer/select": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.0.tgz", - "integrity": "sha512-kaC3FHsJZvVyIjYBs5Ih8y8Bj4P/QItQWrZW22WJax7zTN+ZPXVGuOM55vzbdCP9zKUiBd9iEJVdesujfF+cAA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.1", - "@inquirer/core": "^10.3.0", - "@inquirer/figures": "^1.0.14", - "@inquirer/type": "^3.0.9", - "yoctocolors-cjs": "^2.1.2" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { "node": ">=18" @@ -3129,9 +3129,9 @@ } }, "node_modules/@inquirer/type": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.9.tgz", - "integrity": "sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "license": "MIT", "engines": { "node": ">=18" @@ -3956,9 +3956,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "20.3.9", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-20.3.9.tgz", - "integrity": "sha512-3h5laY9+kP7Tzociy3Lg5sMfpTTKMU+XbLQAHxnIvywHLD6r/fgVkwRli8GZf5JFMTwAkul0AQPKom9SCSWJLg==", + "version": "20.3.12", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-20.3.12.tgz", + "integrity": "sha512-ePuofHOtbgvEq2t+hcmL30s4q9HQ/nv9ABwpLiELdVIObcWUnrnizAvM7hujve/9CQL6gRCeEkxPLPS4ZrK9AQ==", "license": "MIT", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0", @@ -4179,9 +4179,9 @@ } }, "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, "license": "ISC", "dependencies": { @@ -4942,14 +4942,14 @@ ] }, "node_modules/@schematics/angular": { - "version": "20.3.9", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-20.3.9.tgz", - "integrity": "sha512-XkgTwGhhrx+MVi2+TFO32d6Es5Uezzx7Y7B/e2ulDlj08bizxQj+9wkeLt5+bR8JWODHpEntZn/Xd5WvXnODGA==", + "version": "20.3.12", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-20.3.12.tgz", + "integrity": "sha512-ikl+nkWUab/Z4eSkBHgq9FLIUH8qh4OcYKeBQ0fyWqIUFHyjjK0JOfwmH1g/3zAmuUMtkthHCehAtyKzCTQjVA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "20.3.9", - "@angular-devkit/schematics": "20.3.9", + "@angular-devkit/core": "20.3.12", + "@angular-devkit/schematics": "20.3.12", "jsonc-parser": "3.3.1" }, "engines": { @@ -5209,9 +5209,9 @@ } }, "node_modules/@types/jasmine": { - "version": "5.1.12", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.12.tgz", - "integrity": "sha512-1BzPxNsFDLDfj9InVR3IeY0ZVf4o9XV+4mDqoCfyPkbsA7dYyKAPAb2co6wLFlHcvxPlt1wShm7zQdV7uTfLGA==", + "version": "5.1.13", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.13.tgz", + "integrity": "sha512-MYCcDkruFc92LeYZux5BC0dmqo2jk+M5UIZ4/oFnAPCXN9mCcQhLyj7F3/Za7rocVyt5YRr1MmqJqFlvQ9LVcg==", "dev": true, "license": "MIT" }, @@ -5228,9 +5228,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.0.tgz", - "integrity": "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==", + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -5870,9 +5870,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.8.25", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.25.tgz", - "integrity": "sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==", + "version": "2.8.31", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz", + "integrity": "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" @@ -5925,37 +5925,28 @@ } }, "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz", + "integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==", "dev": true, "license": "MIT", "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", - "debug": "^4.4.0", + "debug": "^4.4.3", "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", + "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" + "raw-body": "^3.0.1", + "type-is": "^2.0.1" }, "engines": { "node": ">=18" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/bonjour-service": { @@ -5998,9 +5989,9 @@ } }, "node_modules/browserslist": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", - "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "funding": [ { "type": "opencollective", @@ -6018,10 +6009,10 @@ "license": "MIT", "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.8.19", - "caniuse-lite": "^1.0.30001751", - "electron-to-chromium": "^1.5.238", - "node-releases": "^2.0.26", + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", "update-browserslist-db": "^1.1.4" }, "bin": { @@ -6106,9 +6097,9 @@ } }, "node_modules/cacache/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, "license": "ISC", "dependencies": { @@ -6215,9 +6206,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001754", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", - "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", + "version": "1.0.30001757", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", + "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", "funding": [ { "type": "opencollective", @@ -6582,16 +6573,17 @@ } }, "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", "dev": true, "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/content-type": { @@ -6665,12 +6657,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", - "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", + "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", "license": "MIT", "dependencies": { - "browserslist": "^4.26.3" + "browserslist": "^4.28.0" }, "funding": { "type": "opencollective", @@ -6848,9 +6840,9 @@ } }, "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", + "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", "license": "MIT", "dependencies": { "bundle-name": "^4.1.0", @@ -6864,9 +6856,9 @@ } }, "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "license": "MIT", "engines": { "node": ">=18" @@ -7037,9 +7029,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.245", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.245.tgz", - "integrity": "sha512-rdmGfW47ZhL/oWEJAY4qxRtdly2B98ooTJ0pdEI4jhVLZ6tNf8fPtov2wS1IRKwFJT92le3x4Knxiwzl7cPPpQ==", + "version": "1.5.262", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.262.tgz", + "integrity": "sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -8152,28 +8144,24 @@ "license": "MIT" }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/http-parser-js": { @@ -8381,9 +8369,9 @@ } }, "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, "license": "MIT", "engines": { @@ -8794,9 +8782,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -9141,6 +9129,23 @@ "node": ">= 6" } }, + "node_modules/karma/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/karma/node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -9272,6 +9277,16 @@ "node": ">=0.10.0" } }, + "node_modules/karma/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/karma/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -9508,6 +9523,7 @@ "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.1.tgz", "integrity": "sha512-SL0JY3DaxylDuo/MecFeiC+7pedM0zia33zl0vcjgwcq1q1FWWF1To9EIauPbl8GbMCU0R2e0uJ8bZunhYKD2g==", "license": "MIT", + "peer": true, "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", @@ -9809,9 +9825,9 @@ } }, "node_modules/memfs": { - "version": "4.50.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.50.0.tgz", - "integrity": "sha512-N0LUYQMUA1yS5tJKmMtU9yprPm6ZIg24yr/OVv/7t6q0kKDIho4cBbXRi1XKttUmNYDYgF/q45qrKE/UhGO0CA==", + "version": "4.51.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.51.0.tgz", + "integrity": "sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A==", "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/json-pack": "^1.11.0", @@ -9911,16 +9927,20 @@ } }, "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, "license": "MIT", "dependencies": { "mime-db": "^1.54.0" }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/mimic-function": { @@ -10291,9 +10311,9 @@ "optional": true }, "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.2.tgz", + "integrity": "sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==", "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" @@ -10509,9 +10529,9 @@ } }, "node_modules/npm-packlist/node_modules/proc-log": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.0.0.tgz", - "integrity": "sha512-KG/XsTDN901PNfPfAMmj6N/Ywg9tM+bHK8pAz+27fS4N4Pcr+4zoYBOcGSBu6ceXYNPxkLpa4ohtfxV1XcLAfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", "dev": true, "license": "ISC", "engines": { @@ -10791,9 +10811,9 @@ } }, "node_modules/p-map": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", - "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", "dev": true, "license": "MIT", "engines": { @@ -11131,9 +11151,9 @@ } }, "node_modules/pkce-challenge": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", - "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", "dev": true, "license": "MIT", "engines": { @@ -11406,16 +11426,16 @@ } }, "node_modules/raw-body": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz", - "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.7.0", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.10" @@ -13359,6 +13379,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz", "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==", "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -13587,6 +13608,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", "license": "MIT", + "peer": true, "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", @@ -13827,6 +13849,22 @@ "node": ">= 6" } }, + "node_modules/webpack-dev-server/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { "version": "2.0.9", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", @@ -14489,13 +14527,13 @@ } }, "node_modules/zod-to-json-schema": { - "version": "3.24.6", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", - "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz", + "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==", "dev": true, "license": "ISC", "peerDependencies": { - "zod": "^3.24.1" + "zod": "^3.25 || ^4" } } } diff --git a/package.json b/package.json index c527292..e37b339 100644 --- a/package.json +++ b/package.json @@ -10,26 +10,26 @@ }, "private": true, "dependencies": { - "@angular-devkit/build-angular": "~20.3.9", - "@angular/animations": "20.3.10", + "@angular-devkit/build-angular": "~20.3.12", + "@angular/animations": "20.3.14", "@angular/cdk": "20.2.11", - "@angular/common": "20.3.10", - "@angular/compiler": "20.3.10", - "@angular/core": "20.3.10", - "@angular/forms": "20.3.10", + "@angular/common": "~20.3.14", + "@angular/compiler": "20.3.14", + "@angular/core": "20.3.14", + "@angular/forms": "~20.3.14", "@angular/material": "20.2.11", - "@angular/platform-browser": "20.3.10", - "@angular/router": "20.3.10", + "@angular/platform-browser": "~20.3.14", + "@angular/router": "~20.3.14", "@ngx-translate/core": "~17.0.0", "@ngx-translate/http-loader": "~17.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0" }, "devDependencies": { - "@angular/build": "20.3.9", - "@angular/cli": "20.3.9", - "@angular/compiler-cli": "20.3.10", - "@angular/platform-browser-dynamic": "20.3.10", + "@angular/build": "20.3.12", + "@angular/cli": "20.3.12", + "@angular/compiler-cli": "20.3.14", + "@angular/platform-browser-dynamic": "~20.3.14", "@types/jasmine": "~5.1.0", "jasmine-core": "~5.9.0", "karma": "~6.4.0", diff --git a/src/app/constants/AssetsConstants.ts b/src/app/constants/AssetsConstants.ts index d11ad51..86c24c0 100644 --- a/src/app/constants/AssetsConstants.ts +++ b/src/app/constants/AssetsConstants.ts @@ -4,4 +4,12 @@ static readonly LOGO = '/assets/favicon.ico'; static readonly FLAG_DE = '/assets/flags/de.svg'; static readonly FLAG_EN = '/assets/flags/gb.svg'; + + //logos + static readonly TH_BINGEN_LOGO = '/assets/logos/assyst_gmbh_logo.jpg'; + static readonly ASSYST_LOG = '/assets/logos/bingen-logo-white.svg'; + static readonly COLORDIGITAL_LOGO = '/assets/logos/dmixcloud_logo.jpg'; + static readonly TERAPORT_LOGO = '/assets/logos/teraport_gmbh_logo.jpg'; + + static readonly CV: 'assets/cv/andreas-dahm-cv.pdf'; } diff --git a/src/app/pages/about/about.component.html b/src/app/pages/about/about.component.html index b8c830b..b799ddc 100644 --- a/src/app/pages/about/about.component.html +++ b/src/app/pages/about/about.component.html @@ -78,6 +78,84 @@

{{ 'ABOUT.SECTION.EXPERIENCE' | translate }}

+ +
+ @for (entry of xpKeys; track entry) { +
+
+
+ +
+
+ {{ (entry.key + '.ROLE') | translate }} + {{ (entry.key + '.TIME') | translate }} +
+ {{ (entry.key + '.COMPANY') | translate }} +
+
+ +
+ {{ (entry.key + '.COMPANY') | translate }} +
+ +
+
+
    +
  • {{ entry.key + '.HIGHLIGHTS.P1' | translate }}
  • +
  • {{ entry.key + '.HIGHLIGHTS.P2' | translate }}
  • +
  • {{ entry.key + '.HIGHLIGHTS.P3' | translate }}
  • +
+
+
+ + @if(entry.key !== xpKeys.at(xpKeys.length-1)?.key) + { + + } + } +
+
+ +

{{ 'ABOUT.SECTION.PROJECTS' | translate }}

+ +
+
+
+ {{ 'ABOUT.XP.T1.ROLE' | translate }} + {{ 'ABOUT.XP.T1.TIME' | translate }} +
+
{{ 'ABOUT.XP.T1.COMPANY' | translate }}
+
    +
  • {{ 'ABOUT.XP.T1.P1' | translate }}
  • +
  • {{ 'ABOUT.XP.T1.P2' | translate }}
  • +
  • {{ 'ABOUT.XP.T1.P3' | translate }}
  • +
+
+ + + +
+
+ {{ 'ABOUT.XP.T2.ROLE' | translate }} + {{ 'ABOUT.XP.T2.TIME' | translate }} +
+
{{ 'ABOUT.XP.T2.COMPANY' | translate }}
+
    +
  • {{ 'ABOUT.XP.T2.P1' | translate }}
  • +
  • {{ 'ABOUT.XP.T2.P2' | translate }}
  • +
+
+
+
+ + +

{{ 'ABOUT.SECTION.EDUCATION' | translate }}

+
diff --git a/src/app/pages/about/about.component.scss b/src/app/pages/about/about.component.scss index fb5e36d..922ce6e 100644 --- a/src/app/pages/about/about.component.scss +++ b/src/app/pages/about/about.component.scss @@ -37,7 +37,7 @@ } .actions { - display:flex; gap:.5rem; flex-wrap:wrap; margin-top:.5rem; margin-bottom: .25rem; + display:flex; gap:.5rem; flex-wrap:wrap; margin-top:.5rem; margin-bottom: 1rem; .mat-icon { margin-right:.25rem; } } } @@ -46,6 +46,7 @@ /* Skills block */ .skills { border-radius: 16px; + padding: 5px; background: var(--app-card-background); h2 { margin-top: .25rem; margin-left: .25rem; } .chip-groups { @@ -62,6 +63,47 @@ /* Experience block */ .experience { border-radius: 16px; + padding: 5px; + background: var(--app-card-background); + h2 { margin-top: .25rem;margin-left: .25rem; } + .xp-list { + margin-left: .25rem; + display: grid; gap: .75rem; + } + .xp-item { + .xp-head { + display:flex; align-items:baseline; gap:.5rem; + .time { opacity:.75; font-size:.9rem; } + } + .xp-sub { opacity:.9; margin-bottom:.25rem; } + ul { margin: .25rem 0 .5rem 1.15rem; } + } +} + +/* Experience block */ +.projects { + border-radius: 16px; + padding: 5px; + background: var(--app-card-background); + h2 { margin-top: .25rem;margin-left: .25rem; } + .xp-list { + margin-left: .25rem; + display: grid; gap: .75rem; + } + .xp-item { + .xp-head { + display:flex; align-items:baseline; gap:.5rem; + .time { opacity:.75; font-size:.9rem; } + } + .xp-sub { opacity:.9; margin-bottom:.25rem; } + ul { margin: .25rem 0 .5rem 1.15rem; } + } +} + +/* Experience block */ +.education { + border-radius: 16px; + padding: 5px; background: var(--app-card-background); h2 { margin-top: .25rem;margin-left: .25rem; } .xp-list { @@ -84,3 +126,59 @@ .hero .photo { justify-content: flex-start; } .skills .chip-groups { grid-template-columns: 1fr; } } + +.xp-head-grid { + display: grid; + grid-template-columns: calc(48px + .75rem) 1fr; /* 1: Logo, 2: Text */ + grid-template-rows: auto auto; /* 1: Role/Time, 2: Company */ + column-gap: .75rem; +} + +.logo-wrap { + grid-row: 1 / span 2; + grid-column: 1; + display: flex; + align-items: center; +} + +.company-logo { + width: 48px; + height: 48px; + object-fit: contain; + opacity: .9; + background-color: var(--app-logo-bg); +} + + +.head-row { + grid-row: 1; + grid-column: 2; + display: flex; + flex-wrap: wrap; + align-items: baseline; + gap: .5rem 1rem; + + strong { + font-size: 1rem; + } + .time { + opacity: .75; font-size: .9rem; + } +} + +.company-row { + grid-row: 2; + grid-column: 2; + margin-top: .1rem; + opacity: .85; +} + +.highlights { + margin-top: .4rem; + margin-left: .75rem; + padding-left: 1.2rem; + + li { + margin: .2rem 0; + } +} diff --git a/src/app/pages/about/about.component.ts b/src/app/pages/about/about.component.ts index be63a71..58e28a0 100644 --- a/src/app/pages/about/about.component.ts +++ b/src/app/pages/about/about.component.ts @@ -1,4 +1,4 @@ -import { Component, inject } from '@angular/core'; +import { Component} from '@angular/core'; import { CommonModule, NgOptimizedImage } from '@angular/common'; import { MatCardModule } from '@angular/material/card'; import { MatChipsModule } from '@angular/material/chips'; @@ -23,7 +23,42 @@ import {AssetsConstants} from '../../constants/AssetsConstants'; styleUrl: './about.component.scss' }) export class AboutComponent { - cvHref = 'assets/cv/andreas-dahm-cv.pdf'; + cvHref = AssetsConstants.CV; + + xpKeys = [ + { + key: 'ABOUT.XP.COMPANY7', + logo: AssetsConstants.TERAPORT_LOGO + }, + { + key: 'ABOUT.XP.COMPANY6', + logo: AssetsConstants.COLORDIGITAL_LOGO + }, + { + key: 'ABOUT.XP.COMPANY5', + logo: AssetsConstants.COLORDIGITAL_LOGO + }, + { + key: 'ABOUT.XP.COMPANY4', + logo: AssetsConstants.ASSYST_LOG + }, + { + key: 'ABOUT.XP.COMPANY3', + logo: AssetsConstants.ASSYST_LOG + }, + { + key: 'ABOUT.XP.COMPANY2', + logo: AssetsConstants.ASSYST_LOG + }, + { + key: 'ABOUT.XP.COMPANY1', + logo: AssetsConstants.TH_BINGEN_LOGO + }, + { + key: 'ABOUT.XP.COMPANY0', + logo: AssetsConstants.TH_BINGEN_LOGO + } + ]; primarySkills = [ 'ABOUT.SKILLS.JAVA', @@ -46,8 +81,6 @@ export class AboutComponent { 'ABOUT.TOOLS.GRAFANA', ]; - - openMail(event: Event) { event.preventDefault(); const user = 'andreas.dahm'; diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index c9edb2e..423bd99 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -49,13 +49,84 @@ "GRAFANA": "Grafana/Prometheus" }, "XP": { - "T1": { + "COMPANY7": { "COMPANY": "Teraport GmbH", "ROLE": "Senior Software Developer / Architect", "TIME": "Feb. 2024 – heute", "HIGHLIGHTS": { - "P1": "Architecture and implementation of database connectivity using Hibernate 6.x.", - "P2": "Design and development of a full-stack web application for collision analysis (Angular + Spring Boot + Docker)." + "P1": "Architektur und Implementierung der Datenbankanbindung mit Hibernate 6.x.", + "P2": "Konzeption und Entwicklung einer Full-Stack-Webanwendung für Kollisionsanalysen (Angular + Spring Boot + Docker).", + "P3": "Entwicklung eines Kostenanalysetools mit dem Namen MIDO." + } + }, + "COMPANY6": { + "COMPANY": "ColorDigital GmbH", + "ROLE": "Lead Software Developer", + "TIME": "März 2023 – Dez. 2023", + "HIGHLIGHTS": { + "P1": "Planung einer neuen Cloud-Architektur zur Migration eines umfangreichen Legacy-Monolithen in eine moderne Microservice-Plattform.", + "P2": "Leitung eines Teams von drei bis vier Backend-Entwickler:innen.", + "P3": "Zusammenarbeit mit Partnern und Kund:innen bei der Integration ihrer Systeme in die DMIx-Cloud." + } + }, + "COMPANY5": { + "COMPANY": "ColorDigital GmbH", + "ROLE": "Senior Software Developer", + "TIME": "März 2021 – März 2023", + "HIGHLIGHTS": { + "P1": "Arbeit an der DMIx-Core-Cloud, darunter die Implementierung einer Elasticsearch-basierten Echtzeit-Suchfunktion.", + "P2": "Implementierung des neuen Browser-Tools „Moodboard“ (Node.js + Vue.js).", + "P3": "Entwicklung von „PAX“, einem Tool für den Datenaustausch zwischen der DMIx-Cloud und PLM/ERP-Systemen, inkl. CI/CD-Integration." + } + }, + "COMPANY4": { + "COMPANY": "Assyst GmbH", + "ROLE": "Teamleitung", + "TIME": "Sep. 2015 – Feb. 2021", + "HIGHLIGHTS": { + "P1": "Teamleitung der Vidya-Softwareabteilung, inkl. Personalverantwortung und Bewerbungsprozesse.", + "P2": "Leitung mehrerer Projekte mit externen Partnern und Freelancer:innen.", + "P3": "Steuerung strategischer Initiativen im Bereich 3D-Softwareentwicklung." + } + }, + "COMPANY3": { + "COMPANY": "Assyst GmbH", + "ROLE": "Software Engineer", + "TIME": "Apr. 2010 – Feb. 2021", + "HIGHLIGHTS": { + "P1": "Arbeit an Kerntechnologien wie Algorithmen, Simulation, Rendering und Kollisions­erkennung.", + "P2": "Einsatz verschiedener Technologien, u. a. Java, OpenCL, OpenGL, GLSL-Shader, C++ und REST-Schnittstellen.", + "P3": "Mitarbeit an nationalen und internationalen Forschungsprojekten (EU7 und ZIM)." + } + }, + "COMPANY2": { + "COMPANY": "Assyst GmbH", + "ROLE": "Praktikum und Diplomarbeit", + "TIME": "Apr. 2009 – Apr. 2010", + "HIGHLIGHTS": { + "P1": "Implementierung produktiver Funktionen in der Echtzeit-Kleidersimulationssoftware Vidya.", + "P2": "Durchführung von Recherchen und Literaturstudien für die Diplomarbeit.", + "P3": "Erfolgreiche Umsetzung des Diplomthemas in Vidya." + } + }, + "COMPANY1": { + "COMPANY": "TH Bingen (University of Applied Sciences)", + "ROLE": "Tutor für Grundlagen der Java-Programmierung", + "TIME": "Apr. 2008 – Aug. 2008", + "HIGHLIGHTS": { + "P1": "Erstellung praktischer und theoretischer Lehrmaterialien.", + "P2": "Durchführung einer 20-stündigen Vorlesungsreihe für den Bioinformatik-Studiengang.", + "P3": "Unterstützung bei praktischen Programmierübungen." + } + }, + "COMPANY0": { + "COMPANY": "TH Bingen (University of Applied Sciences)", + "ROLE": "Wissenschaftliche Hilfskraft", + "TIME": "Okt. 2007 – Apr. 2008", + "HIGHLIGHTS": { + "P1": "Evaluation verschiedener Web-2.0-Technologien.", + "P2": "Implementierung einer Java-basierten Schnittstelle zu Microsoft Excel.", + "P3": "Integration des MIT-Exhibit-Frameworks und Vorbereitung für die CeBIT 2008." } } } diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 82b38b4..161dc97 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -48,13 +48,84 @@ "GRAFANA": "Grafana/Prometheus" }, "XP": { - "T1": { + "COMPANY7": { "COMPANY": "Teraport GmbH", "ROLE": "Senior Software Developer / Architect", - "TIME": "Feb. 2024 – heute", + "TIME": "Feb. 2024 – now", "HIGHLIGHTS": { "P1": "Architecture and implementation of database connectivity using Hibernate 6.x.", - "P2": "Design and development of a full-stack web application for collision analysis (Angular + Spring Boot + Docker)." + "P2": "Design and development of a full-stack web application for collision analysis (Angular + Spring Boot + Docker).", + "P3": "Development of a cost analysis tool called MIDO." + } + }, + "COMPANY6": { + "COMPANY": "ColorDigital GmbH", + "ROLE": "Lead Software Developer", + "TIME": "Mar. 2023 – Dec. 2023", + "HIGHLIGHTS": { + "P1": "Planning a new cloud architecture to migrate a large legacy monolith to a modern microservice-based platform.", + "P2": "Led the development team of three to four backend engineers.", + "P3": "Collaborated with partners and customers on integrating their systems with the DMIx" + } + }, + "COMPANY5": { + "COMPANY": "ColorDigital GmbH", + "ROLE": "Senior Software Developer", + "TIME": "Mar. 2021 – Mar. 2023", + "HIGHLIGHTS": { + "P1": "Worked on the DMIx core cloud, including the implementation of an Elasticsearch-based real-time search module.", + "P2": "Implementation of a new browser tool called 'Moodboard' (Node.js + Vue.js).", + "P3": "Development of 'PAX', a tool for data exchange between the DMIx cloud and customer PLM/ERP systems, including CI/CD integration." + } + }, + "COMPANY4": { + "COMPANY": "Assyst GmbH", + "ROLE": "Team leadership", + "TIME": "Sep. 2015 – Feb. 2021", + "HIGHLIGHTS": { + "P1": "Team lead of the Vidya software department, including disciplinary responsibility and interviews.", + "P2": "Led several projects with external partners and freelancers.", + "P3": "Managed strategic initiatives in 3D software development." + } + }, + "COMPANY3": { + "COMPANY": "Assyst GmbH", + "ROLE": "Software engineer", + "TIME": "Apr. 2010 – Feb. 2021", + "HIGHLIGHTS": { + "P1": "Worked on core technologies such as algorithms, simulation, rendering, and collision detection.", + "P2": "Used technologies including Java, OpenCL, OpenGL, GLSL shaders, C++, and REST interfaces.", + "P3": "Participated in national and international research projects (EU7 and ZIM)." + } + }, + "COMPANY2": { + "COMPANY": "Assyst GmbH", + "ROLE": "Internship and Diploma", + "TIME": "Apr. 2009 – Apr. 2010", + "HIGHLIGHTS": { + "P1": "Implemented production features in the real-time cloth simulation software Vidya.", + "P2": "Conducted research and literature review for the diploma thesis.", + "P3": "Successfully implemented the diploma topic in Vidya." + } + }, + "COMPANY1": { + "COMPANY": "TH bingen (University of Applied Sciences)", + "ROLE": "Tutorial for fundamentals of Java programming", + "TIME": "Apr. 2008 – Aug. 2008", + "HIGHLIGHTS": { + "P1": "Preparation of practical and theoretical course material.", + "P2": "Held a 20-hour lecture series for the bioinformatics programme.", + "P3": "Provided assistance during practical programming exercises." + } + }, + "COMPANY0": { + "COMPANY": "TH bingen (University of Applied Sciences)", + "ROLE": "Research Asssitent", + "TIME": "Oct. 2007 – Apr. 2008", + "HIGHLIGHTS": { + "P1": "Evaluation of various Web 2.0 technologies.", + "P2": "Implementation of a Java-based interface for Microsoft Excel.", + "P3": "Integration of the MIT Exhibit framework and preparation for CeBIT 2008." } } } diff --git a/src/assets/logos/assyst_gmbh_logo.jpg b/src/assets/logos/assyst_gmbh_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..97f27d4153e9c30f869a75e318839fef688ae6f6 GIT binary patch literal 2950 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 K@8*Bo9sU#7T;DDL literal 0 HcmV?d00001 diff --git a/src/assets/logos/bingen-logo-white.svg b/src/assets/logos/bingen-logo-white.svg new file mode 100644 index 0000000..899f800 --- /dev/null +++ b/src/assets/logos/bingen-logo-white.svg @@ -0,0 +1,19 @@ + diff --git a/src/assets/logos/dmixcloud_logo.jpg b/src/assets/logos/dmixcloud_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..befd8017575c3b712da8e6abda3eedcc10f01fae GIT binary patch literal 2142 zcmb7EdpJ~U7vFo&j2SbAy=TTHl$pfo#tg}&!J9W1$y-x7pg+ z0w4$gAo>9dU4S)!fgssI4T~Ne0f)n4aYQ^`j-WtPP#_UWB(fp}CMzO}BoeFwBUGBQ zva*7bs+tN-jY3nV$&!E=^dBrv9*2{skx69Q|7{EP073xv0(&vwN&rGY3<54Z1~kzk zAq*(1cgb*a5Ec(&2xwFT^~<75A@oM;Kp)^2IspX?8iX-0>YKa${RPNehLG~tHTxWY z9SLCC{Bnodi`n^9B+<6&+y>h(Sq@~~NL#DkBd*zs2shzeoy`sHpaEJ6+ zA4t9)l+|3*WS*FlS0?$={vzPX*w*A3Vd9YHS0m5cU9<8eqsSk{$m(AOqXhyWB!^jY zW3V8E0}vWaq0(873~d9nR00YC#6h!7f9doG?F0R5bwr^%O8Pe+G8ya-3&;^6;^5LM z`q*%Id0#lug?*}a&iqZfgP+mGd~=v@Hr;BEvrXUMNDI^?PNY=eb=5OURQ&R+L&zUS24!HKhJ zjY`*ZCqm=06Al*HyVyj}+H-Inv{$h>yyVP9U}$$N!CAeo+r!RTf<2F%4W2(?cIX{^9~*W$r2K%OHbjdi!Rwc` z0@s4G&bLG4LjK3m0gnSo{$9OSgY7x*YW)HSj_GPW9AOs`(}G^#e6+IVSI0^5RZ*t4 zYS+DuVtroYr&Pjja9USq%|m-tV)}J?N@|r)&(;UwEk?qWhN6TS_s1nSuipRMMT|ev zfKv=;7>|ruu~Av~*6t+k)j&-v;qr{ky@3xp6rl1s34L3OPur&HgZI)xEm2iqmIAWs3hEYHnssT zwd{~=XWu#IYV_z6bG z6U0EcA4G$TLUMw6bXKNF>d22uZY^FK4ok+Ye@z&>DeIE+%fiMQ>U`D19gz6r2R&nh z<4K|14?DtEbA-Sd*Pqh$4byj54kt~LcSRfyj>}tNqmXh(gJzhqPH-7{_PKp9c8nA;MUI^*z^%kD`?6BC>slY7@dQiAOeifD?~Thcj86sN`aibdfRH)WLHaM_HDga~HUxYb7D*W1cB2!K+9GLsCWYc?vgxK;Z0hnV0mJPlhtGM+gmEcExWxRz`z`5fxJw^F?T zx)2vsUPl@N9VGtYX|>+PIBg(uYuHKB7kG`^LuDE#*qVN<{kN=w(j%kc$232F8uAt? zX+7I+{^o+5jkRAdFD9k8`=t4pi{s(fU0$7Go##6z<6g-dY&Iq-nNHDsHKIjlE@>*O z>SO)6I~_tAx73xH2Tt_B9L~M`@`Lkjhj;%|IK5VmTw8UZ%d@y<8(oL5y5i``nE8bD zrun!tZ?E)qwTyA7Q42>@w-)Y(EoNDHtwnnlqDOumHX5H#Lv_CyVzjSXrCEw=cb`SbiubooJ zOY)Ou^%*@b;JEcfF;B*h@**`e)xU8V0N2z4zDvi(G6>7rF}IrQ6Li*vCZ+X&Oy={t H1<8K_hQmKL literal 0 HcmV?d00001 diff --git a/src/assets/logos/teraport_gmbh_logo.jpg b/src/assets/logos/teraport_gmbh_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..509c6d3a55d3dc8982419f798b4035ec6479a054 GIT binary patch literal 2545 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 AJOBUy literal 0 HcmV?d00001 diff --git a/src/index.html b/src/index.html index d5ad8af..cf4b896 100644 --- a/src/index.html +++ b/src/index.html @@ -2,7 +2,7 @@ - PlaygroundFrontend + Andreas Dahm - Playground diff --git a/src/styles.scss b/src/styles.scss index c081341..6305373 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -26,11 +26,13 @@ $dark-theme: mat.define-theme(( --app-bg: #{mat.get-theme-color($light-theme, surface-container-low)}; --app-fg: #{mat.get-theme-color($light-theme, on-surface)}; --app-card-background: #fafafa; + --app-logo-bg: #313131; } .dark { --app-bg: #{mat.get-theme-color($dark-theme, surface-container-low)}; --app-fg: #{mat.get-theme-color($dark-theme, on-surface)}; --app-card-background: #313131; + --app-logo-bg: #313131; } /* ---- global background and tests ---- */