diff --git a/web/CLAUDE.md b/web/CLAUDE.md index 0e33fb3ee..b6b7f2a67 100644 --- a/web/CLAUDE.md +++ b/web/CLAUDE.md @@ -98,7 +98,8 @@ this.dialog.openComponent(new PolymorpheusComponent(MyComponent, injector), { la ### Errors & Tooltips ```html - + + ``` diff --git a/web/angular.json b/web/angular.json index 4d3c0060c..d1aca5abb 100644 --- a/web/angular.json +++ b/web/angular.json @@ -47,7 +47,7 @@ "projects/ui/src/manifest.webmanifest" ], "styles": [ - "node_modules/@taiga-ui/core/styles/taiga-ui-theme.less", + "node_modules/@taiga-ui/styles/taiga-ui-theme.less", "projects/shared/styles/taiga.scss", "projects/shared/styles/shared.scss", "projects/ui/src/styles.scss" @@ -158,7 +158,7 @@ } ], "styles": [ - "node_modules/@taiga-ui/core/styles/taiga-ui-theme.less", + "node_modules/@taiga-ui/styles/taiga-ui-theme.less", "projects/shared/styles/taiga.scss", "projects/shared/styles/shared.scss", "projects/setup-wizard/src/styles.scss" @@ -258,8 +258,8 @@ } ], "styles": [ - "node_modules/@taiga-ui/core/styles/taiga-ui-theme.less", - "node_modules/@taiga-ui/core/styles/taiga-ui-fonts.less", + "node_modules/@taiga-ui/styles/taiga-ui-theme.less", + "node_modules/@taiga-ui/styles/taiga-ui-fonts.less", "projects/shared/styles/shared.scss", "projects/start-tunnel/src/styles.scss" ], diff --git a/web/package-lock.json b/web/package-lock.json index eab2b5519..11eb53ecc 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -9,7 +9,6 @@ "version": "0.4.0-alpha.20", "license": "MIT", "dependencies": { - "@angular/animations": "^21.2.1", "@angular/cdk": "^21.2.1", "@angular/common": "^21.2.1", "@angular/compiler": "^21.2.1", @@ -24,19 +23,19 @@ "@noble/hashes": "^1.4.0", "@start9labs/argon2": "^0.3.0", "@start9labs/start-sdk": "file:../sdk/baseDist", - "@taiga-ui/addon-charts": "4.73.0", - "@taiga-ui/addon-commerce": "4.73.0", - "@taiga-ui/addon-mobile": "4.73.0", - "@taiga-ui/addon-table": "4.73.0", - "@taiga-ui/cdk": "4.73.0", - "@taiga-ui/core": "4.73.0", - "@taiga-ui/dompurify": "4.1.11", - "@taiga-ui/event-plugins": "4.7.0", - "@taiga-ui/experimental": "4.73.0", - "@taiga-ui/icons": "4.73.0", - "@taiga-ui/kit": "4.73.0", - "@taiga-ui/layout": "4.73.0", - "@taiga-ui/polymorpheus": "4.9.0", + "@taiga-ui/addon-charts": "5.0.0-rc.4", + "@taiga-ui/addon-commerce": "5.0.0-rc.4", + "@taiga-ui/addon-mobile": "5.0.0-rc.4", + "@taiga-ui/addon-table": "5.0.0-rc.4", + "@taiga-ui/cdk": "5.0.0-rc.4", + "@taiga-ui/core": "5.0.0-rc.4", + "@taiga-ui/dompurify": "5.0.1", + "@taiga-ui/event-plugins": "5.0.0", + "@taiga-ui/experimental": "5.0.0-rc.4", + "@taiga-ui/icons": "5.0.0-rc.4", + "@taiga-ui/kit": "5.0.0-rc.4", + "@taiga-ui/layout": "5.0.0-rc.4", + "@taiga-ui/polymorpheus": "5.0.0", "ansi-to-html": "^0.7.2", "base64-js": "^1.5.1", "buffer": "^6.0.3", @@ -46,7 +45,7 @@ "cron": "^2.2.0", "cronstrue": "^2.21.0", "deep-equality-data-structures": "1.5.1", - "dompurify": "^3.1.7", + "dompurify": "^3.3.2", "fast-json-patch": "^3.1.1", "fuse.js": "^6.4.6", "jose": "^4.9.0", @@ -71,7 +70,6 @@ "@angular/cli": "^21.2.1", "@angular/compiler-cli": "^21.2.1", "@angular/language-service": "^21.2.1", - "@types/dompurify": "3.0.5", "@types/estree": "^0.0.51", "@types/js-yaml": "^4.0.5", "@types/marked": "^4.0.3", @@ -365,13 +363,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.2102.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.1.tgz", - "integrity": "sha512-x2Qqz6oLYvEh9UBUG0AP1A4zROO/VP+k+zM9+4c2uZw1uqoBQFmutqgzncjVU7cR9R0RApgx9JRZHDFtQru68w==", + "version": "0.2102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.2.tgz", + "integrity": "sha512-CDvFtXwyBtMRkTQnm+LfBNLL0yLV8ZGskrM1T6VkcGwXGFDott1FxUdj96ViodYsYL5fbJr0MNA6TlLcanV3kQ==", "devOptional": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.1", + "@angular-devkit/core": "21.2.2", "rxjs": "7.8.2" }, "bin": { @@ -384,9 +382,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.1.tgz", - "integrity": "sha512-TpXGjERqVPN8EPt7LdmWAwh0oNQ/6uWFutzGZiXhJy81n1zb1O1XrqhRAmvP1cAo5O+na6IV2JkkCmxL6F8GUg==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.2.tgz", + "integrity": "sha512-xUeKGe4BDQpkz0E6fnAPIJXE0y0nqtap0KhJIBhvN7xi3NenIzTmoi6T9Yv5OOBUdLZbOm4SOel8MhdXiIBpAQ==", "license": "MIT", "peer": true, "dependencies": { @@ -412,13 +410,13 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.1.tgz", - "integrity": "sha512-CWoamHaasAHMjHcYqxbj0tMnoXxdGotcAz2SpiuWtH28Lnf5xfbTaJn/lwdMP8Wdh4tgA+uYh2l45A5auCwmkw==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.2.tgz", + "integrity": "sha512-CCeyQxGUq+oyGnHd7PfcYIVbj9pRnqjQq0rAojoAqs1BJdtInx9weLBCLy+AjM3NHePeZrnwm+wEVr8apED8kg==", "license": "MIT", "peer": true, "dependencies": { - "@angular-devkit/core": "21.2.1", + "@angular-devkit/core": "21.2.2", "jsonc-parser": "3.3.1", "magic-string": "0.30.21", "ora": "9.3.0", @@ -448,31 +446,15 @@ "hawkeye": "index.mjs" } }, - "node_modules/@angular/animations": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.2.1.tgz", - "integrity": "sha512-zT/S29pUTbziCLvZ2itBdNWd5i8tsXexofH7KA4n2yvYmK1EhNpE7TlHRjghmsHgtDt4VnGiMW4zXEyrl05Dwg==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - }, - "peerDependencies": { - "@angular/core": "21.2.1" - } - }, "node_modules/@angular/build": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.2.1.tgz", - "integrity": "sha512-cUpLNHJp9taII/FOcJHHfQYlMcZSRaf6eIxgSNS6Xfx1CeGoJNDN+J8+GFk+H1CPJt1EvbfyZ+dE5DbsgTD/QQ==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.2.2.tgz", + "integrity": "sha512-Vq2eIneNxzhHm1MwEmRqEJDwHU9ODfSRDaMWwtysGMhpoMQmLdfTqkQDmkC2qVUr8mV8Z1i5I+oe5ZJaMr/PlQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.2102.1", + "@angular-devkit/architect": "0.2102.2", "@babel/core": "7.29.0", "@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-split-export-declaration": "7.24.7", @@ -515,7 +497,7 @@ "@angular/platform-browser": "^21.0.0", "@angular/platform-server": "^21.0.0", "@angular/service-worker": "^21.0.0", - "@angular/ssr": "^21.2.1", + "@angular/ssr": "^21.2.2", "karma": "^6.4.0", "less": "^4.2.0", "ng-packagr": "^21.0.0", @@ -565,9 +547,9 @@ } }, "node_modules/@angular/cdk": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-21.2.1.tgz", - "integrity": "sha512-JUFV8qLnO7CU5v4W0HzXSQrFkkJ4RH/qqdwrf9lup7YEnsLxB7cTGhsVisc9pWKAJsoNZ4pXCVOkqKc1mFL7dw==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-21.2.2.tgz", + "integrity": "sha512-9AsZkwqy07No7+0qPydcJfXB6SpA9qLDBanoesNj5KsiZJ62PJH3oIjVyNeQEEe1HQWmSwBnhwN12OPLNMUlnw==", "license": "MIT", "peer": true, "dependencies": { @@ -582,20 +564,20 @@ } }, "node_modules/@angular/cli": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.1.tgz", - "integrity": "sha512-5SRfMTgwFj1zXOpfeZWHsxZBni0J4Xz7/CbewG47D6DmbstOrSdgt6eNzJ62R650t0G9dpri2YvToZgImtbjOQ==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.2.tgz", + "integrity": "sha512-eZo8/qX+ZIpIWc0CN+cCX13Lbgi/031wAp8DRVhDDO6SMVtcr/ObOQ2S16+pQdOMXxiG3vby6IhzJuz9WACzMQ==", "devOptional": true, "license": "MIT", "peer": true, "dependencies": { - "@angular-devkit/architect": "0.2102.1", - "@angular-devkit/core": "21.2.1", - "@angular-devkit/schematics": "21.2.1", + "@angular-devkit/architect": "0.2102.2", + "@angular-devkit/core": "21.2.2", + "@angular-devkit/schematics": "21.2.2", "@inquirer/prompts": "7.10.1", "@listr2/prompt-adapter-inquirer": "3.0.5", "@modelcontextprotocol/sdk": "1.26.0", - "@schematics/angular": "21.2.1", + "@schematics/angular": "21.2.2", "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.48.1", "ini": "6.0.0", @@ -618,9 +600,9 @@ } }, "node_modules/@angular/common": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.2.1.tgz", - "integrity": "sha512-xhv2i1Q9s1kpGbGsfj+o36+XUC/TQLcZyRuRxn3GwaN7Rv34FabC88ycpvoE+sW/txj4JRx9yPA0dRSZjwZ+Gg==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.2.4.tgz", + "integrity": "sha512-NrP6qOuUpo3fqq14UJ1b2bIRtWsfvxh1qLqOyFV4gfBrHhXd0XffU1LUlUw1qp4w1uBSgPJ0/N5bSPUWrAguVg==", "license": "MIT", "peer": true, "dependencies": { @@ -630,14 +612,14 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.2.1", + "@angular/core": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.1.tgz", - "integrity": "sha512-FxWaSaii1vfHIFA+JksqQ8NGB2frfqCrs7Ju50a44kbwR4fmanfn/VsiS/CbwBp9vcyT/Br9X/jAG4RuK/U2nw==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.4.tgz", + "integrity": "sha512-9+ulVK3idIo/Tu4X2ic7/V0+Uj7pqrOAbOuIirYe6Ymm3AjexuFRiGBbfcH0VJhQ5cf8TvIJ1fuh+MI4JiRIxA==", "license": "MIT", "peer": true, "dependencies": { @@ -648,9 +630,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.2.1.tgz", - "integrity": "sha512-qYCWLGtEju4cDtYLi4ZzbwKoF0lcGs+Lc31kuESvAzYvWNgk2EUOtwWo8kbgpAzAwSYodtxW6Q90iWEwfU6elw==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.2.4.tgz", + "integrity": "sha512-vGjd7DZo/Ox50pQCm5EycmBu91JclimPtZoyNXu/2hSxz3oAkzwiHCwlHwk2g58eheSSp+lYtYRLmHAqSVZLjg==", "dev": true, "license": "MIT", "peer": true, @@ -672,7 +654,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.2.1", + "@angular/compiler": "21.2.4", "typescript": ">=5.9 <6.1" }, "peerDependenciesMeta": { @@ -682,9 +664,9 @@ } }, "node_modules/@angular/core": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.2.1.tgz", - "integrity": "sha512-pFTbg03s2ZI5cHNT+eWsGjwIIKiYkeAnodFbCAHjwFi9KCEYlTykFLjr9lcpGrBddfmAH7GE08Q73vgmsdcNHw==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.2.4.tgz", + "integrity": "sha512-2+gd67ZuXHpGOqeb2o7XZPueEWEP81eJza2tSHkT5QMV8lnYllDEmaNnkPxnIjSLGP1O3PmiXxo4z8ibHkLZwg==", "license": "MIT", "peer": true, "dependencies": { @@ -694,7 +676,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "21.2.1", + "@angular/compiler": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.15.0 || ~0.16.0" }, @@ -708,9 +690,9 @@ } }, "node_modules/@angular/forms": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.2.1.tgz", - "integrity": "sha512-6aqOPk9xoa0dfeUDeEbhaiPhmt6MQrdn59qbGAomn9RMXA925TrHbJhSIkp9tXc2Fr4aJRi8zkD/cdXEc1IYeA==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.2.4.tgz", + "integrity": "sha512-1fOhctA9ADEBYjI3nPQUR5dHsK2+UWAjup37Ksldk/k0w8UpD5YsN7JVNvsDMZRFMucKYcGykPblU7pABtsqnQ==", "license": "MIT", "peer": true, "dependencies": { @@ -721,16 +703,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.2.1", - "@angular/core": "21.2.1", - "@angular/platform-browser": "21.2.1", + "@angular/common": "21.2.4", + "@angular/core": "21.2.4", + "@angular/platform-browser": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-21.2.1.tgz", - "integrity": "sha512-L8EaNhWDKMny18RURg/Ju2Dix2e7qLL/s2yDQrawgjQRmXAMnjimz10w/EiiG7FMK/Hj5fLycS5X8VITq1f2rg==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-21.2.4.tgz", + "integrity": "sha512-seWlXWhayTwuL62Cfz+Ky/Wv67oYLX+cXplYoIinDVJPgQaU9jXpakLfKq8RwdRXVmgTE0HQ5dyoTozuWgJ8Nw==", "dev": true, "license": "MIT", "engines": { @@ -738,9 +720,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.1.tgz", - "integrity": "sha512-k4SJLxIaLT26vLjLuFL+ho0BiG5PrdxEsjsXFC7w5iUhomeouzkHVTZ4t7gaLNKrdRD7QNtU4Faw0nL0yx0ZPQ==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.4.tgz", + "integrity": "sha512-1A9e/cQVu+3BkRCktLcO3RZGuw8NOTHw1frUUrpAz+iMyvIT4sDRFbL+U1g8qmOCZqRNC1Pi1HZfZ1kl6kvrcQ==", "license": "MIT", "peer": true, "dependencies": { @@ -750,9 +732,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/animations": "21.2.1", - "@angular/common": "21.2.1", - "@angular/core": "21.2.1" + "@angular/animations": "21.2.4", + "@angular/common": "21.2.4", + "@angular/core": "21.2.4" }, "peerDependenciesMeta": { "@angular/animations": { @@ -761,13 +743,13 @@ } }, "node_modules/@angular/pwa": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/pwa/-/pwa-21.2.1.tgz", - "integrity": "sha512-oi4amOGT7g6voeBeyr9/8TBug+RSghmAVoyBNIrAPLNRXmhJGRtCom7WZoYHR4mJ8+Tf+PXcjm8RDO2Zq4AqpQ==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/pwa/-/pwa-21.2.2.tgz", + "integrity": "sha512-/JU3gBXA/3LYNngR0dJF8H9RU1M5IaFh2CG2BCugIx8vmRFDC/GThCJKZqzPaYFutEg7ieXzr3cSj+2rtdr7vg==", "license": "MIT", "dependencies": { - "@angular-devkit/schematics": "21.2.1", - "@schematics/angular": "21.2.1", + "@angular-devkit/schematics": "21.2.2", + "@schematics/angular": "21.2.2", "parse5-html-rewriting-stream": "8.0.0" }, "engines": { @@ -776,7 +758,7 @@ "yarn": ">= 1.13.0" }, "peerDependencies": { - "@angular/cli": "^21.2.1" + "@angular/cli": "^21.2.2" }, "peerDependenciesMeta": { "@angular/cli": { @@ -785,9 +767,9 @@ } }, "node_modules/@angular/router": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.2.1.tgz", - "integrity": "sha512-FUKG+8ImQYxmlDUdAs7+VeS/VrBNrbo0zGiKkzVNU/bbcCyroKXJLXFtkFI3qmROiJNyIta2IMBCHJvIjLIMig==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.2.4.tgz", + "integrity": "sha512-OjWze4XT8i2MThcBXMv7ru1k6/5L6QYZbcXuseqimFCHm2avEJ+mXPovY066fMBZJhqbXdjB82OhHAWkIHjglQ==", "license": "MIT", "peer": true, "dependencies": { @@ -797,16 +779,16 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "21.2.1", - "@angular/core": "21.2.1", - "@angular/platform-browser": "21.2.1", + "@angular/common": "21.2.4", + "@angular/core": "21.2.4", + "@angular/platform-browser": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/service-worker": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-21.2.1.tgz", - "integrity": "sha512-mFyEVh5KazB6wr9uoXhlDQQDaicH9/t2m6lsN+/t2y6iMPpTIuTbWYHXX1uVbLKcxne54ei78NgD3wNS7DMfmg==", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-21.2.4.tgz", + "integrity": "sha512-YcPMb0co2hEDwzOG5S27b6f8rotXEUDx88nQuhHDl/ztuzXaxKklJ21qVDVZ0R433YBCRQJl2D6ZrpJojsnBFw==", "license": "MIT", "peer": true, "dependencies": { @@ -819,7 +801,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "21.2.1", + "@angular/core": "21.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -854,7 +836,6 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -1142,21 +1123,21 @@ } }, "node_modules/@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz", + "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@emnapi/wasi-threads": "1.1.0", + "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz", + "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", "dev": true, "license": "MIT", "optional": true, @@ -1165,9 +1146,9 @@ } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", "dev": true, "license": "MIT", "optional": true, @@ -2002,16 +1983,6 @@ } } }, - "node_modules/@isaacs/cliui": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", - "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", - "devOptional": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", @@ -2200,46 +2171,46 @@ ] }, "node_modules/@maskito/angular": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/@maskito/angular/-/angular-3.11.1.tgz", - "integrity": "sha512-+OZzbRJj/9fOGhgPr0xYctSHe/Ngahip3VdNWBslRTpt7g+UTBYcB8vU9J4cHfpdXYeLM3tM0tnKksc3Eis0+Q==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@maskito/angular/-/angular-5.1.2.tgz", + "integrity": "sha512-VLeO9+80AC0OE1JJf7OIHahCDejNVrT5gMfcBUYov0N7yT43GnzeyOtbwOuo0QETZEHdFGJkwWoNwZs0+nyZmw==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": "2.8.1" }, "peerDependencies": { - "@angular/core": ">=16.0.0", - "@angular/forms": ">=16.0.0", - "@maskito/core": "^3.11.1" + "@angular/core": ">=19.0.0", + "@angular/forms": ">=19.0.0", + "@maskito/core": "^5.1.2" } }, "node_modules/@maskito/core": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/@maskito/core/-/core-3.11.1.tgz", - "integrity": "sha512-zN5k/BiZXblo8mEFhsGnnXBCqKMkjEGArorOOcpB1/ymZyqF12Dk6IipEsSE6abMnWw4YF2tukzfq73BFZKz8A==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@maskito/core/-/core-5.1.2.tgz", + "integrity": "sha512-eoeQ41uDu9AuhFQDzAPTNTr5VM+hMpRsrJjtHzCH3FM7u+/mOGLgtEeGE1+5Up5UCtY7h/N1hPaZ/qT5mcNWXQ==", "license": "Apache-2.0", "peer": true }, "node_modules/@maskito/kit": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/@maskito/kit/-/kit-3.11.1.tgz", - "integrity": "sha512-KOBUqxRz383xJWCoe+Emwxv2oAzUrZobIN+Gntmi5Py2S10XbqYnGX/6W7QHN8CUK2Nx11d3HsxbEQaq5Hinjg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@maskito/kit/-/kit-5.1.2.tgz", + "integrity": "sha512-inVxaa36dLQp1NQ/a5dM791qgDZUulPDs299pS6KNXKN7wrisybSIoRVrpjoZt/QIe2TMtku313sBgtf2LhFAQ==", "license": "Apache-2.0", "peer": true, "peerDependencies": { - "@maskito/core": "^3.11.1" + "@maskito/core": "^5.1.2" } }, "node_modules/@maskito/phone": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/@maskito/phone/-/phone-3.11.1.tgz", - "integrity": "sha512-ptNDPIZQs/v598qydBa9cnvoCE8+k2Sv07kKKVx3vG0V40DQnIlEL+LYKrJJbMIiPOB6CH90hB9eaA9KKReZ6w==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@maskito/phone/-/phone-5.1.2.tgz", + "integrity": "sha512-NlM9k/UpWxE9SNg00UtAe0DcobiTp0VklzYLAvxCkpg5zAOQDNipNeHUQobzuebK8QsLbMJnoGvDeqxEkO5VqA==", "license": "Apache-2.0", "peer": true, "peerDependencies": { - "@maskito/core": "^3.11.1", - "@maskito/kit": "^3.11.1", + "@maskito/core": "^5.1.2", + "@maskito/kit": "^5.1.2", "libphonenumber-js": ">=1.0.0" } }, @@ -2298,9 +2269,9 @@ } }, "node_modules/@modelcontextprotocol/sdk/node_modules/jose": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz", - "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.1.tgz", + "integrity": "sha512-jUaKr1yrbfaImV7R2TN/b3IcZzsw38/chqMpo2XJ7i2F8AfM/lA4G1goC3JVEwg0H7UldTmSt3P68nt31W7/mw==", "devOptional": true, "license": "MIT", "funding": { @@ -2732,52 +2703,53 @@ } }, "node_modules/@ng-web-apis/common": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@ng-web-apis/common/-/common-4.14.0.tgz", - "integrity": "sha512-eLrpy9e8R+eJKRUWv06jauaDCJ/6/9llmHPTvmWH3yTS9HIn+twk5ZmyfNwFqA/r8g9Kt4Ap48YuaydQy00nuw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@ng-web-apis/common/-/common-5.1.0.tgz", + "integrity": "sha512-omhjrojnwgJXIPT4H4sLruqCSGlWeLLuIAUkDB+fIARd1shT0vYmA9qugaNd54XmLOnL7Hu97FYkXnULFyT85w==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", + "@angular/common": ">=19.0.0", + "@angular/core": ">=19.0.0", + "@types/dom-speech-recognition": "^0.0.7", "rxjs": ">=7.0.0" } }, "node_modules/@ng-web-apis/intersection-observer": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@ng-web-apis/intersection-observer/-/intersection-observer-4.14.0.tgz", - "integrity": "sha512-VDuak0+jDPwPttqQbgIYCD1tM2F7wKSXZWWUjFdNfkV47GspEPzzf12lY1eiltIiCB4cv6asZNs5ijnsxpnb9A==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@ng-web-apis/intersection-observer/-/intersection-observer-5.1.0.tgz", + "integrity": "sha512-Fonur9MS3bxDyCbGX3gcuEsvIRPA/0PrkpOe2EohVJMdrVjs8eB6SbQR4DSKVv5We1maMSzt3jhd1u5KEMp2xA==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": ">=16.0.0", - "@ng-web-apis/common": ">=4.12.0" + "@angular/core": ">=19.0.0", + "@ng-web-apis/common": "^5.1.0" } }, "node_modules/@ng-web-apis/mutation-observer": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@ng-web-apis/mutation-observer/-/mutation-observer-4.14.0.tgz", - "integrity": "sha512-AUZDtVWN1rUSZoaB5AWhRYZ8DNSPoPQ2Ld8G8q9ocxfpslDHvjQQjUj5r0zHjAwKe1f9cNuow2nU+n6k3hF6ew==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@ng-web-apis/mutation-observer/-/mutation-observer-5.1.0.tgz", + "integrity": "sha512-X8DepT55KG/xY/WnQ05pnSxpyzv76CWiDrKanzOeUy9SUckrfpjCWkGvyz9fSzUv27mOC4t/ry6Fnu+em28Tzg==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": ">=16.0.0", - "@ng-web-apis/common": ">=4.12.0" + "@angular/core": ">=19.0.0", + "@ng-web-apis/common": "^5.1.0" } }, "node_modules/@ng-web-apis/platform": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@ng-web-apis/platform/-/platform-4.14.0.tgz", - "integrity": "sha512-zmsbg0cEumppG6VlxIpM+ghJXBJ6G2mlTm+XmC9HYCnRJxYJjqIVRDZbYUQ4pGQHz4iJxRbp2C3VOndre72+3g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@ng-web-apis/platform/-/platform-5.1.0.tgz", + "integrity": "sha512-Jp6BqEDQ0C7/NpQ2TqTvy2ddjcOt1nON9KlCOaIR7L+YY88KToeQLD3dsFRFbxwWB1G1okgpxysMoFunatltYQ==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -2785,31 +2757,31 @@ } }, "node_modules/@ng-web-apis/resize-observer": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@ng-web-apis/resize-observer/-/resize-observer-4.14.0.tgz", - "integrity": "sha512-W5VXT/y0Vv68Gx/2urgu/JmIQfv0jPtzfvGtyulgGALfBrnei4oVXvJe2aZmLb0/VkxH65qlYOKVEOGqBrwSwQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@ng-web-apis/resize-observer/-/resize-observer-5.1.0.tgz", + "integrity": "sha512-cuEPAaZJ2UDOA283S/Ehz7tdDLuCY6tLmdcYHlXTdnMcXiyrqUsu0dKQ04ZoZ0KXfoSjT95jPUTabot5psVPkw==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": ">=16.0.0", - "@ng-web-apis/common": ">=4.12.0" + "@angular/core": ">=19.0.0", + "@ng-web-apis/common": "^5.1.0" } }, "node_modules/@ng-web-apis/screen-orientation": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@ng-web-apis/screen-orientation/-/screen-orientation-4.14.0.tgz", - "integrity": "sha512-XlXjxhYT7QKW0WKQE4BIJ2OZ7c1EFRXUQ4eXQ41Jwl8ukG0zkixOTrxGlnfy7ijX5df3sX/+0kKCXwsyj/n5BA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@ng-web-apis/screen-orientation/-/screen-orientation-5.1.0.tgz", + "integrity": "sha512-x6W2C45EAcaHk/0QR5hcWg6bByyPD+E/xPlQjR8sQwLN+AE8ag1hrhmIbkQOyEP2K2kvU81M0ndbre0o4dRo9Q==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": ">=16.0.0", - "@ng-web-apis/common": ">=4.12.0", + "@angular/core": ">=19.0.0", + "@ng-web-apis/common": "^5.1.0", "rxjs": ">=7.0.0" } }, @@ -2896,9 +2868,9 @@ } }, "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "devOptional": true, "license": "BlueOak-1.0.0", "engines": { @@ -2949,9 +2921,9 @@ } }, "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "devOptional": true, "license": "BlueOak-1.0.0", "engines": { @@ -4071,13 +4043,13 @@ "license": "MIT" }, "node_modules/@schematics/angular": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.1.tgz", - "integrity": "sha512-DjrHRMoILhbZ6tc7aNZWuHA1wCm1iU/JN1TxAwNEyIBgyU3Fx8Z5baK4w0TCpOIPt0RLWVgP2L7kka9aXWCUFA==", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.2.tgz", + "integrity": "sha512-Ywa6HDtX7TRBQZTVMMnxX3Mk7yVnG8KtSFaXWrkx779+q8tqYdBwNwAqbNd4Zatr1GccKaz9xcptHJta5+DTxw==", "license": "MIT", "dependencies": { - "@angular-devkit/core": "21.2.1", - "@angular-devkit/schematics": "21.2.1", + "@angular-devkit/core": "21.2.2", + "@angular-devkit/schematics": "21.2.2", "jsonc-parser": "3.3.1" }, "engines": { @@ -4182,118 +4154,118 @@ "link": true }, "node_modules/@taiga-ui/addon-charts": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/addon-charts/-/addon-charts-4.73.0.tgz", - "integrity": "sha512-BZhmupFnngsGICumSvaA7b8jf5lprQ5PD5Nqduq6iQ/pa02qv4VdR7HE2OM07kg4pBm4OX3OtJ0H9V0N/buchQ==", + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/addon-charts/-/addon-charts-5.0.0-rc.4.tgz", + "integrity": "sha512-goStkREzlt2vgK0gRI2o2BEud8YNqMxXAG3NW1YxyAO/P13OwzuxWxGBW013ykzxfpEVynUlswpUPWHyowNa8g==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" }, "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "@ng-web-apis/common": "^4.14.0", - "@taiga-ui/cdk": "^4.73.0", - "@taiga-ui/core": "^4.73.0", - "@taiga-ui/polymorpheus": "^4.9.0" + "@angular/common": ">=19.0.0", + "@angular/core": ">=19.0.0", + "@ng-web-apis/common": "^5.1.0", + "@taiga-ui/cdk": "^5.0.0-rc.4", + "@taiga-ui/core": "^5.0.0-rc.4", + "@taiga-ui/polymorpheus": "^5.0.0" } }, "node_modules/@taiga-ui/addon-commerce": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/addon-commerce/-/addon-commerce-4.73.0.tgz", - "integrity": "sha512-jLNGPZgAnqhrLp5jJ2LNaDVuQs7SX1pUitDm4xpt26GnO7GuQmjY2E0SmZtEbBf/9ykROAnPzgWJbaIj6e5V0A==", + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/addon-commerce/-/addon-commerce-5.0.0-rc.4.tgz", + "integrity": "sha512-5Z/QbxC4NQKJ0F7Y7oJG86o1Ek+4XiBeV61F42/syHmD1/3Y2KEll+1GBvlx++xFHJvjfa0+xFUx3omLJjIGzA==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": ">=2.8.1" }, "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "@angular/forms": ">=16.0.0", - "@maskito/angular": "^3.11.1", - "@maskito/core": "^3.11.1", - "@maskito/kit": "^3.11.1", - "@ng-web-apis/common": "^4.14.0", - "@taiga-ui/cdk": "^4.73.0", - "@taiga-ui/core": "^4.73.0", - "@taiga-ui/i18n": "^4.73.0", - "@taiga-ui/kit": "^4.73.0", - "@taiga-ui/polymorpheus": "^4.9.0", + "@angular/common": ">=19.0.0", + "@angular/core": ">=19.0.0", + "@angular/forms": ">=19.0.0", + "@maskito/angular": "^5.1.1", + "@maskito/core": "^5.1.1", + "@maskito/kit": "^5.1.1", + "@ng-web-apis/common": "^5.1.0", + "@taiga-ui/cdk": "^5.0.0-rc.4", + "@taiga-ui/core": "^5.0.0-rc.4", + "@taiga-ui/i18n": "^5.0.0-rc.4", + "@taiga-ui/kit": "^5.0.0-rc.4", + "@taiga-ui/polymorpheus": "^5.0.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/addon-mobile": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/addon-mobile/-/addon-mobile-4.73.0.tgz", - "integrity": "sha512-5ohDbwkE2ur57eMYmM6Tl7IOvVNxzPiHnZRB5ZcntmDkFp7UBgSOFptelqraL9DP8w5LEmvrshT6ObygRQNe+Q==", + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/addon-mobile/-/addon-mobile-5.0.0-rc.4.tgz", + "integrity": "sha512-EkPCgOSnj7+SmgcQu4HVsmTNsBYiJ5SpuoktgxtZPmfeK4GXEmO1z6Pizotb3EHmyuyNBN69jeS4IPkdplvzsw==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" }, "peerDependencies": { - "@angular/cdk": ">=16.0.0", - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "@ng-web-apis/common": "^4.14.0", - "@taiga-ui/cdk": "^4.73.0", - "@taiga-ui/core": "^4.73.0", - "@taiga-ui/kit": "^4.73.0", - "@taiga-ui/layout": "^4.73.0", - "@taiga-ui/polymorpheus": "^4.9.0", + "@angular/cdk": ">=19.0.0", + "@angular/common": ">=19.0.0", + "@angular/core": ">=19.0.0", + "@ng-web-apis/common": "^5.1.0", + "@ng-web-apis/platform": "^5.1.0", + "@taiga-ui/cdk": "^5.0.0-rc.4", + "@taiga-ui/core": "^5.0.0-rc.4", + "@taiga-ui/kit": "^5.0.0-rc.4", + "@taiga-ui/layout": "^5.0.0-rc.4", + "@taiga-ui/polymorpheus": "^5.0.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/addon-table": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/addon-table/-/addon-table-4.73.0.tgz", - "integrity": "sha512-fRxnCopvanInTdrVtNNXclY6T5u3fU87De564sngAcV9Y8Q1O44bZCyyDE/+jsoz3IIDZUD+2OEZjOGHMWLFOA==", + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/addon-table/-/addon-table-5.0.0-rc.4.tgz", + "integrity": "sha512-j3ICBUoj4XKKvzzIbTQyLdif32+lHSlBozFDQcXhtL1x9C1mWOvidgU9kcsjygs0lEnjoIUTVza59sYMv3UKMQ==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" }, "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "@ng-web-apis/intersection-observer": "^4.14.0", - "@taiga-ui/cdk": "^4.73.0", - "@taiga-ui/core": "^4.73.0", - "@taiga-ui/i18n": "^4.73.0", - "@taiga-ui/kit": "^4.73.0", - "@taiga-ui/polymorpheus": "^4.9.0", + "@angular/common": ">=19.0.0", + "@angular/core": ">=19.0.0", + "@ng-web-apis/intersection-observer": "^5.1.0", + "@taiga-ui/cdk": "^5.0.0-rc.4", + "@taiga-ui/core": "^5.0.0-rc.4", + "@taiga-ui/i18n": "^5.0.0-rc.4", + "@taiga-ui/kit": "^5.0.0-rc.4", + "@taiga-ui/polymorpheus": "^5.0.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/cdk": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/cdk/-/cdk-4.73.0.tgz", - "integrity": "sha512-bNRr5ORof60KevnMINNhbLbj8U9xgEMNvagzTtrtjVfEvCOJE1/+ufCnWjjkEdT/V0fDnbuhKsu16ngctbOhXQ==", + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/cdk/-/cdk-5.0.0-rc.4.tgz", + "integrity": "sha512-eZhqZvK8OE+alI5zJ3z0bQdufj77HCtREOC+Wsv5Fjz1mRZz4X19V3hpISfb6arp1m7kBfIscaPcZi0MuTcbUg==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": "2.8.1" }, "optionalDependencies": { - "@angular-devkit/core": ">=16.0.0", - "@angular-devkit/schematics": ">=16.0.0", - "@schematics/angular": ">=16.0.0", + "@angular-devkit/core": ">=19.0.0", + "@angular-devkit/schematics": ">=19.0.0", + "@schematics/angular": ">=19.0.0", "ng-morph": "^4.8.4", "parse5": "^7.3.0" }, "peerDependencies": { - "@angular/animations": ">=16.0.0", - "@angular/cdk": ">=16.0.0", - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "@angular/forms": ">=16.0.0", - "@ng-web-apis/common": "^4.14.0", - "@ng-web-apis/mutation-observer": "^4.14.0", - "@ng-web-apis/platform": "^4.14.0", - "@ng-web-apis/resize-observer": "^4.14.0", - "@ng-web-apis/screen-orientation": "^4.14.0", - "@taiga-ui/event-plugins": "^4.7.0", - "@taiga-ui/font-watcher": "~0.3.0", - "@taiga-ui/polymorpheus": "^4.9.0", + "@angular/cdk": ">=19.0.0", + "@angular/common": ">=19.0.0", + "@angular/core": ">=19.0.0", + "@angular/forms": ">=19.0.0", + "@ng-web-apis/common": "^5.1.0", + "@ng-web-apis/mutation-observer": "^5.1.0", + "@ng-web-apis/platform": "^5.1.0", + "@ng-web-apis/resize-observer": "^5.1.0", + "@ng-web-apis/screen-orientation": "^5.1.0", + "@taiga-ui/event-plugins": "^5.0.0", + "@taiga-ui/font-watcher": "~0.5.0", + "@taiga-ui/polymorpheus": "^5.0.0", "rxjs": ">=7.0.0" } }, @@ -4324,49 +4296,59 @@ } }, "node_modules/@taiga-ui/core": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/core/-/core-4.73.0.tgz", - "integrity": "sha512-8EyHWgenkWxdfRP1LtqkE/bV/9a3mK8MtVmFxauEjcbeyafnE6MJ7K2KgD+iU9TZsOdH7nuWiA44Sv14t1wcUA==", + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/core/-/core-5.0.0-rc.4.tgz", + "integrity": "sha512-mO1W/4Y743pk3dDg539J3rbAJ5CzNDU+EBCAxYV4wOftpFeSJuCFYvATt6p8XGHtTRCDk6dNXQ1+fkR7PqQ9Yg==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": ">=2.8.1" }, "peerDependencies": { - "@angular/animations": ">=16.0.0", - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "@angular/forms": ">=16.0.0", - "@angular/platform-browser": ">=16.0.0", - "@angular/router": ">=16.0.0", - "@ng-web-apis/common": "^4.14.0", - "@ng-web-apis/mutation-observer": "^4.14.0", - "@taiga-ui/cdk": "^4.73.0", - "@taiga-ui/event-plugins": "^4.7.0", - "@taiga-ui/i18n": "^4.73.0", - "@taiga-ui/polymorpheus": "^4.9.0", + "@angular/common": ">=19.0.0", + "@angular/core": ">=19.0.0", + "@angular/forms": ">=19.0.0", + "@angular/platform-browser": ">=19.0.0", + "@angular/router": ">=19.0.0", + "@ng-web-apis/common": "^5.1.0", + "@ng-web-apis/mutation-observer": "^5.1.0", + "@ng-web-apis/platform": "^5.1.0", + "@taiga-ui/cdk": "^5.0.0-rc.4", + "@taiga-ui/event-plugins": "^5.0.0", + "@taiga-ui/i18n": "^5.0.0-rc.4", + "@taiga-ui/polymorpheus": "^5.0.0", + "@taiga-ui/styles": "^5.0.0-rc.4", "rxjs": ">=7.0.0" } }, + "node_modules/@taiga-ui/design-tokens": { + "version": "0.283.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/design-tokens/-/design-tokens-0.283.0.tgz", + "integrity": "sha512-fuLJYwY5a499hh4Cw+ABcO5bEdhcVP8l/1t6GQZApV6L1NfFQgmnf16vbtvGe/0TFCALpoydUGnELtZuwnrRiA==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + } + }, "node_modules/@taiga-ui/dompurify": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/@taiga-ui/dompurify/-/dompurify-4.1.11.tgz", - "integrity": "sha512-nwskeI/wFe+spuLQdkhVCn/GJBHJamxZ5deZuyto7C4I3O+pF8GaCNJdKM1YG5TZyGz932Qm8uNtBVZ/fZX8sQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@taiga-ui/dompurify/-/dompurify-5.0.1.tgz", + "integrity": "sha512-5OdVzGRMEiy1g/WZUtbPbBt3f7A1lGDWFOm9a4MZGZrGhONv2++uIKLDBkOQchY8ur09vo+QC/pBSRGCIgeQ+g==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.8.1" }, "peerDependencies": { - "@angular/core": ">=16.0.0", - "@angular/platform-browser": ">=16.0.0", - "@types/dompurify": "3.0.5", - "dompurify": "3.1.7" + "@angular/core": ">=19.0.0", + "@angular/platform-browser": ">=19.0.0", + "dompurify": "^3.2.7" } }, "node_modules/@taiga-ui/event-plugins": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/event-plugins/-/event-plugins-4.7.0.tgz", - "integrity": "sha512-j3HPRPR7XxKxgMeytb+r/CNUoLBMVrfdfL8KJr1XiFO9jyEvoC4chFXDXWlkGyUHJIC6wy5VIXlIlI/kpqOiGg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/event-plugins/-/event-plugins-5.0.0.tgz", + "integrity": "sha512-8AxIUn/lX4kwuDlIFmhElgBNtGDgQVC9/F+3O2A29IcMSt9693KRi8qKwToe9p3UuUsT9nnj5YeE11BtJMG0wA==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -4379,116 +4361,128 @@ } }, "node_modules/@taiga-ui/experimental": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/experimental/-/experimental-4.73.0.tgz", - "integrity": "sha512-OFRO4rhWY780gf/iMip7sJJ1BBT2rWG5663Qqu/+6SAF4pyzcgKq5uIAkULQYFBQwqBNyB0zAx3fZAqdQ8m34A==", + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/experimental/-/experimental-5.0.0-rc.4.tgz", + "integrity": "sha512-/kw2uLivfeaNse8DkBABPNpTu3GiZ2R7JB0exBK0Flv0xZ3zZLRuIOMK2uHQqoc3v1zgQaFukXTz6CWuzUJYDA==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" }, "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "@taiga-ui/addon-commerce": "^4.73.0", - "@taiga-ui/cdk": "^4.73.0", - "@taiga-ui/core": "^4.73.0", - "@taiga-ui/kit": "^4.73.0", - "@taiga-ui/layout": "^4.73.0", - "@taiga-ui/polymorpheus": "^4.9.0", + "@angular/common": ">=19.0.0", + "@angular/core": ">=19.0.0", + "@taiga-ui/addon-commerce": "^5.0.0-rc.4", + "@taiga-ui/cdk": "^5.0.0-rc.4", + "@taiga-ui/core": "^5.0.0-rc.4", + "@taiga-ui/kit": "^5.0.0-rc.4", + "@taiga-ui/layout": "^5.0.0-rc.4", + "@taiga-ui/polymorpheus": "^5.0.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/font-watcher": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/font-watcher/-/font-watcher-0.3.0.tgz", - "integrity": "sha512-ldI8XMvpVQEfxtcCzbLKs02QbqyB+qJKHIV/x19Q5mxs+kqrS3Pzm3j4mt8tPnuWhgi4+PHvAk3QLN9zmwcoJg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/font-watcher/-/font-watcher-0.5.0.tgz", + "integrity": "sha512-9QBUh3XT6KOS+pKVy4ggr0CxgiZtbDYlterUNcfXw8cswkIkiUl5VGDQdvmta60iPHqOrOd/Z/7aAUom35vX/g==", "license": "Apache-2.0", "peer": true }, "node_modules/@taiga-ui/i18n": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/i18n/-/i18n-4.73.0.tgz", - "integrity": "sha512-nU7pXeH3+mwQdWZCnXILDAZhRcQ4L/Gl+Y/G/yFpvkEfoCljhVsY0HZZgMSAEGfOSeS7R0ZhZX+9be6uHUvn4w==", + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/i18n/-/i18n-5.0.0-rc.4.tgz", + "integrity": "sha512-3hxhfewlY+5vsLPPl47rtlt47iVqnhDI2uD6waUm0ZqL/0YLhTEowkY2/DHhXoFp4+ZVcyTVRCWGf0G7BnJG+Q==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": ">=2.8.1" }, "peerDependencies": { - "@angular/core": ">=16.0.0", - "@ng-web-apis/common": "^4.14.0", + "@angular/core": ">=19.0.0", + "@ng-web-apis/common": "^5.1.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/icons": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/icons/-/icons-4.73.0.tgz", - "integrity": "sha512-Ae8qTTf18OlAyFgv04aDkQ6T81J0c8NtFtGWMbNnNc2/CtVt2s0e7z6dcAvs0LODNidzXU6jn/OQT4w4PeAe+w==", + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/icons/-/icons-5.0.0-rc.4.tgz", + "integrity": "sha512-2MZLcSf8x2+5yizWVdW9Ual6++zdzU64MXWeBx8zlNVyeedxTww5AFbVFs16ItaeT4YdZM0uZmRY59TmnCP9Rg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" } }, "node_modules/@taiga-ui/kit": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/kit/-/kit-4.73.0.tgz", - "integrity": "sha512-8dypi4hZLi0GEFuraQERLNyKbR56BqQjU7c6p9x7X7iiMt4LpHUVH9+kd+e9irGWMr09SWLx4PFNV+q+T1c8TQ==", + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/kit/-/kit-5.0.0-rc.4.tgz", + "integrity": "sha512-MzK8tSzEl0dkhWcuKxmem/DSF+NnPvsNWJyGEx7hJO3IH0Ukcu806YfsSUld392U/7PZePAFRWKgMADdkQY29g==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": ">=2.8.1" }, "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "@angular/forms": ">=16.0.0", - "@angular/router": ">=16.0.0", - "@maskito/angular": "^3.11.1", - "@maskito/core": "^3.11.1", - "@maskito/kit": "^3.11.1", - "@maskito/phone": "^3.11.1", - "@ng-web-apis/common": "^4.14.0", - "@ng-web-apis/intersection-observer": "^4.14.0", - "@ng-web-apis/mutation-observer": "^4.14.0", - "@ng-web-apis/resize-observer": "^4.14.0", - "@taiga-ui/cdk": "^4.73.0", - "@taiga-ui/core": "^4.73.0", - "@taiga-ui/i18n": "^4.73.0", - "@taiga-ui/polymorpheus": "^4.9.0", + "@angular/common": ">=19.0.0", + "@angular/core": ">=19.0.0", + "@angular/forms": ">=19.0.0", + "@angular/router": ">=19.0.0", + "@maskito/angular": "^5.1.1", + "@maskito/core": "^5.1.1", + "@maskito/kit": "^5.1.1", + "@maskito/phone": "^5.1.1", + "@ng-web-apis/common": "^5.1.0", + "@ng-web-apis/intersection-observer": "^5.1.0", + "@ng-web-apis/mutation-observer": "^5.1.0", + "@ng-web-apis/platform": "^5.1.0", + "@ng-web-apis/resize-observer": "^5.1.0", + "@taiga-ui/cdk": "^5.0.0-rc.4", + "@taiga-ui/core": "^5.0.0-rc.4", + "@taiga-ui/i18n": "^5.0.0-rc.4", + "@taiga-ui/polymorpheus": "^5.0.0", + "@taiga-ui/styles": "^5.0.0-rc.4", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/layout": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/layout/-/layout-4.73.0.tgz", - "integrity": "sha512-JX2DRCdGw3ayvW07RtI7MjrceO7m7/0wj2RfkjT2Pa93elWooS85lDVy88tlVfcfm/bV2ZGwbemyecAwNjk/yQ==", + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/layout/-/layout-5.0.0-rc.4.tgz", + "integrity": "sha512-sKuksa89xxeIHgx3QchpTorySsjz+XMhcYi5ix/Mh/u+vgDxrcLCYGWAx9fcG/3mGTaCIIEMfaEQDs28jb9Ptw==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": ">=2.8.1" }, "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "@taiga-ui/cdk": "^4.73.0", - "@taiga-ui/core": "^4.73.0", - "@taiga-ui/kit": "^4.73.0", - "@taiga-ui/polymorpheus": "^4.9.0", + "@angular/common": ">=19.0.0", + "@angular/core": ">=19.0.0", + "@taiga-ui/cdk": "^5.0.0-rc.4", + "@taiga-ui/core": "^5.0.0-rc.4", + "@taiga-ui/kit": "^5.0.0-rc.4", + "@taiga-ui/polymorpheus": "^5.0.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/polymorpheus": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/polymorpheus/-/polymorpheus-4.9.0.tgz", - "integrity": "sha512-TbIIwslbEnxunKuL9OyPZdmefrvJEK6HYiADEKQHUMUs4Pk2UbhMckUieURo83yPDamk/Mww+Nu/g60J/4uh2w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/polymorpheus/-/polymorpheus-5.0.0.tgz", + "integrity": "sha512-FRus7OgxYyRuETB17g1/YXYs8PAeF4x8+K4ZDfD3Ede8Vxv/XslAYZvf/Ro0wag6Uiy0kAP4bvSaIGPS1Y8Fyg==", "license": "Apache-2.0", "peer": true, "dependencies": { "tslib": "^2.8.1" }, "peerDependencies": { - "@angular/core": ">=16.0.0", - "@angular/platform-browser": ">=16.0.0" + "@angular/core": ">=19.0.0", + "@angular/platform-browser": ">=19.0.0" + } + }, + "node_modules/@taiga-ui/styles": { + "version": "5.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/styles/-/styles-5.0.0-rc.4.tgz", + "integrity": "sha512-xAiHSlVFIv6Ti5BEE3AIkjt0zUW5jibeWnB+P7I9D7+E3vV0n/XlpX0SBHKK6DMdrVaPgURzNQnjSrwwtmkWxQ==", + "license": "Apache-2.0", + "peer": true, + "peerDependencies": { + "@taiga-ui/design-tokens": "~0.283.0" } }, "node_modules/@ts-morph/common": { @@ -4622,15 +4616,12 @@ "tslib": "^2.4.0" } }, - "node_modules/@types/dompurify": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", - "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", + "node_modules/@types/dom-speech-recognition": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@types/dom-speech-recognition/-/dom-speech-recognition-0.0.7.tgz", + "integrity": "sha512-NjiUoJbBlKhyufNsMZLSp+pbPNtPAFnR738RCJvtZy/HVQ2TZjmqpMyaeOSMXgxdfZM60nt8QGbtfmQrJAH2sw==", "license": "MIT", - "peer": true, - "dependencies": { - "@types/trusted-types": "*" - } + "peer": true }, "node_modules/@types/estree": { "version": "0.0.51", @@ -4674,9 +4665,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.19.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.11.tgz", - "integrity": "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==", + "version": "22.19.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz", + "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", "dev": true, "license": "MIT", "peer": true, @@ -4715,7 +4706,8 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/@types/uuid": { "version": "8.3.4", @@ -4769,9 +4761,9 @@ } }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", "bin": { @@ -4782,9 +4774,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", "dev": true, "license": "MIT", "dependencies": { @@ -5031,13 +5023,16 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.9.19", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", - "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "version": "2.10.8", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.8.tgz", + "integrity": "sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==", "dev": true, "license": "Apache-2.0", "bin": { - "baseline-browser-mapping": "dist/cli.js" + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/basic-auth": { @@ -5255,9 +5250,9 @@ } }, "node_modules/cacache/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "devOptional": true, "license": "BlueOak-1.0.0", "engines": { @@ -5331,9 +5326,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001769", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", - "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "version": "1.0.30001779", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001779.tgz", + "integrity": "sha512-U5og2PN7V4DMgF50YPNtnZJGWVLFjjsN3zb6uMT5VGYIewieDj1upwfuVNXf4Kor+89c3iCRJnSzMD5LmTvsfA==", "dev": true, "funding": [ { @@ -5498,56 +5493,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", - "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.3.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/slice-ansi": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", - "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.3", - "is-fullwidth-code-point": "^5.1.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", - "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.5.0", - "strip-ansi": "^7.1.2" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-width": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", @@ -5573,6 +5518,24 @@ "node": ">=20" } }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", @@ -5706,13 +5669,16 @@ } }, "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", "dev": true, "license": "MIT", "dependencies": { - "is-what": "^3.14.1" + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" }, "funding": { "url": "https://github.com/sponsors/mesqueeb" @@ -6089,11 +6055,14 @@ } }, "node_modules/dompurify": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz", - "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", + "integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==", "license": "(MPL-2.0 OR Apache-2.0)", - "peer": true + "peer": true, + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } }, "node_modules/domutils": { "version": "3.2.2", @@ -6139,9 +6108,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.286", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", - "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "version": "1.5.313", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.313.tgz", + "integrity": "sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==", "dev": true, "license": "ISC" }, @@ -6475,9 +6444,9 @@ } }, "node_modules/express-rate-limit": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.0.tgz", - "integrity": "sha512-KJzBawY6fB9FiZGdE/0aftepZ91YlaGIrV8vgblRM3J8X+dHx/aiowJWwkx6LIGyuqGiANsjSwwrbb8mifOJ4Q==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz", + "integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==", "devOptional": true, "license": "MIT", "dependencies": { @@ -6898,18 +6867,18 @@ } }, "node_modules/glob": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz", - "integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "devOptional": true, "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.2.0", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6936,29 +6905,26 @@ "license": "BSD-2-Clause" }, "node_modules/glob/node_modules/balanced-match": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", - "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "devOptional": true, "license": "MIT", - "dependencies": { - "jackspeak": "^4.2.3" - }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" } }, "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", - "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "devOptional": true, "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" } }, "node_modules/glob/node_modules/minimatch": { @@ -7103,9 +7069,9 @@ } }, "node_modules/hono": { - "version": "4.12.5", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.5.tgz", - "integrity": "sha512-3qq+FUBtlTHhtYxbxheZgY8NIFnkkC/MR8u5TTsr7YZ3wixryQ3cCwn3iZbg8p8B88iDBBAYSfZDS75t8MN7Vg==", + "version": "4.12.8", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.8.tgz", + "integrity": "sha512-VJCEvtrezO1IAR+kqEYnxUOoStaQPGrCmX3j4wDTNOcD1uRPFpGlwQUIW8niPuvHXaTUxeOUl5MMDGrl+tmO9A==", "devOptional": true, "license": "MIT", "peer": true, @@ -7127,9 +7093,9 @@ } }, "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "devOptional": true, "license": "BlueOak-1.0.0", "engines": { @@ -7685,13 +7651,16 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "devOptional": true, "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.1" + }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7799,16 +7768,22 @@ } }, "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } }, "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, "license": "MIT", "dependencies": { @@ -7861,22 +7836,6 @@ "node": ">=10" } }, - "node_modules/jackspeak": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", - "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", - "devOptional": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^9.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/jose": { "version": "4.15.9", "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", @@ -7971,23 +7930,21 @@ "license": "MIT" }, "node_modules/less": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/less/-/less-4.5.1.tgz", - "integrity": "sha512-UKgI3/KON4u6ngSsnDADsUERqhZknsVZbnuzlRZXLQCmfC/MDld42fTydUE9B+Mla1AL6SJ/Pp6SlEFi/AVGfw==", + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/less/-/less-4.6.4.tgz", + "integrity": "sha512-OJmO5+HxZLLw0RLzkqaNHzcgEAQG7C0y3aMbwtCzIUFZsLMNNq/1IdAdHEycQ58CwUO3jPTHmoN+tE5I7FQxNg==", "dev": true, - "hasInstallScript": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" + "copy-anything": "^3.0.5", + "parse-node-version": "^1.0.1" }, "bin": { "lessc": "bin/lessc" }, "engines": { - "node": ">=14" + "node": ">=18" }, "optionalDependencies": { "errno": "^0.1.1", @@ -8025,9 +7982,9 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.12.36", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.36.tgz", - "integrity": "sha512-woWhKMAVx1fzzUnMCyOzglgSgf6/AFHLASdOBcchYCyvWSGWt12imw3iu2hdI5d4dGZRsNWAmWiz37sDKUPaRQ==", + "version": "1.12.40", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.40.tgz", + "integrity": "sha512-HKGs7GowShNls3Zh+7DTr6wYpPk5jC78l508yQQY3e8ZgJChM3A9JZghmMJZuK+5bogSfuTafpjksGSR3aMIEg==", "license": "MIT", "peer": true }, @@ -8180,6 +8137,19 @@ "dev": true, "license": "MIT" }, + "node_modules/lint-staged/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lint-staged/node_modules/listr2": { "version": "6.6.1", "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", @@ -8283,6 +8253,23 @@ "dev": true, "license": "ISC" }, + "node_modules/lint-staged/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, "node_modules/lint-staged/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -8335,7 +8322,6 @@ "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "cli-truncate": "^5.0.0", "colorette": "^2.0.20", @@ -8355,6 +8341,24 @@ "devOptional": true, "license": "MIT" }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/listr2/node_modules/wrap-ansi": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", @@ -8460,22 +8464,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", - "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.3.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/log-update/node_modules/slice-ansi": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", @@ -8493,6 +8481,24 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/log-update/node_modules/wrap-ansi": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", @@ -8794,11 +8800,11 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "devOptional": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -8966,9 +8972,9 @@ "license": "MIT" }, "node_modules/msgpackr": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.8.tgz", - "integrity": "sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA==", + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.9.tgz", + "integrity": "sha512-FkoAAyyA6HM8wL882EcEyFZ9s7hVADSwG9xrVx3dxxNQAtgADTrJoEWivID82Iv1zWDsv/OtbrrcZAzGzOMdNw==", "dev": true, "license": "MIT", "optional": true, @@ -9082,9 +9088,9 @@ } }, "node_modules/needle": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", - "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.5.0.tgz", + "integrity": "sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==", "dev": true, "license": "MIT", "optional": true, @@ -9418,9 +9424,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", "dev": true, "license": "MIT" }, @@ -9716,22 +9722,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/string-width": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", - "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.5.0", - "strip-ansi": "^7.1.2" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ordered-binary": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.1.tgz", @@ -10008,9 +9998,9 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "devOptional": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -10018,16 +10008,16 @@ "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "devOptional": true, "license": "BlueOak-1.0.0", "engines": { @@ -10214,9 +10204,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", "dev": true, "funding": [ { @@ -10536,9 +10526,9 @@ } }, "node_modules/qs": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "devOptional": true, "license": "BSD-3-Clause", "dependencies": { @@ -10666,13 +10656,13 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -10756,13 +10746,13 @@ "license": "MIT" }, "node_modules/rimraf": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.2.tgz", - "integrity": "sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", + "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "glob": "^13.0.0", + "glob": "^13.0.3", "package-json-from-dist": "^1.0.1" }, "bin": { @@ -10867,12 +10857,15 @@ } }, "node_modules/rollup-plugin-dts": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.3.0.tgz", - "integrity": "sha512-d0UrqxYd8KyZ6i3M2Nx7WOMy708qsV/7fTHMHxCMCBOAe3V/U7OMPu5GkX8hC+cmkHhzGnfeYongl1IgiooddA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.4.0.tgz", + "integrity": "sha512-2i00A5UoPCoDecLEs13Eu105QegSGfrbp1sDeUj/54LKGmv6XFHDxWKC6Wsb4BobGUWYVCWWjmjAc8bXXbXH/Q==", "dev": true, "license": "LGPL-3.0-only", "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "@jridgewell/sourcemap-codec": "^1.5.5", + "convert-source-map": "^2.0.0", "magic-string": "^0.30.21" }, "engines": { @@ -10882,13 +10875,20 @@ "url": "https://github.com/sponsors/Swatinem" }, "optionalDependencies": { - "@babel/code-frame": "^7.27.1" + "@babel/code-frame": "^7.29.0" }, "peerDependencies": { "rollup": "^3.29.4 || ^4", - "typescript": "^4.5 || ^5.0" + "typescript": "^4.5 || ^5.0 || ^6.0" } }, + "node_modules/rollup-plugin-dts/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, "node_modules/rollup/node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -11343,17 +11343,17 @@ } }, "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", + "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", + "devOptional": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" }, "engines": { - "node": ">=12" + "node": ">=20" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" @@ -11527,30 +11527,28 @@ } }, "node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "devOptional": true, + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", + "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -11599,9 +11597,9 @@ } }, "node_modules/tar": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.10.tgz", - "integrity": "sha512-8mOPs1//5q/rlkNSPcCegA6hiHJYDmSLEI8aMH/CdSQJNWztHC9WHNam5zdQlfpTwB9Xp7IBEsHfV5LKMJGVAw==", + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", + "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", "devOptional": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -11643,21 +11641,21 @@ } }, "node_modules/tldts": { - "version": "7.0.23", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.23.tgz", - "integrity": "sha512-ASdhgQIBSay0R/eXggAkQ53G4nTJqTXqC2kbaBbdDwM7SkjyZyO0OaaN1/FH7U/yCeqOHDwFO5j8+Os/IS1dXw==", + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.25.tgz", + "integrity": "sha512-keinCnPbwXEUG3ilrWQZU+CqcTTzHq9m2HhoUP2l7Xmi8l1LuijAXLpAJ5zRW+ifKTNscs4NdCkfkDCBYm352w==", "license": "MIT", "dependencies": { - "tldts-core": "^7.0.23" + "tldts-core": "^7.0.25" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "7.0.23", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.23.tgz", - "integrity": "sha512-0g9vrtDQLrNIiCj22HSe9d4mLVG3g5ph5DZ8zCKBr4OtrspmNB6ss7hVyzArAeE88ceZocIEGkyW1Ime7fxPtQ==", + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.25.tgz", + "integrity": "sha512-ZjCZK0rppSBu7rjHYDYsEaMOIbbT+nWF57hKkv4IUmZWBNrBWBOjIElc0mKRgLM8bm7x/BBlof6t2gi/Oq/Asw==", "license": "MIT" }, "node_modules/to-buffer": { @@ -12526,6 +12524,24 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, "node_modules/yargs": { "version": "18.0.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", @@ -12554,6 +12570,24 @@ "node": "^20.19.0 || ^22.12.0 || >=23" } }, + "node_modules/yargs/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/web/package.json b/web/package.json index 3b22c4817..a4f9635ca 100644 --- a/web/package.json +++ b/web/package.json @@ -33,7 +33,6 @@ "format:check": "prettier --check projects/" }, "dependencies": { - "@angular/animations": "^21.2.1", "@angular/cdk": "^21.2.1", "@angular/common": "^21.2.1", "@angular/compiler": "^21.2.1", @@ -48,19 +47,19 @@ "@noble/hashes": "^1.4.0", "@start9labs/argon2": "^0.3.0", "@start9labs/start-sdk": "file:../sdk/baseDist", - "@taiga-ui/addon-charts": "4.73.0", - "@taiga-ui/addon-commerce": "4.73.0", - "@taiga-ui/addon-mobile": "4.73.0", - "@taiga-ui/addon-table": "4.73.0", - "@taiga-ui/cdk": "4.73.0", - "@taiga-ui/core": "4.73.0", - "@taiga-ui/dompurify": "4.1.11", - "@taiga-ui/event-plugins": "4.7.0", - "@taiga-ui/experimental": "4.73.0", - "@taiga-ui/icons": "4.73.0", - "@taiga-ui/kit": "4.73.0", - "@taiga-ui/layout": "4.73.0", - "@taiga-ui/polymorpheus": "4.9.0", + "@taiga-ui/addon-charts": "5.0.0-rc.4", + "@taiga-ui/addon-commerce": "5.0.0-rc.4", + "@taiga-ui/addon-mobile": "5.0.0-rc.4", + "@taiga-ui/addon-table": "5.0.0-rc.4", + "@taiga-ui/cdk": "5.0.0-rc.4", + "@taiga-ui/core": "5.0.0-rc.4", + "@taiga-ui/dompurify": "5.0.1", + "@taiga-ui/event-plugins": "5.0.0", + "@taiga-ui/experimental": "5.0.0-rc.4", + "@taiga-ui/icons": "5.0.0-rc.4", + "@taiga-ui/kit": "5.0.0-rc.4", + "@taiga-ui/layout": "5.0.0-rc.4", + "@taiga-ui/polymorpheus": "5.0.0", "ansi-to-html": "^0.7.2", "base64-js": "^1.5.1", "buffer": "^6.0.3", @@ -70,7 +69,7 @@ "cron": "^2.2.0", "cronstrue": "^2.21.0", "deep-equality-data-structures": "1.5.1", - "dompurify": "^3.1.7", + "dompurify": "^3.3.2", "fast-json-patch": "^3.1.1", "fuse.js": "^6.4.6", "jose": "^4.9.0", @@ -95,7 +94,6 @@ "@angular/cli": "^21.2.1", "@angular/compiler-cli": "^21.2.1", "@angular/language-service": "^21.2.1", - "@types/dompurify": "3.0.5", "@types/estree": "^0.0.51", "@types/js-yaml": "^4.0.5", "@types/marked": "^4.0.3", diff --git a/web/projects/marketplace/src/components/menu/menu.component.scss b/web/projects/marketplace/src/components/menu/menu.component.scss index e35ff0f08..2304f9686 100644 --- a/web/projects/marketplace/src/components/menu/menu.component.scss +++ b/web/projects/marketplace/src/components/menu/menu.component.scss @@ -1,4 +1,4 @@ -@use '@taiga-ui/core/styles/taiga-ui-local' as taiga; +@use '@taiga-ui/styles/utils' as taiga; :host { margin: 0; diff --git a/web/projects/marketplace/src/pages/show/dependencies/dependency-item.component.ts b/web/projects/marketplace/src/pages/show/dependencies/dependency-item.component.ts index 102de14db..685f7b016 100644 --- a/web/projects/marketplace/src/pages/show/dependencies/dependency-item.component.ts +++ b/web/projects/marketplace/src/pages/show/dependencies/dependency-item.component.ts @@ -15,12 +15,9 @@ import { MarketplacePkgBase } from '../../../types' selector: 'marketplace-dep-item', template: `
- + + +
@@ -107,8 +104,10 @@ export class MarketplaceDepItemComponent { dep!: KeyValue getImage(key: string) { - const icon = this.pkg.dependencyMetadata[key]?.icon - return icon ? icon : 'assets/img/service-icons/fallback.png' + return ( + this.pkg.dependencyMetadata[key]?.icon || + 'assets/img/service-icons/fallback.png' + ) } getTitle(key: string): string { diff --git a/web/projects/marketplace/src/pages/show/flavors.component.ts b/web/projects/marketplace/src/pages/show/flavors.component.ts index acec8c3d1..bea8286e3 100644 --- a/web/projects/marketplace/src/pages/show/flavors.component.ts +++ b/web/projects/marketplace/src/pages/show/flavors.component.ts @@ -1,9 +1,8 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core' import { RouterLink } from '@angular/router' import { i18nPipe, TrustUrlPipe } from '@start9labs/shared' -import { TuiTitle } from '@taiga-ui/core' +import { TuiTitle, TuiCell } from '@taiga-ui/core' import { TuiAvatar } from '@taiga-ui/kit' -import { TuiCell } from '@taiga-ui/layout' import { MarketplacePkg } from '../../types' @Component({ @@ -21,10 +20,9 @@ import { MarketplacePkg } from '../../types' [queryParams]="{ id: pkg.id, flavor: pkg.flavor }" queryParamsHandling="merge" > - + + + {{ pkg.title }} {{ pkg.version }} diff --git a/web/projects/marketplace/src/pages/show/screenshots.component.ts b/web/projects/marketplace/src/pages/show/screenshots.component.ts index 1b980ea04..d56f0cbc6 100644 --- a/web/projects/marketplace/src/pages/show/screenshots.component.ts +++ b/web/projects/marketplace/src/pages/show/screenshots.component.ts @@ -4,7 +4,7 @@ import { inject, Input, } from '@angular/core' -import { TUI_IS_MOBILE } from '@taiga-ui/cdk' +import { WA_IS_MOBILE } from '@ng-web-apis/platform' import { TuiButton, TuiDialogContext, TuiDialogService } from '@taiga-ui/core' import { TuiCarousel } from '@taiga-ui/kit' import { PolymorpheusContent } from '@taiga-ui/polymorpheus' @@ -130,7 +130,7 @@ export class MarketplacePackageScreenshotComponent { index = 0 - isMobile = inject(TUI_IS_MOBILE) + isMobile = inject(WA_IS_MOBILE) presentModalImg(content: PolymorpheusContent) { this.dialogs diff --git a/web/projects/setup-wizard/src/app/app.component.ts b/web/projects/setup-wizard/src/app/app.component.ts index 5cb62eb9b..839a68e74 100644 --- a/web/projects/setup-wizard/src/app/app.component.ts +++ b/web/projects/setup-wizard/src/app/app.component.ts @@ -8,7 +8,7 @@ import { StateService } from './services/state.service' @Component({ selector: 'app-root', - template: '', + template: '', imports: [TuiRoot, RouterOutlet], }) export class AppComponent implements OnInit { diff --git a/web/projects/setup-wizard/src/app/app.config.ts b/web/projects/setup-wizard/src/app/app.config.ts index ac29d8862..7425d0892 100644 --- a/web/projects/setup-wizard/src/app/app.config.ts +++ b/web/projects/setup-wizard/src/app/app.config.ts @@ -10,7 +10,6 @@ import { provideZoneChangeDetection, signal, } from '@angular/core' -import { provideAnimations } from '@angular/platform-browser/animations' import { PreloadAllModules, provideRouter, @@ -29,8 +28,10 @@ import { import { tuiButtonOptionsProvider, tuiTextfieldOptionsProvider, + provideTaiga, + tuiHintOptionsProvider, + tuiDialogOptionsProvider, } from '@taiga-ui/core' -import { provideEventPlugins } from '@taiga-ui/event-plugins' import { ROUTES } from './app.routes' import { ApiService } from './services/api.service' @@ -47,8 +48,9 @@ const version = require('../../../../package.json').version export const APP_CONFIG: ApplicationConfig = { providers: [ provideZoneChangeDetection(), - provideAnimations(), - provideEventPlugins(), + provideTaiga({ mode: 'dark' }), + tuiHintOptionsProvider({ appearance: 'primary-grayscale' }), + tuiDialogOptionsProvider({ size: 's' }), provideRouter( ROUTES, withDisabledInitialNavigation(), diff --git a/web/projects/setup-wizard/src/app/components/cifs.component.ts b/web/projects/setup-wizard/src/app/components/cifs.component.ts index ccd97ea49..779e12465 100644 --- a/web/projects/setup-wizard/src/app/components/cifs.component.ts +++ b/web/projects/setup-wizard/src/app/components/cifs.component.ts @@ -13,14 +13,10 @@ import { TuiDialogContext, TuiError, TuiIcon, - TuiTextfield, + TuiInput, + tuiValidationErrorsProvider, } from '@taiga-ui/core' -import { - TUI_VALIDATION_ERRORS, - TuiButtonLoading, - TuiFieldErrorPipe, - TuiPassword, -} from '@taiga-ui/kit' +import { TuiButtonLoading, TuiPassword } from '@taiga-ui/kit' import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { ApiService } from '../services/api.service' import { StartOSDiskInfoWithId } from '../types' @@ -36,42 +32,36 @@ export interface CifsResult { - + - + - + - + @@ -107,20 +97,16 @@ export interface CifsResult { ReactiveFormsModule, TuiButton, TuiButtonLoading, - TuiTextfield, + TuiInput, TuiPassword, TuiError, - TuiFieldErrorPipe, TuiIcon, i18nPipe, ], providers: [ - { - provide: TUI_VALIDATION_ERRORS, - useValue: { - required: 'This field is required', - }, - }, + tuiValidationErrorsProvider({ + required: 'This field is required', + }), ], }) export class CifsComponent { @@ -183,10 +169,7 @@ export class CifsComponent { this.dialogs .openAlert( 'Unable to connect to network folder. Ensure (1) target computer is connected to LAN, (2) target folder is being shared, and (3) hostname, path, and credentials are accurate.', - { - label: 'Connection Failed', - size: 's', - }, + { label: 'Connection Failed' }, ) .subscribe() } diff --git a/web/projects/setup-wizard/src/app/components/preserve-overwrite.dialog.ts b/web/projects/setup-wizard/src/app/components/preserve-overwrite.dialog.ts index fdb111456..0cd4dace2 100644 --- a/web/projects/setup-wizard/src/app/components/preserve-overwrite.dialog.ts +++ b/web/projects/setup-wizard/src/app/components/preserve-overwrite.dialog.ts @@ -1,13 +1,19 @@ -import { Component, inject } from '@angular/core' +import { Component } from '@angular/core' import { i18nPipe } from '@start9labs/shared' -import { TuiButton } from '@taiga-ui/core' +import { TuiButton, TuiTitle } from '@taiga-ui/core' import { TuiDialogContext } from '@taiga-ui/core' -import { injectContext } from '@taiga-ui/polymorpheus' +import { TuiHeader } from '@taiga-ui/layout' +import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus' @Component({ - imports: [TuiButton, i18nPipe], + imports: [TuiButton, TuiHeader, TuiTitle, i18nPipe], template: ` -

{{ 'This drive contains existing StartOS data.' | i18n }}

+
+
+

{{ 'StartOS Data Detected' | i18n }}

+

{{ 'This drive contains existing StartOS data.' | i18n }}

+
+
  • {{ 'Preserve' | i18n }} @@ -28,30 +34,19 @@ import { injectContext } from '@taiga-ui/polymorpheus' `, - styles: ` - p { - margin: 0 0 0.75rem; - } - - footer { - display: flex; - margin-top: 2rem; - gap: 0.5rem; - flex-direction: column-reverse; - } - - .preserve-btn { - background: var(--tui-status-positive) !important; - } - `, }) export class PreserveOverwriteDialog { protected readonly context = injectContext>() } + +export const PRESERVE_OVERWRITE = new PolymorpheusComponent( + PreserveOverwriteDialog, +) diff --git a/web/projects/setup-wizard/src/app/components/select-network-backup.dialog.ts b/web/projects/setup-wizard/src/app/components/select-network-backup.dialog.ts index 6cddadde7..86eef2894 100644 --- a/web/projects/setup-wizard/src/app/components/select-network-backup.dialog.ts +++ b/web/projects/setup-wizard/src/app/components/select-network-backup.dialog.ts @@ -1,8 +1,9 @@ -import { Component, inject } from '@angular/core' +import { Component } from '@angular/core' import { FormsModule } from '@angular/forms' import { i18nPipe } from '@start9labs/shared' -import { TuiDialogContext, TuiTextfield } from '@taiga-ui/core' +import { TuiDialogContext, TuiTitle } from '@taiga-ui/core' import { TuiDataListWrapper, TuiSelect } from '@taiga-ui/kit' +import { TuiHeader } from '@taiga-ui/layout' import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { StartOSDiskInfoWithId } from '../types' @@ -11,36 +12,48 @@ interface Data { } @Component({ - imports: [FormsModule, TuiTextfield, TuiSelect, TuiDataListWrapper, i18nPipe], + imports: [ + FormsModule, + TuiSelect, + TuiDataListWrapper, + i18nPipe, + TuiHeader, + TuiTitle, + ], template: ` -

    {{ 'Multiple backups found. Select which one to restore.' | i18n }}

    +
    +
    +

    {{ 'Select Network Backup' | i18n }}

    +

    + {{ 'Multiple backups found. Select which one to restore.' | i18n }} +

    +
    +
    -
    - {{ server.id }} + + {{ server.id }} - {{ server['eos-version'] }} -
    + @if (server['eos-version']) { + + {{ server['eos-version'] }} + + } +
    `, styles: ` - .server-item { - display: flex; - flex-direction: column; - - small { - opacity: 0.7; - } + div { + margin-block-end: 1rem; } `, }) diff --git a/web/projects/setup-wizard/src/app/components/unlock-password.dialog.ts b/web/projects/setup-wizard/src/app/components/unlock-password.dialog.ts index 2a536efb2..a02fdbf33 100644 --- a/web/projects/setup-wizard/src/app/components/unlock-password.dialog.ts +++ b/web/projects/setup-wizard/src/app/components/unlock-password.dialog.ts @@ -1,32 +1,27 @@ import { Component } from '@angular/core' import { FormsModule } from '@angular/forms' import { i18nPipe } from '@start9labs/shared' -import { - TuiButton, - TuiDialogContext, - TuiIcon, - TuiTextfield, -} from '@taiga-ui/core' +import { TuiButton, TuiDialogContext, TuiIcon, TuiInput } from '@taiga-ui/core' import { TuiPassword } from '@taiga-ui/kit' -import { injectContext } from '@taiga-ui/polymorpheus' +import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus' @Component({ - imports: [ - FormsModule, - TuiButton, - TuiTextfield, - TuiPassword, - TuiIcon, - i18nPipe, - ], + imports: [FormsModule, TuiButton, TuiInput, TuiPassword, TuiIcon, i18nPipe], template: ` -

    - {{ 'Enter the password that was used to encrypt this backup.' | i18n }} -

    +
    +
    +

    {{ 'Unlock Backup' | i18n }}

    +

    + {{ + 'Enter the password that was used to encrypt this backup.' | i18n + }} +

    +
    +
    } @else if (drives.length === 0) { -

    +

    {{ 'No drives found. Please connect a drive and click Refresh.' | i18n @@ -70,8 +75,7 @@ import { PreserveOverwriteDialog } from '../components/preserve-overwrite.dialog } @if (!mobile) { @@ -100,36 +104,27 @@ import { PreserveOverwriteDialog } from '../components/preserve-overwrite.dialog } @if (!mobile) { } @if (preserveData === true) { - + } @if (preserveData === false) { - + } -

    - - {{ driveName(drive) }} - - + + {{ driveName(drive) }} + {{ formatCapacity(drive.capacity) }} · {{ drive.logicalname }} - -
    + + } @@ -152,19 +147,8 @@ import { PreserveOverwriteDialog } from '../components/preserve-overwrite.dialog } `, styles: ` - .no-drives { - text-align: center; - color: var(--tui-text-secondary); - padding: 2rem; - } - - .drive-item { - display: flex; - flex-direction: column; - - small { - opacity: 0.7; - } + tui-icon:not([tuiTooltip]) { + pointer-events: none; } `, imports: [ @@ -173,7 +157,8 @@ import { PreserveOverwriteDialog } from '../components/preserve-overwrite.dialog TuiButton, TuiIcon, TuiLoader, - TuiTextfield, + TuiInput, + TuiNotification, TuiSelect, TuiDataListWrapper, TuiTooltip, @@ -186,13 +171,13 @@ export default class DrivesPage { private readonly api = inject(ApiService) private readonly router = inject(Router) private readonly dialogs = inject(DialogService) - private readonly loader = inject(LoadingService) + private readonly loader = inject(TuiNotificationMiddleService) private readonly errorService = inject(ErrorService) private readonly stateService = inject(StateService) private readonly cdr = inject(ChangeDetectorRef) private readonly i18n = inject(i18nPipe) - protected readonly mobile = inject(TUI_IS_MOBILE) + protected readonly mobile = inject(WA_IS_MOBILE) @HostListener('document:keydown', ['$event']) onKeydown(event: KeyboardEvent) { @@ -308,38 +293,27 @@ export default class DrivesPage { private showPreserveOverwriteDialog() { let selectionMade = false - this.dialogs - .openComponent( - new PolymorpheusComponent(PreserveOverwriteDialog), - { - label: 'StartOS Data Detected', - size: 's', - dismissible: true, - closeable: true, - }, - ) - .subscribe({ - next: preserve => { - selectionMade = true - this.preserveData = preserve + this.dialogs.openComponent(PRESERVE_OVERWRITE).subscribe({ + next: preserve => { + selectionMade = true + this.preserveData = preserve + this.cdr.markForCheck() + }, + complete: () => { + if (!selectionMade) { + // Dialog was dismissed without selection - clear the data drive + this.selectedDataDrive = null + this.preserveData = null this.cdr.markForCheck() - }, - complete: () => { - if (!selectionMade) { - // Dialog was dismissed without selection - clear the data drive - this.selectedDataDrive = null - this.preserveData = null - this.cdr.markForCheck() - } - }, - }) + } + }, + }) } private showOsDriveWarning() { this.dialogs .openConfirm({ label: 'Warning', - size: 's', data: { content: `
    • ${this.i18n.transform('Data on the OS drive may be overwritten.')}
    • @@ -363,7 +337,6 @@ export default class DrivesPage { this.dialogs .openConfirm({ label: 'Warning', - size: 's', data: { content: message as i18nKey, yes: 'Continue', @@ -398,10 +371,9 @@ export default class DrivesPage { this.dialogSub = this.dialogs .openAlert('StartOS has been installed successfully.', { label: 'Installation Complete!', - size: 's', dismissible: false, - closeable: true, - data: { button: this.i18n.transform('Continue to Setup') }, + closable: true, + data: this.i18n.transform('Continue to Setup'), }) .subscribe({ complete: () => { diff --git a/web/projects/setup-wizard/src/app/pages/home.page.ts b/web/projects/setup-wizard/src/app/pages/home.page.ts index 43cc1ed21..578b9c641 100644 --- a/web/projects/setup-wizard/src/app/pages/home.page.ts +++ b/web/projects/setup-wizard/src/app/pages/home.page.ts @@ -1,9 +1,9 @@ import { Component, inject } from '@angular/core' import { Router } from '@angular/router' import { i18nPipe } from '@start9labs/shared' -import { TuiAppearance, TuiTitle } from '@taiga-ui/core' +import { TuiTitle, TuiCell } from '@taiga-ui/core' import { TuiAvatar } from '@taiga-ui/kit' -import { TuiCardLarge, TuiCell, TuiHeader } from '@taiga-ui/layout' +import { TuiCardLarge, TuiHeader } from '@taiga-ui/layout' import { StateService } from '../services/state.service' @Component({ @@ -14,7 +14,7 @@ import { StateService } from '../services/state.service'
`, - imports: [ - TuiAppearance, - TuiCardLarge, - TuiHeader, - TuiCell, - TuiTitle, - TuiAvatar, - i18nPipe, - ], + imports: [TuiCardLarge, TuiHeader, TuiCell, TuiTitle, TuiAvatar, i18nPipe], }) export default class HomePage { private readonly router = inject(Router) diff --git a/web/projects/setup-wizard/src/app/pages/keyboard.page.ts b/web/projects/setup-wizard/src/app/pages/keyboard.page.ts index 082edc3dc..2a9b4fca5 100644 --- a/web/projects/setup-wizard/src/app/pages/keyboard.page.ts +++ b/web/projects/setup-wizard/src/app/pages/keyboard.page.ts @@ -6,8 +6,8 @@ import { Keyboard, LanguageCode, } from '@start9labs/shared' -import { TUI_IS_MOBILE } from '@taiga-ui/cdk' -import { TuiButton, TuiTextfield, TuiTitle } from '@taiga-ui/core' +import { WA_IS_MOBILE } from '@ng-web-apis/platform' +import { TuiButton, TuiTitle } from '@taiga-ui/core' import { TuiButtonLoading, TuiChevron, @@ -36,11 +36,7 @@ import { StateService } from '../services/state.service' } @if (!mobile) { - + } @@ -61,7 +57,6 @@ import { StateService } from '../services/state.service' TuiCardLarge, TuiButton, TuiButtonLoading, - TuiTextfield, TuiChevron, TuiSelect, TuiDataListWrapper, @@ -74,7 +69,7 @@ export default class KeyboardPage { private readonly api = inject(ApiService) private readonly stateService = inject(StateService) - protected readonly mobile = inject(TUI_IS_MOBILE) + protected readonly mobile = inject(WA_IS_MOBILE) // All keyboards, with language-specific keyboards at the top readonly keyboards = getAllKeyboardsSorted( this.stateService.language as LanguageCode, diff --git a/web/projects/setup-wizard/src/app/pages/language.page.ts b/web/projects/setup-wizard/src/app/pages/language.page.ts index 066a48787..297dceb8c 100644 --- a/web/projects/setup-wizard/src/app/pages/language.page.ts +++ b/web/projects/setup-wizard/src/app/pages/language.page.ts @@ -2,9 +2,10 @@ import { Component, computed, inject, signal } from '@angular/core' import { Router } from '@angular/router' import { FormsModule } from '@angular/forms' import { i18nPipe, i18nService, Language, LANGUAGES } from '@start9labs/shared' -import { TUI_IS_MOBILE } from '@taiga-ui/cdk' -import { TuiButton, TuiTextfield, TuiTitle } from '@taiga-ui/core' +import { WA_IS_MOBILE } from '@ng-web-apis/platform' +import { TuiButton, TuiCell, TuiTitle } from '@taiga-ui/core' import { + TuiAvatar, TuiButtonLoading, TuiChevron, TuiDataListWrapper, @@ -18,13 +19,15 @@ import { StateService } from '../services/state.service' template: `
-

- - Start9 +
+

+ + Start9 + {{ 'Welcome to' | i18n }} StartOS - - {{ 'Select your language' | i18n }} -

+

+

{{ 'Select your language' | i18n }}

+
@@ -57,11 +59,10 @@ import { StateService } from '../services/state.service' - @let lang = asLanguage(item); -
- {{ lang.nativeName }} - {{ lang.name | i18n }} -
+ + {{ asLanguage(item).nativeName }} + {{ asLanguage(item).name | i18n }} +
@@ -76,22 +77,13 @@ import { StateService } from '../services/state.service'
`, - styles: ` - .language-item { - display: flex; - flex-direction: column; - - small { - opacity: 0.7; - } - } - `, imports: [ FormsModule, TuiCardLarge, TuiButton, TuiButtonLoading, - TuiTextfield, + TuiAvatar, + TuiCell, TuiChevron, TuiSelect, TuiDataListWrapper, @@ -106,7 +98,7 @@ export default class LanguagePage { private readonly stateService = inject(StateService) private readonly i18nService = inject(i18nService) - protected readonly mobile = inject(TUI_IS_MOBILE) + protected readonly mobile = inject(WA_IS_MOBILE) readonly languages = LANGUAGES selected = diff --git a/web/projects/setup-wizard/src/app/pages/loading.page.ts b/web/projects/setup-wizard/src/app/pages/loading.page.ts index a00355776..e9213507b 100644 --- a/web/projects/setup-wizard/src/app/pages/loading.page.ts +++ b/web/projects/setup-wizard/src/app/pages/loading.page.ts @@ -12,10 +12,10 @@ import { getErrorMessage, i18nPipe, InitializingComponent, - LoadingService, } from '@start9labs/shared' import { T } from '@start9labs/start-sdk' import { TuiButton } from '@taiga-ui/core' +import { TuiNotificationMiddleService } from '@taiga-ui/kit' import { catchError, filter, @@ -64,7 +64,7 @@ import { StateService } from '../services/state.service' }) export default class LoadingPage { private readonly api = inject(ApiService) - private readonly loader = inject(LoadingService) + private readonly loader = inject(TuiNotificationMiddleService) private readonly dialog = inject(DialogService) private readonly router = inject(Router) diff --git a/web/projects/setup-wizard/src/app/pages/password.page.ts b/web/projects/setup-wizard/src/app/pages/password.page.ts index 3447cd427..87543af07 100644 --- a/web/projects/setup-wizard/src/app/pages/password.page.ts +++ b/web/projects/setup-wizard/src/app/pages/password.page.ts @@ -1,4 +1,3 @@ -import { AsyncPipe } from '@angular/common' import { Component, inject } from '@angular/core' import { Router } from '@angular/router' import { @@ -8,31 +7,28 @@ import { ReactiveFormsModule, Validators, } from '@angular/forms' -import { - ErrorService, - i18nPipe, - LoadingService, - normalizeHostname, -} from '@start9labs/shared' +import { ErrorService, i18nPipe, normalizeHostname } from '@start9labs/shared' import { TuiAutoFocus, TuiMapperPipe, TuiValidator } from '@taiga-ui/cdk' import { TuiButton, TuiError, TuiIcon, - TuiTextfield, TuiTitle, -} from '@taiga-ui/core' -import { - TuiFieldErrorPipe, - TuiPassword, + TuiInput, tuiValidationErrorsProvider, -} from '@taiga-ui/kit' -import { TuiCardLarge, TuiHeader } from '@taiga-ui/layout' +} from '@taiga-ui/core' +import { TuiNotificationMiddleService, TuiPassword } from '@taiga-ui/kit' +import { TuiCardLarge, TuiForm, TuiHeader } from '@taiga-ui/layout' import { StateService } from '../services/state.service' @Component({ template: ` -
+

{{ @@ -43,104 +39,80 @@ import { StateService } from '../services/state.service'

- - @if (isFresh) { - - - - - - @if (form.controls.name.value?.trim()) { -

{{ derivedHostname }}.local

- } + @if (isFresh) { + + + + + + @if (form.controls.name.value?.trim()) { + } + } - - - - - - + + + + + - - - - - - + + + + + -
+
+ + @if (!isFresh) { - @if (!isFresh) { - - } -
- -
- `, - styles: ` - .hostname-preview { - color: var(--tui-text-secondary); - font: var(--tui-font-text-s); - margin-top: 0.25rem; - } - - footer { - display: flex; - flex-direction: column; - gap: 1rem; - margin-top: 1.5rem; - } + } + + `, imports: [ - AsyncPipe, ReactiveFormsModule, TuiCardLarge, TuiButton, TuiError, TuiAutoFocus, - TuiFieldErrorPipe, - TuiTextfield, + TuiInput, + TuiForm, TuiPassword, TuiValidator, TuiIcon, @@ -160,7 +132,7 @@ import { StateService } from '../services/state.service' }) export default class PasswordPage { private readonly router = inject(Router) - private readonly loader = inject(LoadingService) + private readonly loader = inject(TuiNotificationMiddleService) private readonly errorService = inject(ErrorService) private readonly stateService = inject(StateService) private readonly i18n = inject(i18nPipe) diff --git a/web/projects/setup-wizard/src/app/pages/restore.page.ts b/web/projects/setup-wizard/src/app/pages/restore.page.ts index 616d13487..0557a2b65 100644 --- a/web/projects/setup-wizard/src/app/pages/restore.page.ts +++ b/web/projects/setup-wizard/src/app/pages/restore.page.ts @@ -6,11 +6,11 @@ import { TuiButton, TuiDataList, TuiDropdown, - TuiIcon, + TuiLink, TuiLoader, - TuiOptGroup, TuiTitle, } from '@taiga-ui/core' +import { TuiChevron } from '@taiga-ui/kit' import { TuiCardLarge, TuiHeader } from '@taiga-ui/layout' import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { ApiService } from '../services/api.service' @@ -18,22 +18,25 @@ import { StateService } from '../services/state.service' import { StartOSDiskInfoFull, StartOSDiskInfoWithId } from '../types' import { CIFS, CifsResult } from '../components/cifs.component' import { SELECT_NETWORK_BACKUP } from '../components/select-network-backup.dialog' -import { UnlockPasswordDialog } from '../components/unlock-password.dialog' +import { UNLOCK_PASSWORD } from '../components/unlock-password.dialog' @Component({ template: `
-

- {{ 'Select Backup' | i18n }} - +
+

{{ 'Select Backup' | i18n }}

+

{{ 'Select the StartOS backup you want to restore' | i18n }} - - - {{ 'Refresh' | i18n }} - - -

+ +

+
@if (loading) { @@ -41,82 +44,50 @@ import { UnlockPasswordDialog } from '../components/unlock-password.dialog' } @else { - - - - - - + + +
@for (server of physicalServers; track server.id) { -
+ + } @empty { -
{{ 'No physical backups' | i18n }}
+ } - + } `, - styles: ` - .refresh { - display: inline-flex; - align-items: center; - gap: 0.25rem; - cursor: pointer; - color: var(--tui-text-action); - - tui-icon { - font-size: 0.875rem; - } - } - - .server-item { - display: flex; - flex-direction: column; - - small { - opacity: 0.7; - } - } - - .no-items { - padding: 0.5rem 0.75rem; - color: var(--tui-text-secondary); - font-style: italic; - } - `, imports: [ TuiButton, TuiCardLarge, TuiDataList, TuiDropdown, TuiLoader, - TuiIcon, - TuiOptGroup, TuiTitle, TuiHeader, i18nPipe, + TuiLink, + TuiChevron, ], }) export default class RestorePage { @@ -142,10 +113,7 @@ export default class RestorePage { openCifs() { this.open = false this.dialogs - .openComponent(CIFS, { - label: 'Connect Network Folder', - size: 's', - }) + .openComponent(CIFS, { label: 'Connect Network Folder' }) .subscribe(result => { if (result) { this.handleCifsResult(result) @@ -167,7 +135,7 @@ export default class RestorePage { type: 'cifs', ...result.cifs, }) - } else if (result.servers.length > 1) { + } else { this.showSelectNetworkBackupDialog(result.cifs, result.servers) } } @@ -178,8 +146,6 @@ export default class RestorePage { ) { this.dialogs .openComponent(SELECT_NETWORK_BACKUP, { - label: 'Select Network Backup', - size: 's', data: { servers }, }) .subscribe(server => { @@ -194,13 +160,7 @@ export default class RestorePage { target: { type: 'disk'; logicalname: string } | ({ type: 'cifs' } & T.Cifs), ) { this.dialogs - .openComponent( - new PolymorpheusComponent(UnlockPasswordDialog), - { - label: 'Unlock Backup', - size: 's', - }, - ) + .openComponent(UNLOCK_PASSWORD) .subscribe(password => { if (password) { this.stateService.recoverySource = { diff --git a/web/projects/setup-wizard/src/app/pages/success.page.ts b/web/projects/setup-wizard/src/app/pages/success.page.ts index d524b67f1..3f3bd4254 100644 --- a/web/projects/setup-wizard/src/app/pages/success.page.ts +++ b/web/projects/setup-wizard/src/app/pages/success.page.ts @@ -13,9 +13,9 @@ import { i18nPipe, } from '@start9labs/shared' import { T } from '@start9labs/start-sdk' -import { TuiIcon, TuiLoader, TuiTitle } from '@taiga-ui/core' +import { TuiCell, TuiIcon, TuiLoader, TuiTitle } from '@taiga-ui/core' import { TuiAvatar } from '@taiga-ui/kit' -import { TuiCardLarge, TuiCell, TuiHeader } from '@taiga-ui/layout' +import { TuiCardLarge, TuiHeader } from '@taiga-ui/layout' import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { DocumentationComponent } from '../components/documentation.component' import { MatrixComponent } from '../components/matrix.component' @@ -51,7 +51,7 @@ import { StateService } from '../services/state.service' @if (!stateService.kiosk) { } @else if (stateService.kiosk) { +

+ @if (loading) { @@ -43,75 +47,43 @@ import { StateService } from '../services/state.service' } @else { - - - + @for (drive of drives; track drive.logicalname) { - - } @empty { -
- {{ 'No StartOS data drives found' | i18n }} -
}
-
+ } `, - styles: ` - .refresh { - display: inline-flex; - align-items: center; - gap: 0.25rem; - cursor: pointer; - color: var(--tui-text-action); - - tui-icon { - font-size: 0.875rem; - } - } - - .drive-item { - display: flex; - flex-direction: column; - - small { - opacity: 0.7; - } - } - - .no-items { - padding: 0.5rem 0.75rem; - color: var(--tui-text-secondary); - font-style: italic; - } - `, imports: [ TuiButton, TuiCardLarge, TuiDataList, TuiDropdown, - TuiIcon, + TuiLink, + TuiChevron, TuiLoader, TuiTitle, TuiHeader, i18nPipe, ], }) -export default class TransferPage { +export default class TransferPage implements OnInit { private readonly api = inject(ApiService) private readonly router = inject(Router) private readonly dialogs = inject(DialogService) @@ -137,7 +109,6 @@ export default class TransferPage { this.dialogs .openConfirm({ label: 'Warning', - size: 's', data: { content: 'After transferring data from this drive, do not attempt to boot into it again as a Start9 Server. This may result in services malfunctioning, data corruption, or loss of funds.', diff --git a/web/projects/setup-wizard/src/styles.scss b/web/projects/setup-wizard/src/styles.scss index 1e1d12cb2..24743eccd 100644 --- a/web/projects/setup-wizard/src/styles.scss +++ b/web/projects/setup-wizard/src/styles.scss @@ -12,6 +12,10 @@ tui-root { height: 100%; } +ul { + padding-inline-start: 1rem; +} + router-outlet + * { height: 100%; max-width: min(35rem, 100vw); @@ -30,41 +34,11 @@ router-outlet + * { } } -.inline-title { - display: inline-flex; - align-items: center; - gap: 0.5rem; - - :first-child { - width: 2rem; - height: 2rem; - } - -} - button:disabled { opacity: var(--tui-disabled-opacity); pointer-events: none; } -header { - position: relative; - display: flex; - flex-direction: column; - text-align: center; - font: var(--tui-font-heading-4); - - p { - font: var(--tui-font-text-m); - color: var(--tui-text-secondary); - } -} - -h2 { - margin: 0; - font: var(--tui-font-heading-6); -} - .g-positive { color: var(--tui-status-positive); } @@ -77,14 +51,27 @@ h2 { color: var(--tui-status-negative); } +.g-secondary { + color: var(--tui-text-secondary) !important; +} + .g-info { color: var(--tui-status-info); } -[tuiCardLarge] footer button { - width: 100%; +[tuiCardLarge] footer { + display: flex; + + button { + flex: 1; + } } -[tuiCell]:not(:last-of-type) { +[tuiCell]:not([tuiOption]):not(:last-of-type) { box-shadow: 0 calc(0.5rem + 1px) 0 -0.5rem var(--tui-border-normal); -} \ No newline at end of file +} + +// TODO: Remove in Taiga v5.0 +[tuiButton] { + min-block-size: var(--t-size); +} diff --git a/web/projects/shared/src/components/markdown.component.ts b/web/projects/shared/src/components/markdown.component.ts index ca260e562..af340006f 100644 --- a/web/projects/shared/src/components/markdown.component.ts +++ b/web/projects/shared/src/components/markdown.component.ts @@ -11,7 +11,12 @@ import { getErrorMessage } from '../services/error.service' @Component({ template: ` @if (error()) { - +
} @if (content(); as result) { diff --git a/web/projects/shared/src/components/prompt.component.ts b/web/projects/shared/src/components/prompt.component.ts index 0f7d4cb9a..b266bcfa0 100644 --- a/web/projects/shared/src/components/prompt.component.ts +++ b/web/projects/shared/src/components/prompt.component.ts @@ -1,7 +1,7 @@ import { ChangeDetectionStrategy, Component } from '@angular/core' import { FormsModule } from '@angular/forms' import { TuiAutoFocus } from '@taiga-ui/cdk' -import { TuiButton, TuiDialogContext, TuiTextfield } from '@taiga-ui/core' +import { TuiButton, TuiDialogContext, TuiInput } from '@taiga-ui/core' import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { i18nPipe } from '../i18n/i18n.pipe' import { i18nKey } from '../i18n/i18n.providers' @@ -23,7 +23,7 @@ import { i18nKey } from '../i18n/i18n.providers' } ', - styles: ` - :host { - display: flex; - align-items: center; - max-width: 80%; - margin: auto; - padding: 1.5rem; - background: var(--tui-background-elevation-1); - border-radius: var(--tui-radius-m); - box-shadow: var(--tui-shadow-popup); - - --tui-background-accent-1: var(--tui-status-warning); - } - - tui-loader { - flex-shrink: 0; - min-width: 2rem; - } - `, - changeDetection: ChangeDetectionStrategy.OnPush, - imports: [TuiLoader, i18nPipe], -}) -class LoadingComponent { - readonly content = injectContext<{ content: i18nKey }>().content -} - -@Injectable({ - providedIn: `root`, - useFactory: () => new LoadingService(TUI_DIALOGS, LoadingComponent), -}) -export class LoadingService extends TuiPopoverService { - override open(textContent: i18nKey | '' = '') { - return super.open(textContent) - } -} diff --git a/web/projects/shared/styles/shared.scss b/web/projects/shared/styles/shared.scss index fb1deebac..3c4d391b4 100644 --- a/web/projects/shared/styles/shared.scss +++ b/web/projects/shared/styles/shared.scss @@ -95,9 +95,6 @@ $wide-modal: 900px; --tw-color-zinc-800: 39 39 42; --tw-color-zinc-900: 24 24 27; --tw-color-zinc-950: 9 9 11; - - --tui-font-text: 'Proxima Nova', system-ui; - --tui-font-heading: 'Proxima Nova', system-ui; } body { diff --git a/web/projects/shared/styles/taiga.scss b/web/projects/shared/styles/taiga.scss index 615d9a165..385a0184d 100644 --- a/web/projects/shared/styles/taiga.scss +++ b/web/projects/shared/styles/taiga.scss @@ -1,4 +1,4 @@ -@use '@taiga-ui/core/styles/taiga-ui-local' as taiga; +@use '@taiga-ui/styles/utils' as taiga; [tuiTheme='dark'] { --tui-background-base: rgba(23, 23, 23, 1); @@ -135,13 +135,13 @@ tui-dropdown[data-appearance='start-os'][data-appearance='start-os'] { inset 0 0 1rem rgba(0, 0, 0, 0.25), var(--tui-shadow-medium); - [tuiOption] { - justify-content: flex-start; - gap: 0.5rem; + input { + // Checkmark + --tui-text-action: var(--tui-text-primary); } } -// @TODO Alex: Move to Taiga UI +// TODO: Remove in Taiga v5.0 a[tuiIconButton]:not([href]) { pointer-events: none; opacity: var(--tui-disabled-opacity); @@ -160,7 +160,7 @@ tui-textfield [tuiTooltip] { padding-block: 0.75rem; [tuiTitle] { - font: var(--tui-font-text-l); + font: var(--tui-typography-body-l); } } @@ -169,7 +169,16 @@ tui-textfield [tuiTooltip] { } } -// TODO: Remove after migrating to v5 -[tuiOption] { - word-break: break-word; +:root { + --tui-typography-family-text: 'Proxima Nova', system-ui; + --tui-typography-family-display: 'Proxima Nova', system-ui; +} + +tui-notification-middle { + --tui-background-accent-1: var(--tui-status-warning); +} + +// TODO: Remove in Taiga v5.0 +[tuiButton] { + min-block-size: var(--t-size); } diff --git a/web/projects/start-tunnel/src/app/app.config.ts b/web/projects/start-tunnel/src/app/app.config.ts index 3539019af..ce1b94b8e 100644 --- a/web/projects/start-tunnel/src/app/app.config.ts +++ b/web/projects/start-tunnel/src/app/app.config.ts @@ -1,13 +1,14 @@ -import { tuiDropdownOptionsProvider } from '@taiga-ui/core' -import { provideEventPlugins } from '@taiga-ui/event-plugins' -import { provideAnimations } from '@angular/platform-browser/animations' +import { + tuiDropdownOptionsProvider, + tuiDialogOptionsProvider, + provideTaiga, +} from '@taiga-ui/core' import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZonelessChangeDetection, } from '@angular/core' import { provideRouter, withRouterConfig } from '@angular/router' -import { tuiDialogOptionsProvider } from '@taiga-ui/experimental' import { PatchDB } from 'patch-db-client' import { PATCH_CACHE, @@ -31,11 +32,10 @@ const { export const appConfig: ApplicationConfig = { providers: [ - provideAnimations(), provideBrowserGlobalErrorListeners(), provideZonelessChangeDetection(), provideRouter(routes, withRouterConfig({ onSameUrlNavigation: 'reload' })), - provideEventPlugins(), + provideTaiga({ mode: 'dark' }), tuiDropdownOptionsProvider({ appearance: 'start-9' }), tuiDialogOptionsProvider({ appearance: 'start-9 taiga' }), { diff --git a/web/projects/start-tunnel/src/app/routes/home/components/header.ts b/web/projects/start-tunnel/src/app/routes/home/components/header.ts index 92cb0540c..3eabaaf40 100644 --- a/web/projects/start-tunnel/src/app/routes/home/components/header.ts +++ b/web/projects/start-tunnel/src/app/routes/home/components/header.ts @@ -29,7 +29,7 @@ import { SidebarService } from 'src/app/services/sidebar.service' } h1 { - font: var(--tui-font-heading-6); + font: var(--tui-typography-heading-h6); margin-inline-end: auto; } diff --git a/web/projects/start-tunnel/src/app/routes/home/routes/devices/add.ts b/web/projects/start-tunnel/src/app/routes/home/routes/devices/add.ts index 56e16a5f3..230be734d 100644 --- a/web/projects/start-tunnel/src/app/routes/home/routes/devices/add.ts +++ b/web/projects/start-tunnel/src/app/routes/home/routes/devices/add.ts @@ -1,31 +1,25 @@ -import { AsyncPipe } from '@angular/common' import { ChangeDetectionStrategy, Component, inject } from '@angular/core' import { NonNullableFormBuilder, ReactiveFormsModule, Validators, } from '@angular/forms' -import { ErrorService, LoadingService } from '@start9labs/shared' +import { WA_IS_MOBILE } from '@ng-web-apis/platform' +import { ErrorService } from '@start9labs/shared' +import { TuiResponsiveDialogService } from '@taiga-ui/addon-mobile' import { - TUI_IS_MOBILE, + TuiAnimated, TuiAutoFocus, tuiMarkControlAsTouchedAndValidate, } from '@taiga-ui/cdk' -import { - TuiButton, - TuiDialogContext, - TuiError, - TuiTextfield, -} from '@taiga-ui/core' -import { TuiDialogService } from '@taiga-ui/experimental' +import { TuiButton, TuiDialogContext, TuiError, TuiInput } from '@taiga-ui/core' import { TuiChevron, TuiDataListWrapper, - TuiElasticContainer, - TuiFieldErrorPipe, + TuiNotificationMiddleService, TuiSelect, } from '@taiga-ui/kit' -import { TuiForm } from '@taiga-ui/layout' +import { TuiElasticContainer, TuiForm } from '@taiga-ui/layout' import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { ApiService } from 'src/app/services/api/api.service' @@ -43,9 +37,9 @@ import {
- + - + @if (!context.data.device) { @@ -62,31 +56,24 @@ import { } @if (!mobile) { } - + @if (form.controls.subnet.value?.range) { - + - + } @if (form.controls.subnet.value?.range) { - + } }