diff --git a/web/package-lock.json b/web/package-lock.json index a5ab3874a..e254e824b 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -23,17 +23,19 @@ "@start9labs/argon2": "^0.1.0", "@start9labs/emver": "^0.1.5", "@start9labs/start-sdk": "file:../sdk/dist", - "@taiga-ui/addon-charts": "3.77.1", - "@taiga-ui/addon-commerce": "3.77.1", - "@taiga-ui/addon-mobile": "3.77.1", - "@taiga-ui/cdk": "3.77.1", - "@taiga-ui/core": "3.77.1", - "@taiga-ui/experimental": "3.77.1", - "@taiga-ui/icons": "3.77.1", - "@taiga-ui/kit": "3.77.1", - "@taiga-ui/styles": "3.77.1", + "@taiga-ui/addon-charts": "4.0.0-rc.5", + "@taiga-ui/addon-commerce": "4.0.0-rc.5", + "@taiga-ui/addon-mobile": "4.0.0-rc.5", + "@taiga-ui/cdk": "4.0.0-rc.5", + "@taiga-ui/core": "4.0.0-rc.5", + "@taiga-ui/event-plugins": "^4.0.1", + "@taiga-ui/experimental": "4.0.0-rc.5", + "@taiga-ui/icons": "4.0.0-rc.5", + "@taiga-ui/kit": "4.0.0-rc.5", + "@taiga-ui/layout": "4.0.0-rc.5", + "@taiga-ui/legacy": "4.0.0-rc.5", + "@taiga-ui/styles": "4.0.0-rc.5", "@tinkoff/ng-dompurify": "4.0.0", - "@tinkoff/ng-event-plugins": "3.2.0", "ansi-to-html": "^0.7.2", "base64-js": "^1.5.1", "cbor": "npm:@jprochazk/cbor@^0.4.9", @@ -56,7 +58,7 @@ "rxjs": "^7.5.6", "swiper": "^8.2.4", "ts-matches": "^5.2.1", - "tslib": "^2.3.0", + "tslib": "^2.6.3", "uuid": "^8.3.2", "zone.js": "^0.14.2" }, @@ -372,11 +374,12 @@ } }, "../patch-db/client/node_modules/braces": { - "version": "3.0.2", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -609,9 +612,10 @@ } }, "../patch-db/client/node_modules/fill-range": { - "version": "7.0.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -810,8 +814,9 @@ }, "../patch-db/client/node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -1491,9 +1496,10 @@ } }, "../patch-db/client/node_modules/semver": { - "version": "5.7.1", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } @@ -1659,8 +1665,9 @@ }, "../patch-db/client/node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -2268,6 +2275,12 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/@angular-devkit/build-angular/node_modules/webpack": { "version": "5.90.3", "dev": true, @@ -4545,28 +4558,43 @@ } }, "node_modules/@maskito/angular": { - "version": "1.9.0", - "license": "Apache-2.0", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@maskito/angular/-/angular-2.5.0.tgz", + "integrity": "sha512-xcQ8/N1wbZNnCIeioS8aZ7WXs5f0MRDeg8eOc512s82Q7LPdQ1zLqVMn3zPbED6D9UdmVnbTHTwiaZydP4zXdw==", + "peer": true, "dependencies": { - "tslib": "2.6.2" + "tslib": "2.6.3" }, "peerDependencies": { - "@angular/common": ">=12.0.0", - "@angular/core": ">=12.0.0", - "@angular/forms": ">=12.0.0", - "@maskito/core": "^1.9.0", - "rxjs": ">=6.0.0" + "@angular/core": ">=15.0.0", + "@angular/forms": ">=15.0.0", + "@maskito/core": "^2.5.0" } }, "node_modules/@maskito/core": { - "version": "1.9.0", - "license": "Apache-2.0" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@maskito/core/-/core-2.5.0.tgz", + "integrity": "sha512-EeTeNOKIENFd8J0b1diQ5m8Rkz7WclFWtFPMpEtoE0yyH5JM4PKgrnpa4EbO7st9pY27vMo1tJiclWakLG4B8g==", + "peer": true }, "node_modules/@maskito/kit": { - "version": "1.9.0", - "license": "Apache-2.0", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@maskito/kit/-/kit-2.5.0.tgz", + "integrity": "sha512-4PQXc/pJ1W+NW6cjVWFHhQlnjLs/4AHiZdisNsUsA6rN1+tMaOthm3Ppqmo9nNOH1F1Q2zQGvIdgaqRm2dq/tQ==", + "peer": true, "peerDependencies": { - "@maskito/core": "^1.9.0" + "@maskito/core": "^2.5.0" + } + }, + "node_modules/@maskito/phone": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@maskito/phone/-/phone-2.5.0.tgz", + "integrity": "sha512-sP/myNz5FlEesmwy3tVDw/ELG/os8IdC0QeGGu+jCa7BFyTUjn7hIeUM6g+oUPkArkjft6tK7JPo+j3zvBbTkQ==", + "peer": true, + "peerDependencies": { + "@maskito/core": "^2.5.0", + "@maskito/kit": "^2.5.0", + "libphonenumber-js": ">=1.0.0" } }, "node_modules/@materia-ui/ngx-monaco-editor": { @@ -4581,48 +4609,56 @@ } }, "node_modules/@ng-web-apis/common": { - "version": "3.0.6", - "license": "Apache-2.0", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@ng-web-apis/common/-/common-4.1.2.tgz", + "integrity": "sha512-8SO4JrQK8MZAzveafOEjI3M5zKC2VkM3Q9Movh0KiGQHOqZuT/jdZO4PqT6ydwJHcALiWT2pQRTwjp6oEimaog==", + "peer": true, "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": ">=12.0.0", - "@angular/core": ">=12.0.0", - "rxjs": ">=6.4.0" + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "rxjs": ">=7.0.0" } }, "node_modules/@ng-web-apis/intersection-observer": { - "version": "3.2.0", - "license": "Apache-2.0", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@ng-web-apis/intersection-observer/-/intersection-observer-4.1.3.tgz", + "integrity": "sha512-/VPw63EmFhY9Gro47IuwjCv9tYNR0ZxCP6jJykZOn4t/fS230JY9U79xvYWY9cMjMbk7LIv0H1A6qYT8hQzhVw==", + "peer": true, "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": ">=12.0.0", - "@ng-web-apis/common": ">=2.0.0" + "@angular/core": ">=16.0.0", + "@ng-web-apis/common": ">=4.1.2" } }, "node_modules/@ng-web-apis/mutation-observer": { - "version": "3.1.0", - "license": "Apache-2.0", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@ng-web-apis/mutation-observer/-/mutation-observer-4.1.2.tgz", + "integrity": "sha512-psvxEE7WN/2KGUOwS7NNXOV8EG70h4FM77B8NmLuKwkh0z5d+sxmgJ9BjbKJB4F144DpQtXFAuJAaVkT882g/w==", + "peer": true, "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": ">=12.0.0", - "@ng-web-apis/common": ">=2.0.0" + "@angular/core": ">=16.0.0", + "@ng-web-apis/common": ">=4.0.0" } }, "node_modules/@ng-web-apis/resize-observer": { - "version": "3.0.6", - "license": "Apache-2.0", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@ng-web-apis/resize-observer/-/resize-observer-4.1.2.tgz", + "integrity": "sha512-T8Vsr/AlnVzrDCko+BpzPWGIq0mFvE1zExY5zxbjTyraIL2VO0Le2wkU/v6UH64nRfp+xY5VDnOADNpTQCS8Zg==", + "peer": true, "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": ">=12.0.0", - "@ng-web-apis/common": ">=2.0.0" + "@angular/core": ">=16.0.0", + "@ng-web-apis/common": ">=4.0.0" } }, "node_modules/@ngtools/webpack": { @@ -5085,192 +5121,241 @@ "link": true }, "node_modules/@taiga-ui/addon-charts": { - "version": "3.77.1", - "resolved": "https://registry.npmjs.org/@taiga-ui/addon-charts/-/addon-charts-3.77.1.tgz", - "integrity": "sha512-yk9cvMewoRRVxTv1sIorVgO9GBkleQyRzkT774RPQACQHizGS2Sq5dQMtetwD3usPmLR2GblDR6NM+iOyHhMIA==", + "version": "4.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@taiga-ui/addon-charts/-/addon-charts-4.0.0-rc.5.tgz", + "integrity": "sha512-xAlSOndt7peL3SOPJcGvntEseY09QyZcRoMGsd7XZsaCHf0vQnKtwfoTd3nHqYYgcuIS9/aBlznual3RWyl+SA==", "dependencies": { - "tslib": "^2.6.2" + "tslib": "^2.6.3" }, "peerDependencies": { - "@angular/common": ">=12.0.0", - "@angular/core": ">=12.0.0", - "@ng-web-apis/common": "^3.0.6", - "@taiga-ui/cdk": "^3.77.1", - "@taiga-ui/core": "^3.77.1", - "@tinkoff/ng-polymorpheus": "^4.3.0" + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "@ng-web-apis/common": "^4.1.2", + "@taiga-ui/cdk": "^4.0.0-rc.5", + "@taiga-ui/core": "^4.0.0-rc.5", + "@taiga-ui/polymorpheus": "^4.6.4" } }, "node_modules/@taiga-ui/addon-commerce": { - "version": "3.77.1", - "resolved": "https://registry.npmjs.org/@taiga-ui/addon-commerce/-/addon-commerce-3.77.1.tgz", - "integrity": "sha512-4qNgDZfxyzTHQdKaerw28xP8d2PCuumLM9xjlRbNE5XcnhUI+rccgZOV9MtZtQoNBl++OBPmbaT2/9+zbSqbxg==", + "version": "4.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@taiga-ui/addon-commerce/-/addon-commerce-4.0.0-rc.5.tgz", + "integrity": "sha512-XkJ4SKzmPi4EFqAo5YQfU7l7FRWclzW0SrcJTdukTOvfTgPuzvNb7/nQEy9cCqmXvddQCgEmFzISHBI0lCnrUg==", "dependencies": { - "tslib": "^2.6.2" + "tslib": "^2.6.3" }, "peerDependencies": { - "@angular/common": ">=12.0.0", - "@angular/core": ">=12.0.0", - "@angular/forms": ">=12.0.0", - "@maskito/angular": "^1.9.0", - "@maskito/core": "^1.9.0", - "@maskito/kit": "^1.9.0", - "@ng-web-apis/common": "^3.0.6", - "@taiga-ui/cdk": "^3.77.1", - "@taiga-ui/core": "^3.77.1", - "@taiga-ui/i18n": "^3.77.1", - "@taiga-ui/kit": "^3.77.1", - "@tinkoff/ng-polymorpheus": "^4.3.0", - "rxjs": ">=6.0.0" + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "@angular/forms": ">=16.0.0", + "@maskito/angular": "^2.5.0", + "@maskito/core": "^2.5.0", + "@maskito/kit": "^2.5.0", + "@ng-web-apis/common": "^4.1.2", + "@taiga-ui/cdk": "^4.0.0-rc.5", + "@taiga-ui/core": "^4.0.0-rc.5", + "@taiga-ui/i18n": "^4.0.0-rc.5", + "@taiga-ui/kit": "^4.0.0-rc.5", + "@taiga-ui/polymorpheus": "^4.6.4", + "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/addon-mobile": { - "version": "3.77.1", - "resolved": "https://registry.npmjs.org/@taiga-ui/addon-mobile/-/addon-mobile-3.77.1.tgz", - "integrity": "sha512-kRa9uNdnY9Tyz8FdGXqgbL7cKZ1Z43K3Kjey9tX3uf4BEkODPNVuQFTNzuZvOt6/ql+XtPxi/hU19ii5rvKz3A==", + "version": "4.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@taiga-ui/addon-mobile/-/addon-mobile-4.0.0-rc.5.tgz", + "integrity": "sha512-P6QvsaAUfhBwhyo+Z80J0mwq9RExwDT2mK3MKgZAIerXAsojGHz1e43/TAZrucJfsNEh0fyUpOplgiFy9MLnyw==", "dependencies": { - "tslib": "^2.6.2" + "tslib": "^2.6.3" }, "peerDependencies": { - "@angular/cdk": ">=12.0.0", - "@angular/common": ">=12.0.0", - "@angular/core": ">=12.0.0", - "@ng-web-apis/common": "^3.0.6", - "@taiga-ui/cdk": "^3.77.1", - "@taiga-ui/core": "^3.77.1", - "@taiga-ui/kit": "^3.77.1", - "@tinkoff/ng-polymorpheus": "^4.3.0", - "rxjs": ">=6.0.0" + "@angular/cdk": ">=16.0.0", + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "@ng-web-apis/common": "^4.1.2", + "@taiga-ui/cdk": "^4.0.0-rc.5", + "@taiga-ui/core": "^4.0.0-rc.5", + "@taiga-ui/kit": "^4.0.0-rc.5", + "@taiga-ui/polymorpheus": "^4.6.4", + "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/cdk": { - "version": "3.77.1", - "resolved": "https://registry.npmjs.org/@taiga-ui/cdk/-/cdk-3.77.1.tgz", - "integrity": "sha512-mqT1Rz/JWqah4aNVRD3iEND4XdkfsOxV100D0gbdFD5/aaiMTyL6oMEP2GGE0lSsuk1mRCixkDW0qPCbhG21yQ==", + "version": "4.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@taiga-ui/cdk/-/cdk-4.0.0-rc.5.tgz", + "integrity": "sha512-WSNNNd/b+Dil/kIpN7cEnnHjp0/IKRrylbDzyMkJlyaMAwoVR0mChrJ7neYy3iRN5LndAFa/kRR8CCIOIBzf4g==", "dependencies": { - "@ng-web-apis/common": "3.0.6", - "@ng-web-apis/mutation-observer": "3.1.0", - "@ng-web-apis/resize-observer": "3.0.6", - "@tinkoff/ng-event-plugins": "3.2.0", - "@tinkoff/ng-polymorpheus": "4.3.0", - "tslib": "2.6.2" + "tslib": "2.6.3" }, "optionalDependencies": { - "ng-morph": "4.0.5", - "parse5": "6.0.1" + "@angular-devkit/core": ">=16.0.0", + "@angular-devkit/schematics": ">=16.0.0", + "@schematics/angular": ">=16.0.0", + "ng-morph": "^4.5.2", + "parse5": "^7.1.2" }, "peerDependencies": { - "@angular/animations": ">=12.0.0", - "@angular/common": ">=12.0.0", - "@angular/core": ">=12.0.0", - "@angular/forms": ">=12.0.0", - "rxjs": ">=6.0.0" + "@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.1.2", + "@ng-web-apis/mutation-observer": "^4.1.2", + "@ng-web-apis/resize-observer": "^4.1.2", + "@taiga-ui/event-plugins": "^4.0.1", + "@taiga-ui/polymorpheus": "^4.6.4", + "rxjs": ">=7.0.0" } }, - "node_modules/@taiga-ui/cdk/node_modules/parse5": { - "version": "6.0.1", - "license": "MIT", - "optional": true - }, "node_modules/@taiga-ui/core": { - "version": "3.77.1", - "resolved": "https://registry.npmjs.org/@taiga-ui/core/-/core-3.77.1.tgz", - "integrity": "sha512-RjrOZtkQbb+Hw+7wMTt8j76OkGiLrCDb2Ol1rmngFQfzPX5OlaRkBtNhCNoyBtI9rl4CCX2/ViCGnGmrIkHu6g==", + "version": "4.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@taiga-ui/core/-/core-4.0.0-rc.5.tgz", + "integrity": "sha512-kpmwHfa1KHkDb2DpmKBO4h1YFnxE9Bz5Gu6ryWtKLSFG7zID/w10qjmPdEVaE3kUNMg4imbjna0F7C0d3mPwUw==", "dependencies": { - "@taiga-ui/i18n": "^3.77.1", - "tslib": "^2.6.2" + "@taiga-ui/i18n": "^4.0.0-rc.5", + "tslib": "^2.6.3" }, "peerDependencies": { - "@angular/animations": ">=12.0.0", - "@angular/common": ">=12.0.0", - "@angular/core": ">=12.0.0", - "@angular/forms": ">=12.0.0", - "@angular/platform-browser": ">=12.0.0", - "@angular/router": ">=12.0.0", - "@ng-web-apis/common": "^3.0.6", - "@ng-web-apis/mutation-observer": "^3.1.0", - "@taiga-ui/cdk": "^3.77.1", - "@taiga-ui/i18n": "^3.77.1", - "@tinkoff/ng-event-plugins": "^3.2.0", - "@tinkoff/ng-polymorpheus": "^4.3.0", + "@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.1.2", + "@ng-web-apis/mutation-observer": "^4.1.2", + "@taiga-ui/cdk": "^4.0.0-rc.5", + "@taiga-ui/event-plugins": "^4.0.1", + "@taiga-ui/i18n": "^4.0.0-rc.5", + "@taiga-ui/polymorpheus": "^4.6.4", + "rxjs": ">=7.0.0" + } + }, + "node_modules/@taiga-ui/event-plugins": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@taiga-ui/event-plugins/-/event-plugins-4.0.1.tgz", + "integrity": "sha512-qy9AMUVakgZ1e2H7G6dSHtBccveHCi/SG5EhNNjMjhMGkSywIDn+HLJ9kCtDmrJDRtFAPgZ3J0C/UwrsEzCvdQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=15.0.0", + "@angular/platform-browser": ">=15.0.0", "rxjs": ">=6.0.0" } }, "node_modules/@taiga-ui/experimental": { - "version": "3.77.1", - "resolved": "https://registry.npmjs.org/@taiga-ui/experimental/-/experimental-3.77.1.tgz", - "integrity": "sha512-UVmP0y1w9VvOoQoTH4VByZ3m45OcC0Lw//rsrNMicPCX9b5IJxgEjUAmJ+PZ/ecsgnDVKO0HD18cZt5uCVdy7w==", + "version": "4.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@taiga-ui/experimental/-/experimental-4.0.0-rc.5.tgz", + "integrity": "sha512-tJ/tngKnGWfm29lIectuN4sYJAxyWd7QqZLEYIwKEwIc7hghlfoYIK9tNkuGTJ+jAHuTxhm77Cn02Ks7dEfJgA==", "dependencies": { - "tslib": "^2.6.2" + "tslib": "^2.6.3" }, "peerDependencies": { - "@angular/common": ">=12.0.0", - "@angular/core": ">=12.0.0", - "@taiga-ui/addon-commerce": "^3.77.1", - "@taiga-ui/cdk": "^3.77.1", - "@taiga-ui/core": "^3.77.1", - "@taiga-ui/kit": "^3.77.1", - "@tinkoff/ng-polymorpheus": "^4.3.0", - "rxjs": ">=6.0.0" + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "@taiga-ui/addon-commerce": "^4.0.0-rc.5", + "@taiga-ui/cdk": "^4.0.0-rc.5", + "@taiga-ui/core": "^4.0.0-rc.5", + "@taiga-ui/kit": "^4.0.0-rc.5", + "@taiga-ui/polymorpheus": "^4.6.4", + "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/i18n": { - "version": "3.77.1", - "resolved": "https://registry.npmjs.org/@taiga-ui/i18n/-/i18n-3.77.1.tgz", - "integrity": "sha512-rC2RYMFyaRHKcoU5WUKMe2DU0urRNh0daKvRIhp8t5AnTQE1MDZHRJYVCpysr8sfXvtJdr5oHoZccavzvqjqOQ==", + "version": "4.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@taiga-ui/i18n/-/i18n-4.0.0-rc.5.tgz", + "integrity": "sha512-pq1rZaGYYBKuk1pd6F+EzcHJQy0DGbmTq3k9OwI+J9f5ls0oWJU21clh7oybMd2AklLMAd2BQdNzpFS1bvqCKQ==", "dependencies": { - "tslib": "^2.6.2" + "tslib": "^2.6.3" }, "peerDependencies": { - "@angular/core": ">=12.0.0", - "@ng-web-apis/common": "^3.0.6", - "rxjs": ">=6.0.0" + "@angular/core": ">=16.0.0", + "@ng-web-apis/common": "^4.1.2", + "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/icons": { - "version": "3.77.1", - "resolved": "https://registry.npmjs.org/@taiga-ui/icons/-/icons-3.77.1.tgz", - "integrity": "sha512-e9NXwxOktKM9TVDVePVkTFAuAs9jlhZCKzpAOfrme1bHVQJ1MEhD2hdj74Yn7IGKOCFjrUDQnxJ9w9POh6H9Vg==", + "version": "4.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@taiga-ui/icons/-/icons-4.0.0-rc.5.tgz", + "integrity": "sha512-rO8g39hRcNqWkrcZc31k9tam7fbpbpypfyLqcfwvtsJ6I4YxQXCMlhpSh2mCTGBVfOpUi+89lqLUJPY0dVaigg==", "dependencies": { - "tslib": "^2.6.2" - }, - "peerDependencies": { - "@taiga-ui/cdk": "^3.77.1" + "tslib": "^2.3.0" } }, "node_modules/@taiga-ui/kit": { - "version": "3.77.1", - "resolved": "https://registry.npmjs.org/@taiga-ui/kit/-/kit-3.77.1.tgz", - "integrity": "sha512-Pyk44wDF61VZiMQHehQ3KEEBj5AsO3et8QccKwmqr13jaQzmH6ljwbbYJOwPpEVsdZbqfiI56OVxp86mi6F8mw==", + "version": "4.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@taiga-ui/kit/-/kit-4.0.0-rc.5.tgz", + "integrity": "sha512-LvbOheE6J7pprmjlLIyA0CWiBPi/5Fmj87oqm8Ucj18+hGoc9QS8uaZnblpWZ61WyFzoDUtg5c/4dYMfZ0GNdg==", "dependencies": { - "@maskito/angular": "1.9.0", - "@maskito/core": "1.9.0", - "@maskito/kit": "1.9.0", - "@ng-web-apis/intersection-observer": "3.2.0", - "text-mask-core": "5.1.2", - "tslib": "^2.6.2" + "tslib": "^2.6.3" }, "peerDependencies": { - "@angular/common": ">=12.0.0", - "@angular/core": ">=12.0.0", - "@angular/forms": ">=12.0.0", - "@angular/router": ">=12.0.0", - "@ng-web-apis/common": "3.0.6", - "@ng-web-apis/mutation-observer": "^3.1.0", - "@ng-web-apis/resize-observer": "^3.0.6", - "@taiga-ui/cdk": "^3.77.1", - "@taiga-ui/core": "^3.77.1", - "@taiga-ui/i18n": "^3.77.1", - "@tinkoff/ng-polymorpheus": "^4.3.0", - "rxjs": ">=6.0.0" + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "@angular/forms": ">=16.0.0", + "@angular/router": ">=16.0.0", + "@maskito/angular": "^2.5.0", + "@maskito/core": "^2.5.0", + "@maskito/kit": "^2.5.0", + "@maskito/phone": "^2.5.0", + "@ng-web-apis/common": "^4.1.2", + "@ng-web-apis/intersection-observer": "^4.1.2", + "@ng-web-apis/mutation-observer": "^4.1.2", + "@ng-web-apis/resize-observer": "^4.1.2", + "@taiga-ui/cdk": "^4.0.0-rc.5", + "@taiga-ui/core": "^4.0.0-rc.5", + "@taiga-ui/i18n": "^4.0.0-rc.5", + "@taiga-ui/polymorpheus": "^4.6.4", + "rxjs": ">=7.0.0" + } + }, + "node_modules/@taiga-ui/layout": { + "version": "4.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@taiga-ui/layout/-/layout-4.0.0-rc.5.tgz", + "integrity": "sha512-iebBX/G1bXLHhNYDR7fjmDpvF4FJXubtDkRedWvnUnOOmI46yKpKohwQuEReRIRxVASK9DvG6VLtz3Ho2JjyrQ==", + "dependencies": { + "tslib": "^2.6.3" + }, + "peerDependencies": { + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "@taiga-ui/cdk": "^4.0.0-rc.5", + "@taiga-ui/core": "^4.0.0-rc.5", + "@taiga-ui/polymorpheus": "^4.6.4", + "rxjs": ">=7.0.0" + } + }, + "node_modules/@taiga-ui/legacy": { + "version": "4.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@taiga-ui/legacy/-/legacy-4.0.0-rc.5.tgz", + "integrity": "sha512-zS6h+ivYxHeiSScVc5hTj612f5tv7xY+4eJyJbEtjNsHErf1FWL72IJbl1QK3bkodefznFxwhfEsNkka70Sf3w==", + "dependencies": { + "tslib": "2.6.3" + }, + "peerDependencies": { + "@angular/core": ">=16.0.0" + } + }, + "node_modules/@taiga-ui/polymorpheus": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/@taiga-ui/polymorpheus/-/polymorpheus-4.6.4.tgz", + "integrity": "sha512-rlMNWfhImLaMEDWXU1TG7a+YYkVA528poq7lNQ8d+61HyXvbjgs/WAeJQwdabjeLxTUyDozSBJVwSwU69tYprg==", + "peer": true, + "dependencies": { + "tslib": "^2.6.3" + }, + "peerDependencies": { + "@angular/core": ">=16.0.0", + "@angular/platform-browser": ">=16.0.0" } }, "node_modules/@taiga-ui/styles": { - "version": "3.77.1", - "resolved": "https://registry.npmjs.org/@taiga-ui/styles/-/styles-3.77.1.tgz", - "integrity": "sha512-YoPXqY1pz+13vYhHnE6hskjRtnDDGgjnZIPtx05ChN8/TDIJ6NiaWKI5Es/G4fq3vKJnq2yIZ9D2Ghm/aPItGw==", + "version": "4.0.0-rc.5", + "resolved": "https://registry.npmjs.org/@taiga-ui/styles/-/styles-4.0.0-rc.5.tgz", + "integrity": "sha512-+1o+lcKyQAnoIWQrqJGJB2oBKOOI6yNKfm2IPohgCsIxEWi7ljgejjy2ym1w8e4z1hWrqRFmnck5nhT3ERA2FA==", "peerDependencies": { - "@taiga-ui/cdk": "^3.77.1", - "tslib": "^2.6.2" + "@taiga-ui/cdk": "^4.0.0-rc.5", + "tslib": "^2.6.3" } }, "node_modules/@tinkoff/ng-dompurify": { @@ -5286,44 +5371,22 @@ "dompurify": ">= 2.3.0" } }, - "node_modules/@tinkoff/ng-event-plugins": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@tinkoff/ng-event-plugins/-/ng-event-plugins-3.2.0.tgz", - "integrity": "sha512-n56R5xNfiytabh2WmWdQXfNU6m7dfOo3LLxlARE+DX7f5yciW2xBdDkuEHX74q8dlCuAVlW9aslSfz8c//ymwA==", - "dependencies": { - "tslib": "^2.2.0" - }, - "peerDependencies": { - "@angular/core": ">=12.0.0", - "@angular/platform-browser": ">=12.0.0", - "rxjs": ">=6.0.0" - } - }, - "node_modules/@tinkoff/ng-polymorpheus": { - "version": "4.3.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "2.6.2" - }, - "peerDependencies": { - "@angular/core": ">=12.0.0", - "@angular/platform-browser": ">=12.0.0" - } - }, "node_modules/@ts-morph/common": { - "version": "0.22.0", - "license": "MIT", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.24.0.tgz", + "integrity": "sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==", "optional": true, "dependencies": { "fast-glob": "^3.3.2", - "minimatch": "^9.0.3", + "minimatch": "^9.0.4", "mkdirp": "^3.0.1", "path-browserify": "^1.0.1" } }, "node_modules/@ts-morph/common/node_modules/mkdirp": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "optional": true, "bin": { "mkdirp": "dist/cjs/src/bin.js" @@ -5500,7 +5563,8 @@ }, "node_modules/@types/minimatch": { "version": "3.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "optional": true }, "node_modules/@types/mustache": { @@ -6007,7 +6071,8 @@ }, "node_modules/array-differ": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "optional": true, "engines": { "node": ">=8" @@ -6020,7 +6085,8 @@ }, "node_modules/array-union": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "optional": true, "engines": { "node": ">=8" @@ -6028,7 +6094,8 @@ }, "node_modules/arrify": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "optional": true, "engines": { "node": ">=8" @@ -6333,11 +6400,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "devOptional": true, - "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -6771,8 +6839,9 @@ } }, "node_modules/code-block-writer": { - "version": "12.0.0", - "license": "MIT", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.1.tgz", + "integrity": "sha512-c5or4P6erEA69TxaxTNcHUNcIn+oyxSRTOWV+pSYF+z4epXqNvwvJ70XPGjPNgue83oAFAPBRQYwpAJ/Hpe/Sg==", "optional": true }, "node_modules/color-convert": { @@ -7839,9 +7908,10 @@ "license": "Apache-2.0" }, "node_modules/express": { - "version": "4.19.1", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, - "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -7981,9 +8051,10 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "devOptional": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9128,8 +9199,9 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "devOptional": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -9458,6 +9530,12 @@ "node": ">=0.10.0" } }, + "node_modules/libphonenumber-js": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.4.tgz", + "integrity": "sha512-F/R50HQuWWYcmU/esP5jrH5LiWYaN7DpN0a/99U8+mnGGtnx8kmRE+649dQh3v+CowXXZc8vpkf5AmYkO0AQ7Q==", + "peer": true + }, "node_modules/license-webpack-plugin": { "version": "4.0.2", "dev": true, @@ -10164,9 +10242,10 @@ "license": "ISC" }, "node_modules/minimatch": { - "version": "9.0.3", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "devOptional": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -10396,7 +10475,8 @@ }, "node_modules/multimatch": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", "optional": true, "dependencies": { "@types/minimatch": "^3.0.3", @@ -10414,7 +10494,8 @@ }, "node_modules/multimatch/node_modules/brace-expansion": { "version": "1.1.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "optional": true, "dependencies": { "balanced-match": "^1.0.0", @@ -10423,7 +10504,8 @@ }, "node_modules/multimatch/node_modules/minimatch": { "version": "3.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "optional": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -10512,26 +10594,43 @@ "license": "MIT" }, "node_modules/ng-morph": { - "version": "4.0.5", - "license": "Apache-2.0", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/ng-morph/-/ng-morph-4.5.4.tgz", + "integrity": "sha512-g7asHMUZR05bOw/kX5nIVEFs8SDcuH0t5WjdMuVBlJEvl0mY1gDlz1LoIhGlzcbRleMg9n1J0PdrrmYJchWJ9g==", "optional": true, "dependencies": { - "jsonc-parser": "3.2.0", - "minimatch": "9.0.3", + "jsonc-parser": "3.3.1", + "minimatch": "10.0.1", "multimatch": "5.0.0", - "ts-morph": "21.0.1", - "tslib": "2.6.2" + "ts-morph": "23.0.0" }, "peerDependencies": { - "@angular-devkit/core": ">=11.0.0", - "@angular-devkit/schematics": ">=11.0.0" + "@angular-devkit/core": ">=16.0.0", + "@angular-devkit/schematics": ">=16.0.0", + "tslib": "^2.6.3" } }, "node_modules/ng-morph/node_modules/jsonc-parser": { - "version": "3.2.0", - "license": "MIT", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "optional": true }, + "node_modules/ng-morph/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "optional": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/ng-packagr": { "version": "17.3.0", "dev": true, @@ -11379,7 +11478,8 @@ }, "node_modules/path-browserify": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "optional": true }, "node_modules/path-exists": { @@ -13232,9 +13332,10 @@ } }, "node_modules/tar": { - "version": "6.2.0", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "devOptional": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -13434,10 +13535,6 @@ "node": "*" } }, - "node_modules/text-mask-core": { - "version": "5.1.2", - "license": "Unlicense" - }, "node_modules/thunky": { "version": "1.1.0", "dev": true, @@ -13464,8 +13561,9 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "devOptional": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -13502,12 +13600,13 @@ "license": "MIT" }, "node_modules/ts-morph": { - "version": "21.0.1", - "license": "MIT", + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-23.0.0.tgz", + "integrity": "sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==", "optional": true, "dependencies": { - "@ts-morph/common": "~0.22.0", - "code-block-writer": "^12.0.0" + "@ts-morph/common": "~0.24.0", + "code-block-writer": "^13.0.1" } }, "node_modules/ts-node": { @@ -13553,8 +13652,9 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/tslint": { "version": "6.1.3", @@ -14255,9 +14355,10 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.16.0", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -14540,9 +14641,10 @@ "license": "ISC" }, "node_modules/ws": { - "version": "7.5.9", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.3.0" }, diff --git a/web/package.json b/web/package.json index dea30cefb..243c1fde1 100644 --- a/web/package.json +++ b/web/package.json @@ -45,17 +45,19 @@ "@start9labs/argon2": "^0.1.0", "@start9labs/emver": "^0.1.5", "@start9labs/start-sdk": "file:../sdk/dist", - "@taiga-ui/addon-charts": "3.77.1", - "@taiga-ui/addon-commerce": "3.77.1", - "@taiga-ui/addon-mobile": "3.77.1", - "@taiga-ui/cdk": "3.77.1", - "@taiga-ui/core": "3.77.1", - "@taiga-ui/experimental": "3.77.1", - "@taiga-ui/icons": "3.77.1", - "@taiga-ui/kit": "3.77.1", - "@taiga-ui/styles": "3.77.1", + "@taiga-ui/addon-charts": "4.0.0-rc.5", + "@taiga-ui/addon-commerce": "4.0.0-rc.5", + "@taiga-ui/addon-mobile": "4.0.0-rc.5", + "@taiga-ui/cdk": "4.0.0-rc.5", + "@taiga-ui/core": "4.0.0-rc.5", + "@taiga-ui/event-plugins": "^4.0.1", + "@taiga-ui/experimental": "4.0.0-rc.5", + "@taiga-ui/icons": "4.0.0-rc.5", + "@taiga-ui/kit": "4.0.0-rc.5", + "@taiga-ui/layout": "4.0.0-rc.5", + "@taiga-ui/legacy": "4.0.0-rc.5", + "@taiga-ui/styles": "4.0.0-rc.5", "@tinkoff/ng-dompurify": "4.0.0", - "@tinkoff/ng-event-plugins": "3.2.0", "ansi-to-html": "^0.7.2", "base64-js": "^1.5.1", "cbor": "npm:@jprochazk/cbor@^0.4.9", @@ -78,7 +80,7 @@ "rxjs": "^7.5.6", "swiper": "^8.2.4", "ts-matches": "^5.2.1", - "tslib": "^2.3.0", + "tslib": "^2.6.3", "uuid": "^8.3.2", "zone.js": "^0.14.2" }, diff --git a/web/projects/install-wizard/src/app/app.component.html b/web/projects/install-wizard/src/app/app.component.html index be4da9ab2..c8150797b 100644 --- a/web/projects/install-wizard/src/app/app.component.html +++ b/web/projects/install-wizard/src/app/app.component.html @@ -9,7 +9,7 @@ appearance="flat" size="m" class="back" - iconLeft="tuiIconChevronLeft" + iconStart="@tui.chevron-left" [style.border-radius.rem]="10" (click)="selected = null" > @@ -17,7 +17,7 @@ }

{{ selected ? 'Install Type' : 'Select Disk' }}

-
{{ error }}
+
{{ error }}
@@ -28,9 +28,9 @@
@if (guid) { @@ -66,20 +64,17 @@ [categories]="store?.info?.categories" [category]="query ? '' : category" (categoryChange)="onCategoryChange($event); toggleMenu(false)" - > + />
- + Package a service - +
@@ -93,26 +88,23 @@ + /> diff --git a/web/projects/marketplace/src/components/menu/menu.component.module.ts b/web/projects/marketplace/src/components/menu/menu.component.module.ts index c4c6e314e..ecd5ae71b 100644 --- a/web/projects/marketplace/src/components/menu/menu.component.module.ts +++ b/web/projects/marketplace/src/components/menu/menu.component.module.ts @@ -3,13 +3,12 @@ import { NgModule } from '@angular/core' import { SharedPipesModule } from '@start9labs/shared' import { MenuComponent } from './menu.component' -import { TuiButtonModule, TuiLoaderModule } from '@taiga-ui/core' -import { TuiActiveZoneModule, TuiLetModule } from '@taiga-ui/cdk' -import { TuiSidebarModule } from '@taiga-ui/addon-mobile' +import { TuiLoader, TuiIcon, TuiButton, TuiAppearance } from '@taiga-ui/core' +import { TuiActiveZone, TuiLet } from '@taiga-ui/cdk' +import { TuiSidebar } from '@taiga-ui/addon-mobile' import { SearchModule } from '../../pages/list/search/search.module' import { CategoriesModule } from '../../pages/list/categories/categories.module' import { StoreIconComponentModule } from '../store-icon/store-icon.component.module' -import { TuiAppearanceModule, TuiIconModule } from '@taiga-ui/experimental' @NgModule({ imports: [ @@ -17,15 +16,15 @@ import { TuiAppearanceModule, TuiIconModule } from '@taiga-ui/experimental' SharedPipesModule, SearchModule, CategoriesModule, - TuiActiveZoneModule, - TuiSidebarModule, - TuiLoaderModule, - TuiButtonModule, + TuiActiveZone, + ...TuiSidebar, + TuiLoader, + TuiButton, CategoriesModule, StoreIconComponentModule, - TuiLetModule, - TuiAppearanceModule, - TuiIconModule, + TuiLet, + TuiAppearance, + TuiIcon, ], declarations: [MenuComponent], exports: [MenuComponent], diff --git a/web/projects/marketplace/src/pages/list/categories/categories.component.ts b/web/projects/marketplace/src/pages/list/categories/categories.component.ts index d59032378..24bc62fe6 100644 --- a/web/projects/marketplace/src/pages/list/categories/categories.component.ts +++ b/web/projects/marketplace/src/pages/list/categories/categories.component.ts @@ -30,30 +30,30 @@ export class CategoriesComponent { determineIcon(category: string): string { switch (category.toLowerCase()) { case 'all': - return 'tuiIconGridLarge' + return '@tui.layout-grid' case 'bitcoin': - return 'assets/img/icons/logo-bitcoin.svg' + return '@tui.bitcoin' case 'messaging': case 'communications': - return 'tuiIconMessageCircleLarge' + return '@tui.message-circle' case 'data': - return 'tuiIconFileTextLarge' + return '@tui.file-text' case 'developer tools': - return 'tuiIconTableSplitLarge' + return '@tui.table-split' case 'featured': - return 'tuiIconStarLarge' + return '@tui.star' case 'lightning': - return 'tuiIconZapLarge' + return '@tui.zap' case 'media': - return 'tuiIconPlayCircleLarge' + return '@tui.circle-play' case 'networking': - return 'tuiIconGlobeLarge' + return '@tui.globe' case 'social': - return 'tuiIconUsersLarge' + return '@tui.users' case 'ai': - return 'tuiIconCpuLarge' + return '@tui.cpu' default: - return 'tuiIconBoxLarge' + return '@tui.box' } } } diff --git a/web/projects/marketplace/src/pages/list/categories/categories.module.ts b/web/projects/marketplace/src/pages/list/categories/categories.module.ts index 27aeccee1..935d91f82 100644 --- a/web/projects/marketplace/src/pages/list/categories/categories.module.ts +++ b/web/projects/marketplace/src/pages/list/categories/categories.module.ts @@ -1,12 +1,12 @@ +import { TuiIcon, TuiAppearance } from '@taiga-ui/core' import { CommonModule } from '@angular/common' import { NgModule } from '@angular/core' import { CategoriesComponent } from './categories.component' -import { TuiAppearanceModule, TuiIconModule } from '@taiga-ui/experimental' import { RouterModule } from '@angular/router' @NgModule({ - imports: [RouterModule, CommonModule, TuiAppearanceModule, TuiIconModule], + imports: [RouterModule, CommonModule, TuiAppearance, TuiIcon], declarations: [CategoriesComponent], exports: [CategoriesComponent], }) diff --git a/web/projects/marketplace/src/pages/list/item/item.module.ts b/web/projects/marketplace/src/pages/list/item/item.module.ts index 329ac0b4d..9822ab966 100644 --- a/web/projects/marketplace/src/pages/list/item/item.module.ts +++ b/web/projects/marketplace/src/pages/list/item/item.module.ts @@ -2,8 +2,8 @@ import { CommonModule } from '@angular/common' import { NgModule } from '@angular/core' import { RouterModule } from '@angular/router' import { SharedPipesModule, TickerModule } from '@start9labs/shared' +import { TuiLet } from '@taiga-ui/cdk' import { ItemComponent } from './item.component' -import { TuiLetModule } from '@taiga-ui/cdk' @NgModule({ declarations: [ItemComponent], @@ -13,7 +13,7 @@ import { TuiLetModule } from '@taiga-ui/cdk' RouterModule, SharedPipesModule, TickerModule, - TuiLetModule, + TuiLet, ], }) export class ItemModule {} diff --git a/web/projects/marketplace/src/pages/list/search/search.component.html b/web/projects/marketplace/src/pages/list/search/search.component.html index e901583d2..fd5b63b6d 100644 --- a/web/projects/marketplace/src/pages/list/search/search.component.html +++ b/web/projects/marketplace/src/pages/list/search/search.component.html @@ -1,5 +1,5 @@ `, styles: [ @@ -25,7 +26,11 @@ import { TuiLineClampModule } from '@taiga-ui/kit' background-color: rgb(113 113 122 / 0.1); } - tui-svg { + [tuiSubtitle] { + color: var(--tui-text-secondary); + } + + tui-icon { opacity: 0.7; } } @@ -38,7 +43,7 @@ import { TuiLineClampModule } from '@taiga-ui/kit' ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [CommonModule, TuiSvgModule, TuiLineClampModule, TuiLabelModule], + imports: [CommonModule, TuiLineClamp, TuiLabel, TuiIcon, TuiTitle], }) export class MarketplaceAdditionalItemComponent { @Input({ required: true }) diff --git a/web/projects/marketplace/src/pages/show/additional/additional.component.html b/web/projects/marketplace/src/pages/show/additional/additional.component.html index c47d71dbb..cb4525858 100644 --- a/web/projects/marketplace/src/pages/show/additional/additional.component.html +++ b/web/projects/marketplace/src/pages/show/additional/additional.component.html @@ -15,14 +15,15 @@ (click)="copyService.copy(gitHash)" [data]="gitHash" label="Git Hash" - icon="tuiIconCopyLarge" + icon="@tui.copy" class="item-copy" - button - detail="false" >
- +
@@ -30,7 +31,7 @@ (click)="presentModalMd('License')" [data]="pkg.manifest.license" label="License" - icon="tuiIconChevronRightLarge" + icon="@tui.chevron-right" class="item-pointer" > @@ -38,38 +39,38 @@ (click)="presentModalMd('Instructions')" data="Click to view instructions" label="Instructions" - icon="tuiIconChevronRightLarge" + icon="@tui.chevron-right" class="item-pointer" > - +
diff --git a/web/projects/marketplace/src/pages/show/additional/additional.component.ts b/web/projects/marketplace/src/pages/show/additional/additional.component.ts index aa80f9d23..516747121 100644 --- a/web/projects/marketplace/src/pages/show/additional/additional.component.ts +++ b/web/projects/marketplace/src/pages/show/additional/additional.component.ts @@ -6,7 +6,7 @@ import { } from '@angular/core' import { ActivatedRoute } from '@angular/router' import { TuiDialogService } from '@taiga-ui/core' -import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus' +import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { CopyService, MarkdownComponent } from '@start9labs/shared' import { MarketplacePkg } from '../../../types' import { AbstractMarketplaceService } from '../../../services/marketplace.service' diff --git a/web/projects/marketplace/src/pages/show/additional/additional.module.ts b/web/projects/marketplace/src/pages/show/additional/additional.module.ts index 4416cfad2..174127e04 100644 --- a/web/projects/marketplace/src/pages/show/additional/additional.module.ts +++ b/web/projects/marketplace/src/pages/show/additional/additional.module.ts @@ -1,17 +1,18 @@ import { CommonModule } from '@angular/common' import { NgModule } from '@angular/core' import { AdditionalComponent } from './additional.component' -import { TuiButtonModule, TuiLabelModule } from '@taiga-ui/core' +import { TuiButton, TuiLabel, TuiTitle } from '@taiga-ui/core' import { MarketplaceAdditionalItemComponent } from './additional-item.component' import { MarketplaceAdditionalLinkComponent } from './additional-link.component' @NgModule({ imports: [ CommonModule, - TuiButtonModule, - TuiLabelModule, + TuiButton, + TuiLabel, MarketplaceAdditionalItemComponent, MarketplaceAdditionalLinkComponent, + TuiTitle, ], declarations: [AdditionalComponent], exports: [AdditionalComponent], 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 e37e31cc8..68c9e76af 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 @@ -5,11 +5,11 @@ import { Input, inject, } from '@angular/core' -import { EmverPipesModule } from '@start9labs/shared' -import { Dependency, MarketplacePkg, StoreIdentity } from '../../../types' import { RouterModule } from '@angular/router' -import { TuiAvatarModule, TuiLineClampModule } from '@taiga-ui/kit' -import { TuiLetModule } from '@taiga-ui/cdk' +import { EmverPipesModule } from '@start9labs/shared' +import { TuiLet } from '@taiga-ui/cdk' +import { TuiAvatar, TuiLineClamp } from '@taiga-ui/kit' +import { Dependency, MarketplacePkg, StoreIdentity } from '../../../types' import { AbstractMarketplaceService } from '../../../services/marketplace.service' @Component({ @@ -18,15 +18,11 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic
+ size="l" + [src]="getImage(dep.key, marketplace)" + />
- +
@@ -44,7 +40,7 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic [linesLimit]="2" [content]="descContent" class="description" - > + /> {{ dep.value.description }} @@ -107,10 +103,10 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic imports: [ CommonModule, RouterModule, - TuiAvatarModule, + TuiAvatar, EmverPipesModule, - TuiLineClampModule, - TuiLetModule, + TuiLineClamp, + TuiLet, ], }) export class MarketplaceDepItemComponent { diff --git a/web/projects/marketplace/src/pages/show/hero/hero.component.ts b/web/projects/marketplace/src/pages/show/hero/hero.component.ts index 7a26cc51f..16167e181 100644 --- a/web/projects/marketplace/src/pages/show/hero/hero.component.ts +++ b/web/projects/marketplace/src/pages/show/hero/hero.component.ts @@ -2,13 +2,13 @@ import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, Component, - Input, inject, + Input, } from '@angular/core' import { SharedPipesModule, TickerModule } from '@start9labs/shared' -import { MarketplacePkg, StoreIdentity } from '../../../types' -import { TuiLetModule } from '@taiga-ui/cdk' +import { TuiLet } from '@taiga-ui/cdk' import { AbstractMarketplaceService } from '../../../services/marketplace.service' +import { MarketplacePkg, StoreIdentity } from '../../../types' @Component({ selector: 'marketplace-package-hero', @@ -41,7 +41,7 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic

- +
`, @@ -53,7 +53,7 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic margin-top: 2.5rem; @media (min-width: 768px) { - margin-top: 0px; + margin-top: 0; } } @@ -129,8 +129,8 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic position: absolute; width: 100%; height: 100%; - top: 0px; - left: 0px; + top: 0; + left: 0; z-index: -50; border-radius: 1.5rem; @@ -161,7 +161,7 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [CommonModule, SharedPipesModule, TickerModule, TuiLetModule], + imports: [CommonModule, SharedPipesModule, TickerModule, TuiLet], }) export class MarketplacePackageHeroComponent { @Input({ required: true }) diff --git a/web/projects/marketplace/src/pages/show/screenshots/screenshots.component.ts b/web/projects/marketplace/src/pages/show/screenshots/screenshots.component.ts index bc9b2c929..8d5827637 100644 --- a/web/projects/marketplace/src/pages/show/screenshots/screenshots.component.ts +++ b/web/projects/marketplace/src/pages/show/screenshots/screenshots.component.ts @@ -1,3 +1,4 @@ +import { TuiCarousel } from '@taiga-ui/kit' import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, @@ -6,14 +7,9 @@ import { Input, } from '@angular/core' import { TUI_IS_MOBILE } from '@taiga-ui/cdk' -import { - TuiButtonModule, - TuiDialogContext, - TuiDialogService, -} from '@taiga-ui/core' -import { TuiCarouselModule } from '@taiga-ui/kit' +import { TuiDialogContext, TuiDialogService, TuiButton } from '@taiga-ui/core' import { MarketplacePkg } from '../../../types' -import { PolymorpheusContent } from '@tinkoff/ng-polymorpheus' +import { PolymorpheusContent } from '@taiga-ui/polymorpheus' @Component({ selector: 'marketplace-package-screenshots', @@ -22,7 +18,7 @@ import { PolymorpheusContent } from '@tinkoff/ng-polymorpheus' @@ -125,7 +121,7 @@ import { PolymorpheusContent } from '@tinkoff/ng-polymorpheus' ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [CommonModule, TuiCarouselModule, TuiButtonModule], + imports: [CommonModule, TuiCarousel, TuiButton], }) export class MarketplacePackageScreenshotComponent { private readonly dialogs = inject(TuiDialogService) diff --git a/web/projects/setup-wizard/src/app/app.component.ts b/web/projects/setup-wizard/src/app/app.component.ts index 3f88d6f89..f5e7ad52c 100644 --- a/web/projects/setup-wizard/src/app/app.component.ts +++ b/web/projects/setup-wizard/src/app/app.component.ts @@ -5,10 +5,7 @@ import { ApiService } from 'src/app/services/api.service' @Component({ selector: 'app-root', - template: ` - - - `, + template: '', }) export class AppComponent { private readonly api = inject(ApiService) diff --git a/web/projects/setup-wizard/src/app/app.module.ts b/web/projects/setup-wizard/src/app/app.module.ts index fbe56a356..a8a52a69c 100644 --- a/web/projects/setup-wizard/src/app/app.module.ts +++ b/web/projects/setup-wizard/src/app/app.module.ts @@ -3,20 +3,13 @@ import { NgModule } from '@angular/core' import { BrowserAnimationsModule } from '@angular/platform-browser/animations' import { PreloadAllModules, RouterModule } from '@angular/router' import { - LoadingModule, provideSetupLogsService, provideSetupService, RELATIVE_URL, WorkspaceConfig, } from '@start9labs/shared' -import { - TuiAlertModule, - TuiDialogModule, - TuiModeModule, - TuiRootModule, - TuiThemeNightModule, -} from '@taiga-ui/core' -import { tuiButtonOptionsProvider } from '@taiga-ui/experimental' +import { tuiButtonOptionsProvider, TuiRoot } from '@taiga-ui/core' +import { NG_EVENT_PLUGINS } from '@taiga-ui/event-plugins' import { ApiService } from 'src/app/services/api.service' import { LiveApiService } from 'src/app/services/live-api.service' import { MockApiService } from 'src/app/services/mock-api.service' @@ -37,14 +30,10 @@ const { preloadingStrategy: PreloadAllModules, initialNavigation: 'disabled', }), - LoadingModule, - TuiRootModule, - TuiDialogModule, - TuiAlertModule, - TuiModeModule, - TuiThemeNightModule, + TuiRoot, ], providers: [ + NG_EVENT_PLUGINS, provideSetupService(ApiService), provideSetupLogsService(ApiService), tuiButtonOptionsProvider({ size: 'm' }), 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 5cef71283..43a687f6a 100644 --- a/web/projects/setup-wizard/src/app/components/cifs.component.ts +++ b/web/projects/setup-wizard/src/app/components/cifs.component.ts @@ -1,3 +1,4 @@ +import { TuiInputModule, TuiInputPasswordModule } from '@taiga-ui/legacy' import { CommonModule } from '@angular/common' import { Component, inject, Inject } from '@angular/core' import { @@ -9,18 +10,13 @@ import { } from '@angular/forms' import { LoadingService, StartOSDiskInfo } from '@start9labs/shared' import { - TuiButtonModule, TuiDialogContext, TuiDialogService, - TuiErrorModule, + TuiError, + TuiButton, } from '@taiga-ui/core' -import { - TUI_VALIDATION_ERRORS, - TuiFieldErrorPipeModule, - TuiInputModule, - TuiInputPasswordModule, -} from '@taiga-ui/kit' -import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus' +import { TUI_VALIDATION_ERRORS, TuiFieldErrorPipe } from '@taiga-ui/kit' +import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus' import { PASSWORD } from 'src/app/components/password.component' import { ApiService, @@ -40,7 +36,7 @@ interface Context { Hostname @@ -51,7 +47,7 @@ interface Context { Path - + Username - + Enter Password - + @if (storageDrive) { Retype Password - + } @@ -67,9 +63,9 @@ interface DialogData { imports: [ FormsModule, ReactiveFormsModule, - TuiButtonModule, + TuiButton, TuiInputPasswordModule, - TuiErrorModule, + TuiError, ], }) export class PasswordComponent { diff --git a/web/projects/setup-wizard/src/app/components/recover.component.ts b/web/projects/setup-wizard/src/app/components/recover.component.ts index 765034ab7..8af676576 100644 --- a/web/projects/setup-wizard/src/app/components/recover.component.ts +++ b/web/projects/setup-wizard/src/app/components/recover.component.ts @@ -1,17 +1,14 @@ +import { TuiCell } from '@taiga-ui/layout' +import { TuiIcon, TuiTitle } from '@taiga-ui/core' import { Component, Input } from '@angular/core' import { RouterModule } from '@angular/router' -import { - TuiCellModule, - TuiIconModule, - TuiTitleModule, -} from '@taiga-ui/experimental' @Component({ standalone: true, selector: 'app-recover', template: ` - + Use Existing Drive @@ -20,7 +17,7 @@ import { - + Transfer @@ -30,14 +27,14 @@ import { - + Restore From Backup (Disaster Recovery) Restore StartOS data from an encrypted backup `, - imports: [RouterModule, TuiIconModule, TuiCellModule, TuiTitleModule], + imports: [RouterModule, TuiIcon, TuiCell, TuiTitle], }) export class RecoverComponent { @Input() disabled = false diff --git a/web/projects/setup-wizard/src/app/pages/attach.page.ts b/web/projects/setup-wizard/src/app/pages/attach.page.ts index 005bbc7c2..15e0f5e6a 100644 --- a/web/projects/setup-wizard/src/app/pages/attach.page.ts +++ b/web/projects/setup-wizard/src/app/pages/attach.page.ts @@ -7,12 +7,8 @@ import { LoadingService, toGuid, } from '@start9labs/shared' -import { TuiDialogService, TuiLoaderModule } from '@taiga-ui/core' -import { - TuiButtonModule, - TuiCardModule, - TuiCellModule, -} from '@taiga-ui/experimental' +import { TuiButton, TuiDialogService, TuiLoader } from '@taiga-ui/core' +import { TuiCardLarge, TuiCell } from '@taiga-ui/layout' import { PASSWORD } from 'src/app/components/password.component' import { ApiService } from 'src/app/services/api.service' import { StateService } from 'src/app/services/state.service' @@ -34,19 +30,13 @@ import { StateService } from 'src/app/services/state.service' valid StartOS data drive (not a backup) and is firmly connected, then refresh the page. } - } `, - imports: [ - TuiButtonModule, - TuiCardModule, - TuiCellModule, - TuiLoaderModule, - DriveComponent, - ], + imports: [TuiButton, TuiCardLarge, TuiCell, TuiLoader, DriveComponent], }) export default class AttachPage { private readonly apiService = inject(ApiService) 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 e7927b151..37aa652de 100644 --- a/web/projects/setup-wizard/src/app/pages/home.page.ts +++ b/web/projects/setup-wizard/src/app/pages/home.page.ts @@ -2,14 +2,8 @@ import { CommonModule } from '@angular/common' import { Component, inject, OnInit } from '@angular/core' import { RouterModule } from '@angular/router' import { ErrorService } from '@start9labs/shared' -import { - TuiButtonModule, - TuiCardModule, - TuiCellModule, - TuiIconModule, - TuiIconsModule, - TuiTitleModule, -} from '@taiga-ui/experimental' +import { TuiButton, TuiIcon, TuiTitle } from '@taiga-ui/core' +import { TuiCardLarge, TuiCell } from '@taiga-ui/layout' import { RecoverComponent } from 'src/app/components/recover.component' import { ApiService } from 'src/app/services/api.service' import { StateService } from 'src/app/services/state.service' @@ -26,7 +20,7 @@ import { StateService } from 'src/app/services/state.service' tuiIconButton appearance="flat" class="back" - iconLeft="tuiIconChevronLeft" + iconStart="@tui.chevron-left" (click)="recover = false" > Back @@ -37,7 +31,7 @@ import { StateService } from 'src/app/services/state.service'
- + Start Fresh @@ -50,7 +44,7 @@ import { StateService } from 'src/app/services/state.service' [disabled]="error || recover" (click)="recover = true" > - + Recover @@ -111,12 +105,11 @@ import { StateService } from 'src/app/services/state.service' imports: [ CommonModule, RouterModule, - TuiCardModule, - TuiButtonModule, - TuiIconsModule, - TuiCellModule, - TuiIconModule, - TuiTitleModule, + TuiCardLarge, + TuiButton, + TuiCell, + TuiIcon, + TuiTitle, RecoverComponent, ], }) diff --git a/web/projects/setup-wizard/src/app/pages/recover.page.ts b/web/projects/setup-wizard/src/app/pages/recover.page.ts index 8792ee7c2..0a6647202 100644 --- a/web/projects/setup-wizard/src/app/pages/recover.page.ts +++ b/web/projects/setup-wizard/src/app/pages/recover.page.ts @@ -1,15 +1,15 @@ import { Component, inject } from '@angular/core' import { Router } from '@angular/router' import { DriveComponent, ErrorService } from '@start9labs/shared' -import { TuiDialogService, TuiLoaderModule } from '@taiga-ui/core' import { - TuiButtonModule, - TuiCardModule, - TuiCellModule, - TuiIconModule, - TuiTitleModule, -} from '@taiga-ui/experimental' -import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus' + TuiButton, + TuiDialogService, + TuiIcon, + TuiLoader, + TuiTitle, +} from '@taiga-ui/core' +import { TuiCardLarge, TuiCell } from '@taiga-ui/layout' +import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { filter } from 'rxjs' import { CifsComponent } from 'src/app/components/cifs.component' import { PASSWORD } from 'src/app/components/password.component' @@ -33,7 +33,7 @@ import { StateService } from 'src/app/services/state.service' to the same network as your server. @@ -51,29 +51,29 @@ import { StateService } from 'src/app/services/state.service' } - } `, imports: [ - TuiCardModule, - TuiLoaderModule, - TuiButtonModule, - TuiCellModule, - TuiIconModule, - TuiTitleModule, + TuiCardLarge, + TuiLoader, + TuiButton, + TuiCell, + TuiIcon, + TuiTitle, DriveComponent, ], }) diff --git a/web/projects/setup-wizard/src/app/pages/storage.page.ts b/web/projects/setup-wizard/src/app/pages/storage.page.ts index 6622d4083..982b4c6c0 100644 --- a/web/projects/setup-wizard/src/app/pages/storage.page.ts +++ b/web/projects/setup-wizard/src/app/pages/storage.page.ts @@ -7,13 +7,9 @@ import { LoadingService, toGuid, } from '@start9labs/shared' -import { TuiDialogService, TuiLoaderModule } from '@taiga-ui/core' -import { - TuiButtonModule, - TuiCardModule, - TuiCellModule, -} from '@taiga-ui/experimental' -import { TUI_PROMPT } from '@taiga-ui/kit' +import { TuiButton, TuiDialogService, TuiLoader } from '@taiga-ui/core' +import { TUI_CONFIRM } from '@taiga-ui/kit' +import { TuiCardLarge, TuiCell } from '@taiga-ui/layout' import { filter, of, switchMap } from 'rxjs' import { PASSWORD } from 'src/app/components/password.component' import { @@ -48,18 +44,12 @@ import { StateService } from 'src/app/services/state.service' } - `, - imports: [ - TuiCardModule, - TuiLoaderModule, - TuiCellModule, - TuiButtonModule, - DriveComponent, - ], + imports: [TuiCardLarge, TuiLoader, TuiCell, TuiButton, DriveComponent], }) export default class StoragePage { private readonly api = inject(ApiService) @@ -125,7 +115,7 @@ export default class StoragePage { switchMap(unused => unused ? of(true) - : this.dialogs.open(TUI_PROMPT, { + : this.dialogs.open(TUI_CONFIRM, { label: 'Warning', size: 's', data: { 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 867118142..c527268cc 100644 --- a/web/projects/setup-wizard/src/app/pages/success.page.ts +++ b/web/projects/setup-wizard/src/app/pages/success.page.ts @@ -7,12 +7,8 @@ import { ViewChild, } from '@angular/core' import { DownloadHTMLService, ErrorService } from '@start9labs/shared' -import { - TuiButtonModule, - TuiCardModule, - TuiIconModule, - TuiSurfaceModule, -} from '@taiga-ui/experimental' +import { TuiButton, TuiIcon, TuiSurface } from '@taiga-ui/core' +import { TuiCardLarge } from '@taiga-ui/layout' import { DocumentationComponent } from 'src/app/components/documentation.component' import { MatrixComponent } from 'src/app/components/matrix.component' import { ApiService } from 'src/app/services/api.service' @@ -25,17 +21,17 @@ import { StateService } from 'src/app/services/state.service' @if (isKiosk) {

- + Setup Complete!

-
} @else if (lanAddress) {

- + Setup Complete!

@if (stateService.setupType === 'restore') { @@ -51,7 +47,7 @@ import { StateService } from 'src/app/services/state.service' Download - + @@ -68,7 +64,7 @@ import { StateService } from 'src/app/services/state.service' Open - +
`, - imports: [ - TuiCardModule, - TuiCellModule, - TuiButtonModule, - TuiLoaderModule, - DriveComponent, - ], + imports: [TuiCardLarge, TuiCell, TuiButton, TuiLoader, DriveComponent], }) export default class TransferPage { private readonly apiService = inject(ApiService) @@ -81,7 +72,7 @@ export default class TransferPage { select(drive: DiskInfo) { this.dialogs - .open(TUI_PROMPT, OPTIONS) + .open(TUI_CONFIRM, OPTIONS) .pipe(filter(Boolean)) .subscribe(() => { this.stateService.recoverySource = { @@ -93,7 +84,7 @@ export default class TransferPage { } } -const OPTIONS: Partial> = { +const OPTIONS: Partial> = { label: 'Warning', size: 's', data: { diff --git a/web/projects/setup-wizard/src/styles.scss b/web/projects/setup-wizard/src/styles.scss index 5ff5bd3c4..21cf6739d 100644 --- a/web/projects/setup-wizard/src/styles.scss +++ b/web/projects/setup-wizard/src/styles.scss @@ -24,7 +24,7 @@ router-outlet + * { [tuiCardLarge] { width: 100%; - background: var(--tui-base-02); + background: var(--tui-background-base-alt); margin: auto; } } @@ -43,7 +43,7 @@ header { p { font: var(--tui-font-text-m); - color: var(--tui-text-02); + color: var(--tui-text-secondary); } } @@ -53,17 +53,17 @@ h2 { } .g-success { - color: var(--tui-success-fill); + color: var(--tui-status-positive); } .g-warning { - color: var(--tui-warning-fill); + color: var(--tui-status-warning); } .g-error { - color: var(--tui-error-fill); + color: var(--tui-status-negative); } .g-info { - color: var(--tui-info-fill); + color: var(--tui-status-info); } diff --git a/web/projects/shared/assets/taiga-ui/icons/tuiIconBitcoinOutline.svg b/web/projects/shared/assets/taiga-ui/icons/tuiIconBitcoinOutline.svg deleted file mode 100644 index 89958abb0..000000000 --- a/web/projects/shared/assets/taiga-ui/icons/tuiIconBitcoinOutline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/web/projects/shared/assets/taiga-ui/icons/tuiIconCheckCircleOutline.svg b/web/projects/shared/assets/taiga-ui/icons/tuiIconCheckCircleOutline.svg deleted file mode 100644 index 3dab4ce82..000000000 --- a/web/projects/shared/assets/taiga-ui/icons/tuiIconCheckCircleOutline.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - diff --git a/web/projects/shared/assets/taiga-ui/icons/tuiIconRocketOutline.svg b/web/projects/shared/assets/taiga-ui/icons/tuiIconRocketOutline.svg deleted file mode 100644 index 2f95becf6..000000000 --- a/web/projects/shared/assets/taiga-ui/icons/tuiIconRocketOutline.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/web/projects/shared/package.json b/web/projects/shared/package.json index 272da854d..60d930945 100644 --- a/web/projects/shared/package.json +++ b/web/projects/shared/package.json @@ -5,12 +5,12 @@ "@angular/common": "^17.0.6", "@angular/core": "^17.0.6", "@angular/router": "^17.0.6", - "@ng-web-apis/mutation-observer": ">=2.0.0", - "@ng-web-apis/resize-observer": ">=2.0.0", + "@ng-web-apis/mutation-observer": ">=4.0.0", + "@ng-web-apis/resize-observer": ">=4.0.0", "@start9labs/emver": "^0.1.5", - "@taiga-ui/cdk": ">=3.0.0", - "@taiga-ui/core": ">=3.0.0", - "@taiga-ui/experimental": ">=3.0.0", + "@taiga-ui/cdk": "4.0.0-rc.5", + "@taiga-ui/core": "4.0.0-rc.5", + "@taiga-ui/experimental": "4.0.0-rc.5", "@tinkoff/ng-dompurify": ">=4.0.0", "ansi-to-html": "^0.7.2" }, diff --git a/web/projects/shared/src/components/drive.component.ts b/web/projects/shared/src/components/drive.component.ts index 59ff90727..d3c05ed08 100644 --- a/web/projects/shared/src/components/drive.component.ts +++ b/web/projects/shared/src/components/drive.component.ts @@ -1,12 +1,12 @@ +import { TuiIcon, TuiTitle } from '@taiga-ui/core' import { Component, Input } from '@angular/core' -import { TuiIconModule, TuiTitleModule } from '@taiga-ui/experimental' import { UnitConversionPipesModule } from '../pipes/unit-conversion/unit-conversion.module' @Component({ standalone: true, selector: 'button[drive]', template: ` - + {{ drive.logicalname }} @@ -17,7 +17,7 @@ import { UnitConversionPipesModule } from '../pipes/unit-conversion/unit-convers `, - imports: [TuiIconModule, TuiTitleModule, UnitConversionPipesModule], + imports: [TuiIcon, TuiTitle, UnitConversionPipesModule], }) export class DriveComponent { @Input() drive!: { diff --git a/web/projects/shared/src/components/initializing/initializing.component.ts b/web/projects/shared/src/components/initializing/initializing.component.ts index 6d28baa5d..180019682 100644 --- a/web/projects/shared/src/components/initializing/initializing.component.ts +++ b/web/projects/shared/src/components/initializing/initializing.component.ts @@ -1,3 +1,4 @@ +import { TuiLet } from '@taiga-ui/cdk' import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, @@ -6,8 +7,7 @@ import { Input, Output, } from '@angular/core' -import { TuiLetModule } from '@taiga-ui/cdk' -import { TuiProgressModule } from '@taiga-ui/kit' +import { TuiProgress } from '@taiga-ui/kit' import { delay, filter } from 'rxjs' import { LogsWindowComponent } from './logs-window.component' import { SetupService } from '../../services/setup.service' @@ -44,7 +44,7 @@ import { SetupService } from '../../services/setup.service' /* TODO: Theme */ background: #e0e0e0; color: #333; - --tui-clear-inverse: rgba(0, 0, 0, 0.1); + --tui-background-neutral-1: rgba(0, 0, 0, 0.1); } logs-window { @@ -60,7 +60,7 @@ import { SetupService } from '../../services/setup.service' background: #181818; } `, - imports: [CommonModule, LogsWindowComponent, TuiLetModule, TuiProgressModule], + imports: [CommonModule, LogsWindowComponent, TuiLet, TuiProgress], changeDetection: ChangeDetectionStrategy.OnPush, }) export class InitializingComponent { diff --git a/web/projects/shared/src/components/initializing/logs-window.component.ts b/web/projects/shared/src/components/initializing/logs-window.component.ts index 131fd1709..9da12fa94 100644 --- a/web/projects/shared/src/components/initializing/logs-window.component.ts +++ b/web/projects/shared/src/components/initializing/logs-window.component.ts @@ -1,11 +1,11 @@ +import { TuiScrollbar } from '@taiga-ui/core' import { AsyncPipe } from '@angular/common' import { Component, ElementRef, inject } from '@angular/core' import { - IntersectionObserverModule, + WaIntersectionObserver, INTERSECTION_ROOT, } from '@ng-web-apis/intersection-observer' -import { MutationObserverModule } from '@ng-web-apis/mutation-observer' -import { TuiScrollbarModule } from '@taiga-ui/core' +import { WaMutationObserver } from '@ng-web-apis/mutation-observer' import { NgDompurifyModule } from '@tinkoff/ng-dompurify' import { SetupLogsService } from '../../services/setup-logs.service' @@ -27,10 +27,10 @@ import { SetupLogsService } from '../../services/setup-logs.service' `, imports: [ AsyncPipe, - MutationObserverModule, - IntersectionObserverModule, + WaMutationObserver, + WaIntersectionObserver, NgDompurifyModule, - TuiScrollbarModule, + TuiScrollbar, ], providers: [ { diff --git a/web/projects/shared/src/components/loading/loading.component.scss b/web/projects/shared/src/components/loading/loading.component.scss index 9a7d10100..a827774b0 100644 --- a/web/projects/shared/src/components/loading/loading.component.scss +++ b/web/projects/shared/src/components/loading/loading.component.scss @@ -1,17 +1,16 @@ @import '@taiga-ui/core/styles/taiga-ui-local'; :host { - @include shadow(3); - display: flex; align-items: center; max-width: 80%; margin: auto; padding: 1.5rem; - background: var(--tui-elevation-01); + background: var(--tui-background-elevation-1); border-radius: var(--tui-radius-m); + box-shadow: var(--tui-shadow-popup); - --tui-primary: var(--tui-warning-fill); + --tui-background-accent-1: var(--tui-status-warning); } tui-loader { diff --git a/web/projects/shared/src/components/loading/loading.component.ts b/web/projects/shared/src/components/loading/loading.component.ts index 373f013a1..02df1d8d8 100644 --- a/web/projects/shared/src/components/loading/loading.component.ts +++ b/web/projects/shared/src/components/loading/loading.component.ts @@ -1,15 +1,16 @@ import { ChangeDetectionStrategy, Component, inject } from '@angular/core' +import { TuiLoader } from '@taiga-ui/core' import { POLYMORPHEUS_CONTEXT, PolymorpheusContent, -} from '@tinkoff/ng-polymorpheus' +} from '@taiga-ui/polymorpheus' @Component({ - template: ` - - `, + standalone: true, + template: '', styleUrls: ['./loading.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, + imports: [TuiLoader], }) export class LoadingComponent { readonly content: PolymorpheusContent = diff --git a/web/projects/shared/src/components/loading/loading.module.ts b/web/projects/shared/src/components/loading/loading.module.ts deleted file mode 100644 index 4a3798041..000000000 --- a/web/projects/shared/src/components/loading/loading.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { NgModule } from '@angular/core' -import { TuiLoaderModule } from '@taiga-ui/core' -import { tuiAsDialog } from '@taiga-ui/cdk' -import { LoadingComponent } from './loading.component' -import { LoadingService } from './loading.service' - -@NgModule({ - imports: [TuiLoaderModule], - declarations: [LoadingComponent], - exports: [LoadingComponent], - providers: [tuiAsDialog(LoadingService)], -}) -export class LoadingModule {} diff --git a/web/projects/shared/src/components/loading/loading.service.ts b/web/projects/shared/src/components/loading/loading.service.ts index 96ab4301f..46cbfbb65 100644 --- a/web/projects/shared/src/components/loading/loading.service.ts +++ b/web/projects/shared/src/components/loading/loading.service.ts @@ -1,10 +1,11 @@ +import { TuiPopoverService } from '@taiga-ui/cdk' import { Injectable } from '@angular/core' -import { AbstractTuiDialogService } from '@taiga-ui/cdk' -import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus' +import { TUI_DIALOGS } from '@taiga-ui/core' + import { LoadingComponent } from './loading.component' -@Injectable({ providedIn: `root` }) -export class LoadingService extends AbstractTuiDialogService { - protected readonly component = new PolymorpheusComponent(LoadingComponent) - protected readonly defaultOptions = {} -} +@Injectable({ + providedIn: `root`, + useFactory: () => new LoadingService(TUI_DIALOGS, LoadingComponent), +}) +export class LoadingService extends TuiPopoverService {} diff --git a/web/projects/shared/src/components/markdown/markdown.component.module.ts b/web/projects/shared/src/components/markdown/markdown.component.module.ts index ddb1722bc..0666dce63 100644 --- a/web/projects/shared/src/components/markdown/markdown.component.module.ts +++ b/web/projects/shared/src/components/markdown/markdown.component.module.ts @@ -1,10 +1,10 @@ -import { NgModule } from '@angular/core' import { CommonModule } from '@angular/common' -import { TuiLoaderModule, TuiNotificationModule } from '@taiga-ui/core' +import { NgModule } from '@angular/core' +import { TuiLoader, TuiNotification } from '@taiga-ui/core' import { NgDompurifyModule } from '@tinkoff/ng-dompurify' +import { SafeLinksDirective } from '../../directives/safe-links.directive' import { MarkdownPipeModule } from '../../pipes/markdown/markdown.module' -import { SafeLinksDirective } from '../../directives/safe-links.directive' import { MarkdownComponent } from './markdown.component' @NgModule({ @@ -14,8 +14,8 @@ import { MarkdownComponent } from './markdown.component' MarkdownPipeModule, SafeLinksDirective, NgDompurifyModule, - TuiLoaderModule, - TuiNotificationModule, + TuiLoader, + TuiNotification, ], exports: [MarkdownComponent], }) diff --git a/web/projects/shared/src/components/markdown/markdown.component.ts b/web/projects/shared/src/components/markdown/markdown.component.ts index 922ad645c..21d8ad322 100644 --- a/web/projects/shared/src/components/markdown/markdown.component.ts +++ b/web/projects/shared/src/components/markdown/markdown.component.ts @@ -1,6 +1,6 @@ import { Component, Inject } from '@angular/core' import { TuiDialogContext } from '@taiga-ui/core' -import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus' +import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus' import { catchError, ignoreElements, diff --git a/web/projects/shared/src/components/ticker/ticker.component.ts b/web/projects/shared/src/components/ticker/ticker.component.ts index 84326cc25..f8de4c93a 100644 --- a/web/projects/shared/src/components/ticker/ticker.component.ts +++ b/web/projects/shared/src/components/ticker/ticker.component.ts @@ -8,7 +8,7 @@ import { @Component({ selector: '[ticker]', - template: '', + template: '', styleUrls: ['./ticker.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) diff --git a/web/projects/shared/src/public-api.ts b/web/projects/shared/src/public-api.ts index 78ba1abd8..d6becfcc3 100644 --- a/web/projects/shared/src/public-api.ts +++ b/web/projects/shared/src/public-api.ts @@ -8,7 +8,6 @@ export * from './classes/rpc-error' export * from './components/initializing/logs-window.component' export * from './components/initializing/initializing.component' export * from './components/loading/loading.component' -export * from './components/loading/loading.module' export * from './components/loading/loading.service' export * from './components/markdown/markdown.component' export * from './components/markdown/markdown.component.module' diff --git a/web/projects/shared/src/services/error.service.ts b/web/projects/shared/src/services/error.service.ts index 45891e0f4..b530298ac 100644 --- a/web/projects/shared/src/services/error.service.ts +++ b/web/projects/shared/src/services/error.service.ts @@ -1,5 +1,5 @@ import { ErrorHandler, inject, Injectable } from '@angular/core' -import { TuiAlertService, TuiNotification } from '@taiga-ui/core' +import { TuiAlertService } from '@taiga-ui/core' import { HttpError } from '../classes/http-error' // TODO: Enable this as ErrorHandler @@ -15,8 +15,7 @@ export class ErrorService extends ErrorHandler { this.alerts .open(getErrorMessage(error, link), { label: 'Error', - autoClose: false, - status: TuiNotification.Error, + status: 'error', }) .subscribe() } diff --git a/web/projects/shared/styles/taiga.scss b/web/projects/shared/styles/taiga.scss index ed33a88ac..396879c01 100644 --- a/web/projects/shared/styles/taiga.scss +++ b/web/projects/shared/styles/taiga.scss @@ -1,40 +1,40 @@ @import '@taiga-ui/core/styles/taiga-ui-local'; :root { - --tui-primary: #3880ff; - --tui-primary-hover: #4c8dff; - --tui-primary-active: #3171e0; + --tui-background-accent-1: #3880ff; + --tui-background-accent-1-hover: #4c8dff; + --tui-background-accent-1-pressed: #3171e0; } /* stylelint-disable order/order */ [tuiAppearance][data-appearance='secondary-warning'] { - background: var(--tui-warning-bg); - color: var(--tui-text-01); + background: var(--tui-status-warning-pale); + color: var(--tui-text-primary); @include appearance-hover { - background: var(--tui-warning-bg-hover); + background: var(--tui-status-warning-pale-hover); } @include appearance-active { - background: var(--tui-warning-bg-hover); + background: var(--tui-status-warning-pale-hover); } } [tuiAppearance][data-appearance='icon-success'] { - color: var(--tui-success-fill); + color: var(--tui-status-positive); } [tuiAppearance][data-appearance='icon-warning'] { - color: var(--tui-warning-fill); + color: var(--tui-status-warning); } [tuiAppearance][data-appearance='icon-error'] { - color: var(--tui-error-fill); + color: var(--tui-status-negative); } [tuiAppearance][data-appearance='flat'], [tuiAppearance][data-appearance='outline'] { - color: var(--tui-text-01); + color: var(--tui-text-primary); } [tuiAppearance][data-appearance='primary'] { @@ -134,7 +134,7 @@ } } -[tuiWrapper][data-appearance='input-file'] { +[tuiAppearance][data-appearance='input-file'] { &:hover, &:active { background: transparent !important; @@ -150,7 +150,7 @@ tui-dialog { } tui-opt-group[data-label^='⚠️']::before { - color: var(--tui-warning-fill); + color: var(--tui-status-warning); } tui-hint[data-appearance='onDark'] { @@ -159,10 +159,10 @@ tui-hint[data-appearance='onDark'] { } [tuiLink] { - color: var(--tui-link) !important; + color: var(--tui-text-action) !important; &:hover { - color: var(--tui-link-hover) !important; + color: var(--tui-text-action-hover) !important; } } @@ -172,7 +172,7 @@ tui-hint[data-appearance='onDark'] { border-radius: 10rem; &._focused::after { - color: var(--tui-primary); + color: var(--tui-background-accent-1); } } @@ -182,12 +182,12 @@ tui-dropdown[data-appearance='start-os'][data-appearance='start-os'] { backdrop-filter: blur(0.25rem); box-shadow: 0 0.25rem 0.25rem rgb(0 0 0 / 25%); border-radius: 0.325rem; - // TODO: Replace --tui-elevation-02 when Taiga UI is updated + // TODO: Replace --tui-background-elevation-2 when Taiga UI is updated background: rgb(63 63 63 / 80%); tui-opt-group { &::before { - background: var(--tui-clear); + background: var(--tui-background-neutral-1); height: 1px; } diff --git a/web/projects/ui/src/app/app.component.html b/web/projects/ui/src/app/app.component.html index 1174d755c..69be6a4f2 100644 --- a/web/projects/ui/src/app/app.component.html +++ b/web/projects/ui/src/app/app.component.html @@ -1,18 +1,6 @@ - - + - - -@if (auth.isVerified$ | async) { - @switch (theme$ | async) { - @case ('Dark') { - - } - } -} @else { - -} diff --git a/web/projects/ui/src/app/app.module.ts b/web/projects/ui/src/app/app.module.ts index f31c6e9ba..130ebe126 100644 --- a/web/projects/ui/src/app/app.module.ts +++ b/web/projects/ui/src/app/app.module.ts @@ -2,15 +2,7 @@ import { HttpClientModule } from '@angular/common/http' import { NgModule } from '@angular/core' import { BrowserAnimationsModule } from '@angular/platform-browser/animations' import { ServiceWorkerModule } from '@angular/service-worker' -import { LoadingModule } from '@start9labs/shared' -import { TuiSheetDialogModule } from '@taiga-ui/addon-mobile' -import { - TuiAlertModule, - TuiDialogModule, - TuiModeModule, - TuiRootModule, - TuiThemeNightModule, -} from '@taiga-ui/core' +import { TuiRoot } from '@taiga-ui/core' import { SidebarHostComponent } from 'src/app/components/sidebar-host.component' import { SvgDefinitionsComponent } from 'src/app/components/svg-definitions.component' import { ToastContainerComponent } from 'src/app/components/toast-container.component' @@ -26,19 +18,13 @@ import { RoutingModule } from './routing.module' BrowserAnimationsModule, RoutingModule, ToastContainerComponent, - TuiRootModule, - TuiDialogModule, - TuiSheetDialogModule, - TuiAlertModule, - TuiModeModule, - TuiThemeNightModule, + TuiRoot, ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.useServiceWorker, // Register the ServiceWorker as soon as the application is stable // or after 30 seconds (whichever comes first). registrationStrategy: 'registerWhenStable:30000', }), - LoadingModule, SidebarHostComponent, SvgDefinitionsComponent, ], diff --git a/web/projects/ui/src/app/app.providers.ts b/web/projects/ui/src/app/app.providers.ts index e8e2febdf..c045151bc 100644 --- a/web/projects/ui/src/app/app.providers.ts +++ b/web/projects/ui/src/app/app.providers.ts @@ -7,17 +7,18 @@ import { FilterPackagesPipe, } from '@start9labs/marketplace' import { RELATIVE_URL, THEME, WorkspaceConfig } from '@start9labs/shared' -import { TUI_DATE_FORMAT, TUI_DATE_SEPARATOR } from '@taiga-ui/cdk' import { + TUI_DATE_FORMAT, + tuiButtonOptionsProvider, tuiDropdownOptionsProvider, tuiNumberFormatProvider, - tuiTextfieldOptionsProvider, } from '@taiga-ui/core' -import { tuiButtonOptionsProvider } from '@taiga-ui/experimental' +import { NG_EVENT_PLUGINS } from '@taiga-ui/event-plugins' import { TUI_DATE_TIME_VALUE_TRANSFORMER, TUI_DATE_VALUE_TRANSFORMER, } from '@taiga-ui/kit' +import { tuiTextfieldOptionsProvider } from '@taiga-ui/legacy' import { PATCH_DB_PROVIDERS } from 'src/app/services/patch-db/patch-db.providers' import { ApiService } from './services/api/embassy-api.service' import { LiveApiService } from './services/api/embassy-live-api.service' @@ -37,6 +38,7 @@ const { export const APP_PROVIDERS: Provider[] = [ PATCH_DB_PROVIDERS, + NG_EVENT_PLUGINS, FilterPackagesPipe, UntypedFormBuilder, tuiNumberFormatProvider({ decimalSeparator: '.', thousandSeparator: '' }), @@ -45,11 +47,10 @@ export const APP_PROVIDERS: Provider[] = [ tuiDropdownOptionsProvider({ appearance: 'start-os' }), { provide: TUI_DATE_FORMAT, - useValue: 'MDY', - }, - { - provide: TUI_DATE_SEPARATOR, - useValue: '/', + useValue: { + mode: 'MDY', + separator: '/', + }, }, { provide: TUI_DATE_VALUE_TRANSFORMER, diff --git a/web/projects/ui/src/app/components/notifications-toast.component.ts b/web/projects/ui/src/app/components/notifications-toast.component.ts index 6ec48d9c6..0fef23d3b 100644 --- a/web/projects/ui/src/app/components/notifications-toast.component.ts +++ b/web/projects/ui/src/app/components/notifications-toast.component.ts @@ -1,9 +1,9 @@ import { AsyncPipe } from '@angular/common' import { ChangeDetectionStrategy, Component, inject } from '@angular/core' import { RouterLink } from '@angular/router' -import { TuiAlertModule } from '@taiga-ui/core' +import { TuiAlert } from '@taiga-ui/core' import { PatchDB } from 'patch-db-client' -import { Observable, Subject, merge, pairwise, map, endWith } from 'rxjs' +import { endWith, map, merge, Observable, pairwise, Subject } from 'rxjs' import { DataModel } from 'src/app/services/patch-db/data-model' @Component({ @@ -20,7 +20,7 @@ import { DataModel } from 'src/app/services/patch-db/data-model' `, changeDetection: ChangeDetectionStrategy.OnPush, - imports: [TuiAlertModule, RouterLink, AsyncPipe], + imports: [TuiAlert, RouterLink, AsyncPipe], }) export class NotificationsToastComponent { private readonly dismiss$ = new Subject() diff --git a/web/projects/ui/src/app/components/refresh-alert.component.ts b/web/projects/ui/src/app/components/refresh-alert.component.ts index 4c8c58d85..57e7f9f0a 100644 --- a/web/projects/ui/src/app/components/refresh-alert.component.ts +++ b/web/projects/ui/src/app/components/refresh-alert.component.ts @@ -2,9 +2,8 @@ import { AsyncPipe } from '@angular/common' import { ChangeDetectionStrategy, Component, inject } from '@angular/core' import { SwUpdate } from '@angular/service-worker' import { Emver, LoadingService } from '@start9labs/shared' -import { TuiAutoFocusModule } from '@taiga-ui/cdk' -import { TuiDialogModule } from '@taiga-ui/core' -import { TuiButtonModule } from '@taiga-ui/experimental' +import { TuiAutoFocus } from '@taiga-ui/cdk' +import { TuiButton, TuiDialog } from '@taiga-ui/core' import { PatchDB } from 'patch-db-client' import { debounceTime, endWith, map, merge, Subject } from 'rxjs' import { ConfigService } from 'src/app/services/config.service' @@ -43,7 +42,7 @@ import { DataModel } from 'src/app/services/patch-db/data-model' `, changeDetection: ChangeDetectionStrategy.OnPush, - imports: [TuiDialogModule, AsyncPipe, TuiButtonModule, TuiAutoFocusModule], + imports: [TuiDialog, AsyncPipe, TuiButton, TuiAutoFocus], }) export class RefreshAlertComponent { private readonly updates = inject(SwUpdate) diff --git a/web/projects/ui/src/app/components/report.component.ts b/web/projects/ui/src/app/components/report.component.ts index 3a4c30dca..eb4b1e0bd 100644 --- a/web/projects/ui/src/app/components/report.component.ts +++ b/web/projects/ui/src/app/components/report.component.ts @@ -1,10 +1,10 @@ import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, Component, inject } from '@angular/core' -import { TuiDialogContext, TuiSvgModule } from '@taiga-ui/core' +import { TuiDialogContext, TuiIcon } from '@taiga-ui/core' import { POLYMORPHEUS_CONTEXT, PolymorpheusComponent, -} from '@tinkoff/ng-polymorpheus' +} from '@taiga-ui/polymorpheus' import { BackupReport } from 'src/app/services/api/api.types' @Component({ @@ -15,7 +15,7 @@ import { BackupReport } from 'src/app/services/api/api.types' System data
{{ system.result }}
- +
@@ -24,15 +24,15 @@ import { BackupReport } from 'src/app/services/api/api.types' {{ pkg.value.error ? 'Failed: ' + pkg.value.error : 'Succeeded' }}
- + />
`, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [CommonModule, TuiSvgModule], + imports: [CommonModule, TuiIcon], }) export class BackupsReportModal { private readonly context = @@ -51,34 +51,34 @@ export class BackupsReportModal { } getColor(error: unknown) { - return error ? 'var(--tui-negative)' : 'var(--tui-positive)' + return error ? 'var(--tui-text-negative)' : 'var(--tui-text-positive)' } getIcon(error: unknown) { - return error ? 'tuiIconMinusCircleLarge' : 'tuiIconCheckLarge' + return error ? '@tui.circle-minus' : '@tui.check' } private getSystem() { if (!this.report.server.attempted) { return { result: 'Not Attempted', - icon: 'tuiIconMinusLarge', - color: 'var(--tui-text-02)', + icon: '@tui.minus', + color: 'var(--tui-text-secondary)', } } if (this.report.server.error) { return { result: `Failed: ${this.report.server.error}`, - icon: 'tuiIconMinusCircleLarge', - color: 'var(--tui-negative)', + icon: '@tui.circle-minus', + color: 'var(--tui-text-negative)', } } return { result: 'Succeeded', - icon: 'tuiIconCheckLarge', - color: 'var(--tui-positive)', + icon: '@tui.check', + color: 'var(--tui-text-positive)', } } } diff --git a/web/projects/ui/src/app/components/sidebar-host.component.ts b/web/projects/ui/src/app/components/sidebar-host.component.ts index b8585d56e..bbea6f3d8 100644 --- a/web/projects/ui/src/app/components/sidebar-host.component.ts +++ b/web/projects/ui/src/app/components/sidebar-host.component.ts @@ -1,24 +1,19 @@ +import { TuiDropdownService } from '@taiga-ui/core' import { ChangeDetectionStrategy, Component, Directive, Injectable, } from '@angular/core' -import { - AbstractTuiPortalHostComponent, - AbstractTuiPortalService, - TuiDropdownPortalService, -} from '@taiga-ui/cdk' +import { TuiPortals, TuiPortalService } from '@taiga-ui/cdk' @Injectable({ providedIn: `root` }) -export class SidebarService extends AbstractTuiPortalService {} +export class SidebarService extends TuiPortalService {} @Directive({ selector: '[tuiSidebar]', standalone: true, - providers: [ - { provide: TuiDropdownPortalService, useExisting: SidebarService }, - ], + providers: [{ provide: TuiDropdownService, useExisting: SidebarService }], }) export class SidebarDirective {} @@ -28,8 +23,6 @@ export class SidebarDirective {} styles: [':host { position: fixed; top: 0; }'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - providers: [ - { provide: AbstractTuiPortalService, useExisting: SidebarService }, - ], + providers: [{ provide: TuiPortalService, useExisting: SidebarService }], }) -export class SidebarHostComponent extends AbstractTuiPortalHostComponent {} +export class SidebarHostComponent extends TuiPortals {} diff --git a/web/projects/ui/src/app/components/update-toast.component.ts b/web/projects/ui/src/app/components/update-toast.component.ts index c5a43a6c8..91f7e83cd 100644 --- a/web/projects/ui/src/app/components/update-toast.component.ts +++ b/web/projects/ui/src/app/components/update-toast.component.ts @@ -1,8 +1,7 @@ import { AsyncPipe } from '@angular/common' import { ChangeDetectionStrategy, Component, inject } from '@angular/core' import { ErrorService, LoadingService } from '@start9labs/shared' -import { TuiAlertModule } from '@taiga-ui/core' -import { TuiButtonModule } from '@taiga-ui/experimental' +import { TuiAlert, TuiButton } from '@taiga-ui/core' import { PatchDB } from 'patch-db-client' import { distinctUntilChanged, @@ -24,7 +23,7 @@ import { DataModel } from 'src/app/services/patch-db/data-model' [tuiAlertOptions]="{ label: 'StartOS download complete!', status: 'success', - autoClose: false + autoClose: 0 }" (tuiAlertChange)="onDismiss()" > @@ -44,7 +43,7 @@ import { DataModel } from 'src/app/services/patch-db/data-model' `, changeDetection: ChangeDetectionStrategy.OnPush, - imports: [TuiButtonModule, TuiAlertModule, AsyncPipe], + imports: [TuiButton, TuiAlert, AsyncPipe], }) export class UpdateToastComponent { private readonly api = inject(ApiService) diff --git a/web/projects/ui/src/app/components/welcome.component.ts b/web/projects/ui/src/app/components/welcome.component.ts index cdec034d8..00d42795a 100644 --- a/web/projects/ui/src/app/components/welcome.component.ts +++ b/web/projects/ui/src/app/components/welcome.component.ts @@ -1,7 +1,6 @@ import { Component, inject, Inject } from '@angular/core' -import { TuiDialogContext } from '@taiga-ui/core' -import { TuiButtonModule } from '@taiga-ui/experimental' -import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus' +import { TuiDialogContext, TuiButton } from '@taiga-ui/core' +import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus' @Component({ standalone: true, @@ -42,7 +41,7 @@ import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus'

`, styles: 'li { margin-bottom: 0.5rem }', - imports: [TuiButtonModule], + imports: [TuiButton], }) export class WelcomeComponent { readonly context = inject(POLYMORPHEUS_CONTEXT) diff --git a/web/projects/ui/src/app/routes/diagnostic/home/home.module.ts b/web/projects/ui/src/app/routes/diagnostic/home/home.module.ts index 530fccaa2..10c8d2a8e 100644 --- a/web/projects/ui/src/app/routes/diagnostic/home/home.module.ts +++ b/web/projects/ui/src/app/routes/diagnostic/home/home.module.ts @@ -1,7 +1,7 @@ +import { TuiButton } from '@taiga-ui/core' import { NgModule } from '@angular/core' import { CommonModule } from '@angular/common' import { RouterModule, Routes } from '@angular/router' -import { TuiButtonModule } from '@taiga-ui/experimental' import { HomePage } from './home.page' const ROUTES: Routes = [ @@ -12,7 +12,7 @@ const ROUTES: Routes = [ ] @NgModule({ - imports: [CommonModule, TuiButtonModule, RouterModule.forChild(ROUTES)], + imports: [CommonModule, TuiButton, RouterModule.forChild(ROUTES)], declarations: [HomePage], }) export class HomePageModule {} diff --git a/web/projects/ui/src/app/routes/diagnostic/home/home.page.scss b/web/projects/ui/src/app/routes/diagnostic/home/home.page.scss index 52f6f34c8..69b937d32 100644 --- a/web/projects/ui/src/app/routes/diagnostic/home/home.page.scss +++ b/web/projects/ui/src/app/routes/diagnostic/home/home.page.scss @@ -2,7 +2,7 @@ display: block; padding: 2rem; overflow: auto; - background: var(--tui-base-01); + background: var(--tui-background-base); } .title { @@ -20,14 +20,14 @@ .code { display: block; - color: var(--tui-success-fill); + color: var(--tui-status-positive); background: rgb(69, 69, 69); padding: 1px 1rem; margin-bottom: 2rem; } .warning { - color: var(--tui-warning-fill); + color: var(--tui-status-warning); } .buttons { diff --git a/web/projects/ui/src/app/routes/diagnostic/home/home.page.ts b/web/projects/ui/src/app/routes/diagnostic/home/home.page.ts index 8af9be855..56262f5d2 100644 --- a/web/projects/ui/src/app/routes/diagnostic/home/home.page.ts +++ b/web/projects/ui/src/app/routes/diagnostic/home/home.page.ts @@ -1,8 +1,8 @@ +import { TUI_CONFIRM } from '@taiga-ui/kit' import { Component, Inject } from '@angular/core' import { WINDOW } from '@ng-web-apis/common' import { LoadingService } from '@start9labs/shared' import { TuiDialogService } from '@taiga-ui/core' -import { TUI_PROMPT } from '@taiga-ui/kit' import { filter } from 'rxjs' import { DiagnosticService } from '../services/diagnostic.service' @@ -118,7 +118,7 @@ export class HomePage { async presentAlertSystemRebuild() { this.dialogs - .open(TUI_PROMPT, { + .open(TUI_CONFIRM, { label: 'Warning', size: 's', data: { @@ -140,7 +140,7 @@ export class HomePage { async presentAlertRepairDisk() { this.dialogs - .open(TUI_PROMPT, { + .open(TUI_CONFIRM, { label: 'Warning', size: 's', data: { diff --git a/web/projects/ui/src/app/routes/diagnostic/logs/logs.module.ts b/web/projects/ui/src/app/routes/diagnostic/logs/logs.module.ts index 97c1b8f90..e3e498efb 100644 --- a/web/projects/ui/src/app/routes/diagnostic/logs/logs.module.ts +++ b/web/projects/ui/src/app/routes/diagnostic/logs/logs.module.ts @@ -1,10 +1,10 @@ -import { NgModule } from '@angular/core' import { CommonModule } from '@angular/common' -import { Routes, RouterModule } from '@angular/router' -import { IntersectionObserverModule } from '@ng-web-apis/intersection-observer' -import { MutationObserverModule } from '@ng-web-apis/mutation-observer' -import { TuiLoaderModule, TuiScrollbarModule } from '@taiga-ui/core' -import { TuiBadgeModule, TuiButtonModule } from '@taiga-ui/experimental' +import { NgModule } from '@angular/core' +import { RouterModule, Routes } from '@angular/router' +import { WaIntersectionObserver } from '@ng-web-apis/intersection-observer' +import { WaMutationObserver } from '@ng-web-apis/mutation-observer' +import { TuiButton, TuiLoader, TuiScrollbar } from '@taiga-ui/core' +import { TuiBadge } from '@taiga-ui/kit' import { NgDompurifyModule } from '@tinkoff/ng-dompurify' import { LogsPage } from './logs.page' @@ -19,13 +19,13 @@ const ROUTES: Routes = [ imports: [ CommonModule, RouterModule.forChild(ROUTES), - IntersectionObserverModule, - MutationObserverModule, + ...WaIntersectionObserver, + WaMutationObserver, NgDompurifyModule, - TuiBadgeModule, - TuiButtonModule, - TuiLoaderModule, - TuiScrollbarModule, + TuiBadge, + TuiButton, + TuiLoader, + TuiScrollbar, ], declarations: [LogsPage], }) diff --git a/web/projects/ui/src/app/routes/diagnostic/logs/logs.page.html b/web/projects/ui/src/app/routes/diagnostic/logs/logs.page.html index 129d34713..86a5b7303 100644 --- a/web/projects/ui/src/app/routes/diagnostic/logs/logs.page.html +++ b/web/projects/ui/src/app/routes/diagnostic/logs/logs.page.html @@ -1,7 +1,7 @@ diff --git a/web/projects/ui/src/app/routes/diagnostic/logs/logs.page.ts b/web/projects/ui/src/app/routes/diagnostic/logs/logs.page.ts index 1c16bab4f..fb3a3d76b 100644 --- a/web/projects/ui/src/app/routes/diagnostic/logs/logs.page.ts +++ b/web/projects/ui/src/app/routes/diagnostic/logs/logs.page.ts @@ -1,7 +1,7 @@ import { Component, ElementRef, inject, OnInit, ViewChild } from '@angular/core' import { INTERSECTION_ROOT } from '@ng-web-apis/intersection-observer' import { convertAnsi, ErrorService } from '@start9labs/shared' -import { TuiScrollbarComponent } from '@taiga-ui/core' +import { TuiScrollbar } from '@taiga-ui/core' import { DiagnosticService } from 'src/app/routes/diagnostic/services/diagnostic.service' @Component({ @@ -15,7 +15,7 @@ import { DiagnosticService } from 'src/app/routes/diagnostic/services/diagnostic justify-content: flex-start; padding: 1rem; gap: 1rem; - background: var(--tui-base-01); + background: var(--tui-background-base); } `, providers: [ @@ -26,7 +26,7 @@ import { DiagnosticService } from 'src/app/routes/diagnostic/services/diagnostic ], }) export class LogsPage implements OnInit { - @ViewChild(TuiScrollbarComponent, { read: ElementRef }) + @ViewChild(TuiScrollbar, { read: ElementRef }) private readonly scrollbar?: ElementRef private readonly api = inject(DiagnosticService) private readonly errorService = inject(ErrorService) diff --git a/web/projects/ui/src/app/routes/login/ca-wizard/ca-wizard.component.html b/web/projects/ui/src/app/routes/login/ca-wizard/ca-wizard.component.html index adf9c75ed..4cb52b8bc 100644 --- a/web/projects/ui/src/app/routes/login/ca-wizard/ca-wizard.component.html +++ b/web/projects/ui/src/app/routes/login/ca-wizard/ca-wizard.component.html @@ -4,7 +4,7 @@ tuiSurface="elevated" class="card" > - +

Trust Your Root CA

Download and trust your server's Root Certificate Authority to establish a @@ -29,7 +29,7 @@ tuiButton size="s" appearance="tertiary-solid" - iconRight="tuiIconDownload" + iconEnd="@tui.download" href="/eos/local.crt" > Download @@ -47,7 +47,7 @@ href="https://docs.start9.com/0.3.5.x/user-manual/trust-ca" target="_blank" rel="noreferrer" - iconRight="tuiIconExternalLink" + iconEnd="@tui.external-link" > View Instructions @@ -62,7 +62,7 @@ size="s" class="refresh" appearance="success-solid" - iconRight="tuiIconRefreshCw" + iconEnd="@tui.refresh-cw" (click)="refresh()" > Refresh @@ -73,7 +73,7 @@ tuiButton size="s" appearance="flat" - iconRight="tuiIconExternalLink" + iconEnd="@tui.external-link" (click)="launchHttps()" [disabled]="caTrusted" > @@ -85,7 +85,7 @@

@@ -97,7 +97,7 @@
diff --git a/web/projects/ui/src/app/routes/portal/components/form/form-control/form-control.component.ts b/web/projects/ui/src/app/routes/portal/components/form/form-control/form-control.component.ts index a611c5a93..885d2bf4f 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form-control/form-control.component.ts +++ b/web/projects/ui/src/app/routes/portal/components/form/form-control/form-control.component.ts @@ -6,14 +6,11 @@ import { TemplateRef, ViewChild, } from '@angular/core' -import { AbstractTuiNullableControl } from '@taiga-ui/cdk' -import { - TuiAlertService, - TuiDialogContext, - TuiNotification, -} from '@taiga-ui/core' -import { filter, takeUntil } from 'rxjs' +import { takeUntilDestroyed } from '@angular/core/rxjs-interop' import { CT } from '@start9labs/start-sdk' +import { TuiAlertService, TuiDialogContext } from '@taiga-ui/core' +import { AbstractTuiNullableControl } from '@taiga-ui/legacy' +import { filter } from 'rxjs' import { ERRORS } from '../form-group/form-group.component' import { FORM_CONTROL_PROVIDERS } from './form-control.providers' @@ -55,11 +52,11 @@ export class FormControlComponent< this.alerts .open(this.warning, { label: 'Warning', - status: TuiNotification.Warning, - hasCloseButton: false, - autoClose: false, + status: 'warning', + closeable: false, + autoClose: 0, }) - .pipe(filter(Boolean), takeUntil(this.destroy$)) + .pipe(filter(Boolean), takeUntilDestroyed(this.destroyRef)) .subscribe(() => { this.value = previous }) diff --git a/web/projects/ui/src/app/routes/portal/components/form/form-file/form-file.component.html b/web/projects/ui/src/app/routes/portal/components/form/form-file/form-file.component.html index 9e9c16613..8b064f62b 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form-file/form-file.component.html +++ b/web/projects/ui/src/app/routes/portal/components/form/form-file/form-file.component.html @@ -1,31 +1,33 @@ - - + + diff --git a/web/projects/ui/src/app/routes/portal/components/form/form-file/form-file.component.scss b/web/projects/ui/src/app/routes/portal/components/form/form-file/form-file.component.scss index 2e314972d..c424cf947 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form-file/form-file.component.scss +++ b/web/projects/ui/src/app/routes/portal/components/form/form-file/form-file.component.scss @@ -36,7 +36,7 @@ small { max-width: 50%; font-weight: normal; - color: var(--tui-text-02); + color: var(--tui-text-secondary); margin-left: auto; } diff --git a/web/projects/ui/src/app/routes/portal/components/form/form-group/form-group.component.html b/web/projects/ui/src/app/routes/portal/components/form/form-group/form-group.component.html index d3c769b98..ee1a00dbb 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form-group/form-group.component.html +++ b/web/projects/ui/src/app/routes/portal/components/form/form-group/form-group.component.html @@ -1,6 +1,5 @@ diff --git a/web/projects/ui/src/app/routes/portal/components/form/form-group/form-group.component.scss b/web/projects/ui/src/app/routes/portal/components/form/form-group/form-group.component.scss index ce5665fc0..76989c209 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form-group/form-group.component.scss +++ b/web/projects/ui/src/app/routes/portal/components/form/form-group/form-group.component.scss @@ -10,7 +10,7 @@ form-group .g-form-group { &::after { content: ''; position: absolute; - background: var(--tui-clear); + background: var(--tui-background-neutral-1); } &::before { diff --git a/web/projects/ui/src/app/routes/portal/components/form/form-group/form-group.providers.ts b/web/projects/ui/src/app/routes/portal/components/form/form-group/form-group.providers.ts index 5c9039f40..4383a96d7 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form-group/form-group.providers.ts +++ b/web/projects/ui/src/app/routes/portal/components/form/form-group/form-group.providers.ts @@ -1,11 +1,8 @@ import { Provider, SkipSelf } from '@angular/core' -import { - TUI_ARROW_MODE, - tuiInputDateOptionsProvider, - tuiInputTimeOptionsProvider, -} from '@taiga-ui/kit' -import { TUI_DEFAULT_ERROR_MESSAGE } from '@taiga-ui/core' import { ControlContainer } from '@angular/forms' +import { TUI_DEFAULT_ERROR_MESSAGE } from '@taiga-ui/core' +import { tuiInputDateOptionsProvider } from '@taiga-ui/kit' +import { TUI_ARROW_MODE, tuiInputTimeOptionsProvider } from '@taiga-ui/legacy' import { identity, of } from 'rxjs' export const FORM_GROUP_PROVIDERS: Provider[] = [ diff --git a/web/projects/ui/src/app/routes/portal/components/form/form-number/form-number.component.html b/web/projects/ui/src/app/routes/portal/components/form/form-number/form-number.component.html index c205b2bb8..45563dd03 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form-number/form-number.component.html +++ b/web/projects/ui/src/app/routes/portal/components/form/form-number/form-number.component.html @@ -4,8 +4,10 @@ [readOnly]="readOnly" [tuiTextfieldPostfix]="spec.units || ''" [pseudoInvalid]="invalid" - [precision]="Infinity" - [decimal]="spec.integer ? 'never' : 'not-zero'" + [tuiNumberFormat]="{ + precision: spec.integer ? 0 : Infinity, + decimalMode: 'not-zero' + }" [min]="spec.min ?? -Infinity" [max]="spec.max ?? Infinity" [step]="spec.step || 0" @@ -14,5 +16,5 @@ > {{ spec.name }} * - + diff --git a/web/projects/ui/src/app/routes/portal/components/form/form-object/form-object.component.html b/web/projects/ui/src/app/routes/portal/components/form/form-object/form-object.component.html index 6dccad33a..54c9a59e2 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form-object/form-object.component.html +++ b/web/projects/ui/src/app/routes/portal/components/form/form-object/form-object.component.html @@ -2,24 +2,22 @@ - + {{ spec.name }} - + @if (spec.description) { + + }
- +
diff --git a/web/projects/ui/src/app/routes/portal/components/form/form-object/form-object.component.scss b/web/projects/ui/src/app/routes/portal/components/form/form-object/form-object.component.scss index c167c89fa..f5619a603 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form-object/form-object.component.scss +++ b/web/projects/ui/src/app/routes/portal/components/form/form-object/form-object.component.scss @@ -36,6 +36,6 @@ &_invalid::before, &_invalid::after { - background: var(--tui-error-bg); + background: var(--tui-status-negative-pale); } } diff --git a/web/projects/ui/src/app/routes/portal/components/form/form-text/form-text.component.html b/web/projects/ui/src/app/routes/portal/components/form/form-text/form-text.component.html index 0db900238..7fe9448a4 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form-text/form-text.component.html +++ b/web/projects/ui/src/app/routes/portal/components/form/form-text/form-text.component.html @@ -10,7 +10,7 @@ {{ spec.name }} * diff --git a/web/projects/ui/src/app/routes/portal/components/form/form-textarea/form-textarea.component.html b/web/projects/ui/src/app/routes/portal/components/form/form-textarea/form-textarea.component.html index 7a2bf5149..9f2008b5e 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form-textarea/form-textarea.component.html +++ b/web/projects/ui/src/app/routes/portal/components/form/form-textarea/form-textarea.component.html @@ -1,4 +1,4 @@ - {{ spec.name }} * - - + + diff --git a/web/projects/ui/src/app/routes/portal/components/form/form-toggle/form-toggle.component.html b/web/projects/ui/src/app/routes/portal/components/form/form-toggle/form-toggle.component.html index 73d116f92..9cd61288d 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form-toggle/form-toggle.component.html +++ b/web/projects/ui/src/app/routes/portal/components/form/form-toggle/form-toggle.component.html @@ -1,11 +1,12 @@ {{ spec.name }} - - +} + + (blur)="onFocus(false)" +/> diff --git a/web/projects/ui/src/app/routes/portal/components/form/form.module.ts b/web/projects/ui/src/app/routes/portal/components/form/form.module.ts index b4cf2756a..aa3488d74 100644 --- a/web/projects/ui/src/app/routes/portal/components/form/form.module.ts +++ b/web/projects/ui/src/app/routes/portal/components/form/form.module.ts @@ -1,54 +1,55 @@ -import { NgModule } from '@angular/core' import { CommonModule } from '@angular/common' +import { NgModule } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { MaskitoModule } from '@maskito/angular' -import { TuiMapperPipeModule, TuiValueChangesModule } from '@taiga-ui/cdk' +import { TuiMapperPipe, TuiValueChanges } from '@taiga-ui/cdk' import { - TuiErrorModule, - TuiExpandModule, - TuiHintModule, - TuiLinkModule, - TuiModeModule, - TuiSvgModule, - TuiTextfieldControllerModule, - TuiTooltipModule, - TuiWrapperModule, + TuiAppearance, + TuiButton, + TuiError, + TuiExpand, + TuiHint, + TuiIcon, + TuiLink, + TuiNumberFormat, } from '@taiga-ui/core' -import { TuiButtonModule } from '@taiga-ui/experimental' import { - TuiElasticContainerModule, - TuiFieldErrorPipeModule, + TuiElasticContainer, + TuiFieldErrorPipe, + TuiFiles, + TuiSwitch, + TuiTooltip, +} from '@taiga-ui/kit' +import { TuiInputDateModule, TuiInputDateTimeModule, - TuiInputFilesModule, TuiInputModule, TuiInputNumberModule, TuiInputTimeModule, TuiMultiSelectModule, - TuiPromptModule, TuiSelectModule, TuiTagModule, - TuiTextAreaModule, - TuiToggleModule, -} from '@taiga-ui/kit' + TuiTextareaModule, + TuiTextfieldControllerModule, +} from '@taiga-ui/legacy' +import { ControlDirective } from './control.directive' +import { FormArrayComponent } from './form-array/form-array.component' +import { FormColorComponent } from './form-color/form-color.component' +import { FormControlComponent } from './form-control/form-control.component' +import { FormDatetimeComponent } from './form-datetime/form-datetime.component' +import { FormFileComponent } from './form-file/form-file.component' import { FormGroupComponent } from './form-group/form-group.component' -import { FormTextComponent } from './form-text/form-text.component' -import { FormToggleComponent } from './form-toggle/form-toggle.component' -import { FormTextareaComponent } from './form-textarea/form-textarea.component' -import { FormNumberComponent } from './form-number/form-number.component' -import { FormSelectComponent } from './form-select/form-select.component' -import { FormFileComponent } from './form-file/form-file.component' import { FormMultiselectComponent } from './form-multiselect/form-multiselect.component' -import { FormUnionComponent } from './form-union/form-union.component' +import { FormNumberComponent } from './form-number/form-number.component' import { FormObjectComponent } from './form-object/form-object.component' -import { FormArrayComponent } from './form-array/form-array.component' -import { FormControlComponent } from './form-control/form-control.component' -import { MustachePipe } from './mustache.pipe' -import { ControlDirective } from './control.directive' -import { FormColorComponent } from './form-color/form-color.component' -import { FormDatetimeComponent } from './form-datetime/form-datetime.component' +import { FormSelectComponent } from './form-select/form-select.component' +import { FormTextComponent } from './form-text/form-text.component' +import { FormTextareaComponent } from './form-textarea/form-textarea.component' +import { FormToggleComponent } from './form-toggle/form-toggle.component' +import { FormUnionComponent } from './form-union/form-union.component' import { HintPipe } from './hint.pipe' +import { MustachePipe } from './mustache.pipe' @NgModule({ imports: [ @@ -57,31 +58,30 @@ import { HintPipe } from './hint.pipe' ReactiveFormsModule, TuiInputModule, TuiInputNumberModule, - TuiInputFilesModule, - TuiTextAreaModule, + ...TuiFiles, + TuiTextareaModule, TuiSelectModule, TuiMultiSelectModule, - TuiToggleModule, - TuiTooltipModule, - TuiHintModule, - TuiModeModule, + TuiSwitch, + TuiTooltip, + ...TuiHint, TuiTagModule, - TuiButtonModule, - TuiExpandModule, + TuiButton, + ...TuiExpand, TuiTextfieldControllerModule, - TuiLinkModule, - TuiPromptModule, - TuiErrorModule, - TuiFieldErrorPipeModule, - TuiValueChangesModule, - TuiElasticContainerModule, + TuiLink, + TuiError, + TuiFieldErrorPipe, + TuiValueChanges, + TuiElasticContainer, MaskitoModule, - TuiSvgModule, - TuiWrapperModule, TuiInputDateModule, TuiInputTimeModule, TuiInputDateTimeModule, - TuiMapperPipeModule, + TuiMapperPipe, + TuiAppearance, + TuiIcon, + TuiNumberFormat, ], declarations: [ FormGroupComponent, diff --git a/web/projects/ui/src/app/routes/portal/components/header/about.component.ts b/web/projects/ui/src/app/routes/portal/components/header/about.component.ts index 17f108198..7838ca37a 100644 --- a/web/projects/ui/src/app/routes/portal/components/header/about.component.ts +++ b/web/projects/ui/src/app/routes/portal/components/header/about.component.ts @@ -1,12 +1,9 @@ +import { TuiCell } from '@taiga-ui/layout' +import { TuiTitle, TuiButton } from '@taiga-ui/core' import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, Component, inject } from '@angular/core' import { CopyService, EmverPipesModule } from '@start9labs/shared' -import { - TuiButtonModule, - TuiCellModule, - TuiTitleModule, -} from '@taiga-ui/experimental' -import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus' +import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { PatchDB } from 'patch-db-client' import { DataModel } from 'src/app/services/patch-db/data-model' import { ConfigService } from 'src/app/services/config.service' @@ -28,7 +25,7 @@ import { ConfigService } from 'src/app/services/config.service' - - - @for (link of utils; track $index) { - - - {{ link.name }} - @if (link.badge(); as badge) { - {{ badge }} - } - - @if (!$index || $index === 3 || $index === 5) { -
- } - } -
- + + + @for (link of utils; track $index) { + - - Resources - - - -
- @for (link of links; track $index) { -
- - {{ link.name }} - - - } -
-
- -
-
- + {{ link.name }} + @if (link.badge(); as badge) { + {{ badge }} + } + + @if (!$index || $index === 3 || $index === 5) { +
+ } + } +
+ +
+ @for (link of links; track $index) { + + {{ link.name }} + + } + + + + + `, styles: [ ` @@ -108,31 +103,20 @@ import { ABOUT } from './about.component' .item { justify-content: flex-start; gap: 0.75rem; - - ::ng-deep tui-svg { - margin-left: auto; - } - } - - .external { - margin-left: auto; - padding-left: 0.5rem; } `, ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ - TuiHostedDropdownModule, - TuiDataListModule, - TuiSvgModule, - TuiButtonModule, - TuiIconModule, + TuiDropdown, + TuiDataList, + TuiButton, + TuiIcon, RouterLink, - TuiBadgeNotificationModule, - TuiDropdownModule, - TuiDataListDropdownManagerModule, - TuiActiveZoneModule, + TuiBadgeNotification, + TuiDropdown, + TuiDataListDropdownManager, ], }) export class HeaderMenuComponent { diff --git a/web/projects/ui/src/app/routes/portal/components/header/mobile.component.ts b/web/projects/ui/src/app/routes/portal/components/header/mobile.component.ts index 1dc92b117..8a4b1d3df 100644 --- a/web/projects/ui/src/app/routes/portal/components/header/mobile.component.ts +++ b/web/projects/ui/src/app/routes/portal/components/header/mobile.component.ts @@ -1,3 +1,4 @@ +import { TuiIcon } from '@taiga-ui/core' import { ChangeDetectionStrategy, Component, @@ -6,7 +7,6 @@ import { } from '@angular/core' import { RouterLink } from '@angular/router' import { WINDOW } from '@ng-web-apis/common' -import { TuiIconModule } from '@taiga-ui/experimental' import { Breadcrumb } from 'src/app/services/breadcrumbs.service' @Component({ @@ -19,7 +19,7 @@ import { Breadcrumb } from 'src/app/services/breadcrumbs.service' [style.padding.rem]="0.75" [queryParams]="queryParams" > - + } {{ title }} @@ -65,7 +65,7 @@ import { Breadcrumb } from 'src/app/services/breadcrumbs.service' `, ], changeDetection: ChangeDetectionStrategy.OnPush, - imports: [TuiIconModule, RouterLink], + imports: [TuiIcon, RouterLink], }) export class HeaderMobileComponent { private readonly win = inject(WINDOW) diff --git a/web/projects/ui/src/app/routes/portal/components/header/snek.component.ts b/web/projects/ui/src/app/routes/portal/components/header/snek.component.ts index 1f6ba9771..8ccf2beca 100644 --- a/web/projects/ui/src/app/routes/portal/components/header/snek.component.ts +++ b/web/projects/ui/src/app/routes/portal/components/header/snek.component.ts @@ -7,9 +7,8 @@ import { OnDestroy, } from '@angular/core' import { pauseFor } from '@start9labs/shared' -import { TuiButtonModule } from '@taiga-ui/experimental' -import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus' -import { TuiDialogContext } from '@taiga-ui/core' +import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus' +import { TuiDialogContext, TuiButton } from '@taiga-ui/core' @Component({ standalone: true, @@ -41,7 +40,7 @@ import { TuiDialogContext } from '@taiga-ui/core' } `, ], - imports: [TuiButtonModule], + imports: [TuiButton], }) export class HeaderSnekComponent implements AfterViewInit, OnDestroy { private readonly document = inject(DOCUMENT) diff --git a/web/projects/ui/src/app/routes/portal/components/header/snek.directive.ts b/web/projects/ui/src/app/routes/portal/components/header/snek.directive.ts index d7321d508..97117816b 100644 --- a/web/projects/ui/src/app/routes/portal/components/header/snek.directive.ts +++ b/web/projects/ui/src/app/routes/portal/components/header/snek.directive.ts @@ -1,7 +1,7 @@ import { Directive, HostListener, inject, Input } from '@angular/core' import { ErrorService, LoadingService } from '@start9labs/shared' import { TuiDialogService } from '@taiga-ui/core' -import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus' +import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { filter } from 'rxjs' import { ApiService } from 'src/app/services/api/embassy-api.service' import { HeaderSnekComponent } from './snek.component' diff --git a/web/projects/ui/src/app/routes/portal/components/interfaces/address-group.component.ts b/web/projects/ui/src/app/routes/portal/components/interfaces/address-group.component.ts index dc423b42e..eabc04a8a 100644 --- a/web/projects/ui/src/app/routes/portal/components/interfaces/address-group.component.ts +++ b/web/projects/ui/src/app/routes/portal/components/interfaces/address-group.component.ts @@ -1,3 +1,4 @@ +import { TuiButton } from '@taiga-ui/core' import { ChangeDetectionStrategy, Component, @@ -5,7 +6,6 @@ import { inject, } from '@angular/core' import { AddressItemComponent } from './address-item.component' -import { TuiButtonModule } from '@taiga-ui/experimental' import { AddressDetails, AddressesService } from './interface.utils' @Component({ @@ -18,20 +18,20 @@ import { AddressDetails, AddressesService } from './interface.utils' class="icon-add-btn" tuiIconButton appearance="secondary" - iconLeft="tuiIconPlus" + iconStart="@tui.plus" (click)="service.add()" > Add } - + @for (address of addresses; track $index) { } @empty { } `, - imports: [AddressItemComponent, TuiButtonModule], + imports: [AddressItemComponent, TuiButton], changeDetection: ChangeDetectionStrategy.OnPush, styles: ` .icon-add-btn { diff --git a/web/projects/ui/src/app/routes/portal/components/interfaces/address-item.component.ts b/web/projects/ui/src/app/routes/portal/components/interfaces/address-item.component.ts index c81471f96..ed6c35bf1 100644 --- a/web/projects/ui/src/app/routes/portal/components/interfaces/address-item.component.ts +++ b/web/projects/ui/src/app/routes/portal/components/interfaces/address-item.component.ts @@ -1,3 +1,5 @@ +import { TuiCell } from '@taiga-ui/layout' +import { TuiBadge } from '@taiga-ui/kit' import { NgIf } from '@angular/common' import { ChangeDetectionStrategy, @@ -7,14 +9,8 @@ import { } from '@angular/core' import { WINDOW } from '@ng-web-apis/common' import { CopyService } from '@start9labs/shared' -import { TuiDialogService } from '@taiga-ui/core' -import { - TuiBadgeModule, - TuiButtonModule, - TuiCellModule, - TuiTitleModule, -} from '@taiga-ui/experimental' -import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus' +import { TuiDialogService, TuiTitle, TuiButton } from '@taiga-ui/core' +import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { QRModal } from 'src/app/routes/portal/modals/qr.component' import { mask } from 'src/app/utils/mask' import { InterfaceComponent } from './interface.component' @@ -36,7 +32,7 @@ import { AddressesService } from './interface.utils' `, - imports: [ - NgIf, - TuiCellModule, - TuiTitleModule, - TuiButtonModule, - TuiBadgeModule, - ], + imports: [NgIf, TuiCell, TuiTitle, TuiButton, TuiBadge], changeDetection: ChangeDetectionStrategy.OnPush, }) export class AddressItemComponent { diff --git a/web/projects/ui/src/app/routes/portal/components/interfaces/interface.component.ts b/web/projects/ui/src/app/routes/portal/components/interfaces/interface.component.ts index 93ca52f3c..f6435d9b0 100644 --- a/web/projects/ui/src/app/routes/portal/components/interfaces/interface.component.ts +++ b/web/projects/ui/src/app/routes/portal/components/interfaces/interface.component.ts @@ -6,14 +6,15 @@ import { Input, } from '@angular/core' import { T } from '@start9labs/start-sdk' -import { TuiCardModule, TuiSurfaceModule } from '@taiga-ui/experimental' +import { TuiSurface } from '@taiga-ui/core' +import { TuiCardLarge } from '@taiga-ui/layout' import { PatchDB } from 'patch-db-client' import { AddressGroupComponent } from 'src/app/routes/portal/components/interfaces/address-group.component' import { DataModel } from 'src/app/services/patch-db/data-model' -import { AddressDetails } from './interface.utils' import { ClearnetAddressesDirective } from './directives/clearnet.directive' import { LocalAddressesDirective } from './directives/local.directive' import { TorAddressesDirective } from './directives/tor.directive' +import { AddressDetails } from './interface.utils' @Component({ standalone: true, @@ -86,8 +87,8 @@ import { TorAddressesDirective } from './directives/tor.directive' imports: [ CommonModule, AddressGroupComponent, - TuiCardModule, - TuiSurfaceModule, + TuiCardLarge, + TuiSurface, ClearnetAddressesDirective, TorAddressesDirective, LocalAddressesDirective, diff --git a/web/projects/ui/src/app/routes/portal/components/interfaces/interface.utils.ts b/web/projects/ui/src/app/routes/portal/components/interfaces/interface.utils.ts index b8607d97f..881978a33 100644 --- a/web/projects/ui/src/app/routes/portal/components/interfaces/interface.utils.ts +++ b/web/projects/ui/src/app/routes/portal/components/interfaces/interface.utils.ts @@ -1,6 +1,6 @@ import { CB, CT, T } from '@start9labs/start-sdk' import { TuiDialogOptions } from '@taiga-ui/core' -import { TuiPromptData } from '@taiga-ui/kit' +import { TuiConfirmData } from '@taiga-ui/kit' import { NetworkInfo } from 'src/app/services/patch-db/data-model' import { configBuilderToSpec } from 'src/app/utils/configBuilderToSpec' @@ -9,7 +9,7 @@ export abstract class AddressesService { abstract remove(): Promise } -export const REMOVE: Partial> = { +export const REMOVE: Partial> = { label: 'Confirm', size: 's', data: { diff --git a/web/projects/ui/src/app/routes/portal/components/logs/logs.component.html b/web/projects/ui/src/app/routes/portal/components/logs/logs.component.html index 0f1424d0b..66bfaacfc 100644 --- a/web/projects/ui/src/app/routes/portal/components/logs/logs.component.html +++ b/web/projects/ui/src/app/routes/portal/components/logs/logs.component.html @@ -50,7 +50,7 @@ @for (link of resources; track $index) { @@ -84,7 +81,7 @@ const FILTER = ['/portal/system/settings', '/portal/system/marketplace'] {{ link.name }} @@ -100,10 +97,10 @@ const FILTER = ['/portal/system/settings', '/portal/system/marketplace'] display: none; backdrop-filter: blur(1rem); // TODO: Theme - --tui-elevation-01: #333; - --tui-base-01: #fff; - --tui-base-04: var(--tui-clear); - --tui-error-fill: #f52222; + --tui-background-elevation-1: #333; + --tui-background-base: #fff; + --tui-border-normal: var(--tui-background-neutral-1); + --tui-status-negative: #f52222; } [tuiTabBar]::before { @@ -111,7 +108,7 @@ const FILTER = ['/portal/system/settings', '/portal/system/marketplace'] } .item { - @include clearbtn(); + @include button-clear(); display: flex; padding: 0.75rem 0.25rem; @@ -119,7 +116,7 @@ const FILTER = ['/portal/system/settings', '/portal/system/marketplace'] align-items: center; &_active { - color: var(--tui-link); + color: var(--tui-text-action); } } @@ -130,9 +127,9 @@ const FILTER = ['/portal/system/settings', '/portal/system/marketplace'] imports: [ RouterLink, RouterLinkActive, - TuiTabBarModule, - TuiBadgeNotificationModule, - TuiIconModule, + TuiTabBar, + TuiBadgeNotification, + TuiIcon, ], }) export class TabsComponent { diff --git a/web/projects/ui/src/app/routes/portal/modals/config-dep.component.ts b/web/projects/ui/src/app/routes/portal/modals/config-dep.component.ts index 14becf2e8..0e6e437b2 100644 --- a/web/projects/ui/src/app/routes/portal/modals/config-dep.component.ts +++ b/web/projects/ui/src/app/routes/portal/modals/config-dep.component.ts @@ -4,11 +4,11 @@ import { Input, OnChanges, } from '@angular/core' +import { TuiNotification } from '@taiga-ui/core' import { compare, getValueByPointer, Operation } from 'fast-json-patch' import { isObject } from '@start9labs/shared' import { tuiIsNumber } from '@taiga-ui/cdk' import { CommonModule } from '@angular/common' -import { TuiNotificationModule } from '@taiga-ui/core' @Component({ selector: 'config-dep', @@ -26,7 +26,7 @@ import { TuiNotificationModule } from '@taiga-ui/core' `, standalone: true, - imports: [CommonModule, TuiNotificationModule], + imports: [CommonModule, TuiNotification], changeDetection: ChangeDetectionStrategy.OnPush, }) export class ConfigDepComponent implements OnChanges { diff --git a/web/projects/ui/src/app/routes/portal/modals/config.component.ts b/web/projects/ui/src/app/routes/portal/modals/config.component.ts index caadd466d..521d958c4 100644 --- a/web/projects/ui/src/app/routes/portal/modals/config.component.ts +++ b/web/projects/ui/src/app/routes/portal/modals/config.component.ts @@ -7,16 +7,15 @@ import { LoadingService, } from '@start9labs/shared' import { CT } from '@start9labs/start-sdk' -import { TuiButtonModule } from '@taiga-ui/experimental' import { TuiDialogContext, TuiDialogService, - TuiLoaderModule, - TuiModeModule, - TuiNotificationModule, + TuiLoader, + TuiButton, + TuiNotification, } from '@taiga-ui/core' -import { TUI_PROMPT, TuiPromptData } from '@taiga-ui/kit' -import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus' +import { TuiConfirmData, TUI_CONFIRM } from '@taiga-ui/kit' +import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus' import { compare, Operation } from 'fast-json-patch' import { PatchDB } from 'patch-db-client' import { endWith, firstValueFrom, Subscription } from 'rxjs' @@ -80,7 +79,6 @@ export interface PackageConfigData { `
  • ${getManifest(packages[id]).title}
  • `, )}` - const data: TuiPromptData = { content, yes: 'Continue', no: 'Cancel' } + const data: TuiConfirmData = { content, yes: 'Continue', no: 'Cancel' } return firstValueFrom( - this.dialogs.open(TUI_PROMPT, { data }).pipe(endWith(false)), + this.dialogs.open(TUI_CONFIRM, { data }).pipe(endWith(false)), ) } } diff --git a/web/projects/ui/src/app/routes/portal/modals/prompt.component.ts b/web/projects/ui/src/app/routes/portal/modals/prompt.component.ts index e2a2765f5..f3fc85acf 100644 --- a/web/projects/ui/src/app/routes/portal/modals/prompt.component.ts +++ b/web/projects/ui/src/app/routes/portal/modals/prompt.component.ts @@ -1,14 +1,13 @@ +import { TuiTextfieldControllerModule, TuiInputModule } from '@taiga-ui/legacy' +import { TuiAutoFocus } from '@taiga-ui/cdk' import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, Component, Inject } from '@angular/core' import { FormsModule } from '@angular/forms' -import { TuiAutoFocusModule } from '@taiga-ui/cdk' -import { TuiDialogContext, TuiTextfieldControllerModule } from '@taiga-ui/core' -import { TuiButtonModule } from '@taiga-ui/experimental' -import { TuiInputModule } from '@taiga-ui/kit' +import { TuiDialogContext, TuiButton } from '@taiga-ui/core' import { POLYMORPHEUS_CONTEXT, PolymorpheusComponent, -} from '@tinkoff/ng-polymorpheus' +} from '@taiga-ui/polymorpheus' @Component({ standalone: true, @@ -26,7 +25,7 @@ import { {{ options.label }} * @@ -54,7 +53,7 @@ import { title="Toggle masking" size="xs" class="button" - [iconLeft]="masked ? 'tuiIconEye' : 'tuiIconEyeOff'" + [iconStart]="masked ? '@tui.eye' : '@tui.eye-off'" (click)="masked = !masked" > @@ -62,7 +61,7 @@ import { styles: [ ` .warning { - color: var(--tui-warning-fill); + color: var(--tui-status-warning); } .button { @@ -79,9 +78,9 @@ import { CommonModule, FormsModule, TuiInputModule, - TuiButtonModule, + TuiButton, TuiTextfieldControllerModule, - TuiAutoFocusModule, + TuiAutoFocus, ], changeDetection: ChangeDetectionStrategy.OnPush, }) diff --git a/web/projects/ui/src/app/routes/portal/modals/qr.component.ts b/web/projects/ui/src/app/routes/portal/modals/qr.component.ts index 7aa4bf0f0..e94fc4b42 100644 --- a/web/projects/ui/src/app/routes/portal/modals/qr.component.ts +++ b/web/projects/ui/src/app/routes/portal/modals/qr.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, Component, inject } from '@angular/core' import { TuiDialogContext } from '@taiga-ui/core' -import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus' +import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus' import { QrCodeModule } from 'ng-qrcode' @Component({ diff --git a/web/projects/ui/src/app/routes/portal/portal.component.ts b/web/projects/ui/src/app/routes/portal/portal.component.ts index 162839cc5..d57b31d40 100644 --- a/web/projects/ui/src/app/routes/portal/portal.component.ts +++ b/web/projects/ui/src/app/routes/portal/portal.component.ts @@ -1,8 +1,8 @@ +import { TuiScrollbar } from '@taiga-ui/core' import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, Component, inject } from '@angular/core' import { takeUntilDestroyed } from '@angular/core/rxjs-interop' import { NavigationEnd, Router, RouterOutlet } from '@angular/router' -import { TuiScrollbarModule } from '@taiga-ui/core' import { PatchDB } from 'patch-db-client' import { filter } from 'rxjs' import { TabsComponent } from 'src/app/routes/portal/components/tabs.component' @@ -44,7 +44,7 @@ import { HeaderComponent } from './components/header/header.component' RouterOutlet, HeaderComponent, TabsComponent, - TuiScrollbarModule, + TuiScrollbar, ], }) export class PortalComponent { diff --git a/web/projects/ui/src/app/routes/portal/routes/dashboard/controls.component.ts b/web/projects/ui/src/app/routes/portal/routes/dashboard/controls.component.ts index 307e023ad..2429dae26 100644 --- a/web/projects/ui/src/app/routes/portal/routes/dashboard/controls.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/dashboard/controls.component.ts @@ -6,11 +6,8 @@ import { inject, input, } from '@angular/core' -import { TuiLetModule } from '@taiga-ui/cdk' -import { - TuiButtonModule, - tuiButtonOptionsProvider, -} from '@taiga-ui/experimental' +import { TuiLet } from '@taiga-ui/cdk' +import { TuiButton, tuiButtonOptionsProvider } from '@taiga-ui/core' import { map } from 'rxjs' import { UILaunchComponent } from 'src/app/routes/portal/routes/dashboard/ui.component' import { ActionsService } from 'src/app/services/actions.service' @@ -25,7 +22,7 @@ import { getManifest } from 'src/app/utils/get-package-data' @if (pkg().status.main.status === 'running') { - - - @for (interface of interfaces; track $index) { - - {{ interface.name }} - - } - - - + + + + @for (interface of interfaces; track $index) { + + {{ interface.name }} + + } + + } @else { - {{ interfaces[0]?.name }} + {{ first?.name }} } `, @@ -57,7 +56,7 @@ import { PackageDataEntry } from 'src/app/services/patch-db/data-model' } `, changeDetection: ChangeDetectionStrategy.OnPush, - imports: [TuiButtonModule, TuiHostedDropdownModule, TuiDataListModule], + imports: [TuiButton, TuiDropdown, TuiDataList], }) export class UILaunchComponent { private readonly config = inject(ConfigService) @@ -73,6 +72,10 @@ export class UILaunchComponent { return this.pkg.status.main.status === 'running' } + get first(): T.ServiceInterfaceWithHostInfo | undefined { + return this.interfaces[0] + } + @tuiPure getInterfaces(pkg?: PackageDataEntry): T.ServiceInterfaceWithHostInfo[] { return pkg diff --git a/web/projects/ui/src/app/routes/portal/routes/service/components/action-success.component.ts b/web/projects/ui/src/app/routes/portal/routes/service/components/action-success.component.ts index d89fc63a7..7aeaf215e 100644 --- a/web/projects/ui/src/app/routes/portal/routes/service/components/action-success.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/service/components/action-success.component.ts @@ -1,9 +1,8 @@ import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, Component, inject } from '@angular/core' import { CopyService } from '@start9labs/shared' -import { TuiDialogContext } from '@taiga-ui/core' -import { TuiButtonModule } from '@taiga-ui/experimental' -import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus' +import { TuiDialogContext, TuiButton } from '@taiga-ui/core' +import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus' import { QrCodeModule } from 'ng-qrcode' import { ActionResponse } from 'src/app/services/api/api.types' @@ -22,7 +21,7 @@ import { ActionResponse } from 'src/app/services/api/api.types' *ngIf="context.data.copyable" tuiIconButton appearance="flat" - iconLeft="tuiIconCopyLarge" + iconStart="@tui.copy" (click)="copyService.copy(context.data.value)" > Copy @@ -48,7 +47,7 @@ import { ActionResponse } from 'src/app/services/api/api.types' ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [CommonModule, QrCodeModule, TuiButtonModule], + imports: [CommonModule, QrCodeModule, TuiButton], }) export class ServiceActionSuccessComponent { readonly copyService = inject(CopyService) diff --git a/web/projects/ui/src/app/routes/portal/routes/service/components/action.component.ts b/web/projects/ui/src/app/routes/portal/routes/service/components/action.component.ts index caf55c80b..7eb65fbb6 100644 --- a/web/projects/ui/src/app/routes/portal/routes/service/components/action.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/service/components/action.component.ts @@ -1,6 +1,5 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core' -import { TuiSvgModule } from '@taiga-ui/core' -import { TuiIconModule } from '@taiga-ui/experimental' +import { TuiIcon } from '@taiga-ui/core' interface ActionItem { readonly icon: string @@ -19,7 +18,7 @@ interface ActionItem { `, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [TuiIconModule], + imports: [TuiIcon], }) export class ServiceActionComponent { @Input({ required: true }) diff --git a/web/projects/ui/src/app/routes/portal/routes/service/components/actions.component.ts b/web/projects/ui/src/app/routes/portal/routes/service/components/actions.component.ts index 9714aa464..28f92887c 100644 --- a/web/projects/ui/src/app/routes/portal/routes/service/components/actions.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/service/components/actions.component.ts @@ -1,3 +1,4 @@ +import { TuiButton } from '@taiga-ui/core' import { ChangeDetectionStrategy, Component, @@ -6,10 +7,7 @@ import { } from '@angular/core' import { T } from '@start9labs/start-sdk' import { tuiPure } from '@taiga-ui/cdk' -import { - TuiButtonModule, - tuiButtonOptionsProvider, -} from '@taiga-ui/experimental' +import { tuiButtonOptionsProvider } from '@taiga-ui/core' import { DependencyInfo } from 'src/app/routes/portal/routes/service/types/dependency-info' import { ActionsService } from 'src/app/services/actions.service' import { PackageDataEntry } from 'src/app/services/patch-db/data-model' @@ -22,7 +20,7 @@ import { getManifest } from 'src/app/utils/get-package-data' `, @@ -33,12 +32,7 @@ import { ServicePropertyComponent } from '../components/property.component' ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [ - CommonModule, - TuiButtonModule, - ServicePropertyComponent, - TuiLoaderModule, - ], + imports: [CommonModule, TuiButton, ServicePropertyComponent, TuiLoader], }) export class ServicePropertiesModal { private readonly api = inject(ApiService) diff --git a/web/projects/ui/src/app/routes/portal/routes/service/pipes/interface-info.pipe.ts b/web/projects/ui/src/app/routes/portal/routes/service/pipes/interface-info.pipe.ts index a525bf509..9a831ad7a 100644 --- a/web/projects/ui/src/app/routes/portal/routes/service/pipes/interface-info.pipe.ts +++ b/web/projects/ui/src/app/routes/portal/routes/service/pipes/interface-info.pipe.ts @@ -23,18 +23,18 @@ export class InterfaceInfoPipe implements PipeTransform { switch (val.type) { case 'ui': - color = 'var(--tui-primary)' - icon = 'tuiIconMonitor' + color = 'var(--tui-background-accent-1)' + icon = '@tui.monitor' typeDetail = 'User Interface (UI)' break case 'p2p': - color = 'var(--tui-info-fill)' - icon = 'tuiIconUsers' + color = 'var(--tui-status-info)' + icon = '@tui.users' typeDetail = 'Peer-To-Peer Interface (P2P)' break case 'api': - color = 'var(--tui-support-09)' - icon = 'tuiIconTerminal' + color = 'var(--tui-chart-categorical-09)' + icon = '@tui.terminal' typeDetail = 'Application Program Interface (API)' break } diff --git a/web/projects/ui/src/app/routes/portal/routes/service/pipes/to-additional.pipe.ts b/web/projects/ui/src/app/routes/portal/routes/service/pipes/to-additional.pipe.ts index a1f1f61b0..dfaa39140 100644 --- a/web/projects/ui/src/app/routes/portal/routes/service/pipes/to-additional.pipe.ts +++ b/web/projects/ui/src/app/routes/portal/routes/service/pipes/to-additional.pipe.ts @@ -2,7 +2,7 @@ import { inject, Pipe, PipeTransform } from '@angular/core' import { CopyService, MarkdownComponent } from '@start9labs/shared' import { T } from '@start9labs/start-sdk' import { TuiDialogService } from '@taiga-ui/core' -import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus' +import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { from } from 'rxjs' import { ApiService } from 'src/app/services/api/embassy-api.service' import { PackageDataEntry } from 'src/app/services/patch-db/data-model' @@ -39,14 +39,14 @@ export class ToAdditionalPipe implements PipeTransform { { name: 'Git Hash', description: manifest.gitHash || 'Unknown', - icon: manifest.gitHash ? 'tuiIconCopyLarge' : '', + icon: manifest.gitHash ? '@tui.copy' : '', action: () => manifest.gitHash && this.copyService.copy(manifest.gitHash), }, { name: 'License', description: manifest.license, - icon: 'tuiIconChevronRightLarge', + icon: '@tui.chevron-right', action: () => this.showLicense(manifest), }, { diff --git a/web/projects/ui/src/app/routes/portal/routes/service/pipes/to-menu.pipe.ts b/web/projects/ui/src/app/routes/portal/routes/service/pipes/to-menu.pipe.ts index 5883cd2fd..cd438ddcc 100644 --- a/web/projects/ui/src/app/routes/portal/routes/service/pipes/to-menu.pipe.ts +++ b/web/projects/ui/src/app/routes/portal/routes/service/pipes/to-menu.pipe.ts @@ -3,7 +3,7 @@ import { Params } from '@angular/router' import { MarkdownComponent } from '@start9labs/shared' import { T } from '@start9labs/start-sdk' import { TuiDialogService } from '@taiga-ui/core' -import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus' +import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { from } from 'rxjs' import { ConfigModal, @@ -41,19 +41,19 @@ export class ToMenuPipe implements PipeTransform { return [ { - icon: 'tuiIconList', + icon: '@tui.list', name: 'Instructions', description: `Understand how to use ${manifest.title}`, action: () => this.showInstructions(manifest), }, { - icon: 'tuiIconSliders', + icon: '@tui.sliders-vertical', name: 'Config', description: `Customize ${manifest.title}`, action: () => this.openConfig(manifest), }, { - icon: 'tuiIconKey', + icon: '@tui.key', name: 'Properties', description: `Runtime information, credentials, and other values of interest`, action: () => @@ -65,13 +65,13 @@ export class ToMenuPipe implements PipeTransform { .subscribe(), }, { - icon: 'tuiIconZap', + icon: '@tui.zap', name: 'Actions', description: `Uninstall and other commands specific to ${manifest.title}`, routerLink: `actions`, }, { - icon: 'tuiIconShield', + icon: '@tui.shield', name: 'Outbound Proxy', description: `Proxy all outbound traffic from ${manifest.title}`, action: () => @@ -81,13 +81,13 @@ export class ToMenuPipe implements PipeTransform { ), }, { - icon: 'tuiIconFileText', + icon: '@tui.file-text', name: 'Logs', description: `Raw, unfiltered logs`, routerLink: 'logs', }, { - icon: 'tuiIconInfo', + icon: '@tui.info', name: 'Additional Info', description: `View package details`, action: () => @@ -100,14 +100,14 @@ export class ToMenuPipe implements PipeTransform { }, pkg.marketplaceUrl ? { - icon: 'tuiIconShoppingBag', + icon: '@tui.shopping-bag', name: 'Marketplace Listing', description: `View ${manifest.title} on the Marketplace`, routerLink: `/portal/system/marketplace`, params: { url: pkg.marketplaceUrl, id: manifest.id }, } : { - icon: 'tuiIconShoppingBag', + icon: '@tui.shopping-bag', name: 'Marketplace Listing', description: `This package was not installed from the marketplace`, }, diff --git a/web/projects/ui/src/app/routes/portal/routes/service/routes/actions.component.ts b/web/projects/ui/src/app/routes/portal/routes/service/routes/actions.component.ts index af7080f62..c78b2be08 100644 --- a/web/projects/ui/src/app/routes/portal/routes/service/routes/actions.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/service/routes/actions.component.ts @@ -1,3 +1,4 @@ +import { TUI_CONFIRM } from '@taiga-ui/kit' import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, Component, inject } from '@angular/core' import { ActivatedRoute, Router } from '@angular/router' @@ -9,8 +10,7 @@ import { getPkgId, } from '@start9labs/shared' import { TuiDialogService } from '@taiga-ui/core' -import { TUI_PROMPT } from '@taiga-ui/kit' -import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus' +import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { PatchDB } from 'patch-db-client' import { filter, switchMap, timer } from 'rxjs' import { FormComponent } from 'src/app/routes/portal/components/form.component' @@ -50,7 +50,7 @@ import { getAllPackages, getManifest } from 'src/app/utils/get-package-data' [action]="{ name: action.name, description: action.description, - icon: 'tuiIconPlayCircle' + icon: '@tui.circle-play' }" (click)="handleAction(action)" > @@ -75,7 +75,7 @@ export class ServiceActionsRoute { .pipe(filter(pkg => pkg.stateInfo.state === 'installed')) readonly action = { - icon: 'tuiIconTrash2', + icon: '@tui.trash-2', name: 'Uninstall', description: 'This will uninstall the service from StartOS and delete all data permanently.', @@ -116,7 +116,7 @@ export class ServiceActionsRoute { }) } else { this.dialogs - .open(TUI_PROMPT, { + .open(TUI_CONFIRM, { label: 'Confirm', size: 's', data: { @@ -145,7 +145,7 @@ export class ServiceActionsRoute { } this.dialogs - .open(TUI_PROMPT, { + .open(TUI_CONFIRM, { label: 'Warning', size: 's', data: { diff --git a/web/projects/ui/src/app/routes/portal/routes/service/routes/service.component.ts b/web/projects/ui/src/app/routes/portal/routes/service/routes/service.component.ts index 6e2c97ed7..d169e3ccc 100644 --- a/web/projects/ui/src/app/routes/portal/routes/service/routes/service.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/service/routes/service.component.ts @@ -128,8 +128,8 @@ import { DependencyInfo } from '../types/dependency-info' width: 100%; padding: 1rem 1.5rem 0.5rem; border-radius: 0.5rem; - background: var(--tui-clear); - box-shadow: inset 0 7rem 0 -4rem var(--tui-clear); + background: var(--tui-background-neutral-1); + box-shadow: inset 0 7rem 0 -4rem var(--tui-background-neutral-1); clip-path: polygon(0 1.5rem, 1.5rem 0, 100% 0, 100% 100%, 0 100%); } diff --git a/web/projects/ui/src/app/routes/portal/routes/system/backups/backups.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/backups/backups.component.ts index 2778a68c8..cde17e2d2 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/backups/backups.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/backups/backups.component.ts @@ -1,6 +1,5 @@ import { ChangeDetectionStrategy, Component, inject } from '@angular/core' -import { TuiDialogService } from '@taiga-ui/core' -import { TuiIconModule } from '@taiga-ui/experimental' +import { TuiDialogService, TuiIcon } from '@taiga-ui/core' import { BackupsUpcomingComponent } from './components/upcoming.component' import { HISTORY } from './modals/history.component' import { JOBS } from './modals/jobs.component' @@ -28,7 +27,7 @@ import { BackupsRestoreService } from './services/restore.service' host: { class: 'g-page' }, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [BackupsUpcomingComponent, TuiIconModule], + imports: [BackupsUpcomingComponent, TuiIcon], }) export default class BackupsComponent { private readonly dialogs = inject(TuiDialogService) @@ -36,19 +35,19 @@ export default class BackupsComponent { readonly options = [ { name: 'Create a Backup', - icon: 'tuiIconPlusLarge', + icon: '@tui.plus', description: 'Create a one-time backup', action: inject(BackupsCreateService).handle, }, { name: 'Restore from Backup', - icon: 'tuiIconShareLarge', + icon: '@tui.share', description: 'Restore services from a backup', action: inject(BackupsRestoreService).handle, }, { name: 'Jobs', - icon: 'tuiIconToolLarge', + icon: '@tui.wrench', description: 'Manage backup jobs', action: () => this.dialogs @@ -57,7 +56,7 @@ export default class BackupsComponent { }, { name: 'Targets', - icon: 'tuiIconDatabaseLarge', + icon: '@tui.database', description: 'Manage backup targets', action: () => this.dialogs @@ -66,7 +65,7 @@ export default class BackupsComponent { }, { name: 'History', - icon: 'tuiIconArchiveLarge', + icon: '@tui.archive', description: 'View your entire backup history', action: () => this.dialogs diff --git a/web/projects/ui/src/app/routes/portal/routes/system/backups/components/physical.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/backups/components/physical.component.ts index 3031fb28f..6f34444fc 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/backups/components/physical.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/backups/components/physical.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, Component, @@ -6,10 +5,8 @@ import { Input, Output, } from '@angular/core' -import { TuiForModule } from '@taiga-ui/cdk' -import { TuiSvgModule } from '@taiga-ui/core' -import { TuiButtonModule } from '@taiga-ui/experimental' import { UnitConversionPipesModule } from '@start9labs/shared' +import { TuiButton } from '@taiga-ui/core' import { UnknownDisk } from 'src/app/services/api/api.types' @Component({ @@ -40,7 +37,7 @@ import { UnknownDisk } from 'src/app/services/api/api.types' `, @@ -68,20 +74,12 @@ interface Package { `, ], standalone: true, - imports: [ - CommonModule, - FormsModule, - TuiForModule, - TuiButtonModule, - TuiGroupModule, - TuiCheckboxBlockModule, - TuiLoaderModule, - ], + imports: [FormsModule, TuiButton, TuiGroup, TuiLoader, TuiBlock, TuiCheckbox], }) export class BackupsBackupModal { private readonly patch = inject(PatchDB) readonly context = - inject>( + inject>( POLYMORPHEUS_CONTEXT, ) diff --git a/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/edit.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/edit.component.ts index 5bdd6c7b9..082dd893a 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/edit.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/edit.component.ts @@ -1,22 +1,18 @@ +import { + TuiWrapperModule, + TuiInputModule, + TuiInputNumberModule, +} from '@taiga-ui/legacy' import { CommonModule } from '@angular/common' import { Component, inject } from '@angular/core' import { FormsModule } from '@angular/forms' import { ErrorService, LoadingService } from '@start9labs/shared' -import { - TuiDialogContext, - TuiDialogService, - TuiWrapperModule, -} from '@taiga-ui/core' -import { TuiBadgeModule, TuiButtonModule } from '@taiga-ui/experimental' -import { - TuiInputModule, - TuiInputNumberModule, - TuiToggleModule, -} from '@taiga-ui/kit' +import { TuiDialogContext, TuiDialogService, TuiButton } from '@taiga-ui/core' +import { TuiBadge, TuiSwitch } from '@taiga-ui/kit' import { POLYMORPHEUS_CONTEXT, PolymorpheusComponent, -} from '@tinkoff/ng-polymorpheus' +} from '@taiga-ui/polymorpheus' import { ApiService } from 'src/app/services/api/embassy-api.service' import { BackupJob, BackupTarget } from 'src/app/services/api/api.types' import { TARGET, TARGET_CREATE } from './target.component' @@ -29,7 +25,7 @@ import { ToHumanCronPipe } from '../pipes/to-human-cron.pipe' Job Name - + @@ -141,7 +137,7 @@ import { HasErrorPipe } from '../pipes/has-error.pipe' .date, .duration { order: 1; - color: var(--tui-text-02); + color: var(--tui-text-secondary); } .duration, @@ -155,13 +151,13 @@ import { HasErrorPipe } from '../pipes/has-error.pipe' imports: [ CommonModule, FormsModule, - TuiButtonModule, - TuiIconModule, - TuiLinkModule, + TuiButton, + TuiIcon, + TuiLink, DurationPipe, HasErrorPipe, GetBackupIconPipe, - TuiCheckboxModule, + TuiCheckbox, ], }) export class BackupsHistoryModal { @@ -194,7 +190,7 @@ export class BackupsHistoryModal { async ngOnInit() { try { this.runs.set(await this.api.getBackupRuns({})) - this.selected = this.runs()?.map(ALWAYS_FALSE_HANDLER) || [] + this.selected = this.runs()?.map(TUI_FALSE_HANDLER) || [] } catch (e: any) { this.runs.set([]) this.errorService.handleError(e) @@ -210,7 +206,7 @@ export class BackupsHistoryModal { try { await this.api.deleteBackupRuns({ ids }) this.runs.set(this.runs()?.filter(r => !ids.includes(r.id)) || []) - this.selected = this.runs()?.map(ALWAYS_FALSE_HANDLER) || [] + this.selected = this.runs()?.map(TUI_FALSE_HANDLER) || [] } catch (e: any) { this.errorService.handleError(e) } finally { @@ -232,9 +228,9 @@ export class BackupsHistoryModal { toggle() { if (this.all) { - this.selected = this.selected.map(ALWAYS_FALSE_HANDLER) + this.selected = this.selected.map(TUI_FALSE_HANDLER) } else { - this.selected = this.selected.map(ALWAYS_TRUE_HANDLER) + this.selected = this.selected.map(TUI_TRUE_HANDLER) } } } diff --git a/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/jobs.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/jobs.component.ts index 7c7a5bb42..5d4f428d7 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/jobs.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/jobs.component.ts @@ -3,11 +3,12 @@ import { ErrorService, LoadingService } from '@start9labs/shared' import { TuiDialogOptions, TuiDialogService, - TuiNotificationModule, + TuiIcon, + TuiButton, + TuiNotification, } from '@taiga-ui/core' -import { TuiButtonModule, TuiIconModule } from '@taiga-ui/experimental' -import { TUI_PROMPT, TuiPromptData } from '@taiga-ui/kit' -import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus' +import { TuiConfirmData, TUI_CONFIRM } from '@taiga-ui/kit' +import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { BehaviorSubject, filter } from 'rxjs' import { BackupJob } from 'src/app/services/api/api.types' import { ApiService } from 'src/app/services/api/embassy-api.service' @@ -32,7 +33,7 @@ import { EDIT } from './edit.component'

    Saved Jobs -

    @@ -61,14 +62,14 @@ import { EDIT } from './edit.component' tuiIconButton appearance="icon" size="xs" - iconLeft="tuiIconEdit2" + iconStart="@tui.pencil" (click)="update(job)" > @@ -126,15 +127,15 @@ import { EDIT } from './edit.component' .schedule { order: 5; - color: var(--tui-text-02); + color: var(--tui-text-secondary); } } `, standalone: true, imports: [ - TuiNotificationModule, - TuiButtonModule, - TuiIconModule, + TuiNotification, + TuiButton, + TuiIcon, ToHumanCronPipe, GetBackupIconPipe, ], @@ -188,7 +189,7 @@ export class BackupsJobsModal implements OnInit { delete(id: string) { this.dialogs - .open(TUI_PROMPT, PROMPT_OPTIONS) + .open(TUI_CONFIRM, PROMPT_OPTIONS) .pipe(filter(Boolean)) .subscribe(async () => { const loader = this.loader.open('Deleting...').subscribe() @@ -205,7 +206,7 @@ export class BackupsJobsModal implements OnInit { } } -const PROMPT_OPTIONS: Partial> = { +const PROMPT_OPTIONS: Partial> = { label: 'Confirm', size: 's', data: { diff --git a/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/recover.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/recover.component.ts index 850c8ec5e..6017365f0 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/recover.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/recover.component.ts @@ -2,44 +2,52 @@ import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, Component, inject } from '@angular/core' import { FormsModule } from '@angular/forms' import { ErrorService, LoadingService } from '@start9labs/shared' -import { TuiDialogContext, TuiGroupModule } from '@taiga-ui/core' -import { TuiButtonModule } from '@taiga-ui/experimental' -import { TuiCheckboxBlockModule } from '@taiga-ui/kit' +import { TuiMapperPipe } from '@taiga-ui/cdk' +import { TuiButton, TuiDialogContext, TuiGroup } from '@taiga-ui/core' +import { TuiBlock, TuiCheckbox } from '@taiga-ui/kit' import { POLYMORPHEUS_CONTEXT, PolymorpheusComponent, -} from '@tinkoff/ng-polymorpheus' +} from '@taiga-ui/polymorpheus' import { PatchDB } from 'patch-db-client' import { take } from 'rxjs' +import { PackageBackupInfo } from 'src/app/services/api/api.types' import { ApiService } from 'src/app/services/api/embassy-api.service' import { DataModel } from 'src/app/services/patch-db/data-model' -import { PackageBackupInfo } from 'src/app/services/api/api.types' import { ToOptionsPipe } from '../pipes/to-options.pipe' -import { RecoverOption } from '../types/recover-option' import { RecoverData } from '../types/recover-data' -import { TuiMapperPipeModule } from '@taiga-ui/cdk' +import { RecoverOption } from '../types/recover-option' @Component({ template: ` -
    - -
    - {{ option.title }} -
    Version {{ option.version }}
    -
    Backup made: {{ option.timestamp | date: 'medium' }}
    -
    - {{ message.text }} +
    + @for (option of options; track $index) { +
    - + + + }
    @@ -59,10 +67,11 @@ import { TuiMapperPipeModule } from '@taiga-ui/cdk' CommonModule, FormsModule, ToOptionsPipe, - TuiButtonModule, - TuiCheckboxBlockModule, - TuiGroupModule, - TuiMapperPipeModule, + TuiButton, + TuiGroup, + TuiMapperPipe, + TuiCheckbox, + TuiBlock, ], }) export class BackupsRecoverModal { @@ -80,20 +89,20 @@ export class BackupsRecoverModal { if (option.newerStartOs) { return { text: `Unavailable. Backup was made on a newer version of StartOS.`, - color: 'var(--tui-error-fill)', + color: 'var(--tui-status-negative)', } } if (option.installed) { return { text: `Unavailable. ${option.title} is already installed.`, - color: 'var(--tui-warning-fill)', + color: 'var(--tui-status-warning)', } } return { text: 'Ready to restore', - color: 'var(--tui-success-fill)', + color: 'var(--tui-status-positive)', } } diff --git a/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/target.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/target.component.ts index 8e476aec9..91aae471a 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/target.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/target.component.ts @@ -1,72 +1,66 @@ -import { CommonModule } from '@angular/common' -import { ChangeDetectionStrategy, Component, inject } from '@angular/core' -import { ErrorService } from '@start9labs/shared' -import { TuiForModule } from '@taiga-ui/cdk' -import { TuiButtonModule } from '@taiga-ui/experimental' import { + ChangeDetectionStrategy, + Component, + inject, + signal, +} from '@angular/core' +import { ErrorService } from '@start9labs/shared' +import { + TuiButton, TuiDialogContext, TuiDialogOptions, TuiDialogService, - TuiLoaderModule, - TuiSvgModule, + TuiIcon, + TuiLoader, } from '@taiga-ui/core' import { POLYMORPHEUS_CONTEXT, PolymorpheusComponent, -} from '@tinkoff/ng-polymorpheus' -import { BehaviorSubject } from 'rxjs' +} from '@taiga-ui/polymorpheus' import { BackupTarget } from 'src/app/services/api/api.types' import { ApiService } from 'src/app/services/api/embassy-api.service' -import { BackupType } from '../types/backup-type' import { BackupsStatusComponent } from '../components/status.component' import { GetDisplayInfoPipe } from '../pipes/get-display-info.pipe' +import { BackupType } from '../types/backup-type' import { TARGETS } from './targets.component' @Component({ template: ` - - + @if (loading()) { + + } @else {

    Saved Targets

    -
    - - - + } + + } @empty {

    No saved targets

    -
    - + } + } `, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - CommonModule, - TuiLoaderModule, - TuiForModule, - TuiButtonModule, - TuiSvgModule, + TuiLoader, + TuiButton, + TuiIcon, BackupsStatusComponent, GetDisplayInfoPipe, ], @@ -81,8 +75,8 @@ export class BackupsTargetModal { POLYMORPHEUS_CONTEXT, ) - readonly loading$ = new BehaviorSubject(true) - readonly loading = + readonly loading = signal(true) + readonly text = this.context.data.type === 'create' ? 'Loading Backup Targets' : 'Loading Backup Sources' @@ -95,7 +89,7 @@ export class BackupsTargetModal { } catch (e: any) { this.errorService.handleError(e) } finally { - this.loading$.next(false) + this.loading.set(false) } } diff --git a/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/targets.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/targets.component.ts index f06b315a7..28e68eb45 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/targets.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/backups/modals/targets.component.ts @@ -1,10 +1,9 @@ +import { TuiButton, TuiNotification } from '@taiga-ui/core' import { CommonModule } from '@angular/common' import { Component, inject, OnInit, signal } from '@angular/core' import { ErrorService, LoadingService } from '@start9labs/shared' import { CT } from '@start9labs/start-sdk' -import { TuiNotificationModule } from '@taiga-ui/core' -import { TuiButtonModule } from '@taiga-ui/experimental' -import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus' +import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { FormComponent } from 'src/app/routes/portal/components/form.component' import { BackupTarget, @@ -46,7 +45,7 @@ import { @@ -73,8 +72,8 @@ import { standalone: true, imports: [ CommonModule, - TuiNotificationModule, - TuiButtonModule, + TuiNotification, + TuiButton, BackupsPhysicalComponent, BackupsTargetsComponent, ], diff --git a/web/projects/ui/src/app/routes/portal/routes/system/backups/pipes/get-backup-icon.pipe.ts b/web/projects/ui/src/app/routes/portal/routes/system/backups/pipes/get-backup-icon.pipe.ts index 4c84a9d73..1b2bd530b 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/backups/pipes/get-backup-icon.pipe.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/backups/pipes/get-backup-icon.pipe.ts @@ -9,11 +9,11 @@ export class GetBackupIconPipe implements PipeTransform { transform(type: BackupTargetType) { switch (type) { case 'cifs': - return 'tuiIconFolder' + return '@tui.folder' case 'cloud': - return 'tuiIconCloud' + return '@tui.cloud' case 'disk': - return 'tuiIconSave' + return '@tui.save' } } } diff --git a/web/projects/ui/src/app/routes/portal/routes/system/backups/pipes/to-human-cron.pipe.ts b/web/projects/ui/src/app/routes/portal/routes/system/backups/pipes/to-human-cron.pipe.ts index 50653058e..5f755ff19 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/backups/pipes/to-human-cron.pipe.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/backups/pipes/to-human-cron.pipe.ts @@ -9,7 +9,7 @@ export class ToHumanCronPipe implements PipeTransform { transform(cron: string): { message: string; color: string } { const toReturn = { message: '', - color: 'var(--tui-positive)', + color: 'var(--tui-text-positive)', } try { @@ -27,7 +27,7 @@ export class ToHumanCronPipe implements PipeTransform { toReturn.message = human } catch (e) { toReturn.message = e as string - toReturn.color = 'var(--tui-negative)' + toReturn.color = 'var(--tui-text-negative)' } return toReturn diff --git a/web/projects/ui/src/app/routes/portal/routes/system/logs/logs.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/logs/logs.component.ts index 029bdc47e..1f9a3afce 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/logs/logs.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/logs/logs.component.ts @@ -1,7 +1,6 @@ +import { TuiTextfieldControllerModule, TuiSelectModule } from '@taiga-ui/legacy' import { ChangeDetectionStrategy, Component, inject } from '@angular/core' import { FormsModule } from '@angular/forms' -import { TuiTextfieldControllerModule } from '@taiga-ui/core' -import { TuiSelectModule } from '@taiga-ui/kit' import { ApiService } from 'src/app/services/api/embassy-api.service' import { RR } from 'src/app/services/api/api.types' import { LogsComponent } from '../../../components/logs/logs.component' diff --git a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/controls.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/controls.component.ts index 78daa17aa..2e4717016 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/controls.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/controls.component.ts @@ -1,3 +1,4 @@ +import { TuiButton } from '@taiga-ui/core' import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, @@ -18,7 +19,6 @@ import { sameUrl, EmverPipesModule, } from '@start9labs/shared' -import { TuiButtonModule } from '@taiga-ui/experimental' import { PatchDB } from 'patch-db-client' import { firstValueFrom } from 'rxjs' import { @@ -97,7 +97,7 @@ import { ToManifestPipe } from 'src/app/routes/portal/pipes/to-manifest' `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, EmverPipesModule, TuiButtonModule, ToManifestPipe], + imports: [CommonModule, EmverPipesModule, TuiButton, ToManifestPipe], }) export class MarketplaceControlsComponent { private readonly alerts = inject(MarketplaceAlertsService) diff --git a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/menu.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/menu.component.ts index 0e1b05e18..23ed84016 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/menu.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/menu.component.ts @@ -1,8 +1,12 @@ import { ChangeDetectionStrategy, Component, inject } from '@angular/core' import { MenuModule } from '@start9labs/marketplace' -import { TuiButtonModule, TuiDialogService } from '@taiga-ui/core' +import { + TuiDialogService, + TuiIcon, + TuiButton, + TuiAppearance, +} from '@taiga-ui/core' import { ConfigService } from 'src/app/services/config.service' -import { TuiAppearanceModule, TuiIconModule } from '@taiga-ui/experimental' import { MARKETPLACE_REGISTRY } from '../modals/registry.component' @Component({ @@ -15,13 +19,13 @@ import { MARKETPLACE_REGISTRY } from '../modals/registry.component' tuiIconButton type="button" appearance="icon" - icon="tuiIconRepeatLarge" + icon="@tui.repeat" (click)="changeRegistry()" > Change Registry @@ -41,7 +45,7 @@ import { MARKETPLACE_REGISTRY } from '../modals/registry.component' `, ], changeDetection: ChangeDetectionStrategy.OnPush, - imports: [MenuModule, TuiButtonModule, TuiIconModule, TuiAppearanceModule], + imports: [MenuModule, TuiButton, TuiIcon, TuiAppearance], }) export class MarketplaceMenuComponent { private readonly dialogs = inject(TuiDialogService) diff --git a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/notification.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/notification.component.ts index 70b2b16b4..72d9c36c8 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/notification.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/notification.component.ts @@ -1,5 +1,5 @@ import { Component, inject, Input } from '@angular/core' -import { TuiNotificationModule } from '@taiga-ui/core' +import { TuiNotification } from '@taiga-ui/core' import { ConfigService } from 'src/app/services/config.service' @Component({ @@ -59,7 +59,7 @@ import { ConfigService } from 'src/app/services/config.service' } `, ], - imports: [TuiNotificationModule], + imports: [TuiNotification], }) export class MarketplaceNotificationComponent { private readonly marketplace = inject(ConfigService).marketplace diff --git a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/registry.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/registry.component.ts index 0c6b7794f..6dd4bee97 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/registry.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/registry.component.ts @@ -1,4 +1,3 @@ -import { NgIf } from '@angular/common' import { ChangeDetectionStrategy, Component, @@ -6,7 +5,7 @@ import { Input, } from '@angular/core' import { StoreIconComponentModule } from '@start9labs/marketplace' -import { TuiIconModule, TuiTitleModule } from '@taiga-ui/experimental' +import { TuiIcon, TuiTitle } from '@taiga-ui/core' import { ConfigService } from 'src/app/services/config.service' @Component({ @@ -18,16 +17,15 @@ import { ConfigService } from 'src/app/services/config.service' {{ registry.name }}
    {{ registry.url }}
    - - + @if (registry.selected) { + + } @else { + + } `, styles: [':host { border-radius: 0.25rem; width: stretch; }'], changeDetection: ChangeDetectionStrategy.OnPush, - imports: [NgIf, StoreIconComponentModule, TuiIconModule, TuiTitleModule], + imports: [StoreIconComponentModule, TuiIcon, TuiTitle], }) export class MarketplaceRegistryComponent { readonly marketplace = inject(ConfigService).marketplace diff --git a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/sidebars.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/sidebars.component.ts index 7d9c9c7a1..b3bb33b29 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/sidebars.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/sidebars.component.ts @@ -1,8 +1,5 @@ import { ChangeDetectionStrategy, Component } from '@angular/core' -import { - AbstractTuiPortalHostComponent, - AbstractTuiPortalService, -} from '@taiga-ui/cdk' +import { TuiPortals, TuiPortalService } from '@taiga-ui/cdk' import { MarketplaceSidebarService } from '../services/sidebar.service' @Component({ @@ -21,9 +18,9 @@ import { MarketplaceSidebarService } from '../services/sidebar.service' changeDetection: ChangeDetectionStrategy.OnPush, providers: [ { - provide: AbstractTuiPortalService, + provide: TuiPortalService, useExisting: MarketplaceSidebarService, }, ], }) -export class MarketplaceSidebarsComponent extends AbstractTuiPortalHostComponent {} +export class MarketplaceSidebarsComponent extends TuiPortals {} diff --git a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/tile.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/tile.component.ts index a19340de4..8e6e51996 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/tile.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/marketplace/components/tile.component.ts @@ -1,3 +1,4 @@ +import { TuiDropdownService, TuiButton } from '@taiga-ui/core' import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, @@ -7,13 +8,8 @@ import { } from '@angular/core' import { ActivatedRoute, Router } from '@angular/router' import { ItemModule, MarketplacePkg } from '@start9labs/marketplace' -import { TuiSidebarModule } from '@taiga-ui/addon-mobile' -import { - TuiAutoFocusModule, - TuiClickOutsideModule, - TuiDropdownPortalService, -} from '@taiga-ui/cdk' -import { TuiButtonModule } from '@taiga-ui/experimental' +import { TuiSidebar } from '@taiga-ui/addon-mobile' +import { TuiAutoFocus, TuiClickOutside } from '@taiga-ui/cdk' import { debounceTime, map } from 'rxjs' import { MarketplacePreviewComponent } from '../modals/preview.component' import { ToLocalPipe } from '../pipes/to-local.pipe' @@ -42,7 +38,7 @@ import { MarketplaceControlsComponent } from './controls.component' tuiIconButton type="button" appearance="icon" - iconLeft="tuiIconClose" + iconStart="@tui.x" (click)="toggle(false)" > + />