diff --git a/.github/workflows/continous-deployment.yml b/.github/workflows/continous-deployment.yml new file mode 100644 index 0000000..6e0814c --- /dev/null +++ b/.github/workflows/continous-deployment.yml @@ -0,0 +1,47 @@ +name: Continous Deployment + +on: + push: + branches: + - dev # TODO: remove + - main + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + name: Build & Deploy + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v4 + with: + # Version Spec of the version to use in SemVer notation. + # It also emits such aliases as lts, latest, nightly and canary builds + # Examples: 12.x, 10.15.1, >=10.15.0, lts/Hydrogen, 16-nightly, latest, node + node-version: 20 + - name: Build + run: | + npm install + npm run build + - name: Setup Pages + uses: actions/configure-pages@v3 + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + path: ./dist/cv/browser/ + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/angular.json b/angular.json index 9714800..9e5721f 100644 --- a/angular.json +++ b/angular.json @@ -119,5 +119,8 @@ } } } + }, + "cli": { + "analytics": false } } diff --git a/package-lock.json b/package-lock.json index bc17f5d..61d01b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,14 +9,20 @@ "version": "0.0.0", "dependencies": { "@angular/animations": "^17.0.0", + "@angular/cdk": "^17.0.1", "@angular/common": "^17.0.0", "@angular/compiler": "^17.0.0", "@angular/core": "^17.0.0", "@angular/forms": "^17.0.0", + "@angular/material": "^17.0.1", "@angular/platform-browser": "^17.0.0", "@angular/platform-browser-dynamic": "^17.0.0", "@angular/router": "^17.0.0", + "@types/scrollmagic": "^2.0.8", + "gsap": "^3.12.2", "rxjs": "~7.8.0", + "scrollmagic": "^2.0.8", + "scrollmagic-plugin-gsap": "^1.0.4", "tslib": "^2.3.0", "zone.js": "~0.14.2" }, @@ -263,6 +269,22 @@ "@angular/core": "17.0.4" } }, + "node_modules/@angular/cdk": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.0.1.tgz", + "integrity": "sha512-0hrXm2D0s0/vUtDoLFRWTs75k5WY/hQmfnsaJXHeqinbE3eKOxmQxL1i7ymnMSQthEWzgRAhzS3Nfs7Alw3dQA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@angular/common": "^17.0.0 || ^18.0.0", + "@angular/core": "^17.0.0 || ^18.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, "node_modules/@angular/cli": { "version": "17.0.3", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.0.3.tgz", @@ -391,6 +413,70 @@ "rxjs": "^6.5.3 || ^7.4.0" } }, + "node_modules/@angular/material": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-17.0.1.tgz", + "integrity": "sha512-avicxHCJAeg26Tg8z6+g54tMTQZPP5kaaRmkd97QGtJn3wKiAen6WOgmEhlrA4jPJ71CsdyxcUruEX+BHB6X4Q==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/auto-init": "15.0.0-canary.a246a4439.0", + "@material/banner": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/button": "15.0.0-canary.a246a4439.0", + "@material/card": "15.0.0-canary.a246a4439.0", + "@material/checkbox": "15.0.0-canary.a246a4439.0", + "@material/chips": "15.0.0-canary.a246a4439.0", + "@material/circular-progress": "15.0.0-canary.a246a4439.0", + "@material/data-table": "15.0.0-canary.a246a4439.0", + "@material/density": "15.0.0-canary.a246a4439.0", + "@material/dialog": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/drawer": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/fab": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/floating-label": "15.0.0-canary.a246a4439.0", + "@material/form-field": "15.0.0-canary.a246a4439.0", + "@material/icon-button": "15.0.0-canary.a246a4439.0", + "@material/image-list": "15.0.0-canary.a246a4439.0", + "@material/layout-grid": "15.0.0-canary.a246a4439.0", + "@material/line-ripple": "15.0.0-canary.a246a4439.0", + "@material/linear-progress": "15.0.0-canary.a246a4439.0", + "@material/list": "15.0.0-canary.a246a4439.0", + "@material/menu": "15.0.0-canary.a246a4439.0", + "@material/menu-surface": "15.0.0-canary.a246a4439.0", + "@material/notched-outline": "15.0.0-canary.a246a4439.0", + "@material/radio": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/segmented-button": "15.0.0-canary.a246a4439.0", + "@material/select": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/slider": "15.0.0-canary.a246a4439.0", + "@material/snackbar": "15.0.0-canary.a246a4439.0", + "@material/switch": "15.0.0-canary.a246a4439.0", + "@material/tab": "15.0.0-canary.a246a4439.0", + "@material/tab-bar": "15.0.0-canary.a246a4439.0", + "@material/tab-indicator": "15.0.0-canary.a246a4439.0", + "@material/tab-scroller": "15.0.0-canary.a246a4439.0", + "@material/textfield": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tooltip": "15.0.0-canary.a246a4439.0", + "@material/top-app-bar": "15.0.0-canary.a246a4439.0", + "@material/touch-target": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^17.0.0 || ^18.0.0", + "@angular/cdk": "17.0.1", + "@angular/common": "^17.0.0 || ^18.0.0", + "@angular/core": "^17.0.0 || ^18.0.0", + "@angular/forms": "^17.0.0 || ^18.0.0", + "@angular/platform-browser": "^17.0.0 || ^18.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, "node_modules/@angular/platform-browser": { "version": "17.0.4", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.0.4.tgz", @@ -2761,6 +2847,758 @@ "node": ">= 0.4" } }, + "node_modules/@material/animation": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-0eV06UGYeuFwC/4t+yjg3LCRGRLq72ybBtJYzcBDpP4ASTjie0WmpAOFJYXRq2U5X/yxLviDMhpRemoSUjgZ0Q==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/auto-init": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-0QfmjT5elQ10hCxToVgq/WaC3301tVH1sJaO3O2yocVzr7s6iWm8/zch16V5hcHzQHbtcT3Rf4y1ZzmdNys2Iw==", + "dependencies": { + "@material/base": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/banner": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-PBLgH7JEbEpTkLy33oyWXUhIFmSsdOrR6Gn6qIgQRo1qrnk5RSBGW2gEq4Z6793vjxM107gKudDb23E4Fcu4vg==", + "dependencies": { + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/button": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/base": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-/ob3v3IFU8q2gGdVNWw5kNPjW2mRTeBIz1YdhGWUmRxKn2Kl8bdLOvrAmZtQMmPn/4cGXvinxpec/zVBWQKDkA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/button": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-rGpVRde0Aqhv2t9QvT8Zl3HvG89BeUNPOpgfpaLBZ4SGGAO4rIrckl/eCENibKgmmdCKcYZlG9gc5abQVPfUvw==", + "dependencies": { + "@material/density": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/focus-ring": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/touch-target": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/card": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-+rYUnBPgv5QVF6BeUs3toIRdSwFVohGmjk2ptTXMZkKxqAJt7Nr9Znbm3Ym2hD8GUHJeh3pyGFvEs6rG6JMYAw==", + "dependencies": { + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/checkbox": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-sQwHzm1TSxHUoPrqplWTk/BhyzdDhzcwlbucwJK9W0o9WXMDk+d9PvcCxpP/9sAnVqZk42BfE89Y0T1DHglZ9A==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/density": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/focus-ring": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/touch-target": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/chips": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-TiV9WJ5taEHPGWPhXbxJvUJhLzThg+VpK7aAlvL4RurtmJ7pURuEdRS4Z6o0OEqi3wKQ4z/+K44kZUn/+9HALg==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/checkbox": "15.0.0-canary.a246a4439.0", + "@material/density": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/focus-ring": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/touch-target": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/circular-progress": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-+QTfyExPWzgm2tqMInd32qQOftsC1b8MUhAhZSfuecYBfqAc7KZkQEKa2nm4y8EHKMFWe8/DcxLV6IxMBLgHwA==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/progress-indicator": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/data-table": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-89qVOjR7gqby6fsmh7tKj29SjQ2sGLXu2IzCeX3Vni4mz+xxo5dv11jxYNADvdgJDfhyDJFPh1FlqAH7O09nFA==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/checkbox": "15.0.0-canary.a246a4439.0", + "@material/density": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/icon-button": "15.0.0-canary.a246a4439.0", + "@material/linear-progress": "15.0.0-canary.a246a4439.0", + "@material/list": "15.0.0-canary.a246a4439.0", + "@material/menu": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/select": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/touch-target": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/density": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-h8BJVCWkPR97WeWCN6/atVbSOP8J4+ZbbssidcwsnX7b3+3IaWdtBxGii25dsILX8pUVwwqxVis24y211b+8rg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/dialog": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-4lyxd+5ccOEMUGKzZcssaYyzkCsYTpYCSQSANR0toQPLv3voDwKMfA709uZI6+nL7Re6Xdf7jx8qe+QpTTjVcw==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/button": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/icon-button": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/touch-target": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/dom": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-AftSOGQoQg/Ys2kOVjZzvqWmsnhg3Kam/2UC4Gj0DMMCu36J4MAoD+3PpnOd1aG3wiJKtUXR2vPIwE8I/PM9yg==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/drawer": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-/JUmbzRBaikdbZ250yA9ZTPqp2W5nGvvuHYoNVAAmtOmxuwGvvNNpWiVZy2lIYeYcf1hA7hJ5mEQxs0aSD7iWQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/list": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/elevation": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-lwPIOb8fHyOljIWYcVLPT73dPIEOKat/CXu6gqYIVMQgZQIksQNUA7z1O3l7apkRSuYUOYSXqrgU7AnWP4KcJg==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/fab": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-XUex3FNqxPD1i/4jITucB/RWTNkkdv52mbNmwrvbuThZlhuhyH9GzOQYTDop/b2783TPcv++xr8UUbuh8GWYzA==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/focus-ring": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/touch-target": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/feature-targeting": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-/SU9X5y8CRp6RS9qnjnM/N5qfsJ8bYILpR841eZmN6DLqMupaM9Yy7Mx8+v/QvpBLLhk+jmu79nFzwkwW54d6Q==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/floating-label": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-832qZ/qxKx0KUatoeVY3Q2NmboVgiWBG0/1VsbJyodHrgQWfnBOHgLE+M322o6uM3OhvO+kWm4iYbvwhmLZGsw==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/focus-ring": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-ar0BtACFS3K14k/enAg0ePeEA/f/RJY4Ji4L/00Dw/B3XVpNRbqLH49jkcbtcQjdTS0FEyk2sWSNMZl6wVi0/A==", + "dependencies": { + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0" + } + }, + "node_modules/@material/form-field": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-Q/+ErgtAUFUPPUmWA1m5IP5voiN8XjPRwyoAlFxSTa/4t+EA5B18Z8Bsn9b6I0AC8RHke06H7UWrKz8XUDIFpw==", + "dependencies": { + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/icon-button": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-Igyo94rkIlqC91BR1Tv+WLTz1ZWcZZjl1xU7Vsx8mbWA1PnaRDUTNVV5LFi4e0ORp6GSblFTImpHngEy4agMEg==", + "dependencies": { + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/density": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/focus-ring": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/touch-target": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/image-list": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-Rcj3q7Tp7Nwbe5ht6ptTc3zqK8TSDJHaPDBf+kzi0kkh6MAB4qoHPgn+HnA+zIZ79CScU56bN7zjA6XYaZvsLw==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/layout-grid": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-bkfxZuVzgtjEJgR3n8pvDQbe88ffULDJ5d2DF34IR8SOiRmQcj7UzqAt95XwIUcWlfisLCoIryP4U8XSpFb1EQ==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/line-ripple": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-20WmwRrejmtOdI37+959UqEVIjbMtAXlkDOkfCIA3OUhp+oZSjVkCqKxI16jxxVlnzJ353fy8xeSKzOHe4sExQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/linear-progress": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-IcCd4476pXHloTYadHDJ+2c2lntoVigeNnQEiD/ASQTKqKrJqkIdvvczFm9Ryu+V2+TKhp7vvQGFLUMaLPcmhw==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/progress-indicator": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/list": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-4H5dKIjCUGIPmKjfcegV0SBybD5NNdHp26OU6sovvWIvxSGQtDJr6z9I7i+0vF/HIS5ScbHD2+9/txtL80iqCA==", + "dependencies": { + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/density": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/menu": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-2HOHQAIdWQtXjSvEIrW3lnbcIwFf5XaQhFzCEZ04FcSGApc4iLwsmRFVW3PzWx+mVrUrEfO/K42DVULIX9J1Pg==", + "dependencies": { + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/list": "15.0.0-canary.a246a4439.0", + "@material/menu-surface": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/menu-surface": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-4h4wZ0Rs7qBg1Otldw8ljp+LCULNL42pqbqcTXhKAkJM7pHcSw4k7IfoThSRLU3+V8T3/+qiAXyeQix2OGHzwg==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/notched-outline": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-zmRZHJ+5cOWsBatRyK50wuht78olXySyKOJIIEmy8lxSMZefI1764u0mr8tS1KYF8vSAl5cUlwCC3/2Njz1FPg==", + "dependencies": { + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/floating-label": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/progress-indicator": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-92HM5niUnqG5Y3M/xkscBD+2lkaWPDcIRPo0RHPYcyldL+EhWRv/sdQpfdiXw/h3uvKSowKxBMCHm8krAyf+sQ==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/radio": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-on8EVztWXc/ajcaowFZ31ClGADYxQrhj4ulMne0NxdHHWQ44ttf5aXOVqtv5mxeOzrRACOkQyTUXBG07yTWCEQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/density": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/focus-ring": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/touch-target": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/ripple": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-Vl615/PIBpBD+IOI9Xypz0SV3RsmYJYSNx890Rih7irhUOaPsOUBmTYOWF5AsGBynqLcXoTNVhK92drYLKtJwQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/rtl": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-pgJFw8ZRpWGpwv7ZuBTJ+WdNmFBKoLVoMbbxKQWTHXVwhAqn3aoIq95o62T5QeEG/+sguNShdquG45CpAMmSRw==", + "dependencies": { + "@material/theme": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/segmented-button": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-oqGHs2C7C+yJW/xZf/wP8jBGLs6HcerhM3CsorLAEMH3MGuIlVC17WcisBewEWucsILYEWbySXy/7T4h6/psZA==", + "dependencies": { + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/touch-target": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/select": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-odoNLiVOgdwbEeePkjHtlr43pjskDwyO8hi4z3jcud1Rg1czk5zoJ2mUI0+olOJjBQ26PGocwrSLqf3qaThbIA==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/density": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/floating-label": "15.0.0-canary.a246a4439.0", + "@material/line-ripple": "15.0.0-canary.a246a4439.0", + "@material/list": "15.0.0-canary.a246a4439.0", + "@material/menu": "15.0.0-canary.a246a4439.0", + "@material/menu-surface": "15.0.0-canary.a246a4439.0", + "@material/notched-outline": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/shape": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-rcWPlCoHyP79ozeEKk73KWt9WTWdh6R68+n75l08TSTvnWZB5RRTmsI9BMkz55O9OJD/8H8ZsOxBe4x2QXUT7w==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/slider": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-is1BSBpxaXBBv+wSVpe9WGWmWl59yJEeDNubTES2UFD0er3BmA+PdKkL09vvytDnBcbKf77TbxaRiUSGVaKUQA==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/snackbar": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-2NAtC1qozR/uajszZnPy08Ej8HNnpgvCjNCBerDN4SLH2Q0/aWrVrUjqRCp2ayAvsX+szoroGbCboMhaWRzDuQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/button": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/icon-button": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/switch": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-o0wcbYgm2yRs4een5uxT4RJnJ003DxXe33rk8vTBG2o7cdiSR3X7GJQxeIK3D9wPgWCAwBLhNYSzXrlTL5pkMw==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/density": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/focus-ring": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-HGLK774uMeLnhbjDJBOjft7S6SurZnKb+6Und88OMDUVUEG6MkFBAKQQr09iBIeLE2sUAiGQhBVQtb7LJKwolQ==", + "dependencies": { + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/focus-ring": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/tab-indicator": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-bar": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-dMQb1vXsBchQXcjbwgJZIGqTZHngm+3QGSOSb4LWjqHIgC5+w2RRrHsIAjNTyRhKssJ9nKKrbpM/Yz5vTPWH6w==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/density": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/tab": "15.0.0-canary.a246a4439.0", + "@material/tab-indicator": "15.0.0-canary.a246a4439.0", + "@material/tab-scroller": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-indicator": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-gG2BgHT+ggKnUOaT8LjmH/+9nknRLh8v9qemrhUkDuCtZ8inlaC33OVbbxfrpQW3J+UzBh5YCUSC+2KrN39uUA==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-scroller": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-6KvBpalc4SwLbHFm0rnuIE64VffUj7AKhnPc+mqM6VmxOvDzQ/ZSYga0rWlUfM4mCDFX3ZkSxim+iNzVF+Ejaw==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/tab": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/textfield": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-4BW5bUERPlIeiPnLSby21h1/xDmySuAG9Ucn1LM801a0+5mK3IwWb8031AP3filKZZqTx5JJvOJYZd6/OWBJVA==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/density": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/floating-label": "15.0.0-canary.a246a4439.0", + "@material/line-ripple": "15.0.0-canary.a246a4439.0", + "@material/notched-outline": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/theme": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-HWxC5Nhz8JZKTLTVmAsNxIGB3Kzr53+YFMg327S8/XuEDmI0RFHFvtwM9rADmyrHFBmUaVhV4iELyxFdi67c9w==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tokens": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-+5iGfQ51YSb0Qau8uC6/jHXCSC3enKaQKDf/iPHfuXAe04UznW3tmm1/Ju227aZXNISTJcnQYa2rpm1M14MeUg==", + "dependencies": { + "@material/elevation": "15.0.0-canary.a246a4439.0" + } + }, + "node_modules/@material/tooltip": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-Ja2Z4aZQkYWD6InXA+MG4M9zdKR6dYsXXlYzQppYpfcQzXylZqh5Y7WBLulG5fA2o83pHVwILfwFZM7j7ht08Q==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/button": "15.0.0-canary.a246a4439.0", + "@material/dom": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/tokens": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/top-app-bar": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-twQchmCa1In/FFrALPYojgeM8vmV7KH96wRY9NmPSJ046ANgPCicLBgLuSzrLETCFqAwbztqzxSG4xMBL81rYg==", + "dependencies": { + "@material/animation": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/elevation": "15.0.0-canary.a246a4439.0", + "@material/ripple": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/shape": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/typography": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/touch-target": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-ubyD1TUjZnRPEdDnk6Lrcm2ZsjnU7CV5y7IX8pj9IPawiM6bx4FkjZBxUvclbv3WiTGk5UOnwPOySYAJYAMQ1w==", + "dependencies": { + "@material/base": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/typography": { + "version": "15.0.0-canary.a246a4439.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.a246a4439.0.tgz", + "integrity": "sha512-eXzBl9ROzWZ+41nan5pCrn1C/Zq3o/VsrLFaGv8fdRmhRR6/wHMeuvCCwGf5VtEmWdAE9FpJzRU/4ZPiJCJUyg==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.a246a4439.0", + "tslib": "^2.1.0" + } + }, "node_modules/@ngtools/webpack": { "version": "17.0.3", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.0.3.tgz", @@ -3231,6 +4069,11 @@ "@types/send": "*" } }, + "node_modules/@types/gsap": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/gsap/-/gsap-1.20.2.tgz", + "integrity": "sha512-i9nUsnS32+VTgoX5IlaCYukJpCoB3c6h3bZvO67aIRdb3z8NFTWgeUDpQutLyb1ujowp6nw37qLQNvEowqq8yw==" + }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", @@ -3300,6 +4143,11 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "node_modules/@types/scrollmagic": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/scrollmagic/-/scrollmagic-2.0.8.tgz", + "integrity": "sha512-hbWfZlV2v5XaPCGdVXPVReNdtzO81C0Lfpip0scC/iDec3VNMtmQsvYMsZfIEPRC5b5+M2leJIarxlVUgviCNQ==" + }, "node_modules/@types/send": { "version": "0.17.4", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", @@ -5624,7 +6472,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.12" }, @@ -6541,6 +7389,11 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, + "node_modules/gsap": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.12.2.tgz", + "integrity": "sha512-EkYnpG8qHgYBFAwsgsGEqvT1WUidX0tt/ijepx7z8EUJHElykg91RvW1XbkT59T0gZzzszOpjQv7SE41XuIXyQ==" + }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -9491,7 +10344,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, + "devOptional": true, "dependencies": { "entities": "^4.4.0" }, @@ -10508,6 +11361,11 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "node_modules/safevalues": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz", + "integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==" + }, "node_modules/sass": { "version": "1.69.5", "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", @@ -10594,6 +11452,22 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/scrollmagic": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/scrollmagic/-/scrollmagic-2.0.8.tgz", + "integrity": "sha512-UYXEGBPVLziovXl3FjHGkY9c4UXKUKopIdXwWR2JapWxCo0U345wYegi7rcsv5vHf/ktc1bSNWy4QRFiV+Yccw==", + "engines": { + "node": ">=0.10.x" + } + }, + "node_modules/scrollmagic-plugin-gsap": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/scrollmagic-plugin-gsap/-/scrollmagic-plugin-gsap-1.0.4.tgz", + "integrity": "sha512-OLeo4J6V9wvnRP03/LJkgb5qkHIOzSckWX3hJ+Hh3uPJIfwttxCRRr4+w16WHPCQwZidUA9eEbtKeR7kyjdHVg==", + "dependencies": { + "@types/gsap": "^1.20.1" + } + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", diff --git a/package.json b/package.json index 31b37bc..fbe18ac 100644 --- a/package.json +++ b/package.json @@ -4,20 +4,23 @@ "scripts": { "ng": "ng", "start": "ng serve", - "build": "ng build", + "build": "ng build --base-href='./'", "watch": "ng build --watch --configuration development", "test": "ng test" }, "private": true, "dependencies": { "@angular/animations": "^17.0.0", + "@angular/cdk": "^17.0.1", "@angular/common": "^17.0.0", "@angular/compiler": "^17.0.0", "@angular/core": "^17.0.0", "@angular/forms": "^17.0.0", + "@angular/material": "^17.0.1", "@angular/platform-browser": "^17.0.0", "@angular/platform-browser-dynamic": "^17.0.0", "@angular/router": "^17.0.0", + "gsap": "^3.12.2", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.14.2" diff --git a/src/app/app.component.html b/src/app/app.component.html index f240b8b..14f5f0d 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,335 +1,77 @@ - - - - - - - - - + - .social-links a:hover svg path { - fill: var(--gray-900); - } + - @media screen and (max-width: 650px) { - .content { - flex-direction: column; - width: max-content; - } + + +
- .divider { - height: 1px; - width: 100%; - background: var(--red-to-pink-to-purple-horizontal-gradient); - margin-block: 1.5rem; - } - } - +
+ +
-
-
-
- -

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: '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 }} - - - - - } -
-
- - - - - - - - - + +
+
+

