diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e144c739..56e45c0d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: with: context: . tags: | - ghcr.io/b310-digital/teammapper:latest + ghcr.io/kitsteam/teammapper:latest teammapper-backend-lint: runs-on: ubuntu-latest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dcd1b9a2..6cf33107 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -49,8 +49,8 @@ jobs: - name: Build and push Docker image uses: docker/build-push-action@v6 with: - platforms: linux/amd64,linux/arm64/v8 + platforms: linux/amd64 target: production push: true tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file + labels: ${{ steps.meta.outputs.labels }} diff --git a/README.md b/README.md index b9a578d3..f79a6866 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ services: - postgres_prod postgres_prod: - image: postgres:12-alpine + image: postgres:15-alpine # Pass config parameters to the postgres server. # Find more information below when you need to generate the ssl-relevant file your self # command: -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key @@ -227,6 +227,10 @@ be found on https://kits.blog/tools and can be used by schools for free. Logos and text provided with courtesy of kits. +## Additional licence + +The TeamMapper[logo](https://thenounproject.com/icon/188125/) in this repo – created by [Gregor Cresnar](https://thenounproject.com/grega.cresnar) – is licenced under [CC BY 3.0 Unported](https://creativecommons.org/licenses/by/3.0/). + ## Acknowledgements - *Pictograms author: Sergio Palao. Origin: ARASAAC (http://www.arasaac.org). License: CC (BY-NC-SA). Owner: Government of Aragon (Spain) diff --git a/docker-compose-prod.yml b/docker-compose-prod.yml index 3056f2d6..60a689c0 100644 --- a/docker-compose-prod.yml +++ b/docker-compose-prod.yml @@ -23,6 +23,7 @@ services: DELETE_AFTER_DAYS: ${DELETE_AFTER_DAYS:-30} ports: - "${APP_PROD_PORT:-80}:3000" + restart: always depends_on: - postgres_prod @@ -30,13 +31,14 @@ services: image: postgres:15-alpine # Pass config parameters to the postgres server. # Find more information below when you need to generate the ssl-relevant file your self - # command: -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key + command: -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key environment: PGDATA: /var/lib/postgresql/data/pgdata POSTGRES_DB: ${POSTGRES_PROD_DB} POSTGRES_PASSWORD: ${POSTGRES_PROD_PASSWORD} POSTGRES_PORT: ${POSTGRES_PROD_PORT:-5432} POSTGRES_USER: ${POSTGRES_PROD_USER} + restart: always volumes: # To setup an ssl-enabled postgres server locally, you need to generate a self-signed ssl certificate. # See README.md for more information. diff --git a/teammapper-frontend/package-lock.json b/teammapper-frontend/package-lock.json index f733cb40..409e3cbf 100644 --- a/teammapper-frontend/package-lock.json +++ b/teammapper-frontend/package-lock.json @@ -723,14 +723,10 @@ "node": ">=12" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "license": "MIT", + "node_modules/@angular-devkit/build-angular/node_modules/@types/node": { + "version": "22.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", + "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", "optional": true, "os": [ "netbsd" @@ -825,11 +821,7 @@ "integrity": "sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg==", "license": "MIT", "dependencies": { - "@inquirer/core": "^9.0.10", - "@inquirer/type": "^1.5.2" - }, - "engines": { - "node": ">=18" + "undici-types": "~6.19.8" } }, "node_modules/@angular-devkit/build-angular/node_modules/@vitejs/plugin-basic-ssl": { @@ -1122,6 +1114,7 @@ "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-19.0.2.tgz", "integrity": "sha512-f/OCF9ThnxQ8m0eNYPwnCrySQPhYfCOF6STL7F9LnS8Bs3ZeW3/oT1yLaMIZ1Eg0ogIkgxksMAJZjrJPUPBD1Q==", "dev": true, + "license": "MIT", "dependencies": { "@angular-eslint/bundled-angular-compiler": "19.0.2", "@angular-eslint/utils": "19.0.2", @@ -1136,18 +1129,38 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-19.0.2.tgz", - "integrity": "sha512-HPmp92r70SNO/0NdIaIhxrgVSpomqryuUk7jszvNRtu+OzYCJGcbLhQD38T3dbBWT/AV0QXzyzExn6/2ai9fEw==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.1.tgz", + "integrity": "sha512-sikmkjfsXPpPTku1aQkQ1MNNEKGBgGGRvUN/WeNS9dhCJ4dxU3O7dZctt1aQWj+W3nbuUtDiimAWF5fZHGFE2Q==", "dev": true }, "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@angular-eslint/utils": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-19.0.2.tgz", - "integrity": "sha512-HotBT8OKr7zCaX1S9k27JuhRiTVIbbYVl6whlb3uwdMIPIWY8iOcEh1tjI4qDPUafpLfR72Dhwi5bO1E17F3/Q==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.3.1.tgz", + "integrity": "sha512-sd9niZI7h9H2FQ7OLiQsLFBhjhRQTASh+Q0+4+hyjv9idbSHBJli8Gsi2fqj9zhtMKpAZFTrWzuLUpubJ9UYbA==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.3.1" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/eslint-plugin/node_modules/@angular-eslint/bundled-angular-compiler": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.1.tgz", + "integrity": "sha512-sikmkjfsXPpPTku1aQkQ1MNNEKGBgGGRvUN/WeNS9dhCJ4dxU3O7dZctt1aQWj+W3nbuUtDiimAWF5fZHGFE2Q==", + "dev": true + }, + "node_modules/@angular-eslint/eslint-plugin/node_modules/@angular-eslint/utils": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.3.1.tgz", + "integrity": "sha512-sd9niZI7h9H2FQ7OLiQsLFBhjhRQTASh+Q0+4+hyjv9idbSHBJli8Gsi2fqj9zhtMKpAZFTrWzuLUpubJ9UYbA==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.0.2" + "@angular-eslint/bundled-angular-compiler": "18.3.1" }, "peerDependencies": { "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", @@ -1215,19 +1228,13 @@ "typescript": "*" } }, - "node_modules/@angular-eslint/schematics/node_modules/@angular-eslint/utils": { - "version": "18.4.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.4.0.tgz", - "integrity": "sha512-At1yS8GRviGBoaupiQwEOL4/IcZJCE/+2vpXdItMWPGB1HWetxlKAUZTMmIBX/r5Z7CoXxl+LbqpGhrhyzIQAg==", + "node_modules/@angular-eslint/schematics/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, - "license": "MIT", - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.4.0" - }, - "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "engines": { + "node": ">= 0.4" } }, "node_modules/@angular-eslint/template-parser": { @@ -1235,6 +1242,7 @@ "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-19.0.2.tgz", "integrity": "sha512-z3rZd2sBfuYcFf9rGDsB2zz2fbGX8kkF+0ftg9eocyQmzWrlZHFmuw9ha7oP/Mz8gpblyCS/aa1U/Srs6gz0UQ==", "dev": true, + "license": "MIT", "dependencies": { "@angular-eslint/bundled-angular-compiler": "19.0.2", "eslint-scope": "^8.0.2" @@ -1245,9 +1253,9 @@ } }, "node_modules/@angular-eslint/template-parser/node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-19.0.2.tgz", - "integrity": "sha512-HPmp92r70SNO/0NdIaIhxrgVSpomqryuUk7jszvNRtu+OzYCJGcbLhQD38T3dbBWT/AV0QXzyzExn6/2ai9fEw==", + "version": "18.4.2", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.4.2.tgz", + "integrity": "sha512-K7pqmZI3Dl75zlLexyaM7bw4xdgk/3bhP1B6uqDKML9+vIIvccCR2bGvqFurqeFbJlMykzb3H4jytT+HpqV4tg==", "dev": true }, "node_modules/@angular-eslint/utils": { @@ -4742,16 +4750,13 @@ "node": ">=18" } }, - "node_modules/@inquirer/core/node_modules/@inquirer/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", - "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "node_modules/@inquirer/core/node_modules/@types/node": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.1.tgz", + "integrity": "sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==", "license": "MIT", "dependencies": { - "mute-stream": "^1.0.0" - }, - "engines": { - "node": ">=18" + "undici-types": "~6.19.2" } }, "node_modules/@inquirer/editor": { diff --git a/teammapper-frontend/src/app/core/services/settings/settings.service.spec.ts b/teammapper-frontend/src/app/core/services/settings/settings.service.spec.ts index 1e3d4a5a..75f0cc71 100644 --- a/teammapper-frontend/src/app/core/services/settings/settings.service.spec.ts +++ b/teammapper-frontend/src/app/core/services/settings/settings.service.spec.ts @@ -39,6 +39,7 @@ describe('SettingsService', () => { modificationSecret: '456', adminId: '123', rootName: 'test', + createdAt: new Date(), }; storageService.getAllCreatedMapsFromStorage.mockResolvedValue([ @@ -65,6 +66,7 @@ describe('SettingsService', () => { modificationSecret: '456', adminId: '123', rootName: 'test', + createdAt: new Date(), }; const otherCachedMapDataFromStorage: CachedAdminMapValue = { @@ -72,6 +74,7 @@ describe('SettingsService', () => { modificationSecret: '456', adminId: '123', rootName: 'test', + createdAt: new Date(), }; storageService.getAllCreatedMapsFromStorage.mockResolvedValue([ diff --git a/teammapper-frontend/src/app/modules/application/components/dialog-about/dialog-about.component.html b/teammapper-frontend/src/app/modules/application/components/dialog-about/dialog-about.component.html index 73646fec..46aca948 100644 --- a/teammapper-frontend/src/app/modules/application/components/dialog-about/dialog-about.component.html +++ b/teammapper-frontend/src/app/modules/application/components/dialog-about/dialog-about.component.html @@ -1,27 +1,34 @@

