feat: Merge master (#1260)

* chore(site): dependabot deps (#1148)

* chore(deps): bump highlight.js from 10.4.1 to 10.5.0 in /site (#1143)

Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 10.4.1 to 10.5.0.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/master/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/10.4.1...10.5.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @babel/plugin-transform-runtime in /site (#1144)

Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.12.1 to 7.12.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.10/packages/babel-plugin-transform-runtime)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump sirv from 1.0.7 to 1.0.10 in /site (#1145)

Bumps [sirv](https://github.com/lukeed/sirv) from 1.0.7 to 1.0.10.
- [Release notes](https://github.com/lukeed/sirv/releases)
- [Commits](https://github.com/lukeed/sirv/compare/v1.0.7...v1.0.10)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump rollup from 2.34.0 to 2.35.1 in /site (#1142)

Bumps [rollup](https://github.com/rollup/rollup) from 2.34.0 to 2.35.1.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.34.0...v2.35.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @rollup/plugin-node-resolve in /site (#1141)

Bumps [@rollup/plugin-node-resolve](https://github.com/rollup/plugins) from 10.0.0 to 11.0.1.
- [Release notes](https://github.com/rollup/plugins/releases)
- [Commits](https://github.com/rollup/plugins/compare/node-resolve-v10.0.0...commonjs-v11.0.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump marked from 1.2.5 to 1.2.7 in /site (#1140)

Bumps [marked](https://github.com/markedjs/marked) from 1.2.5 to 1.2.7.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/release.config.js)
- [Commits](https://github.com/markedjs/marked/compare/v1.2.5...v1.2.7)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @babel/core from 7.12.9 to 7.12.10 in /site (#1139)

Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.12.9 to 7.12.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.10/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump rollup-plugin-svelte from 6.1.1 to 7.0.0 in /site (#1138)

Bumps [rollup-plugin-svelte](https://github.com/sveltejs/rollup-plugin-svelte) from 6.1.1 to 7.0.0.
- [Release notes](https://github.com/sveltejs/rollup-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/rollup-plugin-svelte/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/rollup-plugin-svelte/compare/v6.1.1...v7.0.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @babel/preset-env from 7.12.1 to 7.12.11 in /site (#1137)

Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.12.1 to 7.12.11.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.11/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* downgrade svelte plugin

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(console): dependabot deps (#1147)

* chore(deps-dev): bump @types/node from 14.14.13 to 14.14.19 in /console (#1146)

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.13 to 14.14.19.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump ts-protoc-gen from 0.13.0 to 0.14.0 in /console (#1129)

Bumps [ts-protoc-gen](https://github.com/improbable-eng/ts-protoc-gen) from 0.13.0 to 0.14.0.
- [Release notes](https://github.com/improbable-eng/ts-protoc-gen/releases)
- [Changelog](https://github.com/improbable-eng/ts-protoc-gen/blob/master/CHANGELOG.md)
- [Commits](https://github.com/improbable-eng/ts-protoc-gen/compare/0.13.0...0.14.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @angular/language-service in /console (#1128)

Bumps [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) from 11.0.4 to 11.0.5.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/11.0.5/packages/language-service)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @angular/cli from 11.0.4 to 11.0.5 in /console (#1127)

Bumps [@angular/cli](https://github.com/angular/angular-cli) from 11.0.4 to 11.0.5.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Commits](https://github.com/angular/angular-cli/compare/v11.0.4...v11.0.5)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @angular-devkit/build-angular in /console (#1126)

Bumps [@angular-devkit/build-angular](https://github.com/angular/angular-cli) from 0.1100.4 to 0.1100.5.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Commits](https://github.com/angular/angular-cli/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Peintner <max@caos.ch>

* audit

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: e-mail templates (#1158)

* View definition added

* Get templates and texts from the database.

* Fill in texts in templates

* Fill in texts in templates

* Client API added

* Weekly backup

* Weekly backup

* Daily backup

* Weekly backup

* Tests added

* Corrections from merge branch

* Fixes from pull request review

* chore(console): dependencies (#1189)

* chore(deps-dev): bump @angular/language-service in /console (#1187)

Bumps [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) from 11.0.5 to 11.0.9.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/11.0.9/packages/language-service)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump google-proto-files from 2.3.0 to 2.4.0 in /console (#1186)

Bumps [google-proto-files](https://github.com/googleapis/nodejs-proto-files) from 2.3.0 to 2.4.0.
- [Release notes](https://github.com/googleapis/nodejs-proto-files/releases)
- [Changelog](https://github.com/googleapis/nodejs-proto-files/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/nodejs-proto-files/compare/v2.3.0...v2.4.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @types/node from 14.14.19 to 14.14.21 in /console (#1185)

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.19 to 14.14.21.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @angular/cli from 11.0.5 to 11.0.7 in /console (#1184)

Bumps [@angular/cli](https://github.com/angular/angular-cli) from 11.0.5 to 11.0.7.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Commits](https://github.com/angular/angular-cli/compare/v11.0.5...v11.0.7)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump karma from 5.2.3 to 6.0.0 in /console (#1183)

Bumps [karma](https://github.com/karma-runner/karma) from 5.2.3 to 6.0.0.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v5.2.3...v6.0.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @angular-devkit/build-angular in /console (#1182)

Bumps [@angular-devkit/build-angular](https://github.com/angular/angular-cli) from 0.1100.5 to 0.1100.7.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Commits](https://github.com/angular/angular-cli/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Peintner <max@caos.ch>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(console): trigger unauthenticated dialog only once (#1170)

* fix: trigger dialog once

* remove log

* typed trigger

* chore(console): dependencies (#1205)

* chore(deps-dev): bump stylelint from 13.8.0 to 13.9.0 in /console (#1204)

Bumps [stylelint](https://github.com/stylelint/stylelint) from 13.8.0 to 13.9.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/13.8.0...13.9.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @angular/language-service in /console (#1203)

Bumps [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) from 11.0.9 to 11.1.0.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/11.1.0/packages/language-service)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump karma from 6.0.0 to 6.0.1 in /console (#1202)

Bumps [karma](https://github.com/karma-runner/karma) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v6.0.0...v6.0.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @angular/cli from 11.0.7 to 11.1.1 in /console (#1201)

Bumps [@angular/cli](https://github.com/angular/angular-cli) from 11.0.7 to 11.1.1.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Commits](https://github.com/angular/angular-cli/compare/v11.0.7...v11.1.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @types/jasmine from 3.6.2 to 3.6.3 in /console (#1200)

Bumps [@types/jasmine](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jasmine) from 3.6.2 to 3.6.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jasmine)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Peintner <max@caos.ch>

* chore(deps-dev): bump @types/node from 14.14.21 to 14.14.22 in /console (#1199)

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.21 to 14.14.22.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @angular-devkit/build-angular in /console (#1198)

Bumps [@angular-devkit/build-angular](https://github.com/angular/angular-cli) from 0.1100.7 to 0.1101.1.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Commits](https://github.com/angular/angular-cli/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Peintner <max@caos.ch>

* chore(deps): bump angularx-qrcode from 10.0.11 to 11.0.0 in /console (#1197)

Bumps [angularx-qrcode](https://github.com/cordobo/angularx-qrcode) from 10.0.11 to 11.0.0.
- [Release notes](https://github.com/cordobo/angularx-qrcode/releases)
- [Commits](https://github.com/cordobo/angularx-qrcode/compare/10.0.11...11.0.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix pack lock

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: handle sequence correctly in subscription (#1209)

* fix: correct master after merges again (#1230)

* chore(docs): correct `iss` claim of jwt profile (#1229)

* core(docs): correct `iss` claim of jwt profile

* fix: correct master after merges again (#1230)

* feat(login): new palette based styles (#1149)

* chore(deps-dev): bump rollup from 2.33.2 to 2.34.0 in /site (#1040)

Bumps [rollup](https://github.com/rollup/rollup) from 2.33.2 to 2.34.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.33.2...v2.34.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump svelte-i18n from 3.2.5 to 3.3.0 in /site (#1039)

Bumps [svelte-i18n](https://github.com/kaisermann/svelte-i18n) from 3.2.5 to 3.3.0.
- [Release notes](https://github.com/kaisermann/svelte-i18n/releases)
- [Changelog](https://github.com/kaisermann/svelte-i18n/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kaisermann/svelte-i18n/compare/v3.2.5...v3.3.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @rollup/plugin-url from 5.0.1 to 6.0.0 in /site (#1038)

Bumps [@rollup/plugin-url](https://github.com/rollup/plugins) from 5.0.1 to 6.0.0.
- [Release notes](https://github.com/rollup/plugins/releases)
- [Commits](https://github.com/rollup/plugins/compare/url-v5.0.1...url-v6.0.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump svelte from 3.29.7 to 3.30.1 in /site (#1037)

Bumps [svelte](https://github.com/sveltejs/svelte) from 3.29.7 to 3.30.1.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/compare/v3.29.7...v3.30.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump marked from 1.2.4 to 1.2.5 in /site (#1036)

Bumps [marked](https://github.com/markedjs/marked) from 1.2.4 to 1.2.5.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/release.config.js)
- [Commits](https://github.com/markedjs/marked/compare/v1.2.4...v1.2.5)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @babel/core from 7.12.3 to 7.12.9 in /site (#1035)

Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.12.3 to 7.12.9.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.9/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump rollup-plugin-svelte from 6.1.1 to 7.0.0 in /site (#1034)

Bumps [rollup-plugin-svelte](https://github.com/sveltejs/rollup-plugin-svelte) from 6.1.1 to 7.0.0.
- [Release notes](https://github.com/sveltejs/rollup-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/rollup-plugin-svelte/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/rollup-plugin-svelte/compare/v6.1.1...v7.0.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @rollup/plugin-commonjs in /site (#1033)

Bumps [@rollup/plugin-commonjs](https://github.com/rollup/plugins) from 15.1.0 to 17.0.0.
- [Release notes](https://github.com/rollup/plugins/releases)
- [Commits](https://github.com/rollup/plugins/compare/commonjs-v15.1.0...commonjs-v17.0.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @rollup/plugin-node-resolve in /site (#1032)

Bumps [@rollup/plugin-node-resolve](https://github.com/rollup/plugins) from 10.0.0 to 11.0.0.
- [Release notes](https://github.com/rollup/plugins/releases)
- [Commits](https://github.com/rollup/plugins/compare/node-resolve-v10.0.0...commonjs-v11.0.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @babel/preset-env from 7.12.1 to 7.12.7 in /site (#1031)

Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.12.1 to 7.12.7.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.7/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* go

* bundle files, lgn-color, legacy theme

* remove old references

* light dark context, button styles, zitadel brand

* button theme, edit templates

* typography theme mixins

* input styles, container, extend light dark palette

* footer, palette, container

* container, label, assets, header

* action container, input, typography label, adapt button theme

* a and footer styles, adapt palette

* user log profile, resourcetempurl

* postinstall againnn

* wrochage

* rm local grpc

* button elevation, helper for components

* radio

* radio button mixins, bundle

* qr code styles, secret clipboard, icon pack

* stroked buttons, icon buttons, header action, typography

* fix password policy styles

* account selection

* account selection, lgn avatar

* mocks

* template fixes, animations scss

* checkbox, register temp

* checkbox appr

* fix checkbox, remove input interference

* select theme

* avatar script, user selection, password policy validation fix

* fix formfield state for register and change pwd

* footer, main style, qr code fix, mfa type fix, account sel, checkbox

* fotter tos, user select

* reverse buttons for intial submit action

* theme script, themed error messages, header img source

* content wrapper, i18n, mobile

* emptyline

* idp mixins, fix unstyled html

* register container

* register layout, list themes, policy theme, register org

* massive asset cleanup

* fix source path, add missing icon, fix complexity refs, prefix

* remove material icons, unused assets, fix icon font

* move icon pack

* avatar, contrast theme, error fix

* zitadel css map

* revert go mod

* fix mfa verify actions

* add idp styles

* fix google colors, idp styles

* fix: bugs

* fix register options, google

* fix script, mobile layout

* precompile font selection

* go mod tidy

* assets and cleanup

* input suffix, fix alignment, actions, add progress bar themes

* progress bar mixins, layout fixes

* remove test from loginname

* cleanup comments, scripts

* clear comments

* fix external back button

* fix mfa alignment

* fix actions layout, on dom change listener for suffix

* free tier change, success label

* fix: button font line-height

* remove tabindex

* remove comment

* remove comment

* Update internal/ui/login/handler/password_handler.go

Co-authored-by: Livio Amstutz <livio.a@gmail.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Maximilian Peintner <csaq7175@uibk.ac.at>
Co-authored-by: Livio Amstutz <livio.a@gmail.com>

* chore(console): dependencies (#1233)

* chore(deps-dev): bump @angular-devkit/build-angular in /console (#1214)

Bumps [@angular-devkit/build-angular](https://github.com/angular/angular-cli) from 0.1101.1 to 0.1101.2.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Commits](https://github.com/angular/angular-cli/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump karma from 6.0.1 to 6.0.3 in /console (#1215)

Bumps [karma](https://github.com/karma-runner/karma) from 6.0.1 to 6.0.3.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v6.0.1...v6.0.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @angular/language-service in /console (#1216)

Bumps [@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service) from 11.1.0 to 11.1.1.
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/master/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/11.1.1/packages/language-service)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps-dev): bump @angular/cli from 11.1.1 to 11.1.2 in /console (#1217)

Bumps [@angular/cli](https://github.com/angular/angular-cli) from 11.1.1 to 11.1.2.
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Commits](https://github.com/angular/angular-cli/compare/v11.1.1...v11.1.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Max Peintner <max@caos.ch>

* lock

* site deps

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: get email texts with default language (#1238)

* fix(login): mail verification (#1237)

* fix: mail verification

* not block, stroked

* fix: issues of new login ui (#1241)

* fix: i18n of register

* fix: autofocus

* feat(operator): zitadel and database operator (#1208)

* feat(operator): add base for zitadel operator

* fix(operator): changed pipeline to release operator

* fix(operator): fmt with only one parameter

* fix(operator): corrected workflow job name

* fix(zitadelctl): added restore and backuplist command

* fix(zitadelctl): scale for restore

* chore(container): use scratch for deploy container

* fix(zitadelctl): limit image to scratch

* fix(migration): added migration scripts for newer version

* fix(operator): changed handling of kubeconfig in operator logic

* fix(operator): changed handling of secrets in operator logic

* fix(operator): use new version of zitadel

* fix(operator): added path for migrations

* fix(operator): delete doublets of migration scripts

* fix(operator): delete subpaths and integrate logic into init container

* fix(operator): corrected path in dockerfile for local migrations

* fix(operator): added migrations for cockroachdb-secure

* fix(operator): delete logic for ambassador module

* fix(operator): added read and write secret commands

* fix(operator): correct and align operator pipeline with zitadel pipeline

* fix(operator): correct yaml error in operator pipeline

* fix(operator): correct action name in operator pipeline

* fix(operator): correct case-sensitive filename in operator pipeline

* fix(operator): upload artifacts from buildx output

* fix(operator): corrected attribute spelling error

* fix(operator): combined jobs for operator binary and image

* fix(operator): added missing comma in operator pipeline

* fix(operator): added codecov for operator image

* fix(operator): added codecov for operator image

* fix(testing): code changes for testing and several unit-tests (#1009)

* fix(operator): usage of interface of kubernetes client for testing and several unit-tests

* fix(operator): several unit-tests

* fix(operator): several unit-tests

* fix(operator): changed order for the operator logic

* fix(operator): added version of zitadelctl from semantic release

* fix(operator): corrected function call with version of zitadelctl

* fix(operator): corrected function call with version of zitadelctl

* fix(operator): add check output to operator release pipeline

* fix(operator): set --short length everywhere to 12

* fix(operator): zitadel setup in job instead of exec with several unit tests

* fix(operator): fixes to combine newest zitadel and testing branch

* fix(operator): corrected path in Dockerfile

* fix(operator): fixed unit-test that was ignored during changes

* fix(operator): fixed unit-test that was ignored during changes

* fix(operator): corrected Dockerfile to correctly use env variable

* fix(operator): quickfix takeoff deployment

* fix(operator): corrected the clusterrolename in the applied artifacts

* fix: update secure migrations

* fix(operator): migrations (#1057)

* fix(operator): copied migrations from orbos repository

* fix(operator): newest migrations

* chore: use cockroach-secure

* fix: rename migration

* fix: remove insecure cockroach migrations

Co-authored-by: Stefan Benz <stefan@caos.ch>

* fix: finalize labels

* fix(operator): cli logging concurrent and fixe deployment of operator during restore

* fix: finalize labels and cli commands

* fix: restore

* chore: cockroachdb is always secure

* chore: use orbos consistent-labels latest commit

* test: make tests compatible with new labels

* fix: default to sa token for start command

* fix: use cockroachdb v12.02

* fix: don't delete flyway user

* test: fix migration test

* fix: use correct table qualifiers

* fix: don't alter sequence ownership

* fix: upgrade flyway

* fix: change ownership of all dbs and tables to admin user

* fix: change defaultdb user

* fix: treat clientid status codes >= 400 as errors

* fix: reconcile specified ZITADEL version, not binary version

* fix: add ca-certs

* fix: use latest orbos code

* fix: use orbos with fixed race condition

* fix: use latest ORBOS code

* fix: use latest ORBOS code

* fix: make migration and scaling around restoring work

* fix(operator): move zitadel operator

* chore(migrations): include owner change migration

* feat(db): add code base for database operator

* fix(db): change used image registry for database operator

* fix(db): generated mock

* fix(db): add accidentally ignored file

* fix(db): add cockroachdb backup image to pipeline

* fix(db): correct pipeline and image versions

* fix(db): correct version of used orbos

* fix(db): correct database import

* fix(db): go mod tidy

* fix(db): use new version for orbos

* fix(migrations): include migrations into zitadelctl binary (#1211)

* fix(db): use statik to integrate migrations into binary

* fix(migrations): corrections unit tests and pipeline for integrated migrations into zitadelctl binary

* fix(migrations): correction in dockerfile for pipeline build

* fix(migrations): correction in dockerfile for pipeline build

* fix(migrations):  dockerfile changes for cache optimization

* fix(database): correct used part-of label in database operator

* fix(database): correct used selectable label in zitadel operator

* fix(operator): correct lables for user secrets in zitadel operator

* fix(operator): correct lables for service test in zitadel operator

* fix: don't enable database features for user operations (#1227)

* fix: don't enable database features for user operations

* fix: omit database feature for connection info adapter

* fix: use latest orbos version

* fix: update ORBOS (#1240)

Co-authored-by: Florian Forster <florian@caos.ch>
Co-authored-by: Elio Bischof <eliobischof@gmail.com>

* Merge branch 'new-eventstore' into cascades

# Conflicts:
#	internal/auth/repository/auth_request.go
#	internal/auth/repository/eventsourcing/eventstore/auth_request.go
#	internal/management/repository/eventsourcing/eventstore/user_grant.go
#	internal/management/repository/user_grant.go
#	internal/ui/login/handler/external_login_handler.go
#	internal/ui/login/handler/external_register_handler.go
#	internal/ui/login/handler/init_password_handler.go
#	internal/ui/login/handler/register_handler.go
#	internal/user/repository/view/model/notify_user.go
#	internal/v2/command/org_policy_login.go
#	internal/v2/command/project.go
#	internal/v2/command/user.go
#	internal/v2/command/user_human.go
#	internal/v2/command/user_human_externalidp.go
#	internal/v2/command/user_human_init.go
#	internal/v2/command/user_human_password.go
#	internal/v2/command/user_human_webauthn.go
#	internal/v2/domain/next_step.go
#	internal/v2/domain/policy_login.go
#	internal/v2/domain/request.go

* chore: add local migrate_local.go again (#1261)

Co-authored-by: Max Peintner <max@caos.ch>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Michael Waeger <49439088+michaelulrichwaeger@users.noreply.github.com>
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
Co-authored-by: Maximilian Peintner <csaq7175@uibk.ac.at>
Co-authored-by: Stefan Benz <46600784+stebenz@users.noreply.github.com>
Co-authored-by: Florian Forster <florian@caos.ch>
Co-authored-by: Elio Bischof <eliobischof@gmail.com>
This commit is contained in:
Fabi
2021-02-08 16:48:41 +01:00
committed by GitHub
parent 320679467b
commit db11cf1da3
646 changed files with 34637 additions and 6507 deletions

View File

@@ -1,12 +1,13 @@
package handler
import (
"github.com/caos/zitadel/internal/auth_request/model"
"github.com/caos/zitadel/internal/errors"
iam_model "github.com/caos/zitadel/internal/iam/model"
"net/http"
"regexp"
"strconv"
"github.com/caos/zitadel/internal/auth_request/model"
"github.com/caos/zitadel/internal/errors"
iam_model "github.com/caos/zitadel/internal/iam/model"
)
const (
@@ -46,24 +47,24 @@ func (l *Login) getPasswordComplexityPolicyByUserID(r *http.Request, userID stri
}
func (l *Login) generatePolicyDescription(r *http.Request, policy *iam_model.PasswordComplexityPolicyView) (string, error) {
description := "<ul id=\"passwordcomplexity\">"
description := "<ul class=\"lgn-no-dots lgn-policy\" id=\"passwordcomplexity\">"
minLength := l.renderer.LocalizeFromRequest(r, "Password.MinLength", nil)
description += "<li id=\"minlength\" class=\"invalid\"><i class=\"material-icons\">clear</i>" + minLength + " " + strconv.Itoa(int(policy.MinLength)) + "</li>"
description += "<li id=\"minlength\" class=\"invalid\"><i class=\"lgn-icon-times-solid lgn-warn\"></i><span>" + minLength + " " + strconv.Itoa(int(policy.MinLength)) + "</span></li>"
if policy.HasUppercase {
uppercase := l.renderer.LocalizeFromRequest(r, "Password.HasUppercase", nil)
description += "<li id=\"uppercase\" class=\"invalid\"><i class=\"material-icons\">clear</i>" + uppercase + "</li>"
description += "<li id=\"uppercase\" class=\"invalid\"><i class=\"lgn-icon-times-solid lgn-warn\"></i><span>" + uppercase + "</span></li>"
}
if policy.HasLowercase {
lowercase := l.renderer.LocalizeFromRequest(r, "Password.HasLowercase", nil)
description += "<li id=\"lowercase\" class=\"invalid\"><i class=\"material-icons\">clear</i>" + lowercase + "</li>"
description += "<li id=\"lowercase\" class=\"invalid\"><i class=\"lgn-icon-times-solid lgn-warn\"></i><span>" + lowercase + "</span></li>"
}
if policy.HasNumber {
hasnumber := l.renderer.LocalizeFromRequest(r, "Password.HasNumber", nil)
description += "<li id=\"number\" class=\"invalid\"><i class=\"material-icons\">clear</i>" + hasnumber + "</li>"
description += "<li id=\"number\" class=\"invalid\"><i class=\"lgn-icon-times-solid lgn-warn\"></i><span>" + hasnumber + "</span></li>"
}
if policy.HasSymbol {
hassymbol := l.renderer.LocalizeFromRequest(r, "Password.HasSymbol", nil)
description += "<li id=\"symbol\" class=\"invalid\"><i class=\"material-icons\">clear</i>" + hassymbol + "</li>"
description += "<li id=\"symbol\" class=\"invalid\"><i class=\"lgn-icon-times-solid lgn-warn\"></i><span>" + hassymbol + "</span></li>"
}
description += "</ul>"

View File

@@ -306,7 +306,7 @@ func (l *Login) getTheme(r *http.Request) string {
}
func (l *Login) getThemeMode(r *http.Request) string {
return "" //TODO: impl
return "lgn-dark-theme" //TODO: impl
}
func (l *Login) getOrgID(authReq *domain.AuthRequest) string {

View File

@@ -1,5 +1,5 @@
Password:
Title: Passwort
Title: Willkommen zurück!
Description: Gib deine Benutzerdaten ein.
Password: Passwort
MinLength: Mindestlänge
@@ -10,7 +10,7 @@ Password:
Login:
Title: Anmeldung
Description: Gib deine Benutzerdaten ein.
Description: Mit ZITADEL-Konto anmelden.
TitleLinking: Anmeldung für Benutzer Linking
DescriptionLinking: Gib deine Benutzerdaten ein um den externen Benutzer mit einem ZITADEL Benutzer zu linken.
Loginname: Loginname
@@ -157,11 +157,12 @@ Registration:
TosConfirm: Ich akzeptiere die
TosLinkText: AGBs
TosLink: https://zitadel.ch/pdf/agb.pdf
ExternalLogin: oder registriere dich mit einem externen Benutzer
RegistrationOrg:
Title: Organisations Registration
Description: Gib deinen Organisationsnamen und deine Benutzerangaben an.
FreeTillEndOfYear: Wir bieten den premium Tier FORTRESS während der Einführungsphase bis zum Ende des Jahres 2020 gratis an.
FreeTillEndOfYear: Wir bieten den premium Tier FORTRESS während der Einführungsphase bis zum Ende des ersten Quartals 2021 gratis an.
OrgName: Organisationsname
OrgDomain: Domäne
Email: E-Mail
@@ -211,6 +212,11 @@ Actions:
Recreate: erneut erstellen
PasswordLogin: Mit Passwort anmelden
Footer:
TosPrivacyPolicy: Datenschutz und AGB
TosLink: https://zitadel.ch/pdf/agb.pdf
Help: Hilfe
Errors:
Internal: Es ist ein interner Fehler aufgetreten
AuthRequest:

View File

@@ -1,5 +1,5 @@
Login:
Title: Login
Title: Welcome back!
Description: Enter your logindata.
TitleLinking: Login for userlinking
DescriptionLinking: Enter your login data to link your external user with a ZITADEL user.
@@ -10,7 +10,7 @@ Login:
UserSelection:
Title: Select account
Description: Select your account.
Description: Use your ZITADEL-Account
TitleLinking: Select account for userlinking
DescriptionLinking: Select your account to link with your external user.
OtherUser: Other User
@@ -133,7 +133,7 @@ EmailVerificationDone:
Title: E-Mail Verification
Description: Your email address has been successfully verified.
RegistrationOption:
RegisterOption:
Title: Registration Options
Description: Choose how you'd like to register
RegisterUsernamePassword: With username password
@@ -157,11 +157,12 @@ Registration:
TosConfirm: I agree the
TosLinkText: TOS
TosLink: https://zitadel.ch/pdf/tos.pdf
ExternalLogin: or register with an external user
RegistrationOrg:
Title: Organisation Registration
Description: Enter your organisationname and userdata.
FreeTillEndOfYear: We are offering the premium tier FORTRESS free of charge during the introductory phase until the end of 2020.
FreeTillEndOfYear: We are offering the premium tier FORTRESS free of charge during the introductory phase until the end of the first quarter 2021.
OrgName: Organisationname
OrgDomain: Domäne
Email: E-Mail
@@ -211,6 +212,11 @@ Actions:
Recreate: recreate
PasswordLogin: Login with password
Footer:
TosPrivacyPolicy: ToS and Privacy Policy
TosLink: https://zitadel.ch/pdf/agb.pdf
Help: Help
Errors:
Internal: An internal error occured
AuthRequest:

View File

@@ -0,0 +1,57 @@
@font-face {
font-family: 'lgn-icons';
src: url('../fonts/lgn-icons.eot?p68sys');
src: url('../fonts/lgn-icons.eot?p68sys#iefix') format('embedded-opentype'),
url('../fonts/lgn-icons.ttf?p68sys') format('truetype'),
url('../fonts/lgn-icons.woff?p68sys') format('woff'),
url('../fonts/lgn-icons.svg?p68sys#icomoon') format('svg');
font-weight: normal;
font-style: normal;
font-display: block;
}
[class^="lgn-icon-"], [class*=" lgn-icon-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'lgn-icons' !important;
speak: never;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.lgn-icon-check-solid:before {
content: "\e909";
}
.lgn-icon-times-solid:before {
content: "\e900";
}
.lgn-icon-user-plus-solid:before {
content: "\e901";
}
.lgn-icon-angle-left-solid:before {
content: "\e902";
}
.lgn-icon-angle-right-solid:before {
content: "\e903";
}
.lgn-icon-arrow-left-solid:before {
content: "\e904";
}
.lgn-icon-arrow-right-solid:before {
content: "\e905";
}
.lgn-icon-clipboard-check-solid:before {
content: "\e906";
}
.lgn-icon-clipboard:before {
content: "\e907";
}
.lgn-icon-exclamation-circle-solid:before {
content: "\e908";
}

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="icomoon" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe900;" glyph-name="times-solid" d="M231 775l-46-46 281-281-281-281 46-46 281 281 281-281 46 46-281 281 281 281-46 46-281-281z" />
<glyph unicode="&#xe901;" glyph-name="user-plus-solid" d="M384 896c-123.375 0-224-100.625-224-224 0-77.125 39.375-145.625 99-186-114.125-49-195-162.25-195-294h64c0 141.75 114.25 256 256 256 44 0 85-11.5 121-31-35.5-44-57-100.25-57-161 0-141 115-256 256-256s256 115 256 256c0 141-115 256-256 256-55.875 0-107.875-18.375-150-49-14.125 8.875-29.5 16.375-45 23 59.625 40.375 99 108.875 99 186 0 123.375-100.625 224-224 224zM384 832c88.75 0 160-71.25 160-160s-71.25-160-160-160c-88.75 0-160 71.25-160 160s71.25 160 160 160zM704 448c106.375 0 192-85.625 192-192s-85.625-192-192-192c-106.375 0-192 85.625-192 192s85.625 192 192 192zM672 384v-96h-96v-64h96v-96h64v96h96v64h-96v96z" />
<glyph unicode="&#xe902;" glyph-name="angle-left-solid" d="M609 823l-352-352-22-23 22-23 352-352 46 46-329 329 329 329z" />
<glyph unicode="&#xe903;" glyph-name="angle-right-solid" d="M415 823l-46-46 329-329-329-329 46-46 352 352 22 23-22 23z" />
<glyph unicode="&#xe904;" glyph-name="arrow-left-solid" d="M425 743l-272-272-22-23 22-23 272-272 46 46-217 217h642v64h-642l217 217z" />
<glyph unicode="&#xe905;" glyph-name="arrow-right-solid" d="M599 743l-46-46 217-217h-642v-64h642l-217-217 46-46 272 272 22 23-22 23z" />
<glyph unicode="&#xe906;" glyph-name="clipboard-check-solid" d="M512 896c-40.25 0-68.875-28.5-83-64h-269v-800h704v800h-269c-14.125 35.5-42.75 64-83 64zM512 832c17.75 0 32-14.25 32-32v-32h96v-64h-256v64h96v32c0 17.75 14.25 32 32 32zM224 768h96v-128h384v128h96v-672h-576zM681 535l-201-201-105 105-46-46 128-128 23-22 23 22 224 224z" />
<glyph unicode="&#xe907;" glyph-name="clipboard" d="M512 864c-40.25 0-68.875-28.5-83-64h-237v-736h640v736h-237c-14.125 35.5-42.75 64-83 64zM512 800c17.75 0 32-14.25 32-32v-32h96v-64h-256v64h96v32c0 17.75 14.25 32 32 32zM256 736h64v-128h384v128h64v-608h-512z" />
<glyph unicode="&#xe908;" glyph-name="exclamation-circle-solid" d="M512 832c-211.75 0-384-172.25-384-384s172.25-384 384-384c211.75 0 384 172.25 384 384s-172.25 384-384 384zM512 768c177.125 0 320-142.875 320-320s-142.875-320-320-320c-177.125 0-320 142.875-320 320s142.875 320 320 320zM480 640v-256h64v256zM480 320v-64h64v64z" />
<glyph unicode="&#xe909;" glyph-name="check-solid" d="M905 759l-553-553-233 233-46-46 256-256 23-22 23 22 576 576z" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 19.03125 4.28125 L 8.03125 15.28125 L 7.34375 16 L 8.03125 16.71875 L 19.03125 27.71875 L 20.46875 26.28125 L 10.1875 16 L 20.46875 5.71875 Z"/></svg>

After

Width:  |  Height:  |  Size: 221 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 12.96875 4.28125 L 11.53125 5.71875 L 21.8125 16 L 11.53125 26.28125 L 12.96875 27.71875 L 23.96875 16.71875 L 24.65625 16 L 23.96875 15.28125 Z"/></svg>

After

Width:  |  Height:  |  Size: 224 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 13.28125 6.78125 L 4.78125 15.28125 L 4.09375 16 L 4.78125 16.71875 L 13.28125 25.21875 L 14.71875 23.78125 L 7.9375 17 L 28 17 L 28 15 L 7.9375 15 L 14.71875 8.21875 Z"/></svg>

After

Width:  |  Height:  |  Size: 248 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 18.71875 6.78125 L 17.28125 8.21875 L 24.0625 15 L 4 15 L 4 17 L 24.0625 17 L 17.28125 23.78125 L 18.71875 25.21875 L 27.21875 16.71875 L 27.90625 16 L 27.21875 15.28125 Z"/></svg>

After

Width:  |  Height:  |  Size: 251 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 28.28125 6.28125 L 11 23.5625 L 3.71875 16.28125 L 2.28125 17.71875 L 10.28125 25.71875 L 11 26.40625 L 11.71875 25.71875 L 29.71875 7.71875 Z"/></svg>

After

Width:  |  Height:  |  Size: 222 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 16 2 C 14.742188 2 13.847656 2.890625 13.40625 4 L 5 4 L 5 29 L 27 29 L 27 4 L 18.59375 4 C 18.152344 2.890625 17.257813 2 16 2 Z M 16 4 C 16.554688 4 17 4.445313 17 5 L 17 6 L 20 6 L 20 8 L 12 8 L 12 6 L 15 6 L 15 5 C 15 4.445313 15.445313 4 16 4 Z M 7 6 L 10 6 L 10 10 L 22 10 L 22 6 L 25 6 L 25 27 L 7 27 Z M 21.28125 13.28125 L 15 19.5625 L 11.71875 16.28125 L 10.28125 17.71875 L 14.28125 21.71875 L 15 22.40625 L 15.71875 21.71875 L 22.71875 14.71875 Z"/></svg>

After

Width:  |  Height:  |  Size: 538 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 15 3 C 13.742188 3 12.847656 3.890625 12.40625 5 L 5 5 L 5 28 L 13 28 L 13 30 L 27 30 L 27 14 L 25 14 L 25 5 L 17.59375 5 C 17.152344 3.890625 16.257813 3 15 3 Z M 15 5 C 15.554688 5 16 5.445313 16 6 L 16 7 L 19 7 L 19 9 L 11 9 L 11 7 L 14 7 L 14 6 C 14 5.445313 14.445313 5 15 5 Z M 7 7 L 9 7 L 9 11 L 21 11 L 21 7 L 23 7 L 23 14 L 13 14 L 13 26 L 7 26 Z M 15 16 L 25 16 L 25 28 L 15 28 Z"/></svg>

After

Width:  |  Height:  |  Size: 469 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 16 4 C 9.382813 4 4 9.382813 4 16 C 4 22.617188 9.382813 28 16 28 C 22.617188 28 28 22.617188 28 16 C 28 9.382813 22.617188 4 16 4 Z M 16 6 C 21.535156 6 26 10.464844 26 16 C 26 21.535156 21.535156 26 16 26 C 10.464844 26 6 21.535156 6 16 C 6 10.464844 10.464844 6 16 6 Z M 15 10 L 15 18 L 17 18 L 17 10 Z M 15 20 L 15 22 L 17 22 L 17 20 Z"/></svg>

After

Width:  |  Height:  |  Size: 419 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 7.21875 5.78125 L 5.78125 7.21875 L 14.5625 16 L 5.78125 24.78125 L 7.21875 26.21875 L 16 17.4375 L 24.78125 26.21875 L 26.21875 24.78125 L 17.4375 16 L 26.21875 7.21875 L 24.78125 5.78125 L 16 14.5625 Z"/></svg>

After

Width:  |  Height:  |  Size: 283 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 12 2 C 8.144531 2 5 5.144531 5 9 C 5 11.410156 6.230469 13.550781 8.09375 14.8125 C 4.527344 16.34375 2 19.882813 2 24 L 4 24 C 4 19.570313 7.570313 16 12 16 C 13.375 16 14.65625 16.359375 15.78125 16.96875 C 14.671875 18.34375 14 20.101563 14 22 C 14 26.40625 17.59375 30 22 30 C 26.40625 30 30 26.40625 30 22 C 30 17.59375 26.40625 14 22 14 C 20.253906 14 18.628906 14.574219 17.3125 15.53125 C 16.871094 15.253906 16.390625 15.019531 15.90625 14.8125 C 17.769531 13.550781 19 11.410156 19 9 C 19 5.144531 15.855469 2 12 2 Z M 12 4 C 14.773438 4 17 6.226563 17 9 C 17 11.773438 14.773438 14 12 14 C 9.226563 14 7 11.773438 7 9 C 7 6.226563 9.226563 4 12 4 Z M 22 16 C 25.324219 16 28 18.675781 28 22 C 28 25.324219 25.324219 28 22 28 C 18.675781 28 16 25.324219 16 22 C 16 18.675781 18.675781 16 22 16 Z M 21 18 L 21 21 L 18 21 L 18 23 L 21 23 L 21 26 L 23 26 L 23 23 L 26 23 L 26 21 L 23 21 L 23 18 Z"/></svg>

After

Width:  |  Height:  |  Size: 983 B

View File

@@ -1,7 +1,8 @@
package resources
// TODO whitelabeling go:generate sass themes/scss/zitadel-alternative.scss themes/zitadel/css/zitadel.css
// scss
//go:generate sass themes/scss/zitadel/dark.scss themes/zitadel/css/dark.css
//go:generate sass themes/scss/zitadel/light.scss themes/zitadel/css/light.css
//go:generate sass themes/scss/caos/dark.scss themes/caos/css/dark.css
//go:generate sass themes/scss/caos/light.scss themes/caos/css/light.css
//go:generate sass themes/scss/main.scss themes/zitadel/css/main.css
//go:generate sass themes/scss/bundle.scss themes/zitadel/css/bundle.css
//go:generate sass themes/scss/zitadel.scss themes/zitadel/css/zitadel.css

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

View File

@@ -0,0 +1,50 @@
const avatars = document.getElementsByClassName('lgn-avatar');
for (let i = 0; i < avatars.length; i++) {
const displayName = avatars[i].getAttribute('displayname');
if (displayName) {
const split = displayName.split(' ');
if (split) {
const initials = split[0].charAt(0) + (split[1] ? split[1].charAt(0) : '');
if (initials) {
avatars[i].getElementsByClassName('initials')[0].innerHTML = initials;
}
}
const color = this.getColor(displayName);
avatars[i].style.background = color;
// set default white text instead of contrast text mode
avatars[i].style.color = '#ffffff';
}
}
function getColor(userName) {
const colors = [
'linear-gradient(40deg, #B44D51 30%, rgb(241,138,138))',
'linear-gradient(40deg, #B75073 30%, rgb(234,96,143))',
'linear-gradient(40deg, #84498E 30%, rgb(214,116,230))',
'linear-gradient(40deg, #705998 30%, rgb(163,131,220))',
'linear-gradient(40deg, #5C6598 30%, rgb(135,148,222))',
'linear-gradient(40deg, #7F90D3 30%, rgb(181,196,247))',
'linear-gradient(40deg, #3E93B9 30%, rgb(150,215,245))',
'linear-gradient(40deg, #3494A0 30%, rgb(71,205,222))',
'linear-gradient(40deg, #25716A 30%, rgb(58,185,173))',
'linear-gradient(40deg, #427E41 30%, rgb(97,185,96))',
'linear-gradient(40deg, #89A568 30%, rgb(176,212,133))',
'linear-gradient(40deg, #90924D 30%, rgb(187,189,98))',
'linear-gradient(40deg, #E2B032 30%, rgb(245,203,99))',
'linear-gradient(40deg, #C97358 30%, rgb(245,148,118))',
'linear-gradient(40deg, #6D5B54 30%, rgb(152,121,108))',
'linear-gradient(40deg, #6B7980 30%, rgb(134,163,177))',
];
let hash = 0;
if (userName.length === 0) {
return colors[hash];
}
for (let i = 0; i < userName.length; i++) {
hash = userName.charCodeAt(i) + ((hash << 5) - hash);
hash = hash & hash;
}
hash = ((hash % colors.length) + colors.length) % colors.length;
return colors[hash];
}

View File

@@ -1,10 +1,13 @@
function CheckChangePwPolicy() {
let policyElement = document.getElementById("change-new-password")
let policyElement = document.getElementById("change-new-password");
let pwNew = policyElement.value;
let pwNewConfirmation = document.getElementById("change-password-confirmation").value;
if (ComplexityPolicyCheck(policyElement, pwNew) === false) {
policyElement.setAttribute("color", "warn");
return false;
} else {
policyElement.setAttribute("color", "primary");
}
return pwNew == pwNewConfirmation;

View File

@@ -1,6 +1,6 @@
const copyToClipboard = str => {
navigator.clipboard.writeText(str);
}
};
let copyButton = document.getElementsByClassName("copy")[0];
let copyButton = document.getElementById("copy");
copyButton.addEventListener("click", copyToClipboard(copyButton.getAttribute("data-copy")));

View File

@@ -1,7 +1,9 @@
function disableSubmit(checks, button) {
let form = document.getElementsByTagName('form')[0];
let inputs = form.getElementsByTagName('input');
button.disabled = true;
if (button) {
button.disabled = true;
}
addRequiredEventListener(inputs, checks, form, button);
disableDoubleSubmit(form, button);
}
@@ -22,30 +24,31 @@ function addRequiredEventListener(inputs, checks, form, button) {
}
function disableDoubleSubmit(form, button) {
form.addEventListener('submit', function() {
form.addEventListener('submit', function () {
document.body.classList.add('waiting');
button.disabled = true;
})
});
}
function toggleButton(checks, form, inputs, button) {
if (checks !== undefined) {
if (checks() === false) {
button.disabled = true;
return
return;
}
}
button.disabled = !allRequiredDone(form, inputs);
const targetValue = !allRequiredDone(form, inputs);
button.disabled = targetValue;
}
function allRequiredDone(form, inputs) {
for (i = 0; i < inputs.length; i++) {
if (inputs[i].required) {
if (inputs[i].type === 'checkbox' && !inputs[i].checked) {
return false
return false;
}
if (inputs[i].value === '') {
return false
return false;
}
}
}

View File

@@ -0,0 +1,12 @@
const suffix = document.getElementById('default-login-suffix');
const suffixInput = document.getElementsByClassName('lgn-suffix-input')[0];
calculateOffset();
suffix.addEventListener("DOMCharacterDataModified", calculateOffset);
function calculateOffset() {
// add suffix width to inner right padding of the input field
if (suffix && suffixInput) {
suffixInput.style.paddingRight = `${(suffix.offsetWidth ?? 0) + 10}px`;
}
}

View File

@@ -7,7 +7,7 @@ function ComplexityPolicyCheck(policyElement, pwNew) {
let valid = true;
let minlengthelem = document.getElementById('minlength')
let minlengthelem = document.getElementById('minlength');
if (pwNew.length >= minLength) {
ValidPolicy(minlengthelem);
valid = true;
@@ -15,7 +15,7 @@ function ComplexityPolicyCheck(policyElement, pwNew) {
InvalidPolicy(minlengthelem);
valid = false;
}
let upper = document.getElementById('uppercase')
let upper = document.getElementById('uppercase');
if (upperRegex !== "") {
if (RegExp(upperRegex).test(pwNew)) {
ValidPolicy(upper);
@@ -25,7 +25,7 @@ function ComplexityPolicyCheck(policyElement, pwNew) {
valid = false;
}
}
let lower = document.getElementById('lowercase')
let lower = document.getElementById('lowercase');
if (lowerRegex !== "") {
if (RegExp(lowerRegex).test(pwNew)) {
ValidPolicy(lower);
@@ -35,20 +35,20 @@ function ComplexityPolicyCheck(policyElement, pwNew) {
valid = false;
}
}
let number = document.getElementById('number')
let number = document.getElementById('number');
if (numberRegex != "") {
if (RegExp(numberRegex).test(pwNew)) {
ValidPolicy(number);
valid = true;
if (RegExp(numberRegex).test(pwNew)) {
ValidPolicy(number);
valid = true;
} else {
InvalidPolicy(number);
valid = false;
InvalidPolicy(number);
valid = false;
}
}
let symbol = document.getElementById('symbol')
let symbol = document.getElementById('symbol');
if (symbolRegex != "") {
if (RegExp(symbolRegex).test(pwNew)) {
ValidPolicy(symbol)
ValidPolicy(symbol);
valid = true;
} else {
InvalidPolicy(symbol);
@@ -57,12 +57,19 @@ function ComplexityPolicyCheck(policyElement, pwNew) {
}
return valid;
}
function ValidPolicy(element) {
element.classList.remove('invalid')
element.getElementsByTagName('i')[0].innerText = 'check';
element.classList.remove('invalid');
element.getElementsByTagName('i')[0].classList.remove('lgn-icon-times-solid');
element.getElementsByTagName('i')[0].classList.remove('lgn-warn');
element.getElementsByTagName('i')[0].classList.add('lgn-icon-check-solid');
element.getElementsByTagName('i')[0].classList.add('lgn-valid');
}
function InvalidPolicy(element) {
element.classList.add('invalid')
element.getElementsByTagName('i')[0].innerText = 'clear';
element.classList.add('invalid');
element.getElementsByTagName('i')[0].classList.remove('lgn-valid');
element.getElementsByTagName('i')[0].classList.remove('lgn-icon-check-solid');
element.getElementsByTagName('i')[0].classList.add('lgn-warn');
element.getElementsByTagName('i')[0].classList.add('lgn-icon-times-solid');
}

View File

@@ -4,7 +4,10 @@ function CheckRegisterPwPolicy() {
let pwNewConfirmation = document.getElementById("register-password-confirmation").value;
if (ComplexityPolicyCheck(policyElement, pwNew) === false) {
policyElement.setAttribute("color", "warn");
return false;
} else {
policyElement.setAttribute("color", "primary");
}
return pwNew == pwNewConfirmation;

View File

@@ -0,0 +1,6 @@
const usesDarkTheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
if (usesDarkTheme) {
document.documentElement.classList.replace('lgn-light-theme', 'lgn-dark-theme');
} else {
document.documentElement.classList.replace('lgn-dark-theme', 'lgn-light-theme');
}

View File

@@ -8,7 +8,7 @@ function checkWebauthnSupported(button, func) {
for (let item of support) {
item.classList.add('hidden');
}
return
return;
}
document.getElementById(button).addEventListener('click', func);
}

View File

@@ -1,513 +0,0 @@
@font-face {
font-family: Aileron;
src: url(../../../fonts/ailerons/ailerons.otf) format("opentype");
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-Thin.ttf) format("truetype");
font-style: normal;
font-weight: 100;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-ThinItalic.ttf) format("truetype");
font-style: italic;
font-weight: 100;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-Light.ttf) format("truetype");
font-style: normal;
font-weight: 200;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-LightItalic.ttf) format("truetype");
font-style: italic;
font-weight: 200;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-Regular.ttf) format("truetype");
font-style: normal;
font-weight: 400;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-Italic.ttf) format("truetype");
font-style: italic;
font-weight: 400;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-Bold.ttf) format("truetype");
font-style: normal;
font-weight: 700;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-BoldItalic.ttf) format("truetype");
font-style: italic;
font-weight: 700;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-Black.ttf) format("truetype");
font-style: normal;
font-weight: 800;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-BlackItalic.ttf) format("truetype");
font-style: italic;
font-weight: 800;
}
@font-face {
font-family: "Material Icons";
font-style: normal;
font-weight: 400;
src: url(../../../fonts/material/MaterialIcons-Regular.eot);
/* For IE6-8 */
src: local("Material Icons"), local("MaterialIcons-Regular"), url(../../../fonts/material/MaterialIcons-Regular.woff2) format("woff2"), url(../../../fonts/material/MaterialIcons-Regular.woff) format("woff"), url(../../../fonts/material/MaterialIcons-Regular.ttf) format("truetype");
}
*, *::before, *::after {
box-sizing: border-box;
font-family: Lato;
font-size: 16px;
font-weight: 400;
}
body {
margin: 0 0 100px 0;
}
body.waiting * {
cursor: wait !important;
}
html {
width: 100%;
min-height: 100%;
font-weight: 300;
background-color: #282828;
color: white;
background-repeat: no-repeat;
background-position: bottom right;
background-size: contain;
}
h1 {
color: white;
font-family: Aileron;
font-weight: 300;
font-size: 40px;
text-align: center;
}
h2 {
color: white;
font-family: Aileron;
font-weight: 300;
font-size: 30px;
}
p {
font-weight: 300;
text-align: center;
}
header {
padding: 8px;
}
header .logo {
background-image: url("../logo-dark.png");
background-repeat: no-repeat;
background-size: contain;
height: 80px;
margin: 30px;
}
.head {
width: 100%;
max-width: 1000px;
margin: auto;
}
.content form {
margin: auto;
padding: 20px;
width: 100%;
max-width: 500px;
}
a {
color: #760038;
text-decoration: none;
font-weight: 400;
}
a:hover {
color: #f60075;
}
a.tos-link {
font-size: 14px;
}
button, .button {
background-color: #282828;
color: #760038;
border: 1px solid #760038;
border-radius: 5px;
width: 100%;
max-width: 600px;
height: 50px;
transition: all 0.3s ease 0s;
cursor: pointer;
outline: none;
display: inline-block;
text-align: center;
line-height: 44px;
padding: 1px 6px;
}
button:hover, .button:hover {
background-color: #f60075;
color: #282828;
border: 1px solid #f60075;
}
button.primary, .button.primary {
background-color: #760038;
color: white;
border: none;
}
button.primary:hover, .button.primary:hover {
background-color: #f60075;
}
button:disabled, .button:disabled {
background-color: #999999;
border: 1px solid #999999;
}
button:disabled:hover, .button:disabled:hover {
background-color: #999999;
border: 1px solid #999999;
}
button.google, .button.google {
display: flex;
align-items: center;
position: relative;
padding: 0 1px;
color: #FFFFFF;
background-color: #4285F4;
}
button.google span.logo, .button.google span.logo {
height: 46px;
width: 46px;
background-color: #FFFFFF;
background-image: url("../../../images/idp/google.png");
background-size: 25px;
background-position: center;
background-repeat: no-repeat;
border-radius: 5px;
}
button.google span.provider-name, .button.google span.provider-name {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
input:not([type=radio]), select {
background-color: #252525;
color: white;
height: 50px;
border: 1px solid #999999;
border-radius: 5px;
padding-left: 8px;
}
form button.user-selection .profile-image, .login-profile .profile-image {
height: 80px;
width: 80px;
background-position: center;
background-repeat: no-repeat;
background-size: contain;
background-image: url("../../../images/icon-user-dark.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
form button.user-selection .profile-image, .login-profile .profile-image {
background-image: url("../../../images/icon-user-dark@2x.png");
background-size: 80px 80px;
}
}
form button.user-selection:hover .profile-image, .login-profile:hover .profile-image {
background-image: url("../../../images/icon-user-dark-hover.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
form button.user-selection:hover .profile-image, .login-profile:hover .profile-image {
background-image: url("../../../images/icon-user-dark-hover@2x.png");
background-size: 80px 80px;
}
}
.login-profile .profile-image {
margin-left: auto;
margin-right: auto;
}
.login-profile .names {
padding: 10px 0;
text-align: center;
}
.login-profile .names div:first-of-type {
font-size: 26px;
font-weight: 300;
}
.login-profile .names div:nth-of-type(2) {
font-weight: 300;
font-size: 0.9rem;
font-style: italic;
color: #898989;
}
form .field {
display: grid;
padding: 10px 0;
}
form .field.radio-button {
display: flex;
}
form .field.radio-button input[type=radio] {
height: 20px;
vertical-align: middle;
}
form .field.radio-button label {
height: 20px;
display: inline-block;
padding: 3px 0 0 15px;
width: 100%;
}
form .field.check-box {
display: flex;
}
form .field.check-box input[type=checkbox] {
height: 16px;
vertical-align: middle;
}
form .field.check-box label {
height: 16px;
text-transform: inherit;
display: inline-block;
padding: 2px 0 0 15px;
width: 100%;
color: white;
}
form label {
color: #898989;
text-transform: uppercase;
font-size: 0.8rem;
margin-bottom: 3px;
}
form label span.optional {
font-style: italic;
text-transform: none;
}
form .actions {
padding: 20px 0;
}
form .actions .right {
float: right;
}
form .actions button, form .actions a {
margin: 10px 0;
}
form button.clean {
border: none;
height: auto;
color: white;
text-align: left;
text-transform: unset;
display: flex;
padding: 15px;
}
form button.clean:hover {
border: none;
background-color: #252525;
}
form button.clean * {
font-weight: 300;
}
form .user-selection-list {
margin-bottom: 40px;
}
form button.user-selection .sessionstate {
display: inline-block;
height: 20px;
width: 20px;
border-radius: 20px;
border-color: #999999;
border-style: solid;
border-width: 1px;
position: absolute;
bottom: 0px;
right: 10px;
}
form button.user-selection .sessionstate.sessionstate-0 {
background-color: #138D00;
}
form button.user-selection .sessionstate.sessionstate-1 {
background-color: #BC372E;
}
form button.user-selection > div {
position: relative;
}
form button.user-selection > div.names {
margin: 0 15px;
}
form button.user-selection > div.names .displayname {
font-size: 1.4rem;
}
form button.user-selection > div.names .loginname {
color: #898989;
}
form button.user-selection:disabled {
background: transparent;
border: none;
cursor: not-allowed;
}
form button.user-selection:disabled .profile-image {
opacity: 0.3;
}
form button.user-selection:disabled .sessionstate {
background-color: #282828;
}
form button.user-selection:disabled .names .displayname, form button.user-selection:disabled .names .loginname {
font-style: italic;
color: #444444;
}
.user-selection + form button.other-user {
margin-top: 80px;
}
form button.other-user .other-user-image {
width: 80px;
height: 60px;
background-repeat: no-repeat;
background-position: center;
background-image: url("../../../images/icon-newuser-dark.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
form button.other-user .other-user-image {
background-image: url("../../../images/icon-newuser-dark@2x.png");
background-size: 80px 60px;
}
}
form button.other-user:hover .other-user-image {
background-repeat: no-repeat;
background-position: center;
background-image: url("../../../images/icon-newuser-dark-hover.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
form button.other-user:hover .other-user-image {
background-image: url("../../../images/icon-newuser-dark-hover@2x.png");
background-size: 80px 60px;
}
}
form button.other-user > div:nth-of-type(2) {
margin: 15px;
font-size: 1.4rem;
}
form ul#passwordcomplexity {
display: flex;
flex-wrap: wrap;
padding: 0;
list-style: none;
margin-bottom: 0;
}
form ul#passwordcomplexity li {
flex: 1 0 50%;
display: block;
font-weight: 300;
font-size: 12px;
line-height: 12px;
}
form ul#passwordcomplexity li i {
height: 26px;
padding-right: 10px;
vertical-align: middle;
color: #0DF279;
}
form ul#passwordcomplexity li.invalid i {
color: #F20D6B;
}
form #loginname {
display: flex;
}
form #loginname .loginname-suffix {
padding-left: 5px;
line-height: 50px;
}
#copy-secret {
visibility: hidden;
position: absolute;
}
#qrcode {
text-align: center;
}
#qrcode svg rect.color {
fill: white;
}
#qrcode svg rect.bg-color {
fill: #282828;
}
#secret .copy {
float: right;
cursor: pointer;
}
footer {
background-image: url("../gradientdeco-full.svg");
width: 100%;
background-size: cover;
bottom: 0;
z-index: -1;
}
.material-icons {
font-family: "Material Icons";
font-weight: normal;
font-style: normal;
font-size: 24px;
/* Preferred icon size */
display: inline-block;
line-height: 1;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
/* Support for all WebKit browsers. */
-webkit-font-smoothing: antialiased;
/* Support for Safari and Chrome. */
text-rendering: optimizeLegibility;
/* Support for Firefox. */
-moz-osx-font-smoothing: grayscale;
/* Support for IE. */
font-feature-settings: "liga";
}
.free-tier {
border: 2px solid #F20D6B;
border-radius: 5px;
padding: 10px;
}
.error {
color: #F20D6B;
}
.hidden {
display: none;
}
#wa-error {
margin-top: 20px;
}
/*# sourceMappingURL=dark.css.map */

View File

@@ -1 +0,0 @@
{"version":3,"sourceRoot":"","sources":["../../scss/fonts.scss","../../scss/main.scss","../../scss/caos/variables.scss","../../scss/variables.scss"],"names":[],"mappings":"AACA;EACI;EACA;;AAIJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAIJ;EACI;EACA;EACA;EACA;AAA6D;EAC7D;;AC5EJ;EACI;EACA,aCMW;EDLX;EACA;;;AAGJ;EACI;;AAEA;EACI;;;AAIR;EACI;EACA;EACA;EACA,kBCLc;EDMd,OCLQ;EDMR;EACA;EACA;;;AAMJ;EACI,OCfQ;EDgBR,aCtBS;EDuBT;EACA,WE7BS;EF8BT;;;AAGJ;EACI,OCvBQ;EDwBR,aC9BS;ED+BT;EACA,WEpCU;;;AFuCd;EACI;EACA;;;AAGJ;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI,OC3DW;ED4DX;EACA;;AAEA;EACI,OC/DY;;ADkEhB;EACI;;;AAIR;EACI,kBC3Ec;ED4Ed,OC1EW;ED2EX;EACA;EACA;EACA;EACA,QE5FU;EF6FV;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI,kBCxFY;EDyFZ,OC5FU;ED6FV;;AAGJ;EACI,kBC/FO;EDgGP,OCjGI;EDkGJ;;AACA;EACI,kBClGQ;;ADsGhB;EACI,kBE5FW;EF6FX;;AAEA;EACI,kBEhGO;EFiGP;;AAIR;EACI;EACA;EACA;EACA;EACA,OEpGa;EFqGb,kBEpGmB;;AFsGnB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;;;AAOZ;EACI,kBElImB;EFmInB,OCjJQ;EDkJR,QE9JU;EF+JV;EACA;EACA;;;AAIA;EACI;EACA;EACA;EACA;EACA;EE9JN;;AACA;EFwJE;IEvJA;IACA;;;AF+JA;EElKF;;AACA;EFiKE;IEhKA;IACA;;;;AFsKA;EACI;EACA;;AAGJ;EACI;EACA;;AAEA;EACI,WE5LE;EF6LF;;AAGJ;EACI;EACA;EACA;EACA,OE/KC;;;AFqLT;EACI;EACA;;AAGJ;EACI;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAIR;EACI;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA,OCpOA;;ADwOR;EACI,OE7NK;EF8NL;EACA;EACA;;AAEA;EACI;EACA;;AAIR;EACI;;AAEA;EACI;;AAGJ;EACI;;AAIR;EACI;EACA;EACA,OCnQI;EDoQJ;EACA;EACA;EACA;;AAEA;EACI;EACA,kBE7PW;;AFgQf;EACI;;AAIR;EACI;;AAMA;EACI;EACA;EACA;EACA;EACA,cElRO;EFmRP;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAKR;EACI;;AAEA;EACI;;AAEA;EACI;;AAEJ;EACI,OE9SP;;AFmTL;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI,kBC1UE;;AD8UF;EACI;EACA;;AAOZ;EACI;;AAEJ;EACI;EACA;EACA;EACA;EE7VV;;AACA;EFwVM;IEvVJ;IACA;;;AF+VQ;EACI;EACA;EEpWd;;AACA;EFiWU;IEhWR;IACA;;;AFsWI;EACI;EACA;;AAIR;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA,OE3WN;;AFgXE;EACI,OElXL;;AFuXP;EACI;;AACA;EACI;EACA;;;AAKZ;EACI;EACA;;;AAGJ;EACI;;AAEA;EACI,MC9ZI;;ADiaR;EACI,MCnaU;;;ADwad;EACI;EACA;;;AAIR;EAEQ;EAEJ;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;AAAkB;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AACA;EACA;AAEA;EACA;AAEA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI,OElcO;;;AFqcX;EACI;;;AAGJ;EACI","file":"dark.css"}

View File

@@ -1,654 +0,0 @@
@font-face {
font-family: Aileron;
src: url(../../../fonts/ailerons/ailerons.otf) format("opentype");
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-Thin.ttf) format("truetype");
font-style: normal;
font-weight: 100;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-ThinItalic.ttf) format("truetype");
font-style: italic;
font-weight: 100;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-Light.ttf) format("truetype");
font-style: normal;
font-weight: 200;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-LightItalic.ttf) format("truetype");
font-style: italic;
font-weight: 200;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-Regular.ttf) format("truetype");
font-style: normal;
font-weight: 400;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-Italic.ttf) format("truetype");
font-style: italic;
font-weight: 400;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-Bold.ttf) format("truetype");
font-style: normal;
font-weight: 700;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-BoldItalic.ttf) format("truetype");
font-style: italic;
font-weight: 700;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-Black.ttf) format("truetype");
font-style: normal;
font-weight: 800;
}
@font-face {
font-family: Lato;
src: url(../../../fonts/lato/Lato-BlackItalic.ttf) format("truetype");
font-style: italic;
font-weight: 800;
}
@font-face {
font-family: "Material Icons";
font-style: normal;
font-weight: 400;
src: url(../../../fonts/material/MaterialIcons-Regular.eot);
/* For IE6-8 */
src: local("Material Icons"), local("MaterialIcons-Regular"), url(../../../fonts/material/MaterialIcons-Regular.woff2) format("woff2"), url(../../../fonts/material/MaterialIcons-Regular.woff) format("woff"), url(../../../fonts/material/MaterialIcons-Regular.ttf) format("truetype");
}
*, *::before, *::after {
box-sizing: border-box;
font-family: Lato;
font-size: 16px;
font-weight: 400;
}
body {
margin: 0 0 100px 0;
}
body.waiting * {
cursor: wait !important;
}
html {
width: 100%;
min-height: 100%;
font-weight: 300;
background-color: #282828;
color: white;
background-repeat: no-repeat;
background-position: bottom right;
background-size: contain;
}
h1 {
color: white;
font-family: Aileron;
font-weight: 300;
font-size: 40px;
text-align: center;
}
h2 {
color: white;
font-family: Aileron;
font-weight: 300;
font-size: 30px;
}
p {
font-weight: 300;
text-align: center;
}
header {
padding: 8px;
}
header .logo {
background-image: url("../logo-dark.png");
background-repeat: no-repeat;
background-size: contain;
height: 80px;
margin: 30px;
}
.head {
width: 100%;
max-width: 1000px;
margin: auto;
}
.content form {
margin: auto;
padding: 20px;
width: 100%;
max-width: 500px;
}
a {
color: #760038;
text-decoration: none;
font-weight: 400;
}
a:hover {
color: #f60075;
}
a.tos-link {
font-size: 14px;
}
button, .button {
background-color: #282828;
color: #760038;
border: 1px solid #760038;
border-radius: 5px;
width: 100%;
max-width: 600px;
height: 50px;
transition: all 0.3s ease 0s;
cursor: pointer;
outline: none;
display: inline-block;
text-align: center;
line-height: 44px;
padding: 1px 6px;
}
button:hover, .button:hover {
background-color: #f60075;
color: #282828;
border: 1px solid #f60075;
}
button.primary, .button.primary {
background-color: #760038;
color: white;
border: none;
}
button.primary:hover, .button.primary:hover {
background-color: #f60075;
}
button:disabled, .button:disabled {
background-color: #999999;
border: 1px solid #999999;
}
button:disabled:hover, .button:disabled:hover {
background-color: #999999;
border: 1px solid #999999;
}
button.google, .button.google {
display: flex;
align-items: center;
position: relative;
padding: 0 1px;
color: #FFFFFF;
background-color: #4285F4;
}
button.google span.logo, .button.google span.logo {
height: 46px;
width: 46px;
background-color: #FFFFFF;
background-image: url("../../../images/idp/google.png");
background-size: 25px;
background-position: center;
background-repeat: no-repeat;
border-radius: 5px;
}
button.google span.provider-name, .button.google span.provider-name {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
input:not([type=radio]), select {
background-color: #252525;
color: white;
height: 50px;
border: 1px solid #999999;
border-radius: 5px;
padding-left: 8px;
}
form button.user-selection .profile-image, .login-profile .profile-image {
height: 80px;
width: 80px;
background-position: center;
background-repeat: no-repeat;
background-size: contain;
background-image: url("../../../images/icon-user-dark.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
form button.user-selection .profile-image, .login-profile .profile-image {
background-image: url("../../../images/icon-user-dark@2x.png");
background-size: 80px 80px;
}
}
form button.user-selection:hover .profile-image, .login-profile:hover .profile-image {
background-image: url("../../../images/icon-user-dark-hover.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
form button.user-selection:hover .profile-image, .login-profile:hover .profile-image {
background-image: url("../../../images/icon-user-dark-hover@2x.png");
background-size: 80px 80px;
}
}
.login-profile .profile-image {
margin-left: auto;
margin-right: auto;
}
.login-profile .names {
padding: 10px 0;
text-align: center;
}
.login-profile .names div:first-of-type {
font-size: 26px;
font-weight: 300;
}
.login-profile .names div:nth-of-type(2) {
font-weight: 300;
font-size: 0.9rem;
font-style: italic;
color: #898989;
}
form .field {
display: grid;
padding: 10px 0;
}
form .field.radio-button {
display: flex;
}
form .field.radio-button input[type=radio] {
height: 20px;
vertical-align: middle;
}
form .field.radio-button label {
height: 20px;
display: inline-block;
padding: 3px 0 0 15px;
width: 100%;
}
form .field.check-box {
display: flex;
}
form .field.check-box input[type=checkbox] {
height: 16px;
vertical-align: middle;
}
form .field.check-box label {
height: 16px;
text-transform: inherit;
display: inline-block;
padding: 2px 0 0 15px;
width: 100%;
color: white;
}
form label {
color: #898989;
text-transform: uppercase;
font-size: 0.8rem;
margin-bottom: 3px;
}
form label span.optional {
font-style: italic;
text-transform: none;
}
form .actions {
padding: 20px 0;
}
form .actions .right {
float: right;
}
form .actions button, form .actions a {
margin: 10px 0;
}
form button.clean {
border: none;
height: auto;
color: white;
text-align: left;
text-transform: unset;
display: flex;
padding: 15px;
}
form button.clean:hover {
border: none;
background-color: #252525;
}
form button.clean * {
font-weight: 300;
}
form .user-selection-list {
margin-bottom: 40px;
}
form button.user-selection .sessionstate {
display: inline-block;
height: 20px;
width: 20px;
border-radius: 20px;
border-color: #999999;
border-style: solid;
border-width: 1px;
position: absolute;
bottom: 0px;
right: 10px;
}
form button.user-selection .sessionstate.sessionstate-0 {
background-color: #138D00;
}
form button.user-selection .sessionstate.sessionstate-1 {
background-color: #BC372E;
}
form button.user-selection > div {
position: relative;
}
form button.user-selection > div.names {
margin: 0 15px;
}
form button.user-selection > div.names .displayname {
font-size: 1.4rem;
}
form button.user-selection > div.names .loginname {
color: #898989;
}
form button.user-selection:disabled {
background: transparent;
border: none;
cursor: not-allowed;
}
form button.user-selection:disabled .profile-image {
opacity: 0.3;
}
form button.user-selection:disabled .sessionstate {
background-color: #282828;
}
form button.user-selection:disabled .names .displayname, form button.user-selection:disabled .names .loginname {
font-style: italic;
color: #444444;
}
.user-selection + form button.other-user {
margin-top: 80px;
}
form button.other-user .other-user-image {
width: 80px;
height: 60px;
background-repeat: no-repeat;
background-position: center;
background-image: url("../../../images/icon-newuser-dark.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
form button.other-user .other-user-image {
background-image: url("../../../images/icon-newuser-dark@2x.png");
background-size: 80px 60px;
}
}
form button.other-user:hover .other-user-image {
background-repeat: no-repeat;
background-position: center;
background-image: url("../../../images/icon-newuser-dark-hover.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
form button.other-user:hover .other-user-image {
background-image: url("../../../images/icon-newuser-dark-hover@2x.png");
background-size: 80px 60px;
}
}
form button.other-user > div:nth-of-type(2) {
margin: 15px;
font-size: 1.4rem;
}
form ul#passwordcomplexity {
display: flex;
flex-wrap: wrap;
padding: 0;
list-style: none;
margin-bottom: 0;
}
form ul#passwordcomplexity li {
flex: 1 0 50%;
display: block;
font-weight: 300;
font-size: 12px;
line-height: 12px;
}
form ul#passwordcomplexity li i {
height: 26px;
padding-right: 10px;
vertical-align: middle;
color: #0DF279;
}
form ul#passwordcomplexity li.invalid i {
color: #F20D6B;
}
form #loginname {
display: flex;
}
form #loginname .loginname-suffix {
padding-left: 5px;
line-height: 50px;
}
#copy-secret {
visibility: hidden;
position: absolute;
}
#qrcode {
text-align: center;
}
#qrcode svg rect.color {
fill: white;
}
#qrcode svg rect.bg-color {
fill: #282828;
}
#secret .copy {
float: right;
cursor: pointer;
}
footer {
background-image: url("../gradientdeco-full.svg");
width: 100%;
background-size: cover;
bottom: 0;
z-index: -1;
}
.material-icons {
font-family: "Material Icons";
font-weight: normal;
font-style: normal;
font-size: 24px;
/* Preferred icon size */
display: inline-block;
line-height: 1;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
/* Support for all WebKit browsers. */
-webkit-font-smoothing: antialiased;
/* Support for Safari and Chrome. */
text-rendering: optimizeLegibility;
/* Support for Firefox. */
-moz-osx-font-smoothing: grayscale;
/* Support for IE. */
font-feature-settings: "liga";
}
.free-tier {
border: 2px solid #F20D6B;
border-radius: 5px;
padding: 10px;
}
.error {
color: #F20D6B;
}
.hidden {
display: none;
}
#wa-error {
margin-top: 20px;
}
html {
background-color: white;
color: #282828;
}
html header .logo {
background-image: url("../logo-light.png");
}
html h1, html h2 {
color: #282828;
}
html button, html .button {
background-color: white;
color: #760038;
border: 1px solid #760038;
}
html button:hover, html .button:hover {
background-color: #f60075;
border: 1px solid #f60075;
color: #FFFFFF;
}
html button.primary, html .button.primary {
background-color: #760038;
color: #FFFFFF;
border: none;
box-shadow: 0px 10px 30px #760038;
}
html button.primary:hover, html .button.primary:hover {
background-color: #f60075;
}
html button:disabled, html .button:disabled {
background-color: #999999;
border: 1px solid #999999;
}
html button:disabled:hover, html .button:disabled:hover {
background-color: #999999;
border: 1px solid #999999;
}
html button.clean, html .button.clean {
color: #282828;
}
html button.clean:hover, html .button.clean:hover {
border: none;
background-color: #FFFFFF;
}
html button.user-selection .profile-image, html .button.user-selection .profile-image {
background-image: url("../../../images/icon-user-light.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
html button.user-selection .profile-image, html .button.user-selection .profile-image {
background-image: url("../../../images/icon-user-light@2x.png");
background-size: 80px 80px;
}
}
html button.user-selection:hover, html .button.user-selection:hover {
background-color: #FFFFFF;
}
html button.user-selection:hover .profile-image, html .button.user-selection:hover .profile-image {
background-image: url("../../../images/icon-user-light-hover.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
html button.user-selection:hover .profile-image, html .button.user-selection:hover .profile-image {
background-image: url("../../../images/icon-user-light-hover@2x.png");
background-size: 80px 80px;
}
}
html button.other-user .other-user-image, html .button.other-user .other-user-image {
background-image: url("../../../images/icon-newuser-light.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
html button.other-user .other-user-image, html .button.other-user .other-user-image {
background-image: url("../../../images/icon-newuser-light@2x.png");
background-size: 80px 60px;
}
}
html button.other-user:hover .other-user-image, html .button.other-user:hover .other-user-image {
background-image: url("../../../images/icon-newuser-light-hover.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
html button.other-user:hover .other-user-image, html .button.other-user:hover .other-user-image {
background-image: url("../../../images/icon-newuser-light-hover@2x.png");
background-size: 80px 60px;
}
}
html button.google, html .button.google {
color: #8b8d8d;
background-color: #FFFFFF;
}
html button.google span.logo, html .button.google span.logo {
background-image: url("../../../images/idp/google.png");
}
html input:not([type=radio]), html select {
background-color: #FFFFFF;
color: #282828;
}
html #qrcode svg rect.color {
fill: #282828;
}
html #qrcode svg rect.bg-color {
fill: white;
}
html footer {
background-image: url("../gradientdeco-full.svg");
}
form .field.check-box label {
color: #282828;
}
form ul#passwordcomplexity li i {
color: #50CA3D;
}
form ul#passwordcomplexity li.invalid i {
color: #F20D6B;
}
.login-profile .profile-image, form button.user-selection .profile-image {
background-image: url("../../../images/icon-user-light.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
.login-profile .profile-image, form button.user-selection .profile-image {
background-image: url("../../../images/icon-user-light@2x.png");
background-size: 80px 80px;
}
}
.login-profile:hover .profile-image, form button.user-selection:hover .profile-image {
background-image: url("../../../images/icon-user-light-hover.png");
}
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
.login-profile:hover .profile-image, form button.user-selection:hover .profile-image {
background-image: url("../../../images/icon-user-light-hover@2x.png");
background-size: 80px 80px;
}
}
.free-tier {
border: 2px solid #F20D6B;
}
.error {
color: #F20D6B;
}
/*# sourceMappingURL=light.css.map */

View File

@@ -1 +0,0 @@
{"version":3,"sourceRoot":"","sources":["../../scss/fonts.scss","../../scss/main.scss","../../scss/caos/variables.scss","../../scss/variables.scss","../../scss/light.scss"],"names":[],"mappings":"AACA;EACI;EACA;;AAIJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAIJ;EACI;EACA;EACA;EACA;AAA6D;EAC7D;;AC5EJ;EACI;EACA,aCMW;EDLX;EACA;;;AAGJ;EACI;;AAEA;EACI;;;AAIR;EACI;EACA;EACA;EACA,kBCLc;EDMd,OCLQ;EDMR;EACA;EACA;;;AAMJ;EACI,OCfQ;EDgBR,aCtBS;EDuBT;EACA,WE7BS;EF8BT;;;AAGJ;EACI,OCvBQ;EDwBR,aC9BS;ED+BT;EACA,WEpCU;;;AFuCd;EACI;EACA;;;AAGJ;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI,OC3DW;ED4DX;EACA;;AAEA;EACI,OC/DY;;ADkEhB;EACI;;;AAIR;EACI,kBC3Ec;ED4Ed,OC1EW;ED2EX;EACA;EACA;EACA;EACA,QE5FU;EF6FV;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI,kBCxFY;EDyFZ,OC5FU;ED6FV;;AAGJ;EACI,kBC/FO;EDgGP,OCjGI;EDkGJ;;AACA;EACI,kBClGQ;;ADsGhB;EACI,kBE5FW;EF6FX;;AAEA;EACI,kBEhGO;EFiGP;;AAIR;EACI;EACA;EACA;EACA;EACA,OEpGa;EFqGb,kBEpGmB;;AFsGnB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;;;AAOZ;EACI,kBElImB;EFmInB,OCjJQ;EDkJR,QE9JU;EF+JV;EACA;EACA;;;AAIA;EACI;EACA;EACA;EACA;EACA;EE9JN;;AACA;EFwJE;IEvJA;IACA;;;AF+JA;EElKF;;AACA;EFiKE;IEhKA;IACA;;;;AFsKA;EACI;EACA;;AAGJ;EACI;EACA;;AAEA;EACI,WE5LE;EF6LF;;AAGJ;EACI;EACA;EACA;EACA,OE/KC;;;AFqLT;EACI;EACA;;AAGJ;EACI;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAIR;EACI;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA,OCpOA;;ADwOR;EACI,OE7NK;EF8NL;EACA;EACA;;AAEA;EACI;EACA;;AAIR;EACI;;AAEA;EACI;;AAGJ;EACI;;AAIR;EACI;EACA;EACA,OCnQI;EDoQJ;EACA;EACA;EACA;;AAEA;EACI;EACA,kBE7PW;;AFgQf;EACI;;AAIR;EACI;;AAMA;EACI;EACA;EACA;EACA;EACA,cElRO;EFmRP;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAKR;EACI;;AAEA;EACI;;AAEA;EACI;;AAEJ;EACI,OE9SP;;AFmTL;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI,kBC1UE;;AD8UF;EACI;EACA;;AAOZ;EACI;;AAEJ;EACI;EACA;EACA;EACA;EE7VV;;AACA;EFwVM;IEvVJ;IACA;;;AF+VQ;EACI;EACA;EEpWd;;AACA;EFiWU;IEhWR;IACA;;;AFsWI;EACI;EACA;;AAIR;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA,OE3WN;;AFgXE;EACI,OElXL;;AFuXP;EACI;;AACA;EACI;EACA;;;AAKZ;EACI;EACA;;;AAGJ;EACI;;AAEA;EACI,MC9ZI;;ADiaR;EACI,MCnaU;;;ADwad;EACI;EACA;;;AAIR;EAEQ;EAEJ;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;AAAkB;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AACA;EACA;AAEA;EACA;AAEA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI,OElcO;;;AFqcX;EACI;;;AAGJ;EACI;;;AG/eJ;EACI,kBFeQ;EEdR,OFac;;AERd;EACI;;AAGJ;EACI,OFGU;;AEAd;EACI;EACA;EACA;;AAEA;EACI,kBFIa;EEHb;EACA,ODyBgB;;ACtBpB;EACI,kBFVG;EEWH,ODoBgB;ECnBhB;EACA;;AACA;EACI,kBFdI;;AEkBZ;EACI,kBDRO;ECSP;;AAEA;EACI,kBDZG;ECaH;;AAIR;EACI,OFhCM;;AEkCN;EACI;EACA,kBDHY;;ACQhB;EDxCV;;AACA;ECuCU;IDtCR;IACA;;;ACyCQ;EACI,kBDbY;;ACeZ;ED/Cd;;AACA;EC8Cc;ID7CZ;IACA;;;ACmDQ;EDtDV;;AACA;ECqDU;IDpDR;IACA;;;ACwDY;ED3Dd;;AACA;EC0Dc;IDzDZ;IACA;;;AC8DI;EACI,OD7Bc;EC8Bd,kBD7BoB;;AC+BpB;EACI;;AAKZ;EACI,kBD5CoB;EC6CpB,OF9EU;;AEkFV;EACI,MFnFM;;AEsFV;EACI,MFtFA;;AE0FR;EAEQ;;;AAMR;EACI,OFpGU;;AEwGb;EACI,ODhEM;;ACoEN;EACI,ODtEG;;;AC8EZ;EDrHF;;AACA;ECoHE;IDnHA;IACA;;;ACsHA;EDzHF;;AACA;ECwHE;IDvHA;IACA;;;;AC2HJ;EACI;;;AAGJ;EACI,OD5FY","file":"light.css"}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -0,0 +1,12 @@
// themes and colors
@import './styles/theming/all.scss';
@import './styles/color/all_color.scss';
@import './styles/typography/typography.scss';
// layouts
@import './styles/container/container.scss';
@import './styles/register/register.scss';
@import './styles/header/header.scss';
// animations
@import './styles/animations.scss';

View File

@@ -1,3 +0,0 @@
@import "../variables";
@import "variables";
@import "../main";

View File

@@ -1,4 +0,0 @@
@import "../variables";
@import "variables";
@import "../main";
@import "../light";

View File

@@ -1,27 +0,0 @@
$logoImgDark: "../logo-dark.png";
$logoImgLight: "../logo-light.png";
$footerimgDark: "../gradientdeco-full.svg";
$footerimgLight: "../gradientdeco-full.svg";
$bodyImgDark: "";
$bodyImgLight: "";
// ----- FONTS ------------
$standardFont: Lato;
$headerFont: Aileron;
// ----- COLORS ------------
// ------ DARK-THEME -------
$backgroundColor: #282828;
$fontColor: white;
$primaryColor: #760038;
$primaryColorHover: lighten($primaryColor, 25%);
// ------ LIGHT-THEME -------
$backgroundColorLight: $fontColor;
$fontColorLight: $backgroundColor;
$primaryColorLight: $primaryColor;
$primaryColorHoverLight: lighten($primaryColorLight, 25%);

View File

@@ -1,150 +0,0 @@
// ---- LIGHT-THEME-------
html {
background-color: $backgroundColorLight;
color: $fontColorLight;
@if($bodyImgLight != "") {
background-image: url($bodyImgLight);
}
header .logo {
background-image: url($logoImgLight);
}
h1, h2 {
color: $fontColorLight;
}
button, .button {
background-color: $backgroundColorLight;
color: $primaryColorLight;
border: 1px solid $primaryColorLight;
&:hover {
background-color: $primaryColorHoverLight;
border: 1px solid $primaryColorHoverLight;
color: $buttonBackgroundColorHoverLight
}
&.primary {
background-color: $primaryColor;
color: $buttonBackgroundColorHoverLight;
border: none;
box-shadow: 0px 10px 30px $primaryColor;
&:hover {
background-color: $primaryColorHover;
}
}
&:disabled {
background-color: $inputBorderColor;
border: 1px solid $inputBorderColor;
&:hover {
background-color: $inputBorderColor;
border: 1px solid $inputBorderColor;
}
}
&.clean {
color: $fontColorLight;
&:hover {
border: none;
background-color: $buttonBackgroundColorHoverLight;
}
}
&.user-selection {
.profile-image {
@include retina-background-image($profileImgLight, "png", false, 80px, 80px);
}
&:hover {
background-color: $buttonBackgroundColorHoverLight;
.profile-image {
@include retina-background-image($profileImgLight, "png", true, 80px, 80px);
}
}
}
&.other-user {
.other-user-image {
@include retina-background-image($otherUserImgLight, "png", false, 80px, 60px);
}
&:hover {
.other-user-image {
@include retina-background-image($otherUserImgLight, "png", true, 80px, 60px);
}
}
}
&.google {
color: $idpGoogleFontColorLight;
background-color: $idpGoogleBackgroundColorLight;
span.logo {
background-image: url($idpGoogleImg + '.png');
}
}
}
input:not([type='radio']), select {
background-color: $inputBackgroundColorLight;
color: $fontColorLight;
}
#qrcode {
svg rect.color {
fill: $fontColorLight;
}
svg rect.bg-color {
fill: $backgroundColorLight;
}
}
footer {
@if($footerimgLight != "") {
background-image: url($footerimgLight);
}
}
}
form {
.field.check-box label {
color: $fontColorLight;
}
ul#passwordcomplexity li {
i {
color: $okColorLight;
}
&.invalid {
i {
color: $nokColorLight;
}
}
}
}
%profile-image {
.profile-image {
@include retina-background-image($profileImgLight, "png", false, 80px, 80px);
}
&:hover .profile-image {
@include retina-background-image($profileImgLight, "png", true, 80px, 80px);
}
}
.free-tier {
border: 2px solid $nokColorLight;
}
.error {
color: $nokColorLight;
}

View File

@@ -1,498 +1,22 @@
@import "fonts";
*, *::before, *::after {
box-sizing: border-box;
font-family: $standardFont;
font-size: 16px;
font-weight: 400;
}
body {
margin: 0 0 100px 0;
margin: 0 auto;
display: flex;
flex-direction: column;
height: 100vh;
.lgn-grow {
flex: 1;
}
&.waiting * {
cursor: wait !important;
}
}
html {
width: 100%;
min-height: 100%;
font-weight: 300;
background-color: $backgroundColor;
color: $fontColor;
background-repeat: no-repeat;
background-position: bottom right;
background-size: contain;
@if($bodyImgDark != "") {
background-image: url($bodyImgDark);
}
}
h1 {
color: $fontColor;
font-family: $headerFont;
font-weight: 300;
font-size: $headerSize;
text-align: center;
}
h2 {
color: $fontColor;
font-family: $headerFont;
font-weight: 300;
font-size: $header2Size;
}
p {
font-weight: 300;
text-align: center;
}
header {
padding: 8px;
.logo {
background-image: url($logoImgDark);
background-repeat: no-repeat;
background-size: contain;
height: 80px;
margin: 30px;
}
}
.head {
width: 100%;
max-width: 1000px;
margin: auto;
}
.content form {
margin: auto;
padding: 20px;
width: 100%;
max-width: 500px;
}
a {
color: $primaryColor;
text-decoration: none;
font-weight: 400;
&:hover {
color: $primaryColorHover;
}
&.tos-link {
font-size: 14px;
}
}
button, .button {
background-color: $backgroundColor;
color: $primaryColor;
border: 1px solid $primaryColor;
border-radius: 5px;
width: 100%;
max-width: 600px;
height: $inputHeight;
transition: all 0.3s ease 0s;
cursor: pointer;
outline: none;
display: inline-block;
text-align: center;
line-height: 44px;
padding: 1px 6px;
&:hover {
background-color: $primaryColorHover;
color: $backgroundColor;
border: 1px solid $primaryColorHover;
}
&.primary {
background-color: $primaryColor;
color: $fontColor;
border: none;
&:hover {
background-color: $primaryColorHover;
}
}
&:disabled {
background-color: $inputBorderColor;
border: 1px solid $inputBorderColor;
&:hover {
background-color: $inputBorderColor;
border: 1px solid $inputBorderColor;
}
}
&.google {
display: flex;
align-items: center;
position: relative;
padding: 0 1px;
color: $idpGoogleFontColor;
background-color: $idpGoogleBackgroundColor;
span.logo {
height: 46px;
width: 46px;
background-color: #FFFFFF;
background-image: url($idpGoogleImg + '.png');
background-size: 25px;
background-position: center;
background-repeat: no-repeat;
border-radius: 5px;
}
span.provider-name {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
}
}
input:not([type='radio']), select {
background-color: $inputBackgroundColor;
color: $fontColor;
height: $inputHeight;
border: 1px solid $inputBorderColor;
border-radius: 5px;
padding-left: 8px;
}
%profile-image {
.profile-image {
height: 80px;
width: 80px;
background-position: center;
background-repeat: no-repeat;
background-size: contain;
@include retina-background-image($profileImgDark, "png", false, 80px, 80px);
}
&:hover .profile-image {
@include retina-background-image($profileImgDark, "png", true, 80px, 80px);
}
}
.login-profile {
@extend %profile-image;
.profile-image {
margin-left: auto;
margin-right: auto;
}
.names {
padding: 10px 0;
text-align: center;
div:first-of-type {
font-size: $header3Size;
font-weight: 300;
}
div:nth-of-type(2) {
font-weight: 300;
font-size: 0.9rem;
font-style: italic;
color: $labelColor;
}
}
}
form {
.field {
display: grid;
padding: 10px 0;
}
.field.radio-button {
display: flex;
input[type='radio'] {
height: 20px;
vertical-align: middle;
}
& label {
height: 20px;
display: inline-block;
padding: 3px 0 0 15px;
width: 100%;
}
}
.field.check-box {
display: flex;
input[type='checkbox'] {
height: 16px;
vertical-align: middle;
}
& label {
height: 16px;
text-transform: inherit;
display: inline-block;
padding: 2px 0 0 15px;
width: 100%;
color: $fontColor;
}
}
label {
color: $labelColor;
text-transform: uppercase;
font-size: 0.8rem;
margin-bottom: 3px;
span.optional {
font-style: italic;
text-transform: none;
}
}
.actions {
padding: 20px 0;
.right {
float: right;
}
button, a {
margin: 10px 0;
}
}
button.clean {
border: none;
height: auto;
color: $fontColor;
text-align: left;
text-transform: unset;
display: flex;
padding: 15px;
&:hover {
border: none;
background-color: $buttonBackgroundColorHover;
}
* {
font-weight: 300;
}
}
.user-selection-list {
margin-bottom: 40px;
}
button.user-selection {
@extend %profile-image;
.sessionstate {
display: inline-block;
height: 20px;
width: 20px;
border-radius: 20px;
border-color: $inputBorderColor;
border-style: solid;
border-width: 1px;
position: absolute;
bottom: 0px;
right: 10px;
&.sessionstate-0 {
background-color: #138D00;
}
&.sessionstate-1 {
background-color: #BC372E;
}
}
& > div {
position: relative;
&.names {
margin: 0 15px;
.displayname {
font-size: 1.4rem;
}
.loginname {
color: $labelColor;
}
}
}
&:disabled {
background: transparent;
border: none;
cursor: not-allowed;
.profile-image {
opacity: 0.3;
}
.sessionstate {
background-color: $backgroundColor;
}
.names {
.displayname, .loginname {
font-style: italic;
color: #444444;
}
}
}
}
button.other-user {
.user-selection+&{
margin-top: 80px;
}
.other-user-image {
width: 80px;
height: 60px;
background-repeat: no-repeat;
background-position: center;
@include retina-background-image($otherUserImgDark, "png", false, 80px, 60px);
}
&:hover {
.other-user-image {
background-repeat: no-repeat;
background-position: center;
@include retina-background-image($otherUserImgDark, "png", true, 80px, 60px);
}
}
& > div:nth-of-type(2) {
margin: 15px;
font-size: 1.4rem;
}
}
ul#passwordcomplexity {
display: flex;
flex-wrap: wrap;
padding: 0;
list-style: none;
margin-bottom: 0;
li {
flex: 1 0 50%;
display: block;
font-weight: 300;
font-size: 12px;
line-height: 12px;
i {
height: 26px;
padding-right: 10px;
vertical-align: middle;
color: $okColor;
}
}
li.invalid {
i {
color: $nokColor;
}
}
}
#loginname {
display: flex;
.loginname-suffix {
padding-left: 5px;
line-height: 50px;
}
}
}
#copy-secret {
visibility: hidden;
position: absolute;
}
#qrcode {
text-align: center;
svg rect.color {
fill: $fontColor;
}
svg rect.bg-color {
fill: $backgroundColor;
}
}
#secret {
.copy {
float: right;
cursor: pointer;
}
}
footer {
@if($footerimgDark != "") {
background-image: url($footerimgDark);
}
width: 100%;
background-size: cover;
bottom: 0;
z-index: -1;
}
.material-icons {
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
font-size: 24px; /* Preferred icon size */
display: inline-block;
line-height: 1;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
/* Support for all WebKit browsers. */
-webkit-font-smoothing: antialiased;
/* Support for Safari and Chrome. */
text-rendering: optimizeLegibility;
/* Support for Firefox. */
-moz-osx-font-smoothing: grayscale;
/* Support for IE. */
font-feature-settings: 'liga';
}
.free-tier {
border: 2px solid $nokColor;
border-radius: 5px;
padding: 10px;
}
.error {
color: $nokColor;
}
.hidden {
display: none;
display: none !important;
}
#wa-error {
margin-top: 20px;
.text-align-center {
text-align: center;
}

View File

@@ -0,0 +1,10 @@
a {
text-decoration: none;
outline: none;
cursor: pointer;
margin: 2px 0;
&.block {
display: block;
}
}

View File

@@ -0,0 +1,24 @@
@import './a.scss';
@mixin lgn-a-theme($theme-or-color-config) {
$theme: lgn-private-legacy-get-theme($theme-or-color-config);
$color: lgn-get-color-config($theme);
@if $color != null {
@include lgn-a-color($color);
}
}
@mixin lgn-a-color($config-or-theme) {
$config: lgn-get-color-config($config-or-theme);
$primary: map-get($config, primary);
a {
color: lgn-color($primary, default);
&:hover,
&:active {
color: lgn-color($primary, 400);
}
}
}

View File

@@ -0,0 +1,51 @@
$lgn-container-max-width: 380px;
$lgn-container-padding: 20px;
$lgn-container-margin: 0px auto 50px auto;
.lgn-account-selection{
display: flex;
flex-direction: column;
width: 100%;
.lgn-account {
display: flex;
align-items: center;
border: none;
outline: none;
.left {
padding: .5rem 1rem;
}
.lgn-names {
display: block;
margin: .5rem;
text-align: start;
.lgn-displayname{
font-size: 16px;
margin: .5rem 0;
margin-bottom: 0;
}
.lgn-loginname{
font-size: 14px;
margin: 0;
}
.lgn-session-state {
margin: 0;
font-size: 14px;
margin-bottom: .5rem;
}
}
.fill-space {
flex: 1;
}
i {
font-size: 1.2rem;
}
}
}

Some files were not shown because too many files have changed in this diff Show More