+ Axel Herrmann - wer ist das? + Momentan bin ich ein 21-jähriger Student an der Universität Stuttgart im Studiengang Software Engineering B.Sc., der seine Bachelorthesis schreibt. + Doch meine Geschichte mit Informatik beginnt viel früher, denn ich konnte mich schon früh für Informatik begeistern. + Bereits in der 7. Klasse hat mein Vater mir einen Online-Blog über Java gezeigt, durch den ich meine ersten Zeilen Java Code geschrieben habe. + Als ich dann in der 10. Klasse das erste Mal die Chance hatte, Informatikunterricht zu besuchen, wusste ich sofort, was ich in Zukunft machen will. + Immer auf der Suche nach echten Aufgaben, bei denen ich programmieren kann, habe ich 2018 mit Freunden am #IoT Hackthon meiner Schule teilgenommen. + Da mein Informatik-Lehrer sah, wie viel Spaß mir das machte, gab er mir als einzigem Schüler die Möglichkeit, an der Verwaltungssoftware für das Schulprojekt Schule als Staat (SaS) mit ihm zu entwickeln. + Als erstes etwaws größeres Projekt, an dem ich gearbeitet habe, hat das meine Entscheidung gefestigt, Informatik studieren zu wollen. + So habe ich nach der Schule direkt damit angefangen. + Besonders viel Spaß haben mir dabei immer die Module gemacht, bei denen ich programmieren konnte. +

