diff --git a/web/package-lock.json b/web/package-lock.json index 6e1e531ba..6a60bf3d7 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -25,19 +25,19 @@ "@noble/hashes": "^1.4.0", "@start9labs/argon2": "^0.3.0", "@start9labs/start-sdk": "file:../sdk/baseDist", - "@taiga-ui/addon-charts": "4.38.0", - "@taiga-ui/addon-commerce": "4.38.0", - "@taiga-ui/addon-mobile": "4.38.0", - "@taiga-ui/addon-table": "4.38.0", - "@taiga-ui/cdk": "4.38.0", - "@taiga-ui/core": "4.38.0", + "@taiga-ui/addon-charts": "4.41.0", + "@taiga-ui/addon-commerce": "4.41.0", + "@taiga-ui/addon-mobile": "4.41.0", + "@taiga-ui/addon-table": "4.41.0", + "@taiga-ui/cdk": "4.41.0", + "@taiga-ui/core": "4.41.0", "@taiga-ui/dompurify": "4.1.11", - "@taiga-ui/event-plugins": "4.5.1", - "@taiga-ui/experimental": "4.38.0", - "@taiga-ui/icons": "4.38.0", - "@taiga-ui/kit": "4.38.0", - "@taiga-ui/layout": "4.38.0", - "@taiga-ui/legacy": "4.38.0", + "@taiga-ui/event-plugins": "4.6.0", + "@taiga-ui/experimental": "4.41.0", + "@taiga-ui/icons": "4.41.0", + "@taiga-ui/kit": "4.41.0", + "@taiga-ui/layout": "4.41.0", + "@taiga-ui/legacy": "4.41.0", "@taiga-ui/polymorpheus": "4.9.0", "ansi-to-html": "^0.7.2", "base64-js": "^1.5.1", @@ -3020,9 +3020,9 @@ ] }, "node_modules/@maskito/angular": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/@maskito/angular/-/angular-3.7.2.tgz", - "integrity": "sha512-0auXz5dsS0pNuSZ3WFsQK3Fd6nucC9Um1WVlxoVbi0VEZZG68WirVQybwo7J5/J5gCDffqJn2bAw0qrbbrt0mQ==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@maskito/angular/-/angular-3.9.0.tgz", + "integrity": "sha512-vNKEa1Rc2xmtOEba75I4SrjFNE9oTPQemthvfTlkKDLYQYrKmlWBon1C5KKsMUv6zDLXnVhh0piT66fpNlJuUw==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -3031,35 +3031,35 @@ "peerDependencies": { "@angular/core": ">=16.0.0", "@angular/forms": ">=16.0.0", - "@maskito/core": "^3.7.2" + "@maskito/core": "^3.9.0" } }, "node_modules/@maskito/core": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/@maskito/core/-/core-3.7.2.tgz", - "integrity": "sha512-jnX1u2HAZFy0K8Ll6AoeMpe502aVzrqgPKG7rk/qtbivW+71U3vutP3kqmjZtgsPoNzQ2wzKVWMgi7JEXDK11g==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@maskito/core/-/core-3.9.0.tgz", + "integrity": "sha512-OgzzgzJTXFZH79mqyHFVUZ5/bUhSW147+JzYVX+DdmQ5zc+mxmFQqsUS5ffVxd2C7/bnEmC7+savYbcae2IhBw==", "license": "Apache-2.0", "peer": true }, "node_modules/@maskito/kit": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/@maskito/kit/-/kit-3.7.2.tgz", - "integrity": "sha512-2gx/7k0iRcKWq7+2yeUEUuv13+4KibxkQrTdGSwZZVNbPsmj4b7r5KTbjfHl2ZdwuASSxJiVV8DWF91ON+cmBA==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@maskito/kit/-/kit-3.9.0.tgz", + "integrity": "sha512-CD7TQ7WUMtZ8jkhOsislbqht1gMuNHVQsLJG9tXcGvZbegkgJ6wdkggkol1y1/0F5eh/fT+RzzKD9dVjSQon2g==", "license": "Apache-2.0", "peer": true, "peerDependencies": { - "@maskito/core": "^3.7.2" + "@maskito/core": "^3.9.0" } }, "node_modules/@maskito/phone": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/@maskito/phone/-/phone-3.7.2.tgz", - "integrity": "sha512-27KfVE9fR+NiwB35z03gPZ/UM+wJR5AfRYiMh37JZCXBz+/WRhtH3mntpzxmp0CCGoFTD/c3hBkCR9p5MAaxiQ==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@maskito/phone/-/phone-3.9.0.tgz", + "integrity": "sha512-EUCOmOscoQM+vnJwOAiBXVpZVVYkHc7rhnqLqfkslXsZCg5VLNNpzAb8SuFQMxYJYM2NnMawErvL7CjOdVDmvQ==", "license": "Apache-2.0", "peer": true, "peerDependencies": { - "@maskito/core": "^3.7.2", - "@maskito/kit": "^3.7.2", + "@maskito/core": "^3.9.0", + "@maskito/kit": "^3.9.0", "libphonenumber-js": ">=1.0.0" } }, @@ -4719,9 +4719,9 @@ "link": true }, "node_modules/@taiga-ui/addon-charts": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/addon-charts/-/addon-charts-4.38.0.tgz", - "integrity": "sha512-dJFGuekM7+2qxguqxOQIvFkqxkesbQlzU2cnLfiHzHXw7bsw6Sey8cc5lO2lqF3jsvRNVtmwgLtUY2wCkyxKog==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/addon-charts/-/addon-charts-4.41.0.tgz", + "integrity": "sha512-HksmSqKCQm2BXP5jhLXdFouZNru+0LFH0m5F22zbQ/6EG5uCttIztY+jcorcKqZzl29PEM8dFxg6EZe2JHYtlQ==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" @@ -4730,15 +4730,15 @@ "@angular/common": ">=16.0.0", "@angular/core": ">=16.0.0", "@ng-web-apis/common": "^4.12.0", - "@taiga-ui/cdk": "^4.38.0", - "@taiga-ui/core": "^4.38.0", + "@taiga-ui/cdk": "^4.41.0", + "@taiga-ui/core": "^4.41.0", "@taiga-ui/polymorpheus": "^4.9.0" } }, "node_modules/@taiga-ui/addon-commerce": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/addon-commerce/-/addon-commerce-4.38.0.tgz", - "integrity": "sha512-rHMKFfuSisWvozBM8kgvwh9CxhaMsm0Ntcy3RPtF1WluUgfGRX2LSzLcBkFZpziW6qpwJyMB/8hbSJjK6p54dg==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/addon-commerce/-/addon-commerce-4.41.0.tgz", + "integrity": "sha512-f30Yidpx+J37E2/Iz+FKq9/IPL0uBb/pQXxseTKGSkFm3wiMvOVAHGdWsGrFts0aKbLG5Jv4RkfXp3HhXhy4cw==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" @@ -4747,22 +4747,22 @@ "@angular/common": ">=16.0.0", "@angular/core": ">=16.0.0", "@angular/forms": ">=16.0.0", - "@maskito/angular": "^3.7.2", - "@maskito/core": "^3.7.2", - "@maskito/kit": "^3.7.2", + "@maskito/angular": "^3.9.0", + "@maskito/core": "^3.9.0", + "@maskito/kit": "^3.9.0", "@ng-web-apis/common": "^4.12.0", - "@taiga-ui/cdk": "^4.38.0", - "@taiga-ui/core": "^4.38.0", - "@taiga-ui/i18n": "^4.38.0", - "@taiga-ui/kit": "^4.38.0", + "@taiga-ui/cdk": "^4.41.0", + "@taiga-ui/core": "^4.41.0", + "@taiga-ui/i18n": "^4.41.0", + "@taiga-ui/kit": "^4.41.0", "@taiga-ui/polymorpheus": "^4.9.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/addon-mobile": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/addon-mobile/-/addon-mobile-4.38.0.tgz", - "integrity": "sha512-R5KbeeUW0ETPSqqxkRtDzbt01hL2dwJumpEzhRLP5bdeKW4Dw6C6BwuEyTpk5124BHchaQ1jyig6Ko2eoCX4Gw==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/addon-mobile/-/addon-mobile-4.41.0.tgz", + "integrity": "sha512-BgIMCvSFE+qezVvRJhmtPsuYUkiFa5mtuUTNTVE63dz+JqXciXcT3mbOFZpjEjTB8QWsPgYVZL6DCNnmuk0sIg==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" @@ -4772,18 +4772,18 @@ "@angular/common": ">=16.0.0", "@angular/core": ">=16.0.0", "@ng-web-apis/common": "^4.12.0", - "@taiga-ui/cdk": "^4.38.0", - "@taiga-ui/core": "^4.38.0", - "@taiga-ui/kit": "^4.38.0", - "@taiga-ui/layout": "^4.38.0", + "@taiga-ui/cdk": "^4.41.0", + "@taiga-ui/core": "^4.41.0", + "@taiga-ui/kit": "^4.41.0", + "@taiga-ui/layout": "^4.41.0", "@taiga-ui/polymorpheus": "^4.9.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/addon-table": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/addon-table/-/addon-table-4.38.0.tgz", - "integrity": "sha512-vR6JR2P7CmRAx0OJ75q1km9u+JFn5ZgNjoc5C5ZuczG1qz2i8TGondmXadWhgBvI+X+soUW+iTpDeZEEsKYdIg==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/addon-table/-/addon-table-4.41.0.tgz", + "integrity": "sha512-kAlWqsBx6RGx2eeSON9bihyfSxu3MWtMAjFKW4vfzVrIEegtNODJmGJRc8dQYVwhHyId/qJil8aaWnJpXjCclw==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" @@ -4792,18 +4792,18 @@ "@angular/common": ">=16.0.0", "@angular/core": ">=16.0.0", "@ng-web-apis/intersection-observer": "^4.12.0", - "@taiga-ui/cdk": "^4.38.0", - "@taiga-ui/core": "^4.38.0", - "@taiga-ui/i18n": "^4.38.0", - "@taiga-ui/kit": "^4.38.0", + "@taiga-ui/cdk": "^4.41.0", + "@taiga-ui/core": "^4.41.0", + "@taiga-ui/i18n": "^4.41.0", + "@taiga-ui/kit": "^4.41.0", "@taiga-ui/polymorpheus": "^4.9.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/cdk": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/cdk/-/cdk-4.38.0.tgz", - "integrity": "sha512-L0SsDhrm7d0HE6Uw7ZJvP/s6UATUtW1ulfk19YxSuxIIdvLtfKWsJI2wG9nn3n3t7u+yaMFhnW20CCHqTPFoAw==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/cdk/-/cdk-4.41.0.tgz", + "integrity": "sha512-Oe6MQFut/bhnWK3U9J0u4iv+sGY8zXEXuyHScbMQhEe2a3g5XJjXXaBOngnp4jq2687PIQBtZcYvrM5/wcjXEw==", "license": "Apache-2.0", "dependencies": { "tslib": "2.8.1" @@ -4826,15 +4826,15 @@ "@ng-web-apis/platform": "^4.12.0", "@ng-web-apis/resize-observer": "^4.12.0", "@ng-web-apis/screen-orientation": "^4.12.0", - "@taiga-ui/event-plugins": "^4.5.1", + "@taiga-ui/event-plugins": "^4.6.0", "@taiga-ui/polymorpheus": "^4.9.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/core": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/core/-/core-4.38.0.tgz", - "integrity": "sha512-1xIfCBgjsVze/tjpjPNsHX0dvDLhFZdNtO3eCsEN8PVHAyeEDllefkScOjcMoMHQaXPjrIz65bRvhNg1aEd9bA==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/core/-/core-4.41.0.tgz", + "integrity": "sha512-ArND7zOBKlbGKdVrrsCWi3oZCkwmPCa3mS2wVD4JV0cq9N2KSw3KPp5mg77ZIEabIY9DM3ekXU8FDMyuhE3O2g==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" @@ -4848,9 +4848,9 @@ "@angular/router": ">=16.0.0", "@ng-web-apis/common": "^4.12.0", "@ng-web-apis/mutation-observer": "^4.12.0", - "@taiga-ui/cdk": "^4.38.0", - "@taiga-ui/event-plugins": "^4.5.1", - "@taiga-ui/i18n": "^4.38.0", + "@taiga-ui/cdk": "^4.41.0", + "@taiga-ui/event-plugins": "^4.6.0", + "@taiga-ui/i18n": "^4.41.0", "@taiga-ui/polymorpheus": "^4.9.0", "rxjs": ">=7.0.0" } @@ -4871,9 +4871,9 @@ } }, "node_modules/@taiga-ui/event-plugins": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@taiga-ui/event-plugins/-/event-plugins-4.5.1.tgz", - "integrity": "sha512-p5TAs6ZAJAlyl64OUdvnVnfCvDteJtLl9cjXarMzPRY7sX2d+SC97qnTZF8ACPcx4FgFaiHI6VH5G6UzYHMZ8g==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/event-plugins/-/event-plugins-4.6.0.tgz", + "integrity": "sha512-5qshJXrwpJmsrdePjOofF8nr+6ONk7fXRdVG4MH0BGSLiV6ChwUm9K78ROjanVyI4vEkoFqBbh1bhS6DdJTwhA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" @@ -4885,9 +4885,9 @@ } }, "node_modules/@taiga-ui/experimental": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/experimental/-/experimental-4.38.0.tgz", - "integrity": "sha512-YjxZe5THRJwXi5cpUSvN9vOJT+ny5PpeSFR3oPTqn4x651wxdz6z6e/5BAhHg1+FKkOrV9F7PGQWuaw7UPrWVg==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/experimental/-/experimental-4.41.0.tgz", + "integrity": "sha512-X8mxCk2FN/sJpfB7bBeub+B2IMhOAogoh8fx/HDNspZfmKDpxLPYxJ+TosCrOyIA3nDtYpt3A2pmZ1cnxb11oQ==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" @@ -4895,18 +4895,18 @@ "peerDependencies": { "@angular/common": ">=16.0.0", "@angular/core": ">=16.0.0", - "@taiga-ui/addon-commerce": "^4.38.0", - "@taiga-ui/cdk": "^4.38.0", - "@taiga-ui/core": "^4.38.0", - "@taiga-ui/kit": "^4.38.0", + "@taiga-ui/addon-commerce": "^4.41.0", + "@taiga-ui/cdk": "^4.41.0", + "@taiga-ui/core": "^4.41.0", + "@taiga-ui/kit": "^4.41.0", "@taiga-ui/polymorpheus": "^4.9.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/i18n": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/i18n/-/i18n-4.38.0.tgz", - "integrity": "sha512-mQ4akU8N3jU+ngkbx9DcLbArofdBq15WKuLEPame4rZvsf5IL3fxbAzFQkt2wmg2kRg125N1y3Ik04NtwgtwEg==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/i18n/-/i18n-4.41.0.tgz", + "integrity": "sha512-wvqOBf56eta1Q3RgRwKwmkj/HzvH4BVqOviN7QA4wN4q1e4BEh4N2k30CYuLr90Eoxo2+5fDaKGzE91INenbGA==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -4919,18 +4919,18 @@ } }, "node_modules/@taiga-ui/icons": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/icons/-/icons-4.38.0.tgz", - "integrity": "sha512-XoY+jSMcsfRdsr7DkwMQcKeBXMdYU99SclW6lHuHZ2mjB7euhhKWOsqz4dIfB6jp0xPc/sN4RhrJPXBi/1ucDQ==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/icons/-/icons-4.41.0.tgz", + "integrity": "sha512-Zc9ufZiAhTfnly8eF1UW0138y1UnZfPZPhmNEd0BRObM6R+aK9EeYcIPE54SMNVzBLB4AtwmMJ/fCOU0VJbv3g==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" } }, "node_modules/@taiga-ui/kit": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/kit/-/kit-4.38.0.tgz", - "integrity": "sha512-LJm6TO6T0qW7y2YYF/C+b0sJD8tr4MkBj3NZlwK7s4x172qj4nK9d5j4lt9+ik/6wdYpBH0twVwKWwasNqemqQ==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/kit/-/kit-4.41.0.tgz", + "integrity": "sha512-v27dmJtp05JQgwZhqRglc3iD7CYzW5R6ncBjmJKke556VlL1D1ruQSc2OYL4nUAt/dwaYYkpqhfBWwTbhehC6Q==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" @@ -4940,25 +4940,25 @@ "@angular/core": ">=16.0.0", "@angular/forms": ">=16.0.0", "@angular/router": ">=16.0.0", - "@maskito/angular": "^3.7.2", - "@maskito/core": "^3.7.2", - "@maskito/kit": "^3.7.2", - "@maskito/phone": "^3.7.2", + "@maskito/angular": "^3.9.0", + "@maskito/core": "^3.9.0", + "@maskito/kit": "^3.9.0", + "@maskito/phone": "^3.9.0", "@ng-web-apis/common": "^4.12.0", "@ng-web-apis/intersection-observer": "^4.12.0", "@ng-web-apis/mutation-observer": "^4.12.0", "@ng-web-apis/resize-observer": "^4.12.0", - "@taiga-ui/cdk": "^4.38.0", - "@taiga-ui/core": "^4.38.0", - "@taiga-ui/i18n": "^4.38.0", + "@taiga-ui/cdk": "^4.41.0", + "@taiga-ui/core": "^4.41.0", + "@taiga-ui/i18n": "^4.41.0", "@taiga-ui/polymorpheus": "^4.9.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/layout": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/layout/-/layout-4.38.0.tgz", - "integrity": "sha512-x7D1MasJeh8tbMqpy2U9Uez9xbu6jiunGmhw/xEfZoYKsFprxOJkv/JJjPOTCHB/I3ou7RL1zDUHG3r453BOCQ==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/layout/-/layout-4.41.0.tgz", + "integrity": "sha512-czIU2suGUL6HqDjCKAYxSpyhOnVAtJLhhxt8MajS9mAuov1WzpBC85X3rqZsfc2x3j1XbCEuXyW43ns5994ilQ==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" @@ -4966,17 +4966,17 @@ "peerDependencies": { "@angular/common": ">=16.0.0", "@angular/core": ">=16.0.0", - "@taiga-ui/cdk": "^4.38.0", - "@taiga-ui/core": "^4.38.0", - "@taiga-ui/kit": "^4.38.0", + "@taiga-ui/cdk": "^4.41.0", + "@taiga-ui/core": "^4.41.0", + "@taiga-ui/kit": "^4.41.0", "@taiga-ui/polymorpheus": "^4.9.0", "rxjs": ">=7.0.0" } }, "node_modules/@taiga-ui/legacy": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@taiga-ui/legacy/-/legacy-4.38.0.tgz", - "integrity": "sha512-TLGtI2ScezbhrWao60NqIrildy+qg5RtFkRiEUWRiB6loirJDloWv39jupi+KMfteN+nNGijQS9/UW3Jokw+Bw==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/@taiga-ui/legacy/-/legacy-4.41.0.tgz", + "integrity": "sha512-ezxG3iCnvs435f5pG5BvGhGAAScTr3bUOgCdKhEV7e/8MZUbZ4eUTi5RoBXzjBBBO87e1x7bJw8EGlUh2QbR4g==", "license": "Apache-2.0", "dependencies": { "tslib": ">=2.8.1" @@ -8155,9 +8155,9 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.7.tgz", - "integrity": "sha512-0nYZSNj/QEikyhcM5RZFXGlCB/mr4PVamnT1C2sKBnDDTYndrvbybYjvg+PMqAndQHlLbwQ3socolnL3WWTUFA==", + "version": "1.12.9", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.9.tgz", + "integrity": "sha512-VWwAdNeJgN7jFOD+wN4qx83DTPMVPPAUyx9/TUkBXKLiNkuWWk6anV0439tgdtwaJDrEdqkvdN22iA6J4bUCZg==", "license": "MIT", "peer": true }, diff --git a/web/package.json b/web/package.json index 552a9075e..e20389397 100644 --- a/web/package.json +++ b/web/package.json @@ -46,18 +46,18 @@ "@noble/hashes": "^1.4.0", "@start9labs/argon2": "^0.3.0", "@start9labs/start-sdk": "file:../sdk/baseDist", - "@taiga-ui/addon-charts": "4.38.0", - "@taiga-ui/addon-commerce": "4.38.0", - "@taiga-ui/addon-mobile": "4.38.0", - "@taiga-ui/addon-table": "4.38.0", - "@taiga-ui/cdk": "4.38.0", - "@taiga-ui/core": "4.38.0", - "@taiga-ui/event-plugins": "4.5.1", - "@taiga-ui/experimental": "4.38.0", - "@taiga-ui/icons": "4.38.0", - "@taiga-ui/kit": "4.38.0", - "@taiga-ui/layout": "4.38.0", - "@taiga-ui/legacy": "4.38.0", + "@taiga-ui/addon-charts": "4.41.0", + "@taiga-ui/addon-commerce": "4.41.0", + "@taiga-ui/addon-mobile": "4.41.0", + "@taiga-ui/addon-table": "4.41.0", + "@taiga-ui/cdk": "4.41.0", + "@taiga-ui/core": "4.41.0", + "@taiga-ui/event-plugins": "4.6.0", + "@taiga-ui/experimental": "4.41.0", + "@taiga-ui/icons": "4.41.0", + "@taiga-ui/kit": "4.41.0", + "@taiga-ui/layout": "4.41.0", + "@taiga-ui/legacy": "4.41.0", "@taiga-ui/polymorpheus": "4.9.0", "@taiga-ui/dompurify": "4.1.11", "ansi-to-html": "^0.7.2", 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 f6a7642fb..73e5d3e0b 100644 --- a/web/projects/setup-wizard/src/app/pages/success.page.ts +++ b/web/projects/setup-wizard/src/app/pages/success.page.ts @@ -17,20 +17,14 @@ import { StateService } from 'src/app/services/state.service' @Component({ template: ` - @if (stateService.kiosk) { -
-