{{ applicationName }} {{ version }}

- Teammapper Logo + {{ 'PAGES.ABOUT.INTRODUCTION.APPLICATION_DESCRIPTION' | translate }} +

+ + GitHub + + · Impressum · + Datenschutz

-
+
{{ 'MODALS.INFO.DELETE_AFTER_DAYS' | translate : { deleteAfterDays: map.deleteAfterDays } }} -
+

{{ 'MODALS.INFO.DELETED_AT' | translate }} - {{ map.deletedAt | date : 'YYYY-MM-dd' }}
- + {{ map.deletedAt | date : 'YYYY-MM-dd' }}

- - {{ applicationName }} - -
diff --git a/teammapper-frontend/src/app/modules/application/components/dialog-about/dialog-about.component.scss b/teammapper-frontend/src/app/modules/application/components/dialog-about/dialog-about.component.scss index 857e932a..7247cc36 100644 --- a/teammapper-frontend/src/app/modules/application/components/dialog-about/dialog-about.component.scss +++ b/teammapper-frontend/src/app/modules/application/components/dialog-about/dialog-about.component.scss @@ -1,10 +1,13 @@ +@import 'src/colors.scss'; + .about-modal-section { - img { - padding-right: 2rem; - margin-bottom: 2rem; - margin-right: auto; - margin-left: auto; - display: block; + max-width: 500px; + hyphens: auto; + float: left; + + a { + text-decoration: none; + color: $font-grey; } } @@ -15,3 +18,7 @@ .mat-list-item { font-family: 'Fira Sans'; } + +.about-kits-logo { + float: right; +} diff --git a/teammapper-frontend/src/app/modules/application/components/floating-buttons/floating-buttons.component.scss b/teammapper-frontend/src/app/modules/application/components/floating-buttons/floating-buttons.component.scss index d1c9bcac..853c992e 100644 --- a/teammapper-frontend/src/app/modules/application/components/floating-buttons/floating-buttons.component.scss +++ b/teammapper-frontend/src/app/modules/application/components/floating-buttons/floating-buttons.component.scss @@ -1,3 +1,5 @@ +@import 'src/colors.scss'; + div.floating-buttons { .no-touch { width: 50px; @@ -22,8 +24,8 @@ div.floating-buttons { .add-node button, .remove-node button { - background-color: #00a3d3; - color: #fff; + background-color: $secondary; + color: #ffffff; &:disabled { color: rgba(0, 0, 0, 0.26); diff --git a/teammapper-frontend/src/app/modules/start/map-list.component.html b/teammapper-frontend/src/app/modules/start/map-list.component.html new file mode 100644 index 00000000..6018a353 --- /dev/null +++ b/teammapper-frontend/src/app/modules/start/map-list.component.html @@ -0,0 +1,24 @@ +

Letzte Mindmaps

+ + + + + {{ + getMapTitle(cachedMapEntry) + }} + vom + {{ cachedMapEntry.cachedAdminMapValue.createdAt | date : 'dd.MM.YYYY' }} + um + {{ cachedMapEntry.cachedAdminMapValue.createdAt | date : 'HH:mm' }} + Uhr + + + + + + + + + - + + \ No newline at end of file diff --git a/teammapper-frontend/src/app/modules/start/map-list.component.scss b/teammapper-frontend/src/app/modules/start/map-list.component.scss new file mode 100644 index 00000000..71e7769a --- /dev/null +++ b/teammapper-frontend/src/app/modules/start/map-list.component.scss @@ -0,0 +1,15 @@ +h4 { + font-size: 1.25rem; + margin-bottom: 0em; + font-weight: normal; +} + +.item-startpage { + padding: 0; + height: auto !important; +} + +a { + text-decoration: none; + color: rgb(0, 69, 111); +} diff --git a/teammapper-frontend/src/app/modules/start/map-list.component.ts b/teammapper-frontend/src/app/modules/start/map-list.component.ts new file mode 100644 index 00000000..f876ff06 --- /dev/null +++ b/teammapper-frontend/src/app/modules/start/map-list.component.ts @@ -0,0 +1,38 @@ +import { Component, OnInit } from '@angular/core'; +import { SettingsService } from 'src/app/core/services/settings/settings.service'; +import { CachedAdminMapEntry } from 'src/app/shared/models/cached-map.model'; +import { Router } from '@angular/router'; + +@Component({ + selector: 'teammapper-map-list', + templateUrl: './map-list.component.html', + styleUrls: ['./map-list.component.scss'], +}) +export class MapListComponent implements OnInit { + public cachedAdminMapEntries: CachedAdminMapEntry[]; + + constructor( + private settingsService: SettingsService, + private router: Router + ) { + this.cachedAdminMapEntries = []; + } + + async ngOnInit() { + this.cachedAdminMapEntries = ( + await this.settingsService.getCachedAdminMapEntries() + ).splice(0, 3); + } + + public getMapUrl(entry: CachedAdminMapEntry): string { + return this.router + .createUrlTree([`/map/${entry.id}`], { + fragment: entry.cachedAdminMapValue.modificationSecret, + }) + .toString(); + } + + public getMapTitle(entry: CachedAdminMapEntry): string { + return entry.cachedAdminMapValue.rootName || entry.id; + } +} diff --git a/teammapper-frontend/src/app/modules/start/start-routing.module.ts b/teammapper-frontend/src/app/modules/start/start-routing.module.ts new file mode 100644 index 00000000..dcd024a2 --- /dev/null +++ b/teammapper-frontend/src/app/modules/start/start-routing.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { StartComponent } from './start.component'; + +const routes: Routes = [ + { + path: '', + component: StartComponent, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class StartRoutingModule {} diff --git a/teammapper-frontend/src/app/modules/start/start.component.html b/teammapper-frontend/src/app/modules/start/start.component.html new file mode 100644 index 00000000..d6f4c015 --- /dev/null +++ b/teammapper-frontend/src/app/modules/start/start.component.html @@ -0,0 +1,141 @@ + + + TeamMapper Logo + + + + + + + Kits Logo + +
+

TeamMapper

+ + + Erstelle Mindmaps im Team! + Gestalte deine Mindmap mit Farben! + Ergänze Bilder! + +
+ + + + +
+ + Dieses Tool darf nur in Bildungskontexten genutzt werden. Die Eingabe + sensibler Daten ist zu vermeiden. +

+ Achtung: Mindmaps werden 24 Monate nach der letzten Bearbeitung + gelöscht! +
+ + +
+
+
+
+ +
+
+
+ Kits Logo +
+

TeamMapper

+ + + Erstelle Mindmaps im Team! + Gestalte deine Mindmap mit Farben! + Ergänze Bilder! + +
+ + + + +
+ + Dieses Tool darf nur in Bildungskontexten genutzt werden. Die Eingabe + sensibler Daten ist zu vermeiden. +

+ Achtung: Mindmaps werden 24 Monate nach der letzten Bearbeitung + gelöscht! +
+ + +
+
+ +
diff --git a/teammapper-frontend/src/app/modules/start/start.component.scss b/teammapper-frontend/src/app/modules/start/start.component.scss new file mode 100644 index 00000000..ff0d7eb4 --- /dev/null +++ b/teammapper-frontend/src/app/modules/start/start.component.scss @@ -0,0 +1,163 @@ +@import 'src/colors.scss'; + +.container { + padding: 12px; + margin: auto; + width: 90%; + padding-bottom: 112px !important; +} + +a { + text-decoration: none; +} + +.muted { + color: #6c757d !important; +} + +.min-vh-100 { + min-height: 100vh; +} + +.kits-primary-button { + background-color: $primary !important; + font-family: FiraSans !important; + font-size: large; + box-shadow: none !important; + letter-spacing: normal; + + &:hover { + background-color: $primary-hover; + } +} + +h1 { + font-size: 2.5em; + margin-bottom: 0.3em; +} + +.center { + justify-content: center; + background-color: transparent !important; +} + +// we don't want the footer logo to grow too big, otherwise the footer becomes too high: +.kits-mobile-footer-wrapper { + height: 112px !important; + padding: 0 !important; + position: fixed; + bottom: 0; + width: 100%; +} + +@media screen and (max-width: 574px), screen and (max-height: 500px) { + // for very small display widhts we need to reduce the font size for the footer: + .kits-mobile-footer-wrapper { + height: 55px !important; + padding: 0 !important; + } + + .kits-footer-logo { + padding: 10px 20px 10px 20px; + width: 40px !important; + height: 40px !important; + text-align: center; + + img { + width: 100%; + height: 100%; + } + } +} + +.kits-footer-container { + display: flex; + flex-direction: row; + align-items: center; + width: 100%; + height: 100%; + padding: 0; +} + +.kits-footer-logo { + padding: 10px 10px 10px 20px; + width: 80px; + height: 80px; + text-align: center; + + img { + width: 100%; + height: 100%; + } +} + +.kits-footer-text { + align-items: center; + padding: 15px 15px 15px 15px; + font-family: FiraSans; + font-size: 16px !important; + justify-content: right; + width: 100%; + text-align: right; +} + +.kits-footer-text-right { + @extend .kits-footer-text; + text-align: center; +} + +.list-border { + border-left: 3px solid $secondary; + padding: 0; +} + +.gradient { + background-image: linear-gradient( + 180deg, + rgb(0, 69, 111) 0%, + rgb(0, 163, 211) 100% + ) !important; +} + +.padding-8 { + padding: 8px; +} + +.font-white { + color: #ffffff; + text-decoration: none; +} + +.font-grey { + color: $font-grey !important; + text-decoration: none; +} + +.header { + background-color: transparent !important; + height: 70px !important; + text-align: right; + a { + margin-left: auto; + margin-top: 16px; + } +} + +.font-sm { + font-size: 0.75rem !important; +} + +.kits-list .mat-list-item { + height: 35px; + font-family: FiraSans !important; +} + +.kits-font { + font-family: FiraSans !important; +} + +.fw-bold { + font-size: calc(1.375rem + 1.5vw); + font-weight: 700 !important; + color: $primary; +} diff --git a/teammapper-frontend/src/app/modules/start/start.component.ts b/teammapper-frontend/src/app/modules/start/start.component.ts new file mode 100644 index 00000000..861ca657 --- /dev/null +++ b/teammapper-frontend/src/app/modules/start/start.component.ts @@ -0,0 +1,51 @@ +import { Component, OnInit } from '@angular/core'; +import { faGithub } from '@fortawesome/free-brands-svg-icons'; +import { SettingsService } from 'src/app/core/services/settings/settings.service'; +import { CachedAdminMapEntry } from 'src/app/shared/models/cached-map.model'; +import { Router } from '@angular/router'; + +@Component({ + selector: 'teammapper-start', + templateUrl: './start.component.html', + styleUrls: ['./start.component.scss'], +}) +export class StartComponent implements OnInit { + public projectName: string; + public faGithub = faGithub; + public breakpoint: number; + public height: number; + public cachedAdminMapEntries: CachedAdminMapEntry[]; + + constructor( + private settingsService: SettingsService, + private router: Router + ) { + this.breakpoint = 1; + this.cachedAdminMapEntries = []; + } + + async ngOnInit() { + this.breakpoint = window.innerWidth <= 990 ? 1 : 2; + this.height = window.innerHeight; + this.cachedAdminMapEntries = ( + await this.settingsService.getCachedAdminMapEntries() + ).splice(0, 3); + } + + public getMapUrl(entry: CachedAdminMapEntry): string { + return this.router + .createUrlTree([`/map/${entry.id}`], { + fragment: entry.cachedAdminMapValue.modificationSecret, + }) + .toString(); + } + + public getMapTitle(entry: CachedAdminMapEntry): string { + return entry.cachedAdminMapValue.rootName || entry.id; + } + + onResize(event: Event) { + this.breakpoint = (event.target as Window).innerWidth <= 990 ? 1 : 2; + this.height = window.innerHeight; + } +} diff --git a/teammapper-frontend/src/app/modules/start/start.module.ts b/teammapper-frontend/src/app/modules/start/start.module.ts new file mode 100644 index 00000000..e558c1e2 --- /dev/null +++ b/teammapper-frontend/src/app/modules/start/start.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from '@angular/core'; +import { MatGridListModule } from '@angular/material/grid-list'; +import { StartRoutingModule } from './start-routing.module'; +import { SharedModule } from '../../shared/shared.module'; +import { StartComponent } from './start.component'; +import { MapListComponent } from './map-list.component'; + +@NgModule({ + imports: [SharedModule, StartRoutingModule, MatGridListModule], + declarations: [StartComponent, MapListComponent], +}) +export class StartModule {} diff --git a/teammapper-frontend/src/app/root-routing.module.ts b/teammapper-frontend/src/app/root-routing.module.ts index 5a542abe..18405545 100644 --- a/teammapper-frontend/src/app/root-routing.module.ts +++ b/teammapper-frontend/src/app/root-routing.module.ts @@ -6,7 +6,7 @@ const routes: Routes = [ { path: '', loadChildren: () => - import('./modules/about/about.module').then(m => m.AboutModule), + import('./modules/start/start.module').then(m => m.StartModule), canActivate: [ToastGuard], }, { diff --git a/teammapper-frontend/src/app/shared/models/cached-map.model.ts b/teammapper-frontend/src/app/shared/models/cached-map.model.ts index e65b27b7..a102dd91 100644 --- a/teammapper-frontend/src/app/shared/models/cached-map.model.ts +++ b/teammapper-frontend/src/app/shared/models/cached-map.model.ts @@ -25,6 +25,7 @@ export interface CachedAdminMapValue { adminId: string; modificationSecret: string; ttl: Date; + createdAt: Date; rootName: string | null; } diff --git a/teammapper-frontend/src/assets/data/settings.json b/teammapper-frontend/src/assets/data/settings.json index 65f9e190..f227639d 100644 --- a/teammapper-frontend/src/assets/data/settings.json +++ b/teammapper-frontend/src/assets/data/settings.json @@ -1,6 +1,6 @@ { "general": { - "language": "en" + "language": "de" }, "mapOptions": { "centerOnResize": false, @@ -30,7 +30,7 @@ "locked": true }, "rootNode": { - "name": "Root node", + "name": "Thema", "link": { "href": "" }, diff --git a/teammapper-frontend/src/assets/font/firasans/FiraSans-Bold.otf b/teammapper-frontend/src/assets/font/firasans/FiraSans-Bold.otf new file mode 100644 index 00000000..01821595 Binary files /dev/null and b/teammapper-frontend/src/assets/font/firasans/FiraSans-Bold.otf differ diff --git a/teammapper-frontend/src/assets/font/firasans/FiraSans-Bold.ttf b/teammapper-frontend/src/assets/font/firasans/FiraSans-Bold.ttf deleted file mode 100644 index 0fb896ae..00000000 Binary files a/teammapper-frontend/src/assets/font/firasans/FiraSans-Bold.ttf and /dev/null differ diff --git a/teammapper-frontend/src/assets/font/firasans/FiraSans-Light.otf b/teammapper-frontend/src/assets/font/firasans/FiraSans-Light.otf new file mode 100644 index 00000000..1445a4af Binary files /dev/null and b/teammapper-frontend/src/assets/font/firasans/FiraSans-Light.otf differ diff --git a/teammapper-frontend/src/assets/font/firasans/FiraSans-Light.ttf b/teammapper-frontend/src/assets/font/firasans/FiraSans-Light.ttf deleted file mode 100644 index fac4edf5..00000000 Binary files a/teammapper-frontend/src/assets/font/firasans/FiraSans-Light.ttf and /dev/null differ diff --git a/teammapper-frontend/src/assets/font/firasans/FiraSans-Medium.ttf b/teammapper-frontend/src/assets/font/firasans/FiraSans-Medium.ttf deleted file mode 100644 index eeb8f8f0..00000000 Binary files a/teammapper-frontend/src/assets/font/firasans/FiraSans-Medium.ttf and /dev/null differ diff --git a/teammapper-frontend/src/assets/font/firasans/FiraSans-Regular.otf b/teammapper-frontend/src/assets/font/firasans/FiraSans-Regular.otf new file mode 100644 index 00000000..98ef98c8 Binary files /dev/null and b/teammapper-frontend/src/assets/font/firasans/FiraSans-Regular.otf differ diff --git a/teammapper-frontend/src/assets/font/firasans/FiraSans-Regular.ttf b/teammapper-frontend/src/assets/font/firasans/FiraSans-Regular.ttf deleted file mode 100644 index c4cfa597..00000000 Binary files a/teammapper-frontend/src/assets/font/firasans/FiraSans-Regular.ttf and /dev/null differ diff --git a/teammapper-frontend/src/assets/font/firasans/SIL_OFL.txt b/teammapper-frontend/src/assets/font/firasans/SIL_OFL.txt new file mode 100644 index 00000000..1684bfb0 --- /dev/null +++ b/teammapper-frontend/src/assets/font/firasans/SIL_OFL.txt @@ -0,0 +1,45 @@ +Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ with Reserved Font Name Fira Sans. + +Copyright (c) 2014, Telefonica S.A. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the copyright statement(s). + +"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/teammapper-frontend/src/assets/i18n/de.json b/teammapper-frontend/src/assets/i18n/de.json index bab72c41..e3d31c95 100644 --- a/teammapper-frontend/src/assets/i18n/de.json +++ b/teammapper-frontend/src/assets/i18n/de.json @@ -102,7 +102,7 @@ }, "INFO": { "DELETED_AT": "Diese Mindmap wird gelöscht am:", - "DELETE_AFTER_DAYS": "Mindmaps werden auf diesem Server nach {{deleteAfterDays}} Tagen gelöscht.", + "DELETE_AFTER_DAYS": "Mindmaps werden auf diesem Server {{deleteAfterDays}} Tage nach der letzten Bearbeitung gelöscht.", "DELETE": "Mindmap löschen", "CONFIRM_DELETE": "Wirklich löschen?" }, @@ -113,7 +113,7 @@ "PAGES": { "ABOUT": { "INTRODUCTION": { - "APPLICATION_DESCRIPTION": "Die Open-Source-Anwendung, um Mindmaps im Team zu verwenden.", + "APPLICATION_DESCRIPTION": "Mindmaps sind eine wunderbare Möglichkeit, um Themen strukturiert zu visualisieren. Unsere Anwendung »TeamMapper« bietet dir zahlreiche Funktionen: Arbeite kollaborativ mit anderen gemeinsam, färbe deine Mindmap oder füge Bilder zur Veranschaulichung hinzu.", "APPLICATION_PROPERTIES": [ "Gleichzeitig an Mindmaps arbeiten", "Einfaches Teilen der Mindmap über einen QR-Code oder Link", diff --git a/teammapper-frontend/src/assets/icons/ios/icons/apple-touch-icon.png b/teammapper-frontend/src/assets/icons/ios/icons/apple-touch-icon.png new file mode 100644 index 00000000..edb62ad1 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/icons/apple-touch-icon.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/icons/apple-touch-icon_152x152.png b/teammapper-frontend/src/assets/icons/ios/icons/apple-touch-icon_152x152.png new file mode 100644 index 00000000..10e07d12 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/icons/apple-touch-icon_152x152.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/icons/apple-touch-icon_167x167.png b/teammapper-frontend/src/assets/icons/ios/icons/apple-touch-icon_167x167.png new file mode 100644 index 00000000..6e56057a Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/icons/apple-touch-icon_167x167.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/icons/apple-touch-icon_180x180.png b/teammapper-frontend/src/assets/icons/ios/icons/apple-touch-icon_180x180.png new file mode 100644 index 00000000..b083965f Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/icons/apple-touch-icon_180x180.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_1125x2436.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_1125x2436.png new file mode 100644 index 00000000..da11b634 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_1125x2436.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_1136x640.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_1136x640.png new file mode 100644 index 00000000..73f3aa43 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_1136x640.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_1242x2208.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_1242x2208.png new file mode 100644 index 00000000..0961f8dc Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_1242x2208.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_1242x2688.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_1242x2688.png new file mode 100644 index 00000000..e216d4df Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_1242x2688.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_1334x750.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_1334x750.png new file mode 100644 index 00000000..66b264e7 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_1334x750.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_1536x2048.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_1536x2048.png new file mode 100644 index 00000000..ceca4496 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_1536x2048.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_1668x2224.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_1668x2224.png new file mode 100644 index 00000000..9333fffc Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_1668x2224.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_1668x2388.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_1668x2388.png new file mode 100644 index 00000000..2cf249c3 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_1668x2388.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_1792x828.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_1792x828.png new file mode 100644 index 00000000..637f9eed Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_1792x828.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_2048x1536.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_2048x1536.png new file mode 100644 index 00000000..ee0c516a Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_2048x1536.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_2048x2732.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_2048x2732.png new file mode 100644 index 00000000..d64cdbfa Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_2048x2732.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_2208x1242.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_2208x1242.png new file mode 100644 index 00000000..deef299d Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_2208x1242.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_2224x1668.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_2224x1668.png new file mode 100644 index 00000000..3313f5c7 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_2224x1668.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_2388x1668.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_2388x1668.png new file mode 100644 index 00000000..d8986638 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_2388x1668.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_2436x1125.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_2436x1125.png new file mode 100644 index 00000000..099a9de8 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_2436x1125.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_2688x1242.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_2688x1242.png new file mode 100644 index 00000000..c6da6339 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_2688x1242.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_2732x2048.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_2732x2048.png new file mode 100644 index 00000000..c2e0539c Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_2732x2048.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_640x1136.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_640x1136.png new file mode 100644 index 00000000..31b2cd10 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_640x1136.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_750x1334.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_750x1334.png new file mode 100644 index 00000000..3710985f Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_750x1334.png differ diff --git a/teammapper-frontend/src/assets/icons/ios/splash/splash_828x1792.png b/teammapper-frontend/src/assets/icons/ios/splash/splash_828x1792.png new file mode 100644 index 00000000..232d25cb Binary files /dev/null and b/teammapper-frontend/src/assets/icons/ios/splash/splash_828x1792.png differ diff --git a/teammapper-frontend/src/assets/icons/web/icons/icon-1024x1024.png b/teammapper-frontend/src/assets/icons/web/icons/icon-1024x1024.png new file mode 100644 index 00000000..568426d0 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/web/icons/icon-1024x1024.png differ diff --git a/teammapper-frontend/src/assets/icons/web/icons/icon-128x128.png b/teammapper-frontend/src/assets/icons/web/icons/icon-128x128.png new file mode 100644 index 00000000..06abc852 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/web/icons/icon-128x128.png differ diff --git a/teammapper-frontend/src/assets/icons/web/icons/icon-144x144.png b/teammapper-frontend/src/assets/icons/web/icons/icon-144x144.png new file mode 100644 index 00000000..c4808a05 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/web/icons/icon-144x144.png differ diff --git a/teammapper-frontend/src/assets/icons/web/icons/icon-152x152.png b/teammapper-frontend/src/assets/icons/web/icons/icon-152x152.png new file mode 100644 index 00000000..6282cd3e Binary files /dev/null and b/teammapper-frontend/src/assets/icons/web/icons/icon-152x152.png differ diff --git a/teammapper-frontend/src/assets/icons/web/icons/icon-192x192.png b/teammapper-frontend/src/assets/icons/web/icons/icon-192x192.png new file mode 100644 index 00000000..ce40dc18 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/web/icons/icon-192x192.png differ diff --git a/teammapper-frontend/src/assets/icons/web/icons/icon-384x384.png b/teammapper-frontend/src/assets/icons/web/icons/icon-384x384.png new file mode 100644 index 00000000..298c8458 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/web/icons/icon-384x384.png differ diff --git a/teammapper-frontend/src/assets/icons/web/icons/icon-512x512.png b/teammapper-frontend/src/assets/icons/web/icons/icon-512x512.png new file mode 100644 index 00000000..94c704c6 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/web/icons/icon-512x512.png differ diff --git a/teammapper-frontend/src/assets/icons/web/icons/icon-72x72.png b/teammapper-frontend/src/assets/icons/web/icons/icon-72x72.png new file mode 100644 index 00000000..ed602c9a Binary files /dev/null and b/teammapper-frontend/src/assets/icons/web/icons/icon-72x72.png differ diff --git a/teammapper-frontend/src/assets/icons/web/icons/icon-96x96.png b/teammapper-frontend/src/assets/icons/web/icons/icon-96x96.png new file mode 100644 index 00000000..7cb42950 Binary files /dev/null and b/teammapper-frontend/src/assets/icons/web/icons/icon-96x96.png differ diff --git a/teammapper-frontend/src/assets/icons/web/icons/light-icon.png b/teammapper-frontend/src/assets/icons/web/icons/light-icon.png new file mode 100644 index 00000000..4a1c3e5e Binary files /dev/null and b/teammapper-frontend/src/assets/icons/web/icons/light-icon.png differ diff --git a/teammapper-frontend/src/assets/images/business-plan.png b/teammapper-frontend/src/assets/images/business-plan.png deleted file mode 100644 index 3e8ba3b9..00000000 Binary files a/teammapper-frontend/src/assets/images/business-plan.png and /dev/null differ diff --git a/teammapper-frontend/src/assets/images/github-logo.svg b/teammapper-frontend/src/assets/images/github-logo.svg new file mode 100644 index 00000000..67a075aa --- /dev/null +++ b/teammapper-frontend/src/assets/images/github-logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/teammapper-frontend/src/assets/images/kits-logo.svg b/teammapper-frontend/src/assets/images/kits-logo.svg new file mode 100644 index 00000000..0747e0b0 --- /dev/null +++ b/teammapper-frontend/src/assets/images/kits-logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/teammapper-frontend/src/assets/images/radial-tree.png b/teammapper-frontend/src/assets/images/radial-tree.png deleted file mode 100644 index 155aaeac..00000000 Binary files a/teammapper-frontend/src/assets/images/radial-tree.png and /dev/null differ diff --git a/teammapper-frontend/src/assets/images/readme-header.png b/teammapper-frontend/src/assets/images/readme-header.png deleted file mode 100644 index 6d7402d8..00000000 Binary files a/teammapper-frontend/src/assets/images/readme-header.png and /dev/null differ diff --git a/teammapper-frontend/src/assets/images/screens.png b/teammapper-frontend/src/assets/images/screens.png deleted file mode 100644 index 91abc65f..00000000 Binary files a/teammapper-frontend/src/assets/images/screens.png and /dev/null differ diff --git a/teammapper-frontend/src/assets/images/solar-system.png b/teammapper-frontend/src/assets/images/solar-system.png deleted file mode 100644 index 64fa335f..00000000 Binary files a/teammapper-frontend/src/assets/images/solar-system.png and /dev/null differ diff --git a/teammapper-frontend/src/assets/images/teammapper-logo-blue.svg b/teammapper-frontend/src/assets/images/teammapper-logo-blue.svg new file mode 100644 index 00000000..50762d4d --- /dev/null +++ b/teammapper-frontend/src/assets/images/teammapper-logo-blue.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/teammapper-frontend/src/assets/images/teammapper-logo.svg b/teammapper-frontend/src/assets/images/teammapper-logo.svg new file mode 100644 index 00000000..5f17173e --- /dev/null +++ b/teammapper-frontend/src/assets/images/teammapper-logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/teammapper-frontend/src/colors.scss b/teammapper-frontend/src/colors.scss new file mode 100644 index 00000000..85b2e832 --- /dev/null +++ b/teammapper-frontend/src/colors.scss @@ -0,0 +1,9 @@ +$font-grey: rgb(33, 37, 41); + +$primary: #00456f; +$primary-hover: #003b5e; +$secondary: #00a3d3; +$success: #50c878; +$danger: #ff5555; +$warning: #ffaa00; +$info: #55ffff; diff --git a/teammapper-frontend/src/index.html b/teammapper-frontend/src/index.html index a7593ae0..0ae377f8 100644 --- a/teammapper-frontend/src/index.html +++ b/teammapper-frontend/src/index.html @@ -6,43 +6,129 @@ TeamMapper - - + + + + + + + + + + + rel="apple-touch-icon" + href="./assets/icons/ios/icons/apple-touch-icon.png" /> + rel="apple-touch-icon" + sizes="152x152" + href="./assets/icons/ios/icons/apple-touch-icon_152x152.png" /> + sizes="167x167" + href="./assets/icons/ios/icons/apple-touch-icon_167x167.png" /> + rel="apple-touch-icon" + sizes="180x180" + href="./assets/icons/ios/icons/apple-touch-icon_180x180.png" /> + + + + + + + + + + + + + + + + + + + + diff --git a/teammapper-frontend/src/styles.scss b/teammapper-frontend/src/styles.scss index f14f4f0a..bb71966a 100644 --- a/teammapper-frontend/src/styles.scss +++ b/teammapper-frontend/src/styles.scss @@ -3,23 +3,25 @@ @import 'theme.scss'; @font-face { - font-family: 'Source Sans Pro'; - src: url('assets/font/source-sans-pro/SourceSansPro-Regular.ttf') - format('truetype'); + font-family: FiraSans; + src: url('/assets/font/firasans/FiraSans-Regular.otf') format('opentype'); } @font-face { - font-family: 'Fira Sans'; - src: url('assets/font/firasans/FiraSans-Regular.ttf') format('truetype'); - font-weight: 500; + font-family: FiraSans; + font-weight: light; + src: url('/assets/font/firasans/FiraSans-Light.otf') format('opentype'); } @font-face { - font-family: 'Fira Sans'; - src: url('assets/font/firasans/FiraSans-Bold.ttf') format('truetype'); - font-weight: 700; + font-family: FiraSans; + font-weight: bold; + src: url('/assets/font/firasans/FiraSans-Bold.otf') format('opentype'); } +// Set bootstrap font: +$font-family-base: FiraSans; + html, body { margin: 0; @@ -28,7 +30,7 @@ body { } body { - font-family: 'Fira Sans', sans; + font-family: $font-family-base, sans; font-size: 17px; } diff --git a/teammapper-frontend/src/theme.scss b/teammapper-frontend/src/theme.scss index ac05a659..0c709cfd 100644 --- a/teammapper-frontend/src/theme.scss +++ b/teammapper-frontend/src/theme.scss @@ -19,7 +19,10 @@ $app-theme: mat.m2-define-light-theme( accent: $app-accent, warn: $app-warn, ), - typography: mat.m2-define-typography-config(), + typography: + mat.m2-define-typography-config( + $font-family: 'FiraSans', + ), density: 0, ) );