+

+ Um mehr Bezug zur Praxis zu haben und Erfahrung zu sammeln, suchte ich mir bereits im 3. Semester meines Studiums eine Werkstudentenstelle. + So bin ich bei levigo solutions gelandet, wo ich ab Beginn 2022 1,5 Jahre am Produkt jadice flow mitentwickelt habe. + Hier konnte ich erste Erfahrungen mit renomierten Technologien wie Docker und Kubernetes sammeln und hatte viel Spaß bei der Arbeit. +

+
+
+
+
+ diff --git a/src/app/app.component.ts b/src/app/app.component.ts index d708535..d54d956 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,13 +1,72 @@ -import { Component } from '@angular/core'; -import { CommonModule } from '@angular/common'; +import {Component, ViewChild} from '@angular/core'; +import {CommonModule, NgOptimizedImage} from '@angular/common'; +import {MatCardModule} from "@angular/material/card"; + +import gsap from 'gsap' +import { ScrollTrigger } from "gsap/ScrollTrigger" +import {MatGridListModule} from "@angular/material/grid-list"; + +gsap.registerPlugin(ScrollTrigger); @Component({ selector: 'app-root', standalone: true, - imports: [CommonModule], + imports: [CommonModule, NgOptimizedImage, MatCardModule, MatGridListModule], templateUrl: './app.component.html', styleUrl: './app.component.scss' }) export class AppComponent { - title = 'CV'; + + @ViewChild('avatar') avatar: any; + @ViewChild('main') backgroundDiv: any; + @ViewChild('arrow_down') arrowDown: any; + @ViewChild('general') general: any; + + ngAfterViewInit(): void { + gsap.from(this.arrowDown.nativeElement, { + opacity: 0, + duration: 2, + }) + .play(); + gsap.from(this.arrowDown.nativeElement, { + y: -20, + delay: 1.5, + duration: 1, + ease: "bounce", + }) + .play(); + + const timeline: gsap.core.Timeline = gsap.timeline({ + scrollTrigger: { + start: "top top", + trigger: this.general.nativeElement, + end: "+=500", + // markers: true, // TODO remove + scrub: true, + pin: true + } + }); + + timeline + .from(this.avatar.nativeElement, { + xPercent: 50, + yPercent: 20, + scale: 1.3, + duration: 1, + ease: "power2.out" + }) + .to(this.arrowDown.nativeElement, { + opacity: 0, + duration: 0.5 + }, "<") + const generalChildren = this.general.nativeElement.children; + for (let i = 0; i < generalChildren.length; i++) { + const textPart = generalChildren[i]; + timeline.from(textPart, { + xPercent: 120, + duration: 0.6 + }, "<0.2"); + } + console.log(this.general); + } } diff --git a/src/app/app.config.ts b/src/app/app.config.ts index c4a32cc..374811f 100644 --- a/src/app/app.config.ts +++ b/src/app/app.config.ts @@ -1,5 +1,6 @@ import { ApplicationConfig } from '@angular/core'; +import { provideAnimations } from '@angular/platform-browser/animations'; export const appConfig: ApplicationConfig = { - providers: [] + providers: [provideAnimations()] }; diff --git a/src/assets/arrow-down.drawio.svg b/src/assets/arrow-down.drawio.svg new file mode 100644 index 0000000..f96f230 --- /dev/null +++ b/src/assets/arrow-down.drawio.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/pic1.jpeg b/src/assets/pic1.jpeg new file mode 100644 index 0000000..52d85b6 Binary files /dev/null and b/src/assets/pic1.jpeg differ diff --git a/src/assets/profile-pic.jpeg b/src/assets/profile-pic.jpeg new file mode 100644 index 0000000..c09e345 Binary files /dev/null and b/src/assets/profile-pic.jpeg differ diff --git a/src/index.html b/src/index.html index 7b33ab1..73ad579 100644 --- a/src/index.html +++ b/src/index.html @@ -2,12 +2,14 @@ - CV + CV - Axel Herrmann + + - + diff --git a/src/styles.scss b/src/styles.scss index 90d4ee0..fbfd5b1 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -1 +1,56 @@ + +// Custom Theming for Angular Material +// For more information: https://material.angular.io/guide/theming +@use '@angular/material' as mat; +// Plus imports for other components in your app. + +// Include the common styles for Angular Material. We include this here so that you only +// have to load a single css file for Angular Material in your app. +// Be sure that you only ever include this mixin once! +@include mat.core(); + +// Define the palettes for your theme using the Material Design palettes available in palette.scss +// (imported above). For each palette, you can optionally specify a default, lighter, and darker +// hue. Available color palettes: https://material.io/design/color/ +$CV-primary: mat.define-palette(mat.$indigo-palette); +$CV-accent: mat.define-palette(mat.$pink-palette, A200, A100, A400); + +// The warn palette is optional (defaults to red). +$CV-warn: mat.define-palette(mat.$red-palette); + +// Create the theme object. A theme consists of configurations for individual +// theming systems such as "color" or "typography". +$CV-theme: mat.define-light-theme(( + color: ( + primary: $CV-primary, + accent: $CV-accent, + warn: $CV-warn, + ) +)); + +// Include theme styles for core and each component used in your app. +// Alternatively, you can import and @include the theme mixins for each component +// that you are using. +@include mat.all-component-themes($CV-theme); + /* You can add global styles to this file, and also import other style files */ + +html, body { height: 100% !important } +body { + margin: 0; + font-family: Roboto, "Helvetica Neue", sans-serif; + +} + +// TODO remove once style theme is properly done: Anleitung dafür: https://angularindepth.com/posts/1320/custom-theme-for-angular-material-components-series-part-1-create-a-theme +:root { + --color-grey-dark-1: #363C43; + --color-grey-dark-2: #747474; + --color-grey-medium-1: #CACACA; + --color-white-darker: #E9E8E7; + + .text-color-grey-dark-1 { color: var(--color-grey-dark-1); } + .text-color-grey-dark-2 { color: var(--color-grey-dark-2); } + .text-color-grey-medium-1 { color: var(--color-grey-medium-1); } + .color-white-darker { color: var(--color-white-darker); } +}