- - Setup Complete! -

+
+

+ + Setup Complete! +

+ @if (stateService.kiosk) { -
- } @else if (lanAddress) { -
-

- - Setup Complete! -

+ } @else if (lanAddress) { @if (stateService.setupType === 'restore') {

You can now safely unplug your backup drive

} @else if (stateService.setupType === 'transfer') { @@ -65,8 +59,8 @@ import { StateService } from 'src/app/services/state.service'
- } + } +
`, styles: ` .heading { diff --git a/web/projects/ui/src/app/components/backup-report.component.ts b/web/projects/ui/src/app/components/backup-report.component.ts index 86cbc443c..84aaaf141 100644 --- a/web/projects/ui/src/app/components/backup-report.component.ts +++ b/web/projects/ui/src/app/components/backup-report.component.ts @@ -11,10 +11,10 @@ import { TuiDialogContext, TuiIcon, TuiTitle } from '@taiga-ui/core' import { TuiCell } from '@taiga-ui/layout' import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { PatchDB } from 'patch-db-client' -import { scan } from 'rxjs' +import { map } from 'rxjs' import { BackupReport } from 'src/app/services/api/api.types' import { getManifest } from '../utils/get-package-data' -import { T } from '@start9labs/start-sdk' +import { DataModel } from '../services/patch-db/data-model' @Component({ template: ` @@ -56,7 +56,7 @@ import { T } from '@start9labs/start-sdk' }) export class BackupsReportModal { private readonly i18n = inject(i18nPipe) - private readonly patch = inject(PatchDB) + private readonly patch = inject>(PatchDB) readonly data = injectContext< @@ -65,13 +65,15 @@ export class BackupsReportModal { readonly pkgTitles = toSignal( this.patch.watch$('packageData').pipe( - scan>((acc, pkg) => { - const { id, title } = getManifest(pkg) - return { - ...acc, - [id]: title, - } - }, {}), + map(allPkgs => + Object.values(allPkgs).reduce>((acc, pkg) => { + const { id, title } = getManifest(pkg) + return { + ...acc, + [id]: title, + } + }, {}), + ), ), ) diff --git a/web/projects/ui/src/app/routes/portal/components/interfaces/clearnet.component.ts b/web/projects/ui/src/app/routes/portal/components/interfaces/clearnet.component.ts index 95b5dc791..58b7718ac 100644 --- a/web/projects/ui/src/app/routes/portal/components/interfaces/clearnet.component.ts +++ b/web/projects/ui/src/app/routes/portal/components/interfaces/clearnet.component.ts @@ -91,7 +91,7 @@ type ClearnetForm = { {{ interface.value().addSsl ? (address.acme | acme) : '-' }} - {{ address.url | mask }} + {{ address.url | mask }} {{ 'Delete' | i18n }} @@ -131,6 +130,19 @@ type ClearnetForm = { } `, + styles: ` + :host-context(tui-root._mobile) { + td { + font-weight: bold; + color: var(--tui-text-primary); + + &:first-child { + font-weight: normal; + color: var(--tui-text-secondary); + } + } + } + `, host: { class: 'g-card' }, imports: [ TuiButton, diff --git a/web/projects/ui/src/app/routes/portal/components/table.component.ts b/web/projects/ui/src/app/routes/portal/components/table.component.ts index 477265c4b..bbec56f15 100644 --- a/web/projects/ui/src/app/routes/portal/components/table.component.ts +++ b/web/projects/ui/src/app/routes/portal/components/table.component.ts @@ -6,6 +6,7 @@ import { i18nKey, i18nPipe } from '@start9labs/shared' template: ` + @for (header of appTable(); track $index) { {{ header | i18n }} } diff --git a/web/projects/ui/src/app/routes/portal/routes/notifications/notifications.component.ts b/web/projects/ui/src/app/routes/portal/routes/notifications/notifications.component.ts index 721c028dd..9ba5b9634 100644 --- a/web/projects/ui/src/app/routes/portal/routes/notifications/notifications.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/notifications/notifications.component.ts @@ -1,3 +1,4 @@ +import { NgTemplateOutlet } from '@angular/common' import { ChangeDetectionStrategy, Component, @@ -16,44 +17,71 @@ import { NotificationsTableComponent } from './table.component' @Component({ template: ` - {{ 'Notifications' | i18n }} -

- - - - - - - + + {{ 'Notifications' | i18n }} + + +
+
+ {{ 'Notifications' | i18n }} + +
+
+ + + + + + + -

-
+ + `, + styles: ` + :host { + padding: 1rem; + } + + :host-context(tui-root._mobile) { + header { + display: none; + } + + section { + padding-block: 0; + } + } `, host: { class: 'g-page' }, changeDetection: ChangeDetectionStrategy.OnPush, @@ -64,6 +92,7 @@ import { NotificationsTableComponent } from './table.component' NotificationsTableComponent, TitleDirective, i18nPipe, + NgTemplateOutlet, ], }) export default class NotificationsComponent implements OnInit { @@ -75,8 +104,6 @@ export default class NotificationsComponent implements OnInit { readonly errorService = inject(ErrorService) readonly notifications = signal(undefined) - open = false - ngOnInit() { this.route.queryParams.subscribe(params => { this.router.navigate([], { relativeTo: this.route, queryParams: {} }) @@ -100,8 +127,6 @@ export default class NotificationsComponent implements OnInit { current: ServerNotifications = [], toUpdate: ServerNotifications = [], ) { - this.open = false - this.notifications.set( current.map(c => ({ ...c, @@ -116,8 +141,6 @@ export default class NotificationsComponent implements OnInit { current: ServerNotifications = [], toUpdate: ServerNotifications = [], ) { - this.open = false - this.notifications.set( current.map(c => ({ ...c, @@ -132,8 +155,6 @@ export default class NotificationsComponent implements OnInit { current: ServerNotifications = [], toDelete: ServerNotifications = [], ) { - this.open = false - this.notifications.set( current.filter(c => !toDelete.some(n => n.id === c.id)), ) diff --git a/web/projects/ui/src/app/routes/portal/routes/services/routes/interface.component.ts b/web/projects/ui/src/app/routes/portal/routes/services/routes/interface.component.ts index 5ad9dfeef..753d2245d 100644 --- a/web/projects/ui/src/app/routes/portal/routes/services/routes/interface.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/services/routes/interface.component.ts @@ -10,7 +10,7 @@ import { RouterLink } from '@angular/router' import { getPkgId, i18nPipe } from '@start9labs/shared' import { T } from '@start9labs/start-sdk' import { TuiItem } from '@taiga-ui/cdk' -import { TuiButton, TuiLink } from '@taiga-ui/core' +import { TuiButton, TuiLink, TuiTitle } from '@taiga-ui/core' import { TuiBadge, TuiBreadcrumbs } from '@taiga-ui/kit' import { TuiHeader } from '@taiga-ui/layout' import { PatchDB } from 'patch-db-client' @@ -41,7 +41,7 @@ import { TitleDirective } from 'src/app/services/title.service' @if (interface(); as value) {
-
+

{{ value.name }} @@ -60,7 +60,8 @@ import { TitleDirective } from 'src/app/services/title.service' } `, styles: ` - :host-context(tui-root._mobile) tui-breadcrumbs { + :host-context(tui-root._mobile) tui-breadcrumbs, + :host-context(tui-root._mobile) h3 { display: none; } @@ -68,8 +69,6 @@ import { TitleDirective } from 'src/app/services/title.service' display: flex; align-items: center; gap: 0.5rem; - margin: 1rem 0 0.5rem 0; - font-size: 2.4rem; tui-badge { text-transform: uppercase; @@ -91,6 +90,7 @@ import { TitleDirective } from 'src/app/services/title.service' i18nPipe, TuiBadge, TuiHeader, + TuiTitle, ], }) export default class ServiceInterfaceRoute { diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/network.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/network.component.ts index 5afca8fc2..ef1b61114 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/network.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/network.component.ts @@ -35,7 +35,7 @@ const ERROR = {{ 'Network Folders' | i18n }} -

@@ -100,11 +100,11 @@ const ERROR = @use '@taiga-ui/core/styles/taiga-ui-local' as taiga; tr { - cursor: pointer; @include taiga.transition(background); @media (taiga.$tui-mouse) { - &:hover { + &:not(:has(app-placeholder)):hover { + cursor: pointer; background: var(--tui-background-neutral-1-hover); } } diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/physical.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/physical.component.ts index 829749dab..dc4713d90 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/physical.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/backups/physical.component.ts @@ -66,11 +66,11 @@ import { BackupStatusComponent } from './status.component' @use '@taiga-ui/core/styles/taiga-ui-local' as taiga; tr { - cursor: pointer; @include taiga.transition(background); @media (taiga.$tui-mouse) { - &:hover { + &:not(:has(app-placeholder)):hover { + cursor: pointer; background: var(--tui-background-neutral-1-hover); } } diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/sessions/sessions.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/sessions/sessions.component.ts index 37f8b6483..4798b601e 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/routes/sessions/sessions.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/sessions/sessions.component.ts @@ -46,7 +46,7 @@ import { SessionsTableComponent } from './table.component' size="xs" appearance="primary-destructive" [style.margin-inline-start]="'auto'" - [disabled]="!(sessions()?.selected$ | async)?.length" + [disabled]="!sessions()?.selected()?.length" (click)="terminate(others || [])" > {{ 'Terminate selected' | i18n }} @@ -104,13 +104,16 @@ export default class SystemSessionsComponent { ) async terminate(all: readonly SessionWithId[]) { - const ids = this.sessions()?.selected$.value.map(s => s.id) || [] + const ids = + this.sessions() + ?.selected() + .map(s => s.id) || [] const loader = this.loader.open('Terminating sessions').subscribe() try { await this.api.killSessions({ ids }) this.local$.next(all.filter(s => !ids.includes(s.id))) - this.sessions()?.selected$.next([]) + this.sessions()?.selected.set([]) } catch (e: any) { this.errorService.handleError(e) } finally { diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/sessions/table.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/sessions/table.component.ts index b784ab027..abb2d6832 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/routes/sessions/table.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/sessions/table.component.ts @@ -2,8 +2,11 @@ import { CommonModule } from '@angular/common' import { ChangeDetectionStrategy, Component, + computed, + input, Input, OnChanges, + signal, } from '@angular/core' import { FormsModule } from '@angular/forms' import { TuiIcon } from '@taiga-ui/core' @@ -17,17 +20,36 @@ import { i18nPipe } from '@start9labs/shared' @Component({ selector: '[sessions]', template: ` - - @for (session of sessions; track $index) { +
+ @if (!single()) { + + } + @for (session of sessions(); track $index) { - } @empty { - @if (sessions) { + @if (sessions()) { } @else { - @for (item of single ? [''] : ['', '']; track $index) { + @for (item of single() ? [''] : ['', '']; track $index) {
+ + {{ 'User Agent' | i18n }} +
+ {{ session.lastActive | date: 'medium' }}
{{ 'No sessions' | i18n }}
{{ 'Loading' | i18n }}
@@ -144,25 +166,25 @@ import { i18nPipe } from '@start9labs/shared' ], }) export class SessionsTableComponent implements OnChanges { - readonly selected$ = new BehaviorSubject([]) + readonly sessions = input(null) + readonly single = input(false) - @Input() - sessions: readonly T[] | null = null - - @Input() - single = false + readonly selected = signal([]) + readonly all = computed( + () => + !!this.selected()?.length && + (this.selected().length === this.sessions()?.length || null), + ) ngOnChanges() { - this.selected$.next([]) + this.selected.set([]) } onToggle(session: T) { - const selected = this.selected$.value - - if (selected.includes(session)) { - this.selected$.next(selected.filter(s => s !== session)) + if (this.selected().includes(session)) { + this.selected.update(selected => selected.filter(s => s !== session)) } else { - this.selected$.next([...selected, session]) + this.selected.update(selected => [...selected, session]) } } } diff --git a/web/projects/ui/src/app/routes/portal/routes/system/routes/startos-ui/startos-ui.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/routes/startos-ui/startos-ui.component.ts index 81bf3ddf7..a056a82d5 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/routes/startos-ui/startos-ui.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/routes/startos-ui/startos-ui.component.ts @@ -29,7 +29,7 @@ import { TitleDirective } from 'src/app/services/title.service'
-
+

{{ iface.name }} @@ -41,20 +41,6 @@ import { TitleDirective } from 'src/app/services/title.service' } `, - styles: ` - h3 { - display: flex; - align-items: center; - gap: 0.5rem; - margin: 1rem 0 0.5rem 0; - font-size: 2.4rem; - - tui-badge { - text-transform: uppercase; - font-weight: bold; - } - } - `, host: { class: 'g-subpage' }, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ @@ -63,6 +49,7 @@ import { TitleDirective } from 'src/app/services/title.service' TuiButton, TitleDirective, TuiHeader, + TuiTitle, InterfaceStatusComponent, i18nPipe, ], diff --git a/web/projects/ui/src/styles.scss b/web/projects/ui/src/styles.scss index 051cb699a..9ef046937 100644 --- a/web/projects/ui/src/styles.scss +++ b/web/projects/ui/src/styles.scss @@ -87,12 +87,7 @@ hr { padding: 0.5rem; text-transform: capitalize; box-shadow: 1px 0 var(--tui-border-normal); - backdrop-filter: blur(1rem); - background-color: color-mix( - in hsl, - var(--tui-background-base) 90%, - transparent - ); + background: var(--tui-background-base); } .g-card {