diff --git a/CHANGELOG.md b/CHANGELOG.md index fc74e9f12a8c28e47262063c6ff563366f50cdfd..120d48a88c4200fe4d70dc82c64544dadfdee809 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,25 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.5.0](https://forge.grandlyon.com/web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/compare/v2.4.2...v2.5.0) (2023-11-07) + + +### Features + +* **admin:** add jobs and structures to csv exports ([b88c247](https://forge.grandlyon.com/web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/b88c2478e535edfc1656111d34284ede0109d8c0)) +* **news:** add a special tag to position posts as headline in each section ([c6ffcce](https://forge.grandlyon.com/web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/c6ffcce725242e137fa9ed80810d55ee6b2d8e9a)) +* **onboarding:** resend validation email ([cd910b8](https://forge.grandlyon.com/web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/cd910b870a622922c92fc42f02f7a097363ae0a4)) + + +### Bug Fixes + +* **articles:** remove unwanted margins on figure tag ([a70e238](https://forge.grandlyon.com/web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/a70e238e279f73dfd7c1f5f7611290333b1e6c4a)) +* **onboarding:** font message (issue [#309](https://forge.grandlyon.com/web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/issues/309)) ([b5ff5bc](https://forge.grandlyon.com/web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/b5ff5bc46d665f9abb7ef33145742b8efe8ee858)) +* **onboarding:** newsletter subscription ([0e43f9b](https://forge.grandlyon.com/web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/0e43f9bcb9dedabc3055ea1248ed31c23e92945b)) +* **orientation:** app-component height modified for issue 307 broke orientation map ([0c1e67e](https://forge.grandlyon.com/web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/0c1e67e9278bf9195d7049f073c103a704d30deb)) +* **orientation:** orientator screen : neither email nor phone are mandatory ([94f0ff6](https://forge.grandlyon.com/web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/94f0ff617a61defc996a1b8dc53d97e0c5c61b7e)) +* **ui:** scroll footer on news ([51cbe6c](https://forge.grandlyon.com/web-et-numerique/factory/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/commit/51cbe6ce13106c67d5b140600987fe755248e82c)) + ### [2.4.2](https://forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_client/compare/v2.4.1...v2.4.2) (2023-10-05) diff --git a/package-lock.json b/package-lock.json index 371227f44dc6db4645a7227b4acf4d8eacffbfc6..4740bec4b2318522775532060eb2eb866c94b300 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pamn", - "version": "2.4.1", + "version": "2.5.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pamn", - "version": "2.4.1", + "version": "2.5.0", "dependencies": { "@ag-grid-community/csv-export": "^29.0.0", "@angular/animations": "^15.1.3", @@ -81,9 +81,8 @@ }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -303,54 +302,6 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.8.tgz", - "integrity": "sha512-0/rb91GYKhrtbeglJXOhAv9RuYimgI8h623TplY2X+vA4EXnk3Zj1fXZreJ0J3OJJu1bwmb0W7g+2cT/d8/l/w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.8.tgz", - "integrity": "sha512-oa/N5j6v1svZQs7EIRPqR8f+Bf8g6HBDjD/xHC02radE/NjKHK7oQmtmLxPs1iVwYyvE+Kolo6lbpfEQ9xnhxQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.8.tgz", - "integrity": "sha512-bTliMLqD7pTOoPg4zZkXqCDuzIUguEWLpeqkNfC41ODBHwoUgZ2w5JBeYimv4oP6TDVocoYmEhZrCLQTrH89bg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-arm64": { "version": "0.17.8", "cpu": [ @@ -366,294 +317,6 @@ "node": ">=12" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.8.tgz", - "integrity": "sha512-n5WOpyvZ9TIdv2V1K3/iIkkJeKmUpKaCTdun9buhGRWfH//osmUjlv4Z5mmWdPWind/VGcVxTHtLfLCOohsOXw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.8.tgz", - "integrity": "sha512-a/SATTaOhPIPFWvHZDoZYgxaZRVHn0/LX1fHLGfZ6C13JqFUZ3K6SMD6/HCtwOQ8HnsNaEeokdiDSFLuizqv5A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.8.tgz", - "integrity": "sha512-xpFJb08dfXr5+rZc4E+ooZmayBW6R3q59daCpKZ/cDU96/kvDM+vkYzNeTJCGd8rtO6fHWMq5Rcv/1cY6p6/0Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.8.tgz", - "integrity": "sha512-6Ij8gfuGszcEwZpi5jQIJCVIACLS8Tz2chnEBfYjlmMzVsfqBP1iGmHQPp7JSnZg5xxK9tjCc+pJ2WtAmPRFVA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.8.tgz", - "integrity": "sha512-v3iwDQuDljLTxpsqQDl3fl/yihjPAyOguxuloON9kFHYwopeJEf1BkDXODzYyXEI19gisEsQlG1bM65YqKSIww==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ia32": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.8.tgz", - "integrity": "sha512-8svILYKhE5XetuFk/B6raFYIyIqydQi+GngEXJgdPdI7OMKUbSd7uzR02wSY4kb53xBrClLkhH4Xs8P61Q2BaA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-loong64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.8.tgz", - "integrity": "sha512-B6FyMeRJeV0NpyEOYlm5qtQfxbdlgmiGdD+QsipzKfFky0K5HW5Td6dyK3L3ypu1eY4kOmo7wW0o94SBqlqBSA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-mips64el": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.8.tgz", - "integrity": "sha512-CCb67RKahNobjm/eeEqeD/oJfJlrWyw29fgiyB6vcgyq97YAf3gCOuP6qMShYSPXgnlZe/i4a8WFHBw6N8bYAA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ppc64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.8.tgz", - "integrity": "sha512-bytLJOi55y55+mGSdgwZ5qBm0K9WOCh0rx+vavVPx+gqLLhxtSFU0XbeYy/dsAAD6xECGEv4IQeFILaSS2auXw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-riscv64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.8.tgz", - "integrity": "sha512-2YpRyQJmKVBEHSBLa8kBAtbhucaclb6ex4wchfY0Tj3Kg39kpjeJ9vhRU7x4mUpq8ISLXRXH1L0dBYjAeqzZAw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-s390x": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.8.tgz", - "integrity": "sha512-QgbNY/V3IFXvNf11SS6exkpVcX0LJcob+0RWCgV9OiDAmVElnxciHIisoSix9uzYzScPmS6dJFbZULdSAEkQVw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.8.tgz", - "integrity": "sha512-mM/9S0SbAFDBc4OPoyP6SEOo5324LpUxdpeIUUSrSTOfhHU9hEfqRngmKgqILqwx/0DVJBzeNW7HmLEWp9vcOA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.8.tgz", - "integrity": "sha512-eKUYcWaWTaYr9zbj8GertdVtlt1DTS1gNBWov+iQfWuWyuu59YN6gSEJvFzC5ESJ4kMcKR0uqWThKUn5o8We6Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.8.tgz", - "integrity": "sha512-Vc9J4dXOboDyMXKD0eCeW0SIeEzr8K9oTHJU+Ci1mZc5njPfhKAqkRt3B/fUNU7dP+mRyralPu8QUkiaQn7iIg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/sunos-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.8.tgz", - "integrity": "sha512-0xvOTNuPXI7ft1LYUgiaXtpCEjp90RuBBYovdd2lqAFxje4sEucurg30M1WIm03+3jxByd3mfo+VUmPtRSVuOw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-arm64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.8.tgz", - "integrity": "sha512-G0JQwUI5WdEFEnYNKzklxtBheCPkuDdu1YrtRrjuQv30WsYbkkoixKxLLv8qhJmNI+ATEWquZe/N0d0rpr55Mg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-ia32": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.8.tgz", - "integrity": "sha512-Fqy63515xl20OHGFykjJsMnoIWS+38fqfg88ClvPXyDbLtgXal2DTlhb1TfTX34qWi3u4I7Cq563QcHpqgLx8w==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-x64": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.8.tgz", - "integrity": "sha512-1iuezdyDNngPnz8rLRDO2C/ZZ/emJLb72OsZeqQ6gL6Avko/XCXZw+NuxBSNhBAP13Hie418V7VMt9et1FMvpg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/esbuild": { "version": "0.17.8", "dev": true, @@ -2265,6 +1928,7 @@ "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -3712,14 +3376,14 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@colors/colors": { "version": "1.5.0", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" @@ -4020,9 +3684,8 @@ }, "node_modules/@es-joy/jsdoccomment": { "version": "0.40.1", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz", - "integrity": "sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==", "dev": true, + "license": "MIT", "dependencies": { "comment-parser": "1.4.0", "esquery": "^1.5.0", @@ -4032,384 +3695,26 @@ "node": ">=16" } }, - "node_modules/@esbuild/android-arm": { + "node_modules/@esbuild/darwin-arm64": { "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", "cpu": [ - "arm" + "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ - "android" + "darwin" ], "peer": true, "engines": { "node": ">=12" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "cpu": [ - "arm64" - ], + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -4422,17 +3727,14 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "license": "MIT", "dependencies": { @@ -4475,8 +3777,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "license": "MIT", "dependencies": { @@ -4518,8 +3818,6 @@ }, "node_modules/@eslint/js": { "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", - "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", "dev": true, "license": "MIT", "engines": { @@ -4636,8 +3934,6 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4789,6 +4085,7 @@ "node_modules/@jest/console": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/types": "^28.1.3", @@ -4805,6 +4102,7 @@ "node_modules/@jest/core": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/console": "^28.1.3", @@ -4866,6 +4164,7 @@ "node_modules/@jest/expect": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "expect": "^28.1.3", @@ -4878,6 +4177,7 @@ "node_modules/@jest/expect-utils": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "jest-get-type": "^28.0.2" @@ -4905,6 +4205,7 @@ "node_modules/@jest/globals": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/environment": "^28.1.3", @@ -4918,6 +4219,7 @@ "node_modules/@jest/reporters": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", @@ -4961,6 +4263,7 @@ "node_modules/@jest/reporters/node_modules/glob": { "version": "7.2.3", "dev": true, + "license": "ISC", "peer": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -4980,6 +4283,7 @@ "node_modules/@jest/reporters/node_modules/jest-worker": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/node": "*", @@ -4993,6 +4297,7 @@ "node_modules/@jest/reporters/node_modules/supports-color": { "version": "8.1.1", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -5018,6 +4323,7 @@ "node_modules/@jest/source-map": { "version": "28.1.2", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.13", @@ -5031,6 +4337,7 @@ "node_modules/@jest/test-result": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/console": "^28.1.3", @@ -5045,6 +4352,7 @@ "node_modules/@jest/test-sequencer": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/test-result": "^28.1.3", @@ -5059,6 +4367,7 @@ "node_modules/@jest/transform": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@babel/core": "^7.11.6", @@ -6169,9 +5478,8 @@ }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", "dev": true, + "license": "MIT", "optional": true, "peer": true }, @@ -7072,54 +6380,6 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@storybook/builder-manager/node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", "cpu": [ @@ -7135,294 +6395,6 @@ "node": ">=12" } }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/builder-manager/node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@storybook/builder-manager/node_modules/esbuild": { "version": "0.18.20", "dev": true, @@ -8489,472 +7461,136 @@ } }, "node_modules/@storybook/codemod/node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@storybook/codemod/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@storybook/codemod/node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@storybook/codemod/node_modules/globby": { - "version": "11.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/codemod/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@storybook/components": { - "version": "7.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@radix-ui/react-select": "^1.2.2", - "@radix-ui/react-toolbar": "^1.0.4", - "@storybook/client-logger": "7.4.0", - "@storybook/csf": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/theming": "7.4.0", - "@storybook/types": "7.4.0", - "memoizerific": "^1.11.3", - "use-resize-observer": "^9.1.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/core-common": { - "version": "7.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/node-logger": "7.4.0", - "@storybook/types": "7.4.0", - "@types/find-cache-dir": "^3.2.1", - "@types/node": "^16.0.0", - "@types/node-fetch": "^2.6.4", - "@types/pretty-hrtime": "^1.0.0", - "chalk": "^4.1.0", - "esbuild": "^0.18.0", - "esbuild-register": "^3.4.0", - "file-system-cache": "2.3.0", - "find-cache-dir": "^3.0.0", - "find-up": "^5.0.0", - "fs-extra": "^11.1.0", - "glob": "^10.0.0", - "handlebars": "^4.7.7", - "lazy-universal-dotenv": "^4.0.0", - "node-fetch": "^2.0.0", - "picomatch": "^2.3.0", - "pkg-dir": "^5.0.0", - "pretty-hrtime": "^1.0.3", - "resolve-from": "^5.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@storybook/core-common/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "version": "0.4.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@storybook/core-common/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], + "node_modules/@storybook/codemod/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.3", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@storybook/core-common/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], + "node_modules/@storybook/codemod/node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@storybook/core-common/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], + "node_modules/@storybook/codemod/node_modules/globby": { + "version": "11.1.0", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/core-common/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], + "node_modules/@storybook/codemod/node_modules/semver": { + "version": "6.3.1", "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@storybook/core-common/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], + "node_modules/@storybook/components": { + "version": "7.4.0", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.4.0", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.4.0", + "@storybook/types": "7.4.0", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/core-common/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], + "node_modules/@storybook/core-common": { + "version": "7.4.0", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "@storybook/node-logger": "7.4.0", + "@storybook/types": "7.4.0", + "@types/find-cache-dir": "^3.2.1", + "@types/node": "^16.0.0", + "@types/node-fetch": "^2.6.4", + "@types/pretty-hrtime": "^1.0.0", + "chalk": "^4.1.0", + "esbuild": "^0.18.0", + "esbuild-register": "^3.4.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "glob": "^10.0.0", + "handlebars": "^4.7.7", + "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-common/node_modules/@esbuild/win32-x64": { + "node_modules/@storybook/core-common/node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", "cpu": [ - "x64" + "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ - "win32" + "darwin" ], "engines": { "node": ">=12" @@ -10022,15 +8658,15 @@ }, "node_modules/@types/cookie": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", "dev": true, + "license": "MIT", "optional": true, "peer": true }, "node_modules/@types/cors": { "version": "2.8.13", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -10266,9 +8902,8 @@ }, "node_modules/@types/prettier": { "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@types/pretty-hrtime": { @@ -11391,9 +10026,8 @@ }, "node_modules/are-docs-informative": { "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } @@ -11650,6 +10284,7 @@ "node_modules/babel-jest": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/transform": "^28.1.3", @@ -11701,6 +10336,7 @@ "node_modules/babel-plugin-jest-hoist": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@babel/template": "^7.3.3", @@ -11764,6 +10400,7 @@ "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -11786,6 +10423,7 @@ "node_modules/babel-preset-jest": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "babel-plugin-jest-hoist": "^28.1.3", @@ -11825,6 +10463,7 @@ "node_modules/base64id": { "version": "2.0.0", "dev": true, + "license": "MIT", "optional": true, "peer": true, "engines": { @@ -12324,6 +10963,7 @@ "node_modules/char-regex": { "version": "1.0.2", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -12535,9 +11175,8 @@ }, "node_modules/cjs-module-lexer": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/clean-css": { @@ -12648,6 +11287,7 @@ "node_modules/co": { "version": "4.6.0", "dev": true, + "license": "MIT", "peer": true, "engines": { "iojs": ">= 1.0.0", @@ -12756,9 +11396,8 @@ }, "node_modules/collect-v8-coverage": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/color-convert": { @@ -12816,9 +11455,8 @@ }, "node_modules/comment-parser": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz", - "integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.0.0" } @@ -13638,9 +12276,8 @@ }, "node_modules/custom-event": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", "dev": true, + "license": "MIT", "optional": true, "peer": true }, @@ -13699,6 +12336,7 @@ "node_modules/date-format": { "version": "4.0.14", "dev": true, + "license": "MIT", "optional": true, "peer": true, "engines": { @@ -13775,9 +12413,8 @@ }, "node_modules/dedent": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/deep-equal": { @@ -14033,9 +12670,8 @@ }, "node_modules/di": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", "dev": true, + "license": "MIT", "optional": true, "peer": true }, @@ -14050,6 +12686,7 @@ "node_modules/diff-sequences": { "version": "28.1.1", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -14109,6 +12746,7 @@ "node_modules/dom-serialize": { "version": "2.2.1", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -14407,6 +13045,7 @@ "node_modules/emittery": { "version": "0.10.2", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=12" @@ -14456,6 +13095,7 @@ "node_modules/engine.io": { "version": "6.4.1", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -14477,6 +13117,7 @@ "node_modules/engine.io-parser": { "version": "5.0.6", "dev": true, + "license": "MIT", "optional": true, "peer": true, "engines": { @@ -14486,6 +13127,7 @@ "node_modules/engine.io/node_modules/cookie": { "version": "0.4.2", "dev": true, + "license": "MIT", "optional": true, "peer": true, "engines": { @@ -14495,6 +13137,7 @@ "node_modules/engine.io/node_modules/ws": { "version": "8.11.0", "dev": true, + "license": "MIT", "optional": true, "peer": true, "engines": { @@ -14527,9 +13170,8 @@ }, "node_modules/ent": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", "dev": true, + "license": "MIT", "optional": true, "peer": true }, @@ -14805,8 +13447,6 @@ }, "node_modules/eslint": { "version": "8.49.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", - "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14860,9 +13500,8 @@ }, "node_modules/eslint-plugin-jsdoc": { "version": "46.8.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.8.2.tgz", - "integrity": "sha512-5TSnD018f3tUJNne4s4gDWQflbsgOycIKEUBoCLn6XtBMgNHxQFmV8vVxUtiPxAQq8lrX85OaSG/2gnctxw9uQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@es-joy/jsdoccomment": "~0.40.1", "are-docs-informative": "^0.0.2", @@ -14883,9 +13522,8 @@ }, "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -14895,9 +13533,8 @@ }, "node_modules/eslint-plugin-jsdoc/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -14980,8 +13617,6 @@ }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "license": "Apache-2.0", "engines": { @@ -15024,8 +13659,6 @@ }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -15123,8 +13756,6 @@ }, "node_modules/eslint/node_modules/optionator": { "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "license": "MIT", "dependencies": { @@ -15199,8 +13830,6 @@ }, "node_modules/espree": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -15357,6 +13986,7 @@ "node_modules/expect": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/expect-utils": "^28.1.3", @@ -16399,9 +15029,8 @@ }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/gunzip-maybe": { "version": "1.4.2", @@ -16626,9 +15255,8 @@ }, "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/html-minifier-terser": { @@ -17041,6 +15669,7 @@ "node_modules/import-local": { "version": "3.1.0", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "pkg-dir": "^4.2.0", @@ -17337,6 +15966,7 @@ "node_modules/is-generator-fn": { "version": "2.1.0", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6" @@ -17646,6 +16276,7 @@ "node_modules/isbinaryfile": { "version": "4.0.10", "dev": true, + "license": "MIT", "optional": true, "peer": true, "engines": { @@ -17702,6 +16333,7 @@ "node_modules/istanbul-lib-report": { "version": "3.0.0", "dev": true, + "license": "BSD-3-Clause", "peer": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", @@ -17715,6 +16347,7 @@ "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "dev": true, + "license": "BSD-3-Clause", "peer": true, "dependencies": { "debug": "^4.1.1", @@ -17728,6 +16361,7 @@ "node_modules/istanbul-lib-source-maps/node_modules/source-map": { "version": "0.6.1", "dev": true, + "license": "BSD-3-Clause", "peer": true, "engines": { "node": ">=0.10.0" @@ -17736,6 +16370,7 @@ "node_modules/istanbul-reports": { "version": "3.1.5", "dev": true, + "license": "BSD-3-Clause", "peer": true, "dependencies": { "html-escaper": "^2.0.0", @@ -17787,6 +16422,7 @@ "node_modules/jest": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/core": "^28.1.3", @@ -17812,6 +16448,7 @@ "node_modules/jest-changed-files": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "execa": "^5.0.0", @@ -17824,6 +16461,7 @@ "node_modules/jest-changed-files/node_modules/p-limit": { "version": "3.1.0", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "yocto-queue": "^0.1.0" @@ -17838,6 +16476,7 @@ "node_modules/jest-circus": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/environment": "^28.1.3", @@ -17867,6 +16506,7 @@ "node_modules/jest-circus/node_modules/p-limit": { "version": "3.1.0", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "yocto-queue": "^0.1.0" @@ -17881,6 +16521,7 @@ "node_modules/jest-config": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@babel/core": "^7.11.6", @@ -17925,6 +16566,7 @@ "node_modules/jest-config/node_modules/glob": { "version": "7.2.3", "dev": true, + "license": "ISC", "peer": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -17944,6 +16586,7 @@ "node_modules/jest-diff": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "chalk": "^4.0.0", @@ -17958,6 +16601,7 @@ "node_modules/jest-docblock": { "version": "28.1.1", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "detect-newline": "^3.0.0" @@ -17969,6 +16613,7 @@ "node_modules/jest-each": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/types": "^28.1.3", @@ -18002,6 +16647,7 @@ "node_modules/jest-environment-node": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/environment": "^28.1.3", @@ -18018,6 +16664,7 @@ "node_modules/jest-get-type": { "version": "28.0.2", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -18026,6 +16673,7 @@ "node_modules/jest-haste-map": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/types": "^28.1.3", @@ -18050,6 +16698,7 @@ "node_modules/jest-haste-map/node_modules/jest-worker": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/node": "*", @@ -18063,6 +16712,7 @@ "node_modules/jest-haste-map/node_modules/supports-color": { "version": "8.1.1", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -18077,6 +16727,7 @@ "node_modules/jest-leak-detector": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "jest-get-type": "^28.0.2", @@ -18089,6 +16740,7 @@ "node_modules/jest-matcher-utils": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "chalk": "^4.0.0", @@ -18134,6 +16786,7 @@ "node_modules/jest-pnp-resolver": { "version": "1.2.3", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=6" @@ -18150,6 +16803,7 @@ "node_modules/jest-regex-util": { "version": "28.0.2", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" @@ -18158,6 +16812,7 @@ "node_modules/jest-resolve": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "chalk": "^4.0.0", @@ -18177,6 +16832,7 @@ "node_modules/jest-resolve-dependencies": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "jest-regex-util": "^28.0.2", @@ -18189,6 +16845,7 @@ "node_modules/jest-runner": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/console": "^28.1.3", @@ -18220,6 +16877,7 @@ "node_modules/jest-runner/node_modules/jest-worker": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/node": "*", @@ -18233,6 +16891,7 @@ "node_modules/jest-runner/node_modules/p-limit": { "version": "3.1.0", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "yocto-queue": "^0.1.0" @@ -18247,6 +16906,7 @@ "node_modules/jest-runner/node_modules/source-map": { "version": "0.6.1", "dev": true, + "license": "BSD-3-Clause", "peer": true, "engines": { "node": ">=0.10.0" @@ -18255,6 +16915,7 @@ "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "buffer-from": "^1.0.0", @@ -18264,6 +16925,7 @@ "node_modules/jest-runner/node_modules/supports-color": { "version": "8.1.1", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -18278,6 +16940,7 @@ "node_modules/jest-runtime": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/environment": "^28.1.3", @@ -18310,6 +16973,7 @@ "node_modules/jest-runtime/node_modules/glob": { "version": "7.2.3", "dev": true, + "license": "ISC", "peer": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -18329,6 +16993,7 @@ "node_modules/jest-runtime/node_modules/strip-bom": { "version": "4.0.0", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -18337,6 +17002,7 @@ "node_modules/jest-snapshot": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@babel/core": "^7.11.6", @@ -18386,6 +17052,7 @@ "node_modules/jest-validate": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/types": "^28.1.3", @@ -18402,6 +17069,7 @@ "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -18413,6 +17081,7 @@ "node_modules/jest-watcher": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/test-result": "^28.1.3", @@ -18458,6 +17127,7 @@ "node_modules/jest/node_modules/jest-cli": { "version": "28.1.3", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@jest/core": "^28.1.3", @@ -18582,9 +17252,8 @@ }, "node_modules/jsdoc-type-pratt-parser": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", - "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" } @@ -18740,6 +17409,7 @@ "node_modules/karma": { "version": "6.4.1", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -18786,6 +17456,7 @@ "node_modules/karma/node_modules/cliui": { "version": "7.0.4", "dev": true, + "license": "ISC", "optional": true, "peer": true, "dependencies": { @@ -18797,6 +17468,7 @@ "node_modules/karma/node_modules/glob": { "version": "7.2.3", "dev": true, + "license": "ISC", "optional": true, "peer": true, "dependencies": { @@ -18817,6 +17489,7 @@ "node_modules/karma/node_modules/mime": { "version": "2.6.0", "dev": true, + "license": "MIT", "optional": true, "peer": true, "bin": { @@ -18829,6 +17502,7 @@ "node_modules/karma/node_modules/mkdirp": { "version": "0.5.6", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -18841,6 +17515,7 @@ "node_modules/karma/node_modules/source-map": { "version": "0.6.1", "dev": true, + "license": "BSD-3-Clause", "optional": true, "peer": true, "engines": { @@ -18850,6 +17525,7 @@ "node_modules/karma/node_modules/tmp": { "version": "0.2.1", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -18862,6 +17538,7 @@ "node_modules/karma/node_modules/yargs": { "version": "16.2.0", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -18880,6 +17557,7 @@ "node_modules/karma/node_modules/yargs-parser": { "version": "20.2.9", "dev": true, + "license": "ISC", "optional": true, "peer": true, "engines": { @@ -19150,6 +17828,7 @@ "node_modules/log4js": { "version": "6.8.0", "dev": true, + "license": "Apache-2.0", "optional": true, "peer": true, "dependencies": { @@ -21723,6 +20402,7 @@ "node_modules/qjobs": { "version": "1.2.0", "dev": true, + "license": "MIT", "optional": true, "peer": true, "engines": { @@ -22423,6 +21103,7 @@ "node_modules/resolve-cwd": { "version": "3.0.0", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "resolve-from": "^5.0.0" @@ -22478,6 +21159,7 @@ "node_modules/resolve.exports": { "version": "1.1.1", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -22514,9 +21196,8 @@ }, "node_modules/rfdc": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true, + "license": "MIT", "optional": true, "peer": true }, @@ -23138,6 +21819,7 @@ "node_modules/socket.io": { "version": "4.6.1", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -23155,6 +21837,7 @@ "node_modules/socket.io-adapter": { "version": "2.5.2", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -23164,6 +21847,7 @@ "node_modules/socket.io-adapter/node_modules/ws": { "version": "8.11.0", "dev": true, + "license": "MIT", "optional": true, "peer": true, "engines": { @@ -23185,6 +21869,7 @@ "node_modules/socket.io-parser": { "version": "4.2.2", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -23780,6 +22465,7 @@ "node_modules/streamroller": { "version": "3.1.5", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -23794,6 +22480,7 @@ "node_modules/streamroller/node_modules/fs-extra": { "version": "8.1.0", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -23808,6 +22495,7 @@ "node_modules/streamroller/node_modules/jsonfile": { "version": "4.0.0", "dev": true, + "license": "MIT", "optional": true, "peer": true, "optionalDependencies": { @@ -23817,6 +22505,7 @@ "node_modules/streamroller/node_modules/universalify": { "version": "0.1.2", "dev": true, + "license": "MIT", "optional": true, "peer": true, "engines": { @@ -23834,6 +22523,7 @@ "node_modules/string-length": { "version": "4.0.2", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "char-regex": "^1.0.2", @@ -23965,6 +22655,7 @@ "node_modules/supports-hyperlinks": { "version": "2.3.0", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "has-flag": "^4.0.0", @@ -24178,6 +22869,7 @@ "node_modules/terminal-link": { "version": "2.1.1", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "ansi-escapes": "^4.2.1", @@ -24913,6 +23605,7 @@ "url": "https://paypal.me/faisalman" } ], + "license": "MIT", "optional": true, "peer": true, "engines": { @@ -25268,6 +23961,7 @@ "node_modules/v8-to-istanbul": { "version": "9.1.0", "dev": true, + "license": "ISC", "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", @@ -25309,6 +24003,7 @@ "node_modules/void-elements": { "version": "2.0.1", "dev": true, + "license": "MIT", "optional": true, "peer": true, "engines": { diff --git a/package.json b/package.json index 1e08281fe0ea7328af1303f83bd561f92c77a785..c632674018bb7665b4ae121f894947d62f9afc29 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pamn", - "version": "2.4.2", + "version": "2.5.0", "scripts": { "ng": "ng", "start": "ng serve --configuration=local,fr --proxy-config proxy.conf.json", diff --git a/src/app/admin/admin.scss b/src/app/admin/admin.scss index 675b68fb2308dcbbb0650ff704e4167c98ef5d43..9030f4d2bb69d34bec23603779f8cb23e16644d0 100644 --- a/src/app/admin/admin.scss +++ b/src/app/admin/admin.scss @@ -48,3 +48,7 @@ cursor: pointer; } } + +::ng-deep .ag-row-group-leaf-indent { + margin-left: 0 !important; +} diff --git a/src/app/admin/components/manage-users/manage-users.component.html b/src/app/admin/components/manage-users/manage-users.component.html index b89005e95ed0131eb3e2b899a1c22fc3d80a514d..7de2e807ca415f237178f4d40de25b6145a1cc17 100644 --- a/src/app/admin/components/manage-users/manage-users.component.html +++ b/src/app/admin/components/manage-users/manage-users.component.html @@ -61,6 +61,21 @@ (gridReady)="onGridReady($event, 'attached')" > </ag-grid-angular> + + <h3 *ngIf="tempUsers" class="title">Utilisateurs sans compte ajoutés à une structure</h3> + <ag-grid-angular + *ngIf="tempUsers" + class="ag-theme-alpine user-table" + rowSelection="multiple" + domLayout="autoHeight" + style="width: 100%" + [rowData]="tempUsers" + [columnDefs]="colDefsTempUsers" + [getRowHeight]="getRowHeight" + [defaultColDef]="defaultColDef" + [frameworkComponents]="frameworkComponents" + > + </ag-grid-angular> </div> <app-modal-confirmation *ngIf="userToDelete" diff --git a/src/app/admin/components/manage-users/manage-users.component.ts b/src/app/admin/components/manage-users/manage-users.component.ts index 12bbd8a51b1d025db2c4bc5619a2badc9bd53900..2edddabf1f49149b04540af6a89ae7499de018ac 100644 --- a/src/app/admin/components/manage-users/manage-users.component.ts +++ b/src/app/admin/components/manage-users/manage-users.component.ts @@ -1,9 +1,12 @@ import { Component } from '@angular/core'; -import { ColDef, CsvExportParams, GridApi, GridReadyEvent } from 'ag-grid-community'; +import { ColDef, CsvExportParams, GridApi, GridReadyEvent, ProcessCellForExportParams } from 'ag-grid-community'; import { Employer } from '../../../models/employer.model'; import { Job } from '../../../models/job.model'; +import { Structure } from '../../../models/structure.model'; +import { TempUser } from '../../../models/temp-user.model'; import { User } from '../../../models/user.model'; import { NotificationService } from '../../../services/notification.service'; +import { TempUserService } from '../../../services/temp-user.service'; import { ButtonType } from '../../../shared/components/button/buttonType.enum'; import { AdminService } from '../../services/admin.service'; import { AdministredStructuresComponent } from './administred-structures/administred-structures.component'; @@ -32,6 +35,9 @@ export class ManageUsersComponent { public editJobModalOpened = false; public editEmployerModalOpened = false; public userToDelete: User = null; + + public tempUsers: TempUser[]; + public changingJobs: Job[] = [ { name: null, hasPersonalOffer: true, validated: false }, { name: null, hasPersonalOffer: true, validated: false }, @@ -85,6 +91,7 @@ export class ManageUsersComponent { structures: 'structures', }, minWidth: 350, + field: 'structures', }, { headerName: 'Fonction', @@ -126,7 +133,35 @@ export class ManageUsersComponent { }, ]; - constructor(private adminService: AdminService, private notificationService: NotificationService) { + public colDefsTempUsers: ColDef<TempUser>[] = [ + { + minWidth: 100, + headerName: 'E-mail', + field: 'email', + }, + { + minWidth: 200, + headerName: 'Structure(s)', + field: 'structures', + valueGetter: this.getStructureNames.bind(this), + cellRenderer: 'agGroupCellRenderer', + autoHeight: true, + }, + { + minWidth: 50, + headerName: 'Demande de rattachement envoyée le', + field: 'updatedAt', + valueGetter: function (params) { + return new Date(params.data?.updatedAt).toLocaleDateString(); + }, + }, + ]; + + constructor( + private adminService: AdminService, + private tempUserService: TempUserService, + private notificationService: NotificationService + ) { this.findValidatedJobs(); this.findValidatedEmployers(); this.columnDefsUnattached = [...this.columnDefs]; @@ -147,6 +182,16 @@ export class ManageUsersComponent { this.findAttachedUsers(); this.findUnAttachedUsers(); this.findUnVerifiedUsers(); + this.findTempUsers(); + } + + private getStructureNames(params): string { + const structuresLink = params.data?.structuresLink; + if (!structuresLink || structuresLink.length === 0) { + return ''; + } + const structureNames = structuresLink.map((structure) => (structure as Structure)?.structureName); + return structureNames.join('\n'); } public onDeleteButtonClick(arg): void { @@ -324,6 +369,12 @@ export class ManageUsersComponent { }); } + public findTempUsers(): void { + this.tempUserService.getAllTempUsers().subscribe((data) => { + this.tempUsers = data; + }); + } + public getRowHeight(params): number { const structures = params.data.structures || []; return structures.length !== 0 ? structures.length * 40 : 40; @@ -338,19 +389,51 @@ export class ManageUsersComponent { } public exportUsers(status: UsersStatus): void { + const gridApi = status === 'attached' ? this.gridApiAttached : this.gridApiUnattached; + + if (!gridApi) { + throw new Error('Grid API not found for the selected status.'); + } + const exportParams: CsvExportParams = { - columnKeys: ['name', 'surname', 'email'], + columnKeys: ['name', 'surname', 'email', 'job', 'structures'], + processCellCallback: (params) => this.formatCells(params), + fileName: `RESIN - export utilisateurs ${status === 'attached' ? 'rattachés' : 'non rattachés'}`, }; - if (status === 'attached') { - this.gridApiAttached.exportDataAsCsv({ - ...exportParams, - fileName: 'RESIN - export utilisateurs rattachés', - }); - } else if (status === 'unattached') { - this.gridApiUnattached.exportDataAsCsv({ - ...exportParams, - fileName: 'RESIN - export utilisateurs non rattachés', - }); + + gridApi.exportDataAsCsv(exportParams); + } + + private formatCells(params: ProcessCellForExportParams): string { + const cellRenderer = params.column.getColDef().cellRenderer; + + if (!cellRenderer) { + return this.formatRegularCell(params); + } + + switch (cellRenderer) { + case 'jobRenderer': + return this.formatJobCell(params.value); + case 'administredStructuresComponent': + return this.formatStructureCell(params.value); + default: + return params.value; + } + } + + private formatRegularCell(params: any): string { + return params?.value; + } + + private formatJobCell(params: any): string { + return params?.name || ''; + } + + private formatStructureCell(params: any[]): string { + if (params?.length > 0) { + const structureNames = params.map((structure: Structure) => structure.structureName); + return structureNames.join(', '); } + return ''; } } diff --git a/src/app/annuaire/result-list/result-list.component.scss b/src/app/annuaire/result-list/result-list.component.scss index 0855468586ac5c7f53fa26662de456bfc352c6e8..9ed2a610e56c0e6d9292100423d6aac2fc0bf020 100644 --- a/src/app/annuaire/result-list/result-list.component.scss +++ b/src/app/annuaire/result-list/result-list.component.scss @@ -102,16 +102,16 @@ height: 75px; } &:hover { - background: $grey-8; + background: $grey-9; } &:not(:last-child) { - border-bottom: solid 1px $grey-8; + border-bottom: solid 1px $grey-9; } .avatar-container { width: 40px; height: 44px; border-radius: 4px; - background: $grey-8; + background: $grey-9; } .identity { max-width: 330px; diff --git a/src/app/app.component.html b/src/app/app.component.html index b249ea8db0a9736d6d80b1d063d9bffed87b0f1e..500e14908479aecd275ec8a835e7f412af821c67 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,5 +1,5 @@ +<app-header /> <div class="app-container"> - <app-header /> <div class="app-body"> <div *ngIf="loading" class="loader" aria-busy="true"> <img class="loader-gif" src="/assets/gif/loader_circle_grey.gif" alt /> @@ -9,6 +9,6 @@ <router-outlet></router-outlet> <router-outlet name="print"></router-outlet> </ng-container> + <router-outlet *ngIf="!loading" name="footer"></router-outlet> </div> - <router-outlet *ngIf="!loading" name="footer"></router-outlet> </div> diff --git a/src/app/app.component.scss b/src/app/app.component.scss index 7b24782fb8ca22e58ca9a85e85cec8b54900f265..3ef7c6077f6f1ed8df49eb5eb637bbd44f389ea4 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -6,6 +6,7 @@ display: flex; flex-direction: column; height: 100%; + overflow-y: auto; } @media print { diff --git a/src/app/app.component.ts b/src/app/app.component.ts index a0ba448a3a03c51f31ee89228b9fa603ae932e7c..09ca5be00fd01c779c58dba7c46b54429b9b9429 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -21,7 +21,6 @@ import { PrintService } from './shared/service/print.service'; styleUrls: ['./app.component.scss'], }) export class AppComponent implements OnInit { - public title = 'resin'; public loading = true; constructor( @@ -37,10 +36,6 @@ export class AppComponent implements OnInit { if (this.authService.isLoggedIn()) { this.profilService.getProfile(); } - this.setHeightApp(); - window.addEventListener('resize', () => { - this.setHeightApp(); - }); this.routerListener.loadRouting(); // handle pwa update this.updateService.subscribeUpdate(); @@ -91,9 +86,4 @@ export class AppComponent implements OnInit { }); this.runtimeConfigLoaderService.loadConfig().subscribe(); } - - private setHeightApp(): void { - const vh = window.innerHeight * 0.01; - document.documentElement.style.setProperty('--vh', `${vh}px`); - } } diff --git a/src/app/carto/carto.component.scss b/src/app/carto/carto.component.scss index dc0f37e3a5faec7fa2a44fc9618beb76f1188603..9bf145c9b87d3b914d564aa33621cb40356a0782 100644 --- a/src/app/carto/carto.component.scss +++ b/src/app/carto/carto.component.scss @@ -31,7 +31,7 @@ width: 600px; min-width: 600px; overflow-y: auto; - border-right: 1px solid $grey-4; + border-right: 1px solid $grey-5; @media #{$tablet} { width: 100%; min-width: unset; diff --git a/src/app/form/footer-form/footer-form.component.ts b/src/app/form/footer-form/footer-form.component.ts index 9d2d104a17a18195a073984478d15b7fbcc42940..3bcdd4d17cf1af958d9f6404d2b717e5ed30988e 100644 --- a/src/app/form/footer-form/footer-form.component.ts +++ b/src/app/form/footer-form/footer-form.component.ts @@ -135,7 +135,7 @@ export class FooterFormComponent implements OnChanges { try { await firstValueFrom(this.authService.register(user)); if (this.acceptNewsletter) { - this.newsletterService.subscribe(user.email); + this.newsletterService.subscribe(user.email).subscribe(); } document.getElementsByClassName('page')[0].scrollTo(0, 0); this.changeCurrentStep.emit(accountFormStep.confirmEmailSentInfo); diff --git a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss index 23800a4100be322020f47789aa245c45a663e955..f1f30f6d6678e9de73d76d0fd26d04d2d1031a58 100644 --- a/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss +++ b/src/app/form/form-view/profile-form/profile-employer-selection/profile-employer-selection.component.scss @@ -43,7 +43,7 @@ .filet { border-width: 0px 0px 1px 0px; border-style: solid; - border-color: $grey-8; + border-color: $grey-9; } .form-list { diff --git a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss index b62556940d03785b7d1c268b6875685fb6b5a82e..9c093dbacff37c7cfd96c8db2f361e2cd841735e 100644 --- a/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss +++ b/src/app/form/form-view/profile-form/profile-structure-choice/profile-structure-choice.component.scss @@ -58,7 +58,7 @@ h2 { .filet { border-width: 0px 0px 1px 0px; border-style: solid; - border-color: $grey-8; + border-color: $grey-9; } .form-list { @@ -83,8 +83,8 @@ h2 { } &.already-selected { - background: $grey-8; - border-color: $grey-8; + background: $grey-9; + border-color: $grey-9; .sticker { @include lato-regular-10; diff --git a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss index 2a267f8ff7b773902df8efef339feef5dd0bfac7..51b7ca988b478265ff6dff9b6e8b54d0c91b3907 100644 --- a/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss +++ b/src/app/form/form-view/structure-form/structure-equipments/structure-equipments.component.scss @@ -25,7 +25,7 @@ svg { width: 32px; height: 32px; - background-color: $grey-8; + background-color: $grey-9; border-radius: 50%; cursor: pointer; &.hide.disabled { diff --git a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.scss b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.scss index c142119a81dc5a76005376bddf8b56e8d06d1d5f..d577e3b6c5c8836089f30b221378b0a678b25c87 100644 --- a/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.scss +++ b/src/app/form/form-view/structure-form/structure-web-and-social-network/structure-web-and-social-network.component.scss @@ -12,7 +12,7 @@ } &.notCollapsed { margin-bottom: 8px; - background: $grey-8; + background: $grey-9; .logo { .hide { display: none; @@ -118,7 +118,7 @@ border-radius: 4px 0 0 4px; border-right: 0; padding-left: 16px; - background: $grey-8; + background: $grey-9; } } .titleCollapse { diff --git a/src/app/form/orientation-form-view/global-components/multi-radio-form/multi-radio-form.component.scss b/src/app/form/orientation-form-view/global-components/multi-radio-form/multi-radio-form.component.scss index 59e72773965f4025f712ae58a9a494e8d1fcd396..4ccbf2dc0acd5d06b0f87309be43733a5762b021 100644 --- a/src/app/form/orientation-form-view/global-components/multi-radio-form/multi-radio-form.component.scss +++ b/src/app/form/orientation-form-view/global-components/multi-radio-form/multi-radio-form.component.scss @@ -7,7 +7,7 @@ align-items: center; gap: 1rem; height: 85px; - background-color: $grey-8; + background-color: $grey-9; border: solid 3px transparent; font-size: 1rem; padding: 1.5rem 1rem; diff --git a/src/app/form/orientation-form-view/global-components/orientation-recap/orientation-recap.component.html b/src/app/form/orientation-form-view/global-components/orientation-recap/orientation-recap.component.html index 138e8ed6a40b9de8b6db9d7100038456d7ab30fb..ebe98b71e804acad77e098562baadf98949a3786 100644 --- a/src/app/form/orientation-form-view/global-components/orientation-recap/orientation-recap.component.html +++ b/src/app/form/orientation-form-view/global-components/orientation-recap/orientation-recap.component.html @@ -14,7 +14,7 @@ <div class="content"> <div fxLayout="row"> <div class="label">Nom</div> - <div class="info">{{ beneficiary.name }} {{ beneficiary.surname | uppercase }}</div> + <div class="info">{{ beneficiary.name | userName }} {{ beneficiary.surname | uppercase }}</div> </div> <div fxLayout="row"> <div class="label">Besoin(s) d'aide</div> diff --git a/src/app/form/orientation-form-view/global-components/orientation-recap/orientation-recap.component.scss b/src/app/form/orientation-form-view/global-components/orientation-recap/orientation-recap.component.scss index 53b42912444b5f5f1547b041ed23f87e9a3a7229..057a98037b712e8bb7bef65bbfa6231a2f642a62 100644 --- a/src/app/form/orientation-form-view/global-components/orientation-recap/orientation-recap.component.scss +++ b/src/app/form/orientation-form-view/global-components/orientation-recap/orientation-recap.component.scss @@ -52,7 +52,7 @@ .title { @include lato-bold-18; padding-bottom: 1em; - border-bottom: 1px solid $grey-7; + border-bottom: 1px solid $grey-8; } h3 { @include lato-bold-14; @@ -63,7 +63,7 @@ } .header { - background-color: $grey-7; + background-color: $grey-8; padding: 1rem 1.5rem; .content { diff --git a/src/app/form/orientation-form-view/global-components/structure-orientator/structure-orientator.component.scss b/src/app/form/orientation-form-view/global-components/structure-orientator/structure-orientator.component.scss index 088c84851ae0da02312b9a873b229fef528d9c7c..fa734433e2d408026c5a3d7404145a22d04e3b33 100644 --- a/src/app/form/orientation-form-view/global-components/structure-orientator/structure-orientator.component.scss +++ b/src/app/form/orientation-form-view/global-components/structure-orientator/structure-orientator.component.scss @@ -11,7 +11,7 @@ @include lato-regular-13; } &.border { - border: solid 2px $grey-8; + border: solid 2px $grey-9; } .structure-item { cursor: pointer; @@ -21,7 +21,7 @@ align-items: center; justify-content: space-between; border: solid 2px transparent; - border-top-color: $grey-8; + border-top-color: $grey-9; &:hover { .name { diff --git a/src/app/header/header.component.scss b/src/app/header/header.component.scss index 5fb902e27f0ed4fc1522f39c3e1415d3e1dc70b6..8debdc9ecb85d54dc2bf0ffb4dd585f2be6c1d69 100644 --- a/src/app/header/header.component.scss +++ b/src/app/header/header.component.scss @@ -190,7 +190,7 @@ a { flex-shrink: 0; width: 40px; height: 44px; - background: $grey-8; + background: $grey-9; border-radius: 4px; } .name { diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html index 41a6f8b7b144eb82110022b95db4bb429e1f1138..539577e43a8b370f1e19dce7d428274ccae08e9c 100644 --- a/src/app/login/login.component.html +++ b/src/app/login/login.component.html @@ -17,11 +17,13 @@ </svg> </div> <div *ngIf="authFailed" class="incorrectId">Identifiant ou mot de passe invalide</div> - <div *ngIf="isUnverifiedEmail" class="incorrectId"> - Votre email n'a jamais été validé. - <a tabindex="0" (click)="resendConfirmationEmail()" (keyup.enter)="resendConfirmationEmail()" - >Renvoyer l'email de confirmation</a - > + <div *ngIf="isUnverifiedEmail"> + <div class="incorrectId">Votre adresse email n’a jamais été validée</div> + <p class="resendEmail"> + <a tabindex="0" (click)="resendConfirmationEmail()" (keyup.enter)="resendConfirmationEmail()" + >Renvoyer l'email de confirmation</a + > + </p> </div> </div> <div class="form-group password" fxLayout="column"> diff --git a/src/app/login/login.component.scss b/src/app/login/login.component.scss index ffd74fcd4492159b672248871d51790c64e0f70c..cd4b6468c98add9864bfd0dd68fddc146a85007e 100644 --- a/src/app/login/login.component.scss +++ b/src/app/login/login.component.scss @@ -50,6 +50,13 @@ @include lato-regular-14; color: $orange-warning; } + .resendEmail { + margin: 0; + a { + @include lato-bold-14; + text-decoration: underline; + } + } .form-group { margin: 1.5rem 0; diff --git a/src/app/models/temp-user.model.ts b/src/app/models/temp-user.model.ts index 6572cb28010099b82c26dbe28cc76a011601531d..06b4981ecad24ff19123195efa43563c7070a6ec 100644 --- a/src/app/models/temp-user.model.ts +++ b/src/app/models/temp-user.model.ts @@ -1,6 +1,6 @@ export class TempUser { _id: string; email: string; - pendingStructuresLink: string[]; + structuresLink: string[]; updatedAt: string; } diff --git a/src/app/post/components/post-header/post-header.component.scss b/src/app/post/components/post-header/post-header.component.scss index f3947ac881fe92b4040d37934a78147fa15ddfdf..0dd7365bedbe1f6ca500bf39db1e8d6b7fc866eb 100644 --- a/src/app/post/components/post-header/post-header.component.scss +++ b/src/app/post/components/post-header/post-header.component.scss @@ -42,7 +42,7 @@ h1 { background: $white; height: 40px; width: 210px; - border: 1px solid $grey-4; + border: 1px solid $grey-5; padding: 3px 16px 3px 16px; outline: none; border-radius: 4px; diff --git a/src/app/post/components/post-header/post-header.component.ts b/src/app/post/components/post-header/post-header.component.ts index bf08e25e03924a1fc7ebc7ec6ab8cd918ac10055..5d9be717d45fbc0d584defcfa3761ffb5572b293 100644 --- a/src/app/post/components/post-header/post-header.component.ts +++ b/src/app/post/components/post-header/post-header.component.ts @@ -1,9 +1,9 @@ import { Component, OnInit } from '@angular/core'; -import { Tag } from '../../models/tag.model'; -import { TagWithMeta } from '../../models/tagWithMeta.model'; -import { TypeModalNews } from '../../enum/typeModalNews.enum'; import { ActivatedRoute, Router } from '@angular/router'; import { TagEnum } from '../../enum/tag.enum'; +import { TypeModalNews } from '../../enum/typeModalNews.enum'; +import { Tag } from '../../models/tag.model'; +import { TagWithMeta } from '../../models/tagWithMeta.model'; import { parseSlugToTag } from '../utils/NewsUtils'; @Component({ selector: 'app-post-header', @@ -24,15 +24,9 @@ export class PostHeaderComponent implements OnInit { this.route.data.subscribe((data) => { if (data.tags) { this.tags = data.tags; - // this.tags = data.tags.filter((tag) => tag.slug === TagEnum.aLaUne); - this.tags.others.forEach((tag) => { - if (tag.slug == TagEnum.aLaUne) { - tag.name = 'Les + récentes'; - } - }); - this.tags.commune.sort((tagA, tagB) => { - return this.sortArray(tagA, tagB); - }); + this.removeTagBySlug(TagEnum.aLaUneSection); + this.updateTagName(TagEnum.aLaUne, 'Les + récentes'); + this.sortTagsByName(this.tags.commune); } }); @@ -49,14 +43,28 @@ export class PostHeaderComponent implements OnInit { }); } + private removeTagBySlug(slugToRemove: string): void { + this.tags.others = this.tags.others.filter((tag) => tag.slug !== slugToRemove); + } + + private updateTagName(slugToUpdate: string, newName: string): void { + this.tags.others.forEach((tag) => { + if (tag.slug === slugToUpdate) { + tag.name = newName; + } + }); + } + + private sortTagsByName(tags: Tag[]): void { + tags.sort((tagA, tagB) => this.sortArray(tagA, tagB)); + } + private sortArray(tagA: Tag, tagB: Tag): number { const nameTagA = tagA.name.toUpperCase(); const nameTagB = tagB.name.toUpperCase(); - if (nameTagA < nameTagB) { - return -1; - } - return 1; + return nameTagA.localeCompare(nameTagB); } + // Open the modal and display the list according to the right filter button public openModal(modalType: TypeModalNews): void { // if modal already opened, reset type diff --git a/src/app/post/components/post-list/post-list.component.ts b/src/app/post/components/post-list/post-list.component.ts index 100f46976a28f3ffa0cbf21d533a36055217e3a9..12887117b9d2187f021462cb881ba25d79bcec1f 100644 --- a/src/app/post/components/post-list/post-list.component.ts +++ b/src/app/post/components/post-list/post-list.component.ts @@ -25,6 +25,7 @@ export class PostListComponent implements OnInit { public isLoading = false; public isPublishMode = false; public isLastPage: boolean; + public isInSection: boolean = false; public buttonTypeEnum = ButtonType; constructor(private postService: PostService, private route: ActivatedRoute, private router: Router) {} @@ -34,8 +35,10 @@ export class PostListComponent implements OnInit { // Init APP news list this.route.queryParams.subscribe((queryParams) => { this.isPublishMode = false; + this.isInSection = false; // If main tag is in route, set it if (queryParams.mainTag) { + this.isInSection = true; this.selectedMainTagSlug = queryParams.mainTag; this.selectedPublicTagsSlug = parseSlugToTag(queryParams.publicTags); this.selectedLocationTagSlug = parseSlugToTag(queryParams.locationTags); @@ -67,16 +70,21 @@ export class PostListComponent implements OnInit { public fillArticles(news: PostWithMeta): void { this.setNews(news); this.isLastPage = news.meta.pagination.page >= news.meta.pagination.pages; - const headLineTag = this.allPosts.filter((post: Post) => - post.tags.some((tag) => tag && tag.slug === TagEnum.aLaUne) + const tagToFilter = this.isInSection ? TagEnum.aLaUneSection : TagEnum.aLaUne; + + // Extract headline posts + const postsWithHeadlineTag = this.allPosts.filter((post: Post) => + post.tags.some((tag) => tag && tag.slug === tagToFilter) ); - if (headLineTag.length) { - const headIndex = this.allPosts.findIndex((post) => post.id === headLineTag[0].id); + if (postsWithHeadlineTag.length > 0) { + // Remove the first headline post + const headIndex = this.allPosts.findIndex((post) => post.id === postsWithHeadlineTag[0].id); this.allPosts.splice(headIndex, 1); } - this.allPosts = [...headLineTag, ..._.difference(this.allPosts, headLineTag)]; + // Combine headline posts and remaining posts + this.allPosts = [...postsWithHeadlineTag, ..._.difference(this.allPosts, postsWithHeadlineTag)]; } public getPosts(page: number, filters?: Tag[]): void { diff --git a/src/app/post/components/post-modal-filters/post-modal-filters.component.scss b/src/app/post/components/post-modal-filters/post-modal-filters.component.scss index 4051133efbfdb557eae1995a18686b835f76f46d..533de1d52371d5480f55a550a0a19729681de301 100644 --- a/src/app/post/components/post-modal-filters/post-modal-filters.component.scss +++ b/src/app/post/components/post-modal-filters/post-modal-filters.component.scss @@ -34,7 +34,7 @@ padding: 0; } @include background-hash($grey-2); - border: 1px solid $grey-4; + border: 1px solid $grey-5; .body-wrap { @media #{$large-phone} { height: 100vh; @@ -63,7 +63,7 @@ width: 100%; margin: 0 32px; padding: 40px 0; - border-bottom: 1px dashed $grey-4; + border-bottom: 1px dashed $grey-5; &:last-child { padding-bottom: 32px; diff --git a/src/app/post/enum/tag.enum.ts b/src/app/post/enum/tag.enum.ts index 8b95ae41bf996f7e1f5614333f5973b905a26d29..a4a2fc73f38a34c1f5c1ec4cb96ae91d505c6419 100644 --- a/src/app/post/enum/tag.enum.ts +++ b/src/app/post/enum/tag.enum.ts @@ -1,5 +1,6 @@ export enum TagEnum { aLaUne = 'a-la-une', + aLaUneSection = 'a-la-une-section', appels = 'appels', projets = 'projets', formations = 'formations', @@ -7,4 +8,5 @@ export enum TagEnum { dossiers = 'dossiers', etudes = 'etudes', ressources = 'ressources', + emploi = 'Emploi', } diff --git a/src/app/profile/edit/edit.component.scss b/src/app/profile/edit/edit.component.scss index 223f0844fb9a6f11368896ebe74b9ec65159586d..974e5936ace69d93fa5d626fad5214ed331da15f 100644 --- a/src/app/profile/edit/edit.component.scss +++ b/src/app/profile/edit/edit.component.scss @@ -73,7 +73,7 @@ justify-content: flex-start; overflow-x: auto; white-space: nowrap; - border-bottom: 1px solid $grey-4; + border-bottom: 1px solid $grey-5; &::-webkit-scrollbar { height: 8px; @@ -155,7 +155,7 @@ gap: 24px; justify-content: center; flex-wrap: wrap; - border-top: 1px solid $grey-4; + border-top: 1px solid $grey-5; //To fit border to parent div margin: 0 -40px; @media #{$tablet} { diff --git a/src/app/profile/personal-offer-edition/personal-offer-edition.component.scss b/src/app/profile/personal-offer-edition/personal-offer-edition.component.scss index 4ae7edc331cc2c9d3c457a03653ad65bf980ab40..e8a3a24c2d1a14bf7a6ed01dd0b9aed007624dc1 100644 --- a/src/app/profile/personal-offer-edition/personal-offer-edition.component.scss +++ b/src/app/profile/personal-offer-edition/personal-offer-edition.component.scss @@ -78,7 +78,7 @@ overflow-x: auto; white-space: nowrap; - border-bottom: 1px solid $grey-4; + border-bottom: 1px solid $grey-5; &::-webkit-scrollbar { height: 8px; @@ -111,7 +111,7 @@ gap: 24px; justify-content: center; flex-wrap: wrap; - border-top: 1px solid $grey-4; + border-top: 1px solid $grey-5; //To fit border to parent div margin: 0 -40px; @media #{$tablet} { diff --git a/src/app/profile/profile-structure/personal-offer/personal-offer.component.scss b/src/app/profile/profile-structure/personal-offer/personal-offer.component.scss index d78f5330e4ecb1413d5f3e203e46229ed69892f5..5635508908fb617ca91753fd732d08344334f78a 100644 --- a/src/app/profile/profile-structure/personal-offer/personal-offer.component.scss +++ b/src/app/profile/profile-structure/personal-offer/personal-offer.component.scss @@ -37,7 +37,7 @@ } } .collapseContent { - background-color: $grey-7; + background-color: $grey-8; border-radius: 8px; ul { margin: 0; @@ -50,7 +50,7 @@ } } &:not(:last-child) { - border-bottom: 1px solid $grey-8; + border-bottom: 1px solid $grey-9; } } } diff --git a/src/app/profile/profile-structure/profile-structure-member/profile-structure-member.component.scss b/src/app/profile/profile-structure/profile-structure-member/profile-structure-member.component.scss index 7103a9073c369965c52d3411d7ce022c9ecd6c8c..9339f7e35ce4575be7c238244cdc0469e742f531 100644 --- a/src/app/profile/profile-structure/profile-structure-member/profile-structure-member.component.scss +++ b/src/app/profile/profile-structure/profile-structure-member/profile-structure-member.component.scss @@ -12,7 +12,7 @@ .avatar { display: flex; align-items: center; - background-color: $grey-8; + background-color: $grey-9; border-radius: 4px; } diff --git a/src/app/profile/profile-structure/profile-structure.component.scss b/src/app/profile/profile-structure/profile-structure.component.scss index 7399e19ad33f6c06ecae874a0adca16c90f86d59..e4f158f919742012b78326f95d6012a2cb06f991 100644 --- a/src/app/profile/profile-structure/profile-structure.component.scss +++ b/src/app/profile/profile-structure/profile-structure.component.scss @@ -10,8 +10,8 @@ overflow: hidden; transition: all 0.3s; &.fold { - background-color: $grey-8; - border: 1px solid $grey-8; + background-color: $grey-9; + border: 1px solid $grey-9; } &.pending { border: 1px solid $orange-warning; diff --git a/src/app/profile/profile.component.scss b/src/app/profile/profile.component.scss index ac86e1701cb92f66ba3b8c1d212c777f171e553b..044926716f2c43d92aeb4faa836268cc13c0e50f 100644 --- a/src/app/profile/profile.component.scss +++ b/src/app/profile/profile.component.scss @@ -12,7 +12,6 @@ gap: 1rem; padding-block: 16px; box-sizing: border-box; - overflow: scroll; scrollbar-gutter: stable !important; @media #{$tablet} { padding: 1rem; @@ -61,7 +60,7 @@ section { .avatar { height: 112px; width: 112px; - background: $grey-8; + background: $grey-9; border-radius: 8px; margin-right: 16px; @media #{$tablet} { diff --git a/src/app/profile/structure-edition-summary/structure-edition-summary.component.scss b/src/app/profile/structure-edition-summary/structure-edition-summary.component.scss index 038216a820618451bcc56c4cdafbab7196624392..876bde1475454d566e8dffc6487daa554e5b0180 100644 --- a/src/app/profile/structure-edition-summary/structure-edition-summary.component.scss +++ b/src/app/profile/structure-edition-summary/structure-edition-summary.component.scss @@ -107,7 +107,7 @@ width: 95% !important; } &.notCollapsed { - border-bottom: 2px solid $grey-8; + border-bottom: 2px solid $grey-9; .logo { .hide { display: none; @@ -147,7 +147,7 @@ .detailsContainer { margin: 8px 0px; padding: 8px 0; - background-color: $grey-8; + background-color: $grey-9; overflow: hidden; border-radius: 4px; } @@ -160,7 +160,7 @@ } } .footer { - border-top: 1px solid $grey-4; + border-top: 1px solid $grey-5; p.warning { color: $orange-warning; margin: 1rem; diff --git a/src/app/profile/structure-members-management/structure-members-management.component.scss b/src/app/profile/structure-members-management/structure-members-management.component.scss index 584527449960173c8b4e5a0c8f26c4a3ca76b91e..1bf080e90c1cda3e5bd09756eeaf6cb05d6c6ca1 100644 --- a/src/app/profile/structure-members-management/structure-members-management.component.scss +++ b/src/app/profile/structure-members-management/structure-members-management.component.scss @@ -50,7 +50,7 @@ gap: 8px; .avatar { - background-color: $grey-8; + background-color: $grey-9; border-radius: 4px; } .info-member { diff --git a/src/app/profile/structure-members-management/structure-members-management.component.ts b/src/app/profile/structure-members-management/structure-members-management.component.ts index 972d23f5620d276815650220afe2b1ad91e26e5b..dbbad72b4e24a82700af5df73020521d165e5f39 100644 --- a/src/app/profile/structure-members-management/structure-members-management.component.ts +++ b/src/app/profile/structure-members-management/structure-members-management.component.ts @@ -108,7 +108,6 @@ export class StructureMembersManagementComponent implements OnInit { this.addMemberModalOpened = false; if (memberAddRequested) { this.ngOnInit(); - this.notificationService.showSuccess(`La demande d'ajout a bien été effectuée`, ''); } } } diff --git a/src/app/services/temp-user.service.ts b/src/app/services/temp-user.service.ts index 4dd2b45247d4f75f59a3fe3b07f22d611ac71251..3ff2a2df888591e5ae449c64f77f41b868188f04 100644 --- a/src/app/services/temp-user.service.ts +++ b/src/app/services/temp-user.service.ts @@ -13,4 +13,8 @@ export class TempUserService { public getUser(id: string): Observable<TempUser> { return this.http.get<TempUser>(`${this.baseUrl}/${id}`); } + + public getAllTempUsers(): Observable<TempUser[]> { + return this.http.get<TempUser[]>(this.baseUrl); + } } diff --git a/src/app/shared/components/button/button.component.scss b/src/app/shared/components/button/button.component.scss index 056791fe3c4ad216f9956928b1cc0c3b98a0190c..b08e706662b242b7e3763d9e6ebd0ce9752b631d 100644 --- a/src/app/shared/components/button/button.component.scss +++ b/src/app/shared/components/button/button.component.scss @@ -32,7 +32,7 @@ button { } .btn-regular { - background: $grey-8; + background: $grey-9; border-radius: 5px 5px 4px 5px; border: 0; transition: all 0.1s; @@ -43,7 +43,7 @@ button { box-shadow: -2px 2px; } &:focus-visible { - box-shadow: 0 0 0 5px $grey-4; + box-shadow: 0 0 0 5px $grey-5; } .searchButton { @@ -145,11 +145,11 @@ button { width: unset; } &:hover { - border: 1px solid $grey-4; + border: 1px solid $grey-5; box-shadow: none; } border: 1px solid transparent; - background: $grey-7; + background: $grey-8; height: 36px; color: $black; padding: 0px 16px; @@ -255,7 +255,7 @@ button { height: 40px; color: $grey-1; padding: 4px 37px 4px 37px; - border-color: $grey-4; + border-color: $grey-5; @include btn-normal; &.containCheckedFilters { border-color: $primary-color; @@ -284,7 +284,7 @@ button { border-radius: 20px; padding: 5px 10px 5px 15px; max-width: 150px; - color: $grey-8; + color: $grey-9; border-style: none; background: $grey-1; text-overflow: ellipsis; @@ -306,7 +306,7 @@ button { max-width: unset; background: $white; color: $black; - border: 1px solid $grey-4; + border: 1px solid $grey-5; border-radius: 20px; span { max-width: unset; diff --git a/src/app/shared/components/checkbox-form/checkbox-form.component.scss b/src/app/shared/components/checkbox-form/checkbox-form.component.scss index 203be578f33ac8dbeba12ea83385500a0a943182..a41646fedbe1c97bde2f29fdb8ceb47b7b6b5222 100644 --- a/src/app/shared/components/checkbox-form/checkbox-form.component.scss +++ b/src/app/shared/components/checkbox-form/checkbox-form.component.scss @@ -5,7 +5,7 @@ button { width: 300px; height: 65px; margin: 0; - background: $grey-8; + background: $grey-9; padding: 0 16px; border-radius: 4px; border: 3px solid transparent; @@ -35,7 +35,7 @@ button { } &:hover { - border-color: $grey-4; + border-color: $grey-5; p { color: $grey-3; } diff --git a/src/app/shared/components/data-share-consent/data-share-consent.component.scss b/src/app/shared/components/data-share-consent/data-share-consent.component.scss index e838d29b780b7d6d355c5c9759ac90498fc4375d..7d22cf2aac9caa050d1688471ccb30bd9fcd9b04 100644 --- a/src/app/shared/components/data-share-consent/data-share-consent.component.scss +++ b/src/app/shared/components/data-share-consent/data-share-consent.component.scss @@ -60,7 +60,7 @@ h3 { ::ng-deep .firstLine { .name, button { - background-color: $grey-4; + background-color: $grey-5; &.selected { p { color: $black; diff --git a/src/app/shared/components/hour-picker/hour-picker.component.scss b/src/app/shared/components/hour-picker/hour-picker.component.scss index 2b7b5cb2d070ca83cf11cd65a5bf1af15d295de1..0022fc3d1bfbb13b0cf6e4e7a7ea3f30b2ac4515 100644 --- a/src/app/shared/components/hour-picker/hour-picker.component.scss +++ b/src/app/shared/components/hour-picker/hour-picker.component.scss @@ -53,7 +53,7 @@ } .grey-rounded-border { - border: 1px solid $grey-4; + border: 1px solid $grey-5; box-sizing: border-box; border-radius: 22px; @include lato-regular-14; @@ -68,8 +68,8 @@ } input { - background: $grey-8; - border: 1px solid $grey-4; + background: $grey-9; + border: 1px solid $grey-5; box-sizing: border-box; border-radius: 4px; height: 36px; diff --git a/src/app/shared/components/index.ts b/src/app/shared/components/index.ts index be60de5977958cd6076f4e843331bc8908d9d695..04859a36d103ab1d361bd3222aedc225f70ce855 100644 --- a/src/app/shared/components/index.ts +++ b/src/app/shared/components/index.ts @@ -22,14 +22,16 @@ import { TextInputModalComponent } from './text-input-modal/text-input-modal.com import { TrainingTypePickerComponent } from './training-type-picker/training-type-picker.component'; import { ButtonV3Component } from './v3/button/button.component'; import { CheckboxV3Component } from './v3/checkbox/checkbox.component'; +import { InputV3Component } from './v3/input/input.component'; import { LabelCheckboxV3Component } from './v3/label-checkbox/label-checkbox.component'; +import { RadioV3Component } from './v3/radio/radio.component'; import { TagItemV3Component } from './v3/tag/tag-item/tag-item.component'; +import { TextareaV3Component } from './v3/textarea/textarea.component'; // tslint:disable-next-line: max-line-length export { AccompanimentPickerComponent, AddressAutocompleteComponent, - AppointmentChoiceComponent, ButtonComponent, ButtonV3Component, CheckboxFormComponent, @@ -57,29 +59,32 @@ export { // tslint:disable-next-line:variable-name export const SharedComponents = [ AccompanimentPickerComponent, - LogoCardComponent, - SvgIconComponent, + AddressAutocompleteComponent, + AppointmentChoiceComponent, ButtonComponent, ButtonV3Component, - AddressAutocompleteComponent, - StructureTypePickerComponent, CheckboxFormComponent, + CheckboxV3Component, + CustomModalComponent, HourPickerComponent, - AppointmentChoiceComponent, - RadioFormComponent, + InformationStepComponent, + InputV3Component, + LabelCheckboxV3Component, + LogoCardComponent, ModalConfirmationComponent, - CustomModalComponent, ModalJoinConfirmationComponent, - TextInputModalComponent, PasswordFormComponent, - TrainingTypePickerComponent, - InformationStepComponent, - StructurePmrComponent, - StructureListPrintComponent, - StructureDetailPrintComponent, ProgressBarComponent, + RadioFormComponent, + RadioV3Component, + StructureDetailPrintComponent, + StructureListPrintComponent, + StructurePmrComponent, StructurePublicTargetComponent, + StructureTypePickerComponent, + SvgIconComponent, TagItemV3Component, - CheckboxV3Component, - LabelCheckboxV3Component, + TextInputModalComponent, + TrainingTypePickerComponent, + TextareaV3Component, ]; diff --git a/src/app/shared/components/radio-form/radio-form.component.scss b/src/app/shared/components/radio-form/radio-form.component.scss index e23b8d32a6c452fd410ebf71b999dc28af968ae2..705bcbfe4ff28c9d08c880b81d7a7becfde60802 100644 --- a/src/app/shared/components/radio-form/radio-form.component.scss +++ b/src/app/shared/components/radio-form/radio-form.component.scss @@ -14,7 +14,7 @@ svg { button { width: 296px; - background: $grey-8; + background: $grey-9; border-radius: 4px; padding: 0 16px; height: 65px; @@ -24,7 +24,7 @@ button { transition: unset; &:hover { - border: 1px solid $grey-4; + border: 1px solid $grey-5; p { color: $grey-3; } @@ -68,7 +68,7 @@ button { .name { width: 310px; - background: $grey-8; + background: $grey-9; border-radius: 4px; padding: 0 16px; font-size: $font-size-small; diff --git a/src/app/shared/components/structure-detail-print/structure-detail-print.component.scss b/src/app/shared/components/structure-detail-print/structure-detail-print.component.scss index ffc7b1d028338bec3d6402592eec9bf3f7f9ff38..84e8dc1fc327310d3bbcb3a8edbdd16d6ed7b209 100644 --- a/src/app/shared/components/structure-detail-print/structure-detail-print.component.scss +++ b/src/app/shared/components/structure-detail-print/structure-detail-print.component.scss @@ -88,7 +88,7 @@ a { } .info { - color: $ram-hover-principal; + color: $primary-color; } .wrapper { diff --git a/src/app/shared/components/structure-list-print/structure-list-print.component.scss b/src/app/shared/components/structure-list-print/structure-list-print.component.scss index 33ec27997652f88a0cce849762492f194f2fc292..3eb08118daa42ef0a87712ab37c388bfea8b554e 100644 --- a/src/app/shared/components/structure-list-print/structure-list-print.component.scss +++ b/src/app/shared/components/structure-list-print/structure-list-print.component.scss @@ -9,7 +9,7 @@ .multi-print { :host { - background-color: $grey-8; + background-color: $grey-9; } ::ng-deep { .structure-details-container { diff --git a/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss b/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss index daf83a9b2b93bc1508424f6b46399695d177aac0..071a00eae5e31ed7c9f487a36c9cf08e55aa4ef2 100644 --- a/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss +++ b/src/app/shared/components/structure-type-picker/structure-type-picker.component.scss @@ -15,7 +15,7 @@ width: 95% !important; } &.notCollapsed { - background: $grey-8; + background: $grey-9; .logo { .hide { display: none; diff --git a/src/app/shared/components/text-input-modal/text-input-modal.component.scss b/src/app/shared/components/text-input-modal/text-input-modal.component.scss index 55de8e9346640658717fb6e105d3537865ea21ef..aaee615c4f762a63badb23656e4c810505525326 100644 --- a/src/app/shared/components/text-input-modal/text-input-modal.component.scss +++ b/src/app/shared/components/text-input-modal/text-input-modal.component.scss @@ -14,8 +14,8 @@ .textarea { padding: 13px 8px; - background: $grey-8; - border: 1px solid $grey-4; + background: $grey-9; + border: 1px solid $grey-5; border-radius: 1px; resize: none; width: 90%; diff --git a/src/app/shared/components/training-type-picker/training-type-picker.component.scss b/src/app/shared/components/training-type-picker/training-type-picker.component.scss index fd2066ad6edbd1c1e98d03d489f82e76f8070cd9..5255a5450b773550798e4312d7867e5dd60f5711 100644 --- a/src/app/shared/components/training-type-picker/training-type-picker.component.scss +++ b/src/app/shared/components/training-type-picker/training-type-picker.component.scss @@ -24,8 +24,8 @@ label.checkbox { width: 95% !important; } &.notCollapsed { - border: 1px solid $grey-8; - background: $grey-8; + border: 1px solid $grey-9; + background: $grey-9; &:hover { border: 1px solid $grey-5; } diff --git a/src/app/shared/components/v3/button/button.component.scss b/src/app/shared/components/v3/button/button.component.scss index d711c2cdbbe0a149217d644066e07585a41801d3..387b8d4a99c1c4a3b32c09ea121bbd469c3e8779 100644 --- a/src/app/shared/components/v3/button/button.component.scss +++ b/src/app/shared/components/v3/button/button.component.scss @@ -48,7 +48,7 @@ button { background-color: $red-hover; } &:disabled { - background-color: $grey-8; + background-color: $grey-9; color: $grey-3; } &:active { @@ -65,8 +65,8 @@ button { } &:disabled { background-color: $white; - color: $grey-4; - border-color: $grey-4; + color: $grey-5; + border-color: $grey-5; } &:active { background-color: $grey-3-20; @@ -83,7 +83,7 @@ button { color: $grey-3; } &:active { - background-color: $grey-8; + background-color: $grey-9; } } } diff --git a/src/app/shared/components/v3/input/input.component.html b/src/app/shared/components/v3/input/input.component.html new file mode 100644 index 0000000000000000000000000000000000000000..ddb929de2e7f814ff9b438c4cbfce4889c9547e2 --- /dev/null +++ b/src/app/shared/components/v3/input/input.component.html @@ -0,0 +1,22 @@ +<div class="inputContainer" [ngClass]="{ disabled: disabled }"> + <label [htmlFor]="id" [ngClass]="status">{{ label }}</label> + + <span *ngIf="description" class="description" [ngClass]="{ disabled: disabled }">{{ description }}</span> + <input + [type]="type" + [id]="id" + [disabled]="disabled" + [ngClass]="status" + [value]="value" + (keydown)="onValueChange($event)" + /> + <div *ngIf="status && statusText" class="status" [ngClass]="status"> + <img *ngIf="status === 'error'" src="assets/ico/error-rounded.svg" alt="" /> + <img *ngIf="status === 'success'" src="assets/ico/success-rounded.svg" alt="" /> + <img *ngIf="status === 'info'" src="assets/ico/info-rounded.svg" alt="" /> + <img *ngIf="status === 'warning'" src="assets/ico/warning.svg" alt="" /> + <span class="statusText" [ngClass]="status"> + {{ statusText }} + </span> + </div> +</div> diff --git a/src/app/shared/components/v3/input/input.component.scss b/src/app/shared/components/v3/input/input.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..6a69dc9c0cef80fd76325883c241f428bb12388d --- /dev/null +++ b/src/app/shared/components/v3/input/input.component.scss @@ -0,0 +1,77 @@ +@import 'color'; +@import 'typography'; + +.inputContainer { + display: flex; + flex-direction: column; + max-width: 300px; + &.disabled { + cursor: not-allowed; + label { + color: $grey-6; + } + } + + label { + line-height: 150%; + color: $grey-1; + &.error { + color: $red; + } + &.success { + color: $info-success; + } + } + + span.description { + margin-top: 4px; + font-size: $font-size-xxsmall; + color: $grey-3; + &.disabled { + color: $grey-6; + } + } + + input { + margin-top: 8px; + height: 32px; + box-sizing: border-box; + max-width: 300px; + border-radius: 4px; + border: 1px solid $grey-4; + padding: 8px 0 8px 16px; + font-size: $font-size-small; + transition: all 0.3s ease-in-out; + + &:focus { + outline: none; + border-color: $grey-1; + } + + &:disabled { + background-color: $grey-10; + } + + &.success { + border-color: $info-success; + } + &.error { + border-color: $red; + } + &.warning { + border-color: $orange-warning; + } + } + + .status { + margin-top: 8px; + display: flex; + align-items: flex-start; + gap: 4px; + + .statusText { + font-size: $font-size-xxsmall; + line-height: 20px; + } + } +} diff --git a/src/app/shared/components/v3/input/input.component.ts b/src/app/shared/components/v3/input/input.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..e54a8c1507d7257e9a88b78303fe72f7159185bc --- /dev/null +++ b/src/app/shared/components/v3/input/input.component.ts @@ -0,0 +1,36 @@ +import { Component, EventEmitter, Input, Output } from '@angular/core'; + +@Component({ + selector: 'app-input', + templateUrl: './input.component.html', + styleUrls: ['./input.component.scss'], +}) +export class InputV3Component { + /** HTML id associated with for */ + @Input() id: string; + + @Input() type: 'text' | 'password' = 'text'; + + @Input() disabled?: boolean = false; + + /** Label for the radio */ + @Input() label?: string; + + /** Additional label description */ + @Input() description?: string; + + /** What additional data should be displayed ? */ + @Input() status?: 'error' | 'success' | 'info' | 'warning'; + + /** Additional text to display */ + @Input() statusText?: string; + + /** Value */ + @Input() value: string = ''; + + @Output() valueChange = new EventEmitter<Event>(); + + public onValueChange(event: Event) { + this.valueChange.emit(event); + } +} diff --git a/src/app/shared/components/v3/input/input.stories.ts b/src/app/shared/components/v3/input/input.stories.ts new file mode 100644 index 0000000000000000000000000000000000000000..063ebddce497e99a93f62bc3b55afeea71130dc0 --- /dev/null +++ b/src/app/shared/components/v3/input/input.stories.ts @@ -0,0 +1,76 @@ +import { CommonModule } from '@angular/common'; +import type { Meta, StoryObj } from '@storybook/angular'; +import { moduleMetadata } from '@storybook/angular'; +import { InputV3Component } from './input.component'; + +// More on how to set up stories at: https://storybook.js.org/docs/angular/writing-stories/introduction +const meta: Meta<InputV3Component> = { + title: 'Components/Input', + component: InputV3Component, + tags: ['autodocs'], + decorators: [ + moduleMetadata({ + declarations: [], + imports: [CommonModule], + }), + ], + argTypes: {}, +}; + +export default meta; +type Story = StoryObj<InputV3Component>; + +export const Input: Story = { + args: { + id: 'input1', + label: 'Label', + value: '', + }, +}; + +export const InputWithDescription: Story = { + args: { + ...Input.args, + id: 'input2', + description: 'Texte de description additionnel', + }, +}; + +export const InputDisabled: Story = { + args: { + ...InputWithDescription.args, + id: 'input3', + disabled: true, + }, +}; + +export const InputWithError: Story = { + args: { + ...InputWithDescription.args, + id: 'input4', + label: 'Label', + status: 'error', + statusText: "Texte d'erreur obligatoire", + }, +}; + +export const InputWithSuccess: Story = { + args: { + ...InputWithDescription.args, + id: 'input5', + label: 'Label', + status: 'success', + statusText: 'Texte de succès', + }, +}; + +export const InputPassword: Story = { + args: { + ...InputWithDescription.args, + id: 'input6', + label: 'Mot de passe', + type: 'password', + status: 'info', + statusText: 'Le mot de passe doit obligatoirement contenir : 8 caractères, une majuscule, un caractère spécial', + }, +}; diff --git a/src/app/shared/components/v3/label-checkbox/label-checkbox.component.scss b/src/app/shared/components/v3/label-checkbox/label-checkbox.component.scss index d2a00a44cbf5348981c7e12e0861ec491667d015..4f0a5324b173ef969f47e07ae0a6c77f96314312 100644 --- a/src/app/shared/components/v3/label-checkbox/label-checkbox.component.scss +++ b/src/app/shared/components/v3/label-checkbox/label-checkbox.component.scss @@ -31,7 +31,7 @@ label { .stateText { font-size: $font-size-xxsmall; &.success { - color: $green-success; + color: $info-success; } &.error { color: $red-error; diff --git a/src/app/shared/components/v3/radio/radio.component.html b/src/app/shared/components/v3/radio/radio.component.html new file mode 100644 index 0000000000000000000000000000000000000000..4909fa7ae2193107766af9eb363c37ceff0c070d --- /dev/null +++ b/src/app/shared/components/v3/radio/radio.component.html @@ -0,0 +1,15 @@ +<div class="radioContainer"> + <input + [id]="id" + type="radio" + [checked]="checked" + [disabled]="disabled" + [ngClass]="classes" + (click)="action.emit($event)" + /> + <label [for]="id">{{ label }}</label> +</div> +<div *ngIf="description" class="descriptionContainer"> + <div class="empty"></div> + <p class="description">{{ description }}</p> +</div> diff --git a/src/app/shared/components/v3/radio/radio.component.scss b/src/app/shared/components/v3/radio/radio.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..51742cd6282deb1b52383ab2d39ebf121b1f3b20 --- /dev/null +++ b/src/app/shared/components/v3/radio/radio.component.scss @@ -0,0 +1,49 @@ +@import 'color'; +@import 'typography'; + +.radioContainer { + display: flex; + gap: 8px; + align-items: end; + + input { + margin: 0; + flex-basis: 24px; + accent-color: $grey-1; + + &.medium { + width: 24px; + height: 24px; + } + &.small { + width: 16px; + height: 16px; + } + + cursor: pointer; + &:disabled { + cursor: not-allowed; + } + } + + label { + color: $grey-1; + line-height: 24px; /* 150% */ + user-select: none; + } +} + +.descriptionContainer { + display: flex; + gap: 8px; + .empty { + flex-basis: 24px; + } + + .description { + margin: 0; + color: $grey-3; + font-size: $font-size-xxsmall; + line-height: 20px; + } +} diff --git a/src/app/shared/components/v3/radio/radio.component.ts b/src/app/shared/components/v3/radio/radio.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..59501a85a74711d468d1b745a96598354ea44c05 --- /dev/null +++ b/src/app/shared/components/v3/radio/radio.component.ts @@ -0,0 +1,31 @@ +import { Component, EventEmitter, Input, Output } from '@angular/core'; + +@Component({ + selector: 'app-radio', + templateUrl: './radio.component.html', + styleUrls: ['./radio.component.scss'], +}) +export class RadioV3Component { + /** HTML id associated with for */ + @Input() id: string; + + /** Checked ? */ + @Input() checked: boolean; + + /** What size should the checkbox be ? */ + @Input() size?: 'small' | 'medium' = 'medium'; + + @Input() disabled?: boolean; + + /** Label for the radio */ + @Input() label?: string; + + /** Additional label description */ + @Input() description?: string; + + @Output() action = new EventEmitter<Event>(); + + public get classes(): string[] { + return [this.size]; + } +} diff --git a/src/app/shared/components/v3/radio/radio.stories.ts b/src/app/shared/components/v3/radio/radio.stories.ts new file mode 100644 index 0000000000000000000000000000000000000000..fed1d1a9728dde4dd718e0552fe2c95c1920c752 --- /dev/null +++ b/src/app/shared/components/v3/radio/radio.stories.ts @@ -0,0 +1,54 @@ +import { CommonModule } from '@angular/common'; +import type { Meta, StoryObj } from '@storybook/angular'; +import { moduleMetadata } from '@storybook/angular'; +import { RadioV3Component } from './radio.component'; + +// More on how to set up stories at: https://storybook.js.org/docs/angular/writing-stories/introduction +const meta: Meta<RadioV3Component> = { + title: 'Components/Radio', + component: RadioV3Component, + tags: ['autodocs'], + decorators: [ + moduleMetadata({ + declarations: [], + imports: [CommonModule], + }), + ], + argTypes: {}, +}; + +export default meta; +type Story = StoryObj<RadioV3Component>; + +export const Radio: Story = { + args: { + id: 'radio1', + size: 'medium', + disabled: false, + label: 'Label radio check', + }, +}; + +export const RadioChecked: Story = { + args: { + ...Radio.args, + id: 'radio2', + checked: true, + }, +}; + +export const RadioDisabled: Story = { + args: { + ...Radio.args, + id: 'radio3', + disabled: true, + }, +}; + +export const RadioWithDescription: Story = { + args: { + ...Radio.args, + id: 'radio4', + description: 'Texte de description additionnel', + }, +}; diff --git a/src/app/shared/components/v3/tag/tag-item/tag-item.component.scss b/src/app/shared/components/v3/tag/tag-item/tag-item.component.scss index 2390ec726568fb5bd3c66ee51f252466656cc63c..7cdc8dc18dabe88aedee04d7de39aa95141fb9d2 100644 --- a/src/app/shared/components/v3/tag/tag-item/tag-item.component.scss +++ b/src/app/shared/components/v3/tag/tag-item/tag-item.component.scss @@ -25,7 +25,7 @@ button { // STATE EFFECTS / COLORS &.clickable { background-color: $white; - border-color: $grey-4; + border-color: $grey-5; color: $grey-1; &.selected { background-color: $grey-1; @@ -48,7 +48,7 @@ button { color: $grey-5; } &:active { - background-color: $grey-8; + background-color: $grey-9; } } diff --git a/src/app/shared/components/v3/textarea/textarea.component.html b/src/app/shared/components/v3/textarea/textarea.component.html new file mode 100644 index 0000000000000000000000000000000000000000..e0b00999ac8f9c7c4259a5b0092edfd5eb162b3a --- /dev/null +++ b/src/app/shared/components/v3/textarea/textarea.component.html @@ -0,0 +1,25 @@ +<div class="inputContainer" [ngClass]="{ disabled: disabled }"> + <label [htmlFor]="id" [ngClass]="status">{{ label }}</label> + + <span *ngIf="description" class="description" [ngClass]="{ disabled: disabled }">{{ description }}</span> + <textarea + rows="5" + [value]="value" + [maxLength]="maxLength" + [id]="id" + [disabled]="disabled" + [ngClass]="status" + (input)="onValueChange($event)" + ></textarea> + + <div class="count">{{ value.length }} / {{ maxLength }}</div> + <div *ngIf="status && statusText" class="status" [ngClass]="status"> + <img *ngIf="status === 'error'" src="assets/ico/error-rounded.svg" alt="" /> + <img *ngIf="status === 'success'" src="assets/ico/success-rounded.svg" alt="" /> + <img *ngIf="status === 'info'" src="assets/ico/info-rounded.svg" alt="" /> + <img *ngIf="status === 'warning'" src="assets/ico/warning.svg" alt="" /> + <span class="statusText" [ngClass]="status"> + {{ statusText }} + </span> + </div> +</div> diff --git a/src/app/shared/components/v3/textarea/textarea.component.scss b/src/app/shared/components/v3/textarea/textarea.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..84de13fbfb4abc5a495f3781564d1c9896ab67a7 --- /dev/null +++ b/src/app/shared/components/v3/textarea/textarea.component.scss @@ -0,0 +1,82 @@ +@import 'color'; +@import 'typography'; + +.inputContainer { + display: flex; + flex-direction: column; + max-width: 300px; + &.disabled { + cursor: not-allowed; + label { + color: $grey-6; + } + } + + label { + line-height: 150%; + color: $grey-1; + &.error { + color: $red; + } + &.success { + color: $info-success; + } + } + + span.description { + margin-top: 4px; + font-size: $font-size-xxsmall; + color: $grey-3; + &.disabled { + color: $grey-6; + } + } + + textarea { + font-family: $text-font; + margin-top: 8px; + box-sizing: border-box; + max-width: 300px; + border-radius: 4px; + border: 1px solid $grey-4; + padding: 8px 0 8px 16px; + font-size: $font-size-small; + transition: all 0.3s ease-in-out; + + &:focus { + outline: none; + border-color: $grey-1; + } + + &:disabled { + background-color: $grey-10; + } + + &.success { + border-color: $info-success; + } + &.error { + border-color: $red; + } + } + + .count { + margin-top: 8px; + display: flex; + justify-content: flex-end; + color: $grey-3; + font-size: $font-size-xxsmall; + } + + .status { + margin-top: 8px; + display: flex; + align-items: flex-start; + gap: 4px; + + .statusText { + font-size: $font-size-xxsmall; + line-height: 20px; + } + } +} diff --git a/src/app/shared/components/v3/textarea/textarea.component.ts b/src/app/shared/components/v3/textarea/textarea.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..be100905698122adf522e34eb1b904a99524318a --- /dev/null +++ b/src/app/shared/components/v3/textarea/textarea.component.ts @@ -0,0 +1,37 @@ +import { Component, EventEmitter, Input, Output } from '@angular/core'; + +@Component({ + selector: 'app-textarea', + templateUrl: './textarea.component.html', + styleUrls: ['./textarea.component.scss'], +}) +export class TextareaV3Component { + /** HTML id associated with for */ + @Input() id: string; + + @Input() disabled?: boolean = false; + + /** Label for the radio */ + @Input() label?: string; + + /** Additional label description */ + @Input() description?: string; + + /** Max length of the input */ + @Input() maxLength?: number = 500; + + /** What additional data should be displayed ? */ + @Input() status?: 'error' | 'success' | 'info' | 'warning'; + + /** Additional text to display */ + @Input() statusText?: string; + + /** Value */ + @Input() value: string = ''; + + @Output() valueChange = new EventEmitter<string>(); + + public onValueChange(event: Event) { + this.valueChange.emit((event.target as HTMLTextAreaElement).value); + } +} diff --git a/src/app/shared/components/v3/textarea/textarea.stories.ts b/src/app/shared/components/v3/textarea/textarea.stories.ts new file mode 100644 index 0000000000000000000000000000000000000000..e60a1a3c47d1796198283452d5516d3b60158bb7 --- /dev/null +++ b/src/app/shared/components/v3/textarea/textarea.stories.ts @@ -0,0 +1,65 @@ +import { CommonModule } from '@angular/common'; +import type { Meta, StoryObj } from '@storybook/angular'; +import { moduleMetadata } from '@storybook/angular'; +import { TextareaV3Component } from './textarea.component'; + +// More on how to set up stories at: https://storybook.js.org/docs/angular/writing-stories/introduction +const meta: Meta<TextareaV3Component> = { + title: 'Components/Textarea', + component: TextareaV3Component, + tags: ['autodocs'], + decorators: [ + moduleMetadata({ + declarations: [], + imports: [CommonModule], + }), + ], + argTypes: {}, +}; + +export default meta; +type Story = StoryObj<TextareaV3Component>; + +export const Textarea: Story = { + args: { + id: 'input1', + label: 'Label', + onValueChange: (event) => console.log((event.target as HTMLTextAreaElement).value), + }, +}; + +export const InputWithDescription: Story = { + args: { + ...Textarea.args, + id: 'input2', + description: 'Texte de description additionnel', + }, +}; + +export const InputDisabled: Story = { + args: { + ...InputWithDescription.args, + id: 'input3', + disabled: true, + }, +}; + +export const InputWithError: Story = { + args: { + ...InputWithDescription.args, + id: 'input4', + label: 'Label', + status: 'error', + statusText: "Texte d'erreur obligatoire", + }, +}; + +export const InputWithSuccess: Story = { + args: { + ...InputWithDescription.args, + id: 'input5', + label: 'Label', + status: 'success', + statusText: 'Texte de succès', + }, +}; diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index d5ad938bc438c782adb94accab81b3a4d5e80463..91aa2d258252430984cb0c38f79af149882c32ca 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -7,6 +7,9 @@ import { SharedComponents } from './components'; import { AddressAutocompleteComponent } from './components/address-autocomplete/address-autocomplete.component'; import { AppointmentChoiceComponent } from './components/appointment-choice/appointment-choice.component'; import { HourPickerComponent } from './components/hour-picker/hour-picker.component'; +import { InputV3Component } from './components/v3/input/input.component'; +import { RadioV3Component } from './components/v3/radio/radio.component'; +import { TextareaV3Component } from './components/v3/textarea/textarea.component'; import { SharedDirectives } from './directives'; import { SharedPipes } from './pipes'; @NgModule({ @@ -17,7 +20,10 @@ import { SharedPipes } from './pipes'; ...SharedDirectives, AddressAutocompleteComponent, HourPickerComponent, + RadioV3Component, AppointmentChoiceComponent, + InputV3Component, + TextareaV3Component, ], exports: [ ...SharedPipes, diff --git a/src/app/structure-list/components/card/card.component.scss b/src/app/structure-list/components/card/card.component.scss index 6b77fe17d13e912861f40532385b512b1a65e959..0fc185abe16e6a005a3da95ea54115e97de3a049 100644 --- a/src/app/structure-list/components/card/card.component.scss +++ b/src/app/structure-list/components/card/card.component.scss @@ -5,7 +5,7 @@ .structure { padding: 12px; - border-bottom: 1px solid $grey-8 !important; + border-bottom: 1px solid $grey-9 !important; min-height: 110px; display: flex; justify-content: center; @@ -69,7 +69,7 @@ } .selected { - border: solid 1px $grey-4; + border: solid 1px $grey-5; background-color: $white; color: $grey-1; } diff --git a/src/app/structure-list/components/structure-details/structure-details.component.scss b/src/app/structure-list/components/structure-details/structure-details.component.scss index 8b46e5482ce8e819f315ea1956f7f3bcf4bce204..d6adc3f29657272843e5ab7eaa204bdadb72946d 100644 --- a/src/app/structure-list/components/structure-details/structure-details.component.scss +++ b/src/app/structure-list/components/structure-details/structure-details.component.scss @@ -101,7 +101,7 @@ ul { .structure-details-block { margin: 0 20px; padding: 24px 0; - border-bottom: 2px solid $grey-8; + border-bottom: 2px solid $grey-9; &.noSeparator { border-bottom: none; padding-bottom: 0px; @@ -111,7 +111,7 @@ ul { justify-content: center; align-items: center; .avatar { - background-color: $grey-8; + background-color: $grey-9; border-radius: 4px; } .info-member { @@ -205,7 +205,7 @@ ul { margin-bottom: 13px; @media #{$small-phone} { width: 95% !important; - border-bottom: 2px solid $grey-8; + border-bottom: 2px solid $grey-9; } .titleSkills { width: 100%; @@ -214,7 +214,7 @@ ul { .detailsContainer { margin: 8px 0px; padding: 8px 0; - background-color: $grey-8; + background-color: $grey-9; overflow: hidden; } .details { @@ -253,7 +253,7 @@ p, border-radius: 20px; } ::ng-deep svg:hover { - border-color: $grey-4; + border-color: $grey-5; } } diff --git a/src/app/structure-list/components/structure-list-search/structure-list-search.component.scss b/src/app/structure-list/components/structure-list-search/structure-list-search.component.scss index 4439b14f76eab0b46d365bbe1da930b8794d06c4..d3fc261df22556e1c4147b00a38102fadb2091b4 100644 --- a/src/app/structure-list/components/structure-list-search/structure-list-search.component.scss +++ b/src/app/structure-list/components/structure-list-search/structure-list-search.component.scss @@ -53,7 +53,7 @@ outline: 1px solid $red; } &:hover:not(.checked) { - background: $grey-8; + background: $grey-9; } label { cursor: pointer; @@ -66,7 +66,7 @@ width: 20px; min-width: 20px; height: 20px; - border: solid 1px $grey-4; + border: solid 1px $grey-5; background: white; margin: 0; margin-right: 5px; diff --git a/src/assets/ico/error-rounded.svg b/src/assets/ico/error-rounded.svg new file mode 100644 index 0000000000000000000000000000000000000000..278ccae022e0638cccc3e97fa16d7af73250a990 --- /dev/null +++ b/src/assets/ico/error-rounded.svg @@ -0,0 +1,3 @@ +<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M8.19902 1.89722C4.51902 1.89722 1.53235 4.88388 1.53235 8.56388C1.53235 12.2439 4.51902 15.2306 8.19902 15.2306C11.879 15.2306 14.8657 12.2439 14.8657 8.56388C14.8657 4.88388 11.879 1.89722 8.19902 1.89722ZM8.19902 9.23055C7.83235 9.23055 7.53235 8.93055 7.53235 8.56388V5.89722C7.53235 5.53055 7.83235 5.23055 8.19902 5.23055C8.56568 5.23055 8.86568 5.53055 8.86568 5.89722V8.56388C8.86568 8.93055 8.56568 9.23055 8.19902 9.23055ZM8.86568 11.8972H7.53235V10.5639H8.86568V11.8972Z" fill="#DA3635"/> +</svg> diff --git a/src/assets/ico/info-rounded.svg b/src/assets/ico/info-rounded.svg new file mode 100644 index 0000000000000000000000000000000000000000..72c5fad45a66c8772cd8685f9fafb05a609e3848 --- /dev/null +++ b/src/assets/ico/info-rounded.svg @@ -0,0 +1,5 @@ +<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g id="🚫 Ne pas changer - Information"> +<path id="Vector" d="M8.28935 2.02228C4.60935 2.02228 1.62268 5.00894 1.62268 8.68894C1.62268 12.3689 4.60935 15.3556 8.28935 15.3556C11.9693 15.3556 14.956 12.3689 14.956 8.68894C14.956 5.00894 11.9693 2.02228 8.28935 2.02228ZM8.28935 12.0223C7.92268 12.0223 7.62268 11.7223 7.62268 11.3556V8.68894C7.62268 8.32228 7.92268 8.02228 8.28935 8.02228C8.65601 8.02228 8.95601 8.32228 8.95601 8.68894V11.3556C8.95601 11.7223 8.65601 12.0223 8.28935 12.0223ZM8.95601 6.68894H7.62268V5.35561H8.95601V6.68894Z" fill="#0073E9"/> +</g> +</svg> diff --git a/src/assets/ico/success-rounded.svg b/src/assets/ico/success-rounded.svg new file mode 100644 index 0000000000000000000000000000000000000000..dc4031017cfdb023ae375c9814d3ad3df96d9aff --- /dev/null +++ b/src/assets/ico/success-rounded.svg @@ -0,0 +1,3 @@ +<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M8.7808 1.89722C5.1008 1.89722 2.11414 4.88388 2.11414 8.56388C2.11414 12.2439 5.1008 15.2306 8.7808 15.2306C12.4608 15.2306 15.4475 12.2439 15.4475 8.56388C15.4475 4.88388 12.4608 1.89722 8.7808 1.89722ZM6.97414 11.4239L4.5808 9.03055C4.3208 8.77055 4.3208 8.35055 4.5808 8.09055C4.8408 7.83055 5.2608 7.83055 5.5208 8.09055L7.44747 10.0106L12.0341 5.42388C12.2941 5.16388 12.7141 5.16388 12.9741 5.42388C13.2341 5.68388 13.2341 6.10388 12.9741 6.36388L7.91414 11.4239C7.6608 11.6839 7.23414 11.6839 6.97414 11.4239Z" fill="#1D8844"/> +</svg> diff --git a/src/assets/ico/warning.svg b/src/assets/ico/warning.svg new file mode 100644 index 0000000000000000000000000000000000000000..723682c733afa62d63a27261af33103d65d289fb --- /dev/null +++ b/src/assets/ico/warning.svg @@ -0,0 +1,5 @@ +<svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg"> + <path + d="M3.26931 14H13.3093C14.336 14 14.976 12.8867 14.4626 12L9.44264 3.32665C8.92931 2.43998 7.64931 2.43998 7.13597 3.32665L2.11597 12C1.60264 12.8867 2.24264 14 3.26931 14ZM8.28931 9.33332C7.92264 9.33332 7.62264 9.03332 7.62264 8.66665V7.33332C7.62264 6.96665 7.92264 6.66665 8.28931 6.66665C8.65597 6.66665 8.95597 6.96665 8.95597 7.33332V8.66665C8.95597 9.03332 8.65597 9.33332 8.28931 9.33332ZM8.95597 12H7.62264V10.6667H8.95597V12Z" + fill="#CF4B00" /> +</svg> \ No newline at end of file diff --git a/src/assets/scss/_buttons.scss b/src/assets/scss/_buttons.scss index 0fde50bd13dce876f873d3aca7c4487f1da77c85..a9300350397794487f2e689ed9328b237fb2062e 100644 --- a/src/assets/scss/_buttons.scss +++ b/src/assets/scss/_buttons.scss @@ -6,7 +6,7 @@ background: $white; height: 40px; width: 190px; - border: 1px solid $grey-4; + border: 1px solid $grey-5; padding: 3px 8px 3px 16px; outline: none; border-radius: 4px; @@ -100,6 +100,6 @@ button { margin-top: 5px; background: $grey-1; &.unchecked { - background: $grey-4; + background: $grey-5; } } diff --git a/src/assets/scss/_color.scss b/src/assets/scss/_color.scss index 4326cb27def3f43fdc347a28bdc521e60e211a85..965d524b048804889aec3bff524ccad14514023d 100644 --- a/src/assets/scss/_color.scss +++ b/src/assets/scss/_color.scss @@ -1,31 +1,45 @@ $black: #000000; -$white: #ffff; +$white: #ffffff; /* GREYS */ +$grey-0: $black; $grey: #b4bbbf; $grey-1: #333333; -$grey-2: #4f4f4f; +$grey-2-v3: #4c4d53; $grey-3: #696969; -$grey-3-15: #33333326; -$grey-3-20: #33333333; -// 4 should be something else -$grey-4: #bdbdbd; +$grey-4: #949494; $grey-5: #bdbdbd; $grey-6: #dedede; -$grey-7: #f4f4f4; -// 8 should be something else -$grey-8: #f8f8f8; +$grey-7: #e9e9e9; +$grey-8: #f4f4f4; $grey-9: #f8f8f8; +$grey-10: $white; /* REDS */ +$red-darker: #a50f0e; $red: #da3635; +$red-light: #ffe5e4; +/* INFO */ +$info-success: #1d8844; +$info-warning: #cf4b00; +$info-blue: #0073e9; +$info-error: #da3635; +/* BLUE */ +$blue-focus: #0078f3; // not referenced in figma doc, keep it ? + +/* +OLD COLORS +AFTER V3 DELETE FOLLOWING COLORS +*/ +$grey-2: #4f4f4f; // to delete after v3 +$grey-3-15: #33333326; +$grey-3-20: #33333333; + $red-20: #da363533; // main red with 20% opacity $red-dark: #b85959; $red-hover: #c02423; -$red-hover: #c02423; $red-1: #f35453; $red-pressed: #ff4544; -$red-pressed: #ff4544; -$red-pressed: #ff4544; $red-error: #ff0000; + /* GOLD */ $gold: #bd9e6a; /* form colors */ @@ -33,10 +47,9 @@ $green-1: #47c562; /* Status colors */ $green: #41c29c; $orange-warning: #da6c2e; -$green-success: #1d8844; +$info-success: #1d8844; $red-error: #e1000f; -/* BLUE */ -$blue-focus: #0078f3; + /* OTHERS */ $blue: #348899; $blue-light: #c9ecf3; @@ -46,12 +59,11 @@ $primary-color-dark: $red-dark; $primary-color-light: #fef0f0; $default-link-color: $grey-2; $button-secondary: $red-dark; -$app-background: $grey-8; +$app-background: $grey-9; $modal-background-transparent: rgba($grey-1, 0); $modal-background: rgba($grey-1, 0.25); -$app-background: $grey-8; -$ram-hover-principal: $primary-color; -$scrollbar-track: rgba($grey-8, 0.65); -$scrollbar-thumb: $grey-4; +$app-background: $grey-9; +$scrollbar-track: rgba($grey-9, 0.65); +$scrollbar-thumb: $grey-5; $focus-color: $grey-1; $box-shadow-simple: 0px 4px 16px rgba(0, 0, 0, 0.25); diff --git a/src/assets/scss/_icons.scss b/src/assets/scss/_icons.scss index 9b4a456944e75624f60f46a8dce6ed414bc0acd5..7a1938d77c80e7d233934c1dcb41023896854eb5 100644 --- a/src/assets/scss/_icons.scss +++ b/src/assets/scss/_icons.scss @@ -18,7 +18,7 @@ content: ''; height: 16px; width: 2px; - background-color: $grey-4; + background-color: $grey-5; } .ico-close-details { @@ -41,7 +41,7 @@ border-radius: 1px; } &:hover { - background-color: $grey-7; + background-color: $grey-8; } &:before { transform: rotate(45deg); diff --git a/src/assets/scss/_inputs.scss b/src/assets/scss/_inputs.scss index c714d3ea80426d4bc727a0bb35bda9b064b07f54..8b67757e0aa390ee87381b80296696b001f8b2af 100644 --- a/src/assets/scss/_inputs.scss +++ b/src/assets/scss/_inputs.scss @@ -6,7 +6,7 @@ width: 100%; border: none; text-overflow: ellipsis; - background-color: $grey-8; + background-color: $grey-9; color: $grey-3; outline: none; font-style: italic; @@ -14,7 +14,7 @@ .form-input { width: 296px; - background: $grey-8; + background: $grey-9; border: 1px solid $grey-5; box-sizing: border-box; border-radius: $input-radius; @@ -53,7 +53,7 @@ border-radius: 7px; width: 34px; height: 14px; - border: 1px solid $grey-4; + border: 1px solid $grey-5; } .slider:before { @@ -63,7 +63,7 @@ width: 20px; left: -6px; bottom: -3px; - background-color: $grey-4; + background-color: $grey-5; -webkit-transition: 0.4s; transition: 0.4s; border-radius: 50%; diff --git a/src/assets/scss/_search.scss b/src/assets/scss/_search.scss index 842c9efdb9f837276d71379b666b37cc20531642..a14cfe567f781fa5884b1398d733ba6613796751 100644 --- a/src/assets/scss/_search.scss +++ b/src/assets/scss/_search.scss @@ -29,7 +29,7 @@ padding: 6px 10px 6px 16px; width: 200px; min-width: 200px; - background-color: $grey-8; + background-color: $grey-9; color: $grey-3; height: 36px; border-radius: 50px; @@ -44,7 +44,7 @@ width: 100%; height: 40px; .separation { - border-right: solid 1px $grey-4; + border-right: solid 1px $grey-5; width: 5px; height: 23px; margin-right: 5px; @@ -67,7 +67,7 @@ align-items: center; background: $white; height: 36px; - border: 1px solid $grey-4; + border: 1px solid $grey-5; padding: 10px 12px; outline: none; border-radius: 50px; @@ -78,7 +78,7 @@ @include btn-normal; @include lato-regular-13; &:hover:not(.selected) { - background: $grey-7; + background: $grey-8; } .arrow { background-color: transparent; diff --git a/src/index.html b/src/index.html index fd9a7556079444fc987ff93052d44c38dc341edf..14e43e166db2a88bdb40470deccbfd604c10a87c 100644 --- a/src/index.html +++ b/src/index.html @@ -67,7 +67,7 @@ <meta name="theme-color" content="#333333" /> </head> <body> - <app-root /> + <app-root class="root" /> <noscript>Please enable JavaScript to continue using this application.</noscript> </body> </html> diff --git a/src/stories/button.component.ts b/src/stories/button.component.ts index cea6dd4cd42d91a21dcc653c3f3423363d8f69f9..7fd39f170a2d85dda00fdab3bf7cbb9f68c3f2e9 100644 --- a/src/stories/button.component.ts +++ b/src/stories/button.component.ts @@ -6,9 +6,9 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; imports: [CommonModule], template: ` <button type="button" - [ngClass]="classes" + [ngClass]="classes" [ngStyle]="{ 'background-color': backgroundColor }" - (click)="onClick.emit($event)"" + (click)="onClick.emit($event)" > {{ label }} </button>`, diff --git a/src/stories/header.component.ts b/src/stories/header.component.ts index 690529c784a150648b793a3f82e426e7a80a52e8..9de247aff7f58ec1a2fa3b9cb61424dfcefac14a 100644 --- a/src/stories/header.component.ts +++ b/src/stories/header.component.ts @@ -8,18 +8,9 @@ import type { User } from './User'; <div> <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> <g fill="none" fillRule="evenodd"> - <path - d="M10 0h12a10 10 0 0110 10v12a10 10 0 01-10 10H10A10 10 0 010 22V10A10 10 0 0110 0z" - fill="#FFF" - /> - <path - d="M5.3 10.6l10.4 6v11.1l-10.4-6v-11zm11.4-6.2l9.7 5.5-9.7 5.6V4.4z" - fill="#555AB9" - /> - <path - d="M27.2 10.6v11.2l-10.5 6V16.5l10.5-6zM15.7 4.4v11L6 10l9.7-5.5z" - fill="#91BAF8" - /> + <path d="M10 0h12a10 10 0 0110 10v12a10 10 0 01-10 10H10A10 10 0 010 22V10A10 10 0 0110 0z" fill="#FFF" /> + <path d="M5.3 10.6l10.4 6v11.1l-10.4-6v-11zm11.4-6.2l9.7 5.5-9.7 5.6V4.4z" fill="#555AB9" /> + <path d="M27.2 10.6v11.2l-10.5 6V16.5l10.5-6zM15.7 4.4v11L6 10l9.7-5.5z" fill="#91BAF8" /> </g> </svg> <h1>Acme</h1> @@ -33,8 +24,8 @@ import type { User } from './User'; <storybook-button *ngIf="user" size="small" - label="Log out" - (onClick)="onLogout.emit($event)"" + label="Log out" + (onClick)="onLogout.emit($event)" ></storybook-button> </div> <div *ngIf="!user"> @@ -42,8 +33,8 @@ import type { User } from './User'; *ngIf="!user" size="small" class="margin-left" - label="Log in" - (onClick)="onLogin.emit($event)"" + label="Log in" + (onClick)="onLogin.emit($event)" ></storybook-button> <storybook-button *ngIf="!user" @@ -51,8 +42,8 @@ import type { User } from './User'; size="small" primary="true" class="margin-left" - label="Sign up" - (onClick)="onCreateAccount.emit($event)"" + label="Sign up" + (onClick)="onCreateAccount.emit($event)" ></storybook-button> </div> </div> diff --git a/src/styles.scss b/src/styles.scss index 744acf1f03fa3272c17529248688ff82aea488e1..bdf5eb8f920a7a17241aaa4f02e798e519587af4 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -19,7 +19,7 @@ html { height: -webkit-fill-available; margin: 0; padding: 0; - background-color: $grey-8; + background-color: $grey-9; } body { width: 100%; @@ -27,7 +27,7 @@ body { margin: 0; padding: 0; color: $black; - background-color: $grey-8; + background-color: $grey-9; ::-webkit-scrollbar { width: 8px; } @@ -46,6 +46,13 @@ body { border-radius: 8px; } } + +.root { + display: flex; + flex-direction: column; + height: 100svh; +} + a { color: $default-link-color; text-decoration: none; @@ -193,7 +200,7 @@ input { /** Textarea **/ textarea { padding: 13px 8px; - background: $grey-8; + background: $grey-9; border: 1px solid $grey-5; border-radius: $input-radius; resize: none; @@ -258,7 +265,7 @@ button { top: 0; left: 0; &:hover { - background-color: $grey-8; + background-color: $grey-9; } &:after { content: ''; @@ -341,7 +348,7 @@ button { .smallList { display: block; box-sizing: border-box; - background: $grey-8; + background: $grey-9; max-width: 300px; padding: 0.5rem !important; margin-left: 1.2rem !important; @@ -445,7 +452,7 @@ button { .reset { width: 45%; text-align: center; - color: $grey-4; + color: $grey-5; } .half-width { width: 50%; @@ -601,3 +608,17 @@ button { white-space: nowrap !important; border: 0 !important; } + +// Status colors +.error { + color: $info-error; +} +.success { + color: $info-success; +} +.info { + color: $info-blue; +} +.warning { + color: $info-warning; +}