feat: Clean up frontend

This commit is contained in:
2025-03-05 17:30:00 +01:00
parent a25ce1a11b
commit a129220d17
15 changed files with 494 additions and 188 deletions

View File

@@ -10,7 +10,7 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^19.1.0",
"@angular/animations": "^19.2.0",
"@angular/cdk": "^19.1.4",
"@angular/common": "^19.1.0",
"@angular/compiler": "^19.1.0",

399
frontend/pnpm-lock.yaml generated
View File

@@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@angular/animations':
specifier: ^19.1.0
version: 19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
specifier: ^19.2.0
version: 19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/cdk':
specifier: ^19.1.4
version: 19.1.5(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
@@ -25,25 +25,34 @@ importers:
version: 19.1.7(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/forms':
specifier: ^19.1.0
version: 19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
version: 19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
'@angular/material':
specifier: ^19.1.4
version: 19.1.5(203ffb11cb76b64f1d69784be88e6541)
version: 19.1.5(36596738d8888e25478fe1c68e1a0f3d)
'@angular/platform-browser':
specifier: ^19.1.0
version: 19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
version: 19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.1.0
version: 19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))
version: 19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))
'@angular/router':
specifier: ^19.1.0
version: 19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
version: 19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
'@tailwindcss/postcss':
specifier: ^4.0.9
version: 4.0.9
axios:
specifier: ^1.8.1
version: 1.8.1
postcss:
specifier: ^8.5.3
version: 8.5.3
rxjs:
specifier: ~7.8.0
version: 7.8.2
tailwindcss:
specifier: ^4.0.9
version: 4.0.9
tslib:
specifier: ^2.3.0
version: 2.8.1
@@ -53,7 +62,7 @@ importers:
devDependencies:
'@angular-devkit/build-angular':
specifier: ^19.1.7
version: 19.1.8(@angular/compiler-cli@19.1.7(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(typescript@5.7.3))(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.13.5)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.7.3)(vite@6.0.11(@types/node@22.13.5)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(terser@5.37.0))
version: 19.1.8(@angular/compiler-cli@19.1.7(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(typescript@5.7.3))(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.13.5)(chokidar@4.0.3)(jiti@2.4.2)(karma@6.4.4)(lightningcss@1.29.1)(tailwindcss@4.0.9)(typescript@5.7.3)(vite@6.0.11(@types/node@22.13.5)(jiti@2.4.2)(less@4.2.1)(lightningcss@1.29.1)(sass@1.83.1)(terser@5.37.0))
'@angular/cli':
specifier: ^19.1.7
version: 19.1.8(@types/node@22.13.5)(chokidar@4.0.3)
@@ -87,6 +96,10 @@ importers:
packages:
'@alloc/quick-lru@5.2.0':
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
'@ampproject/remapping@2.3.0':
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
@@ -159,11 +172,11 @@ packages:
resolution: {integrity: sha512-2JGUMD3zjfY8G4RYpypm2/1YEO+O4DtFycUvptIpsBYyULgnEbJ3tlp2oRiXI2vp9tC8IyWqa/swlA8DTI6ZYQ==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
'@angular/animations@19.1.7':
resolution: {integrity: sha512-EnyQTCNc1nWnjc5V3HPlClpJIS2R2XAfIEUCyI3lE4FLQxcXyhIsM9NmacAZT3Ai8RL+8JVCttPmBZXMpjP6Ug==}
'@angular/animations@19.2.0':
resolution: {integrity: sha512-GJDwtZ+7XmAAbzCbPSJrR1iMs2l16VoA7myeVl6n5k/KsZywqb4KhPmjzLKpQlAFP0NRjg1LbHc2Fsus7/Ydag==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
peerDependencies:
'@angular/core': 19.1.7
'@angular/core': 19.2.0
'@angular/build@19.1.8':
resolution: {integrity: sha512-DAnnmbqPmtlY5JOitqWUgXi/yKj8eAcrP0T7hYZwLmcRsb+HsHYWsAQoFaTDw0p9WC5BKPqDBCMIivcuIV/izQ==}
@@ -1572,6 +1585,82 @@ packages:
'@socket.io/component-emitter@3.1.2':
resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==}
'@tailwindcss/node@4.0.9':
resolution: {integrity: sha512-tOJvdI7XfJbARYhxX+0RArAhmuDcczTC46DGCEziqxzzbIaPnfYaIyRT31n4u8lROrsO7Q6u/K9bmQHL2uL1bQ==}
'@tailwindcss/oxide-android-arm64@4.0.9':
resolution: {integrity: sha512-YBgy6+2flE/8dbtrdotVInhMVIxnHJPbAwa7U1gX4l2ThUIaPUp18LjB9wEH8wAGMBZUb//SzLtdXXNBHPUl6Q==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [android]
'@tailwindcss/oxide-darwin-arm64@4.0.9':
resolution: {integrity: sha512-pWdl4J2dIHXALgy2jVkwKBmtEb73kqIfMpYmcgESr7oPQ+lbcQ4+tlPeVXaSAmang+vglAfFpXQCOvs/aGSqlw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@tailwindcss/oxide-darwin-x64@4.0.9':
resolution: {integrity: sha512-4Dq3lKp0/C7vrRSkNPtBGVebEyWt9QPPlQctxJ0H3MDyiQYvzVYf8jKow7h5QkWNe8hbatEqljMj/Y0M+ERYJg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@tailwindcss/oxide-freebsd-x64@4.0.9':
resolution: {integrity: sha512-k7U1RwRODta8x0uealtVt3RoWAWqA+D5FAOsvVGpYoI6ObgmnzqWW6pnVwz70tL8UZ/QXjeMyiICXyjzB6OGtQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [freebsd]
'@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9':
resolution: {integrity: sha512-NDDjVweHz2zo4j+oS8y3KwKL5wGCZoXGA9ruJM982uVJLdsF8/1AeKvUwKRlMBpxHt1EdWJSAh8a0Mfhl28GlQ==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
'@tailwindcss/oxide-linux-arm64-gnu@4.0.9':
resolution: {integrity: sha512-jk90UZ0jzJl3Dy1BhuFfRZ2KP9wVKMXPjmCtY4U6fF2LvrjP5gWFJj5VHzfzHonJexjrGe1lMzgtjriuZkxagg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@tailwindcss/oxide-linux-arm64-musl@4.0.9':
resolution: {integrity: sha512-3eMjyTC6HBxh9nRgOHzrc96PYh1/jWOwHZ3Kk0JN0Kl25BJ80Lj9HEvvwVDNTgPg154LdICwuFLuhfgH9DULmg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@tailwindcss/oxide-linux-x64-gnu@4.0.9':
resolution: {integrity: sha512-v0D8WqI/c3WpWH1kq/HP0J899ATLdGZmENa2/emmNjubT0sWtEke9W9+wXeEoACuGAhF9i3PO5MeyditpDCiWQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@tailwindcss/oxide-linux-x64-musl@4.0.9':
resolution: {integrity: sha512-Kvp0TCkfeXyeehqLJr7otsc4hd/BUPfcIGrQiwsTVCfaMfjQZCG7DjI+9/QqPZha8YapLA9UoIcUILRYO7NE1Q==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@tailwindcss/oxide-win32-arm64-msvc@4.0.9':
resolution: {integrity: sha512-m3+60T/7YvWekajNq/eexjhV8z10rswcz4BC9bioJ7YaN+7K8W2AmLmG0B79H14m6UHE571qB0XsPus4n0QVgQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@tailwindcss/oxide-win32-x64-msvc@4.0.9':
resolution: {integrity: sha512-dpc05mSlqkwVNOUjGu/ZXd5U1XNch1kHFJ4/cHkZFvaW1RzbHmRt24gvM8/HC6IirMxNarzVw4IXVtvrOoZtxA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@tailwindcss/oxide@4.0.9':
resolution: {integrity: sha512-eLizHmXFqHswJONwfqi/WZjtmWZpIalpvMlNhTM99/bkHtUs6IqgI1XQ0/W5eO2HiRQcIlXUogI2ycvKhVLNcA==}
engines: {node: '>= 10'}
'@tailwindcss/postcss@4.0.9':
resolution: {integrity: sha512-BT/E+pdMqulavEAVM5NCpxmGEwHiLDPpkmg/c/X25ZBW+izTe+aZ+v1gf/HXTrihRoCxrUp5U4YyHsBTzspQKQ==}
'@tufjs/canonical-json@2.0.0':
resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==}
engines: {node: ^16.14.0 || >=18.0.0}
@@ -2810,6 +2899,10 @@ packages:
resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==}
hasBin: true
jiti@2.4.2:
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
hasBin: true
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -2919,6 +3012,70 @@ packages:
webpack:
optional: true
lightningcss-darwin-arm64@1.29.1:
resolution: {integrity: sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [darwin]
lightningcss-darwin-x64@1.29.1:
resolution: {integrity: sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
lightningcss-freebsd-x64@1.29.1:
resolution: {integrity: sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
lightningcss-linux-arm-gnueabihf@1.29.1:
resolution: {integrity: sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
lightningcss-linux-arm64-gnu@1.29.1:
resolution: {integrity: sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
lightningcss-linux-arm64-musl@1.29.1:
resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
lightningcss-linux-x64-gnu@1.29.1:
resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
lightningcss-linux-x64-musl@1.29.1:
resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
lightningcss-win32-arm64-msvc@1.29.1:
resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [win32]
lightningcss-win32-x64-msvc@1.29.1:
resolution: {integrity: sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
lightningcss@1.29.1:
resolution: {integrity: sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==}
engines: {node: '>= 12.0.0'}
lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
@@ -3435,6 +3592,10 @@ packages:
resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
engines: {node: ^10 || ^12 || >=14}
postcss@8.5.3:
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
engines: {node: ^10 || ^12 || >=14}
proc-log@5.0.0:
resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==}
engines: {node: ^18.17.0 || >=20.5.0}
@@ -3882,6 +4043,9 @@ packages:
resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==}
engines: {node: '>=0.10'}
tailwindcss@4.0.9:
resolution: {integrity: sha512-12laZu+fv1ONDRoNR9ipTOpUD7RN9essRVkX36sjxuRUInpN7hIiHN4lBd/SIFjbISvnXzp8h/hXzmU8SQQYhw==}
tapable@2.2.1:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}
@@ -4265,6 +4429,8 @@ packages:
snapshots:
'@alloc/quick-lru@5.2.0': {}
'@ampproject/remapping@2.3.0':
dependencies:
'@jridgewell/gen-mapping': 0.3.8
@@ -4277,13 +4443,13 @@ snapshots:
transitivePeerDependencies:
- chokidar
'@angular-devkit/build-angular@19.1.8(@angular/compiler-cli@19.1.7(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(typescript@5.7.3))(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.13.5)(chokidar@4.0.3)(jiti@1.21.7)(karma@6.4.4)(typescript@5.7.3)(vite@6.0.11(@types/node@22.13.5)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(terser@5.37.0))':
'@angular-devkit/build-angular@19.1.8(@angular/compiler-cli@19.1.7(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(typescript@5.7.3))(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.13.5)(chokidar@4.0.3)(jiti@2.4.2)(karma@6.4.4)(lightningcss@1.29.1)(tailwindcss@4.0.9)(typescript@5.7.3)(vite@6.0.11(@types/node@22.13.5)(jiti@2.4.2)(less@4.2.1)(lightningcss@1.29.1)(sass@1.83.1)(terser@5.37.0))':
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1901.8(chokidar@4.0.3)
'@angular-devkit/build-webpack': 0.1901.8(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.97.1))(webpack@5.97.1(esbuild@0.24.2))
'@angular-devkit/core': 19.1.8(chokidar@4.0.3)
'@angular/build': 19.1.8(@angular/compiler-cli@19.1.7(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(typescript@5.7.3))(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.13.5)(chokidar@4.0.3)(jiti@1.21.7)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.3)
'@angular/build': 19.1.8(@angular/compiler-cli@19.1.7(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(typescript@5.7.3))(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.13.5)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.1)(lightningcss@1.29.1)(postcss@8.4.49)(tailwindcss@4.0.9)(terser@5.37.0)(typescript@5.7.3)
'@angular/compiler-cli': 19.1.7(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(typescript@5.7.3)
'@babel/core': 7.26.0
'@babel/generator': 7.26.3
@@ -4296,7 +4462,7 @@ snapshots:
'@babel/runtime': 7.26.0
'@discoveryjs/json-ext': 0.6.3
'@ngtools/webpack': 19.1.8(@angular/compiler-cli@19.1.7(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(typescript@5.7.3))(typescript@5.7.3)(webpack@5.97.1(esbuild@0.24.2))
'@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.11(@types/node@22.13.5)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(terser@5.37.0))
'@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.11(@types/node@22.13.5)(jiti@2.4.2)(less@4.2.1)(lightningcss@1.29.1)(sass@1.83.1)(terser@5.37.0))
ansi-colors: 4.1.3
autoprefixer: 10.4.20(postcss@8.4.49)
babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.97.1(esbuild@0.24.2))
@@ -4339,6 +4505,7 @@ snapshots:
optionalDependencies:
esbuild: 0.24.2
karma: 6.4.4
tailwindcss: 4.0.9
transitivePeerDependencies:
- '@angular/compiler'
- '@rspack/core'
@@ -4392,12 +4559,12 @@ snapshots:
transitivePeerDependencies:
- chokidar
'@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))':
'@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))':
dependencies:
'@angular/core': 19.1.7(rxjs@7.8.2)(zone.js@0.15.0)
tslib: 2.8.1
'@angular/build@19.1.8(@angular/compiler-cli@19.1.7(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(typescript@5.7.3))(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.13.5)(chokidar@4.0.3)(jiti@1.21.7)(less@4.2.1)(postcss@8.4.49)(terser@5.37.0)(typescript@5.7.3)':
'@angular/build@19.1.8(@angular/compiler-cli@19.1.7(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(typescript@5.7.3))(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@types/node@22.13.5)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.1)(lightningcss@1.29.1)(postcss@8.4.49)(tailwindcss@4.0.9)(terser@5.37.0)(typescript@5.7.3)':
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.1901.8(chokidar@4.0.3)
@@ -4409,7 +4576,7 @@ snapshots:
'@babel/helper-split-export-declaration': 7.24.7
'@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0)
'@inquirer/confirm': 5.1.1(@types/node@22.13.5)
'@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.11(@types/node@22.13.5)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(terser@5.37.0))
'@vitejs/plugin-basic-ssl': 1.2.0(vite@6.0.11(@types/node@22.13.5)(jiti@2.4.2)(less@4.2.1)(lightningcss@1.29.1)(sass@1.83.1)(terser@5.37.0))
beasties: 0.2.0
browserslist: 4.24.4
esbuild: 0.24.2
@@ -4426,12 +4593,13 @@ snapshots:
sass: 1.83.1
semver: 7.6.3
typescript: 5.7.3
vite: 6.0.11(@types/node@22.13.5)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(terser@5.37.0)
vite: 6.0.11(@types/node@22.13.5)(jiti@2.4.2)(less@4.2.1)(lightningcss@1.29.1)(sass@1.83.1)(terser@5.37.0)
watchpack: 2.4.2
optionalDependencies:
less: 4.2.1
lmdb: 3.2.2
postcss: 8.4.49
tailwindcss: 4.0.9
transitivePeerDependencies:
- '@types/node'
- chokidar
@@ -4511,46 +4679,46 @@ snapshots:
tslib: 2.8.1
zone.js: 0.15.0
'@angular/forms@19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)':
'@angular/forms@19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)':
dependencies:
'@angular/common': 19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
'@angular/core': 19.1.7(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser': 19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser': 19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
rxjs: 7.8.2
tslib: 2.8.1
'@angular/material@19.1.5(203ffb11cb76b64f1d69784be88e6541)':
'@angular/material@19.1.5(36596738d8888e25478fe1c68e1a0f3d)':
dependencies:
'@angular/animations': 19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/animations': 19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/cdk': 19.1.5(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
'@angular/common': 19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
'@angular/core': 19.1.7(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/forms': 19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
'@angular/platform-browser': 19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/forms': 19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
'@angular/platform-browser': 19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
rxjs: 7.8.2
tslib: 2.8.1
'@angular/platform-browser-dynamic@19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))':
'@angular/platform-browser-dynamic@19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))':
dependencies:
'@angular/common': 19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
'@angular/compiler': 19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/core': 19.1.7(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser': 19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser': 19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
tslib: 2.8.1
'@angular/platform-browser@19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))':
'@angular/platform-browser@19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))':
dependencies:
'@angular/common': 19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
'@angular/core': 19.1.7(rxjs@7.8.2)(zone.js@0.15.0)
tslib: 2.8.1
optionalDependencies:
'@angular/animations': 19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/animations': 19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/router@19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)':
'@angular/router@19.1.7(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)':
dependencies:
'@angular/common': 19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
'@angular/core': 19.1.7(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser': 19.1.7(@angular/animations@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser': 19.1.7(@angular/animations@19.2.0(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.1.7(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.1.7(rxjs@7.8.2)(zone.js@0.15.0))
rxjs: 7.8.2
tslib: 2.8.1
@@ -5856,6 +6024,68 @@ snapshots:
'@socket.io/component-emitter@3.1.2': {}
'@tailwindcss/node@4.0.9':
dependencies:
enhanced-resolve: 5.18.1
jiti: 2.4.2
tailwindcss: 4.0.9
'@tailwindcss/oxide-android-arm64@4.0.9':
optional: true
'@tailwindcss/oxide-darwin-arm64@4.0.9':
optional: true
'@tailwindcss/oxide-darwin-x64@4.0.9':
optional: true
'@tailwindcss/oxide-freebsd-x64@4.0.9':
optional: true
'@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9':
optional: true
'@tailwindcss/oxide-linux-arm64-gnu@4.0.9':
optional: true
'@tailwindcss/oxide-linux-arm64-musl@4.0.9':
optional: true
'@tailwindcss/oxide-linux-x64-gnu@4.0.9':
optional: true
'@tailwindcss/oxide-linux-x64-musl@4.0.9':
optional: true
'@tailwindcss/oxide-win32-arm64-msvc@4.0.9':
optional: true
'@tailwindcss/oxide-win32-x64-msvc@4.0.9':
optional: true
'@tailwindcss/oxide@4.0.9':
optionalDependencies:
'@tailwindcss/oxide-android-arm64': 4.0.9
'@tailwindcss/oxide-darwin-arm64': 4.0.9
'@tailwindcss/oxide-darwin-x64': 4.0.9
'@tailwindcss/oxide-freebsd-x64': 4.0.9
'@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.9
'@tailwindcss/oxide-linux-arm64-gnu': 4.0.9
'@tailwindcss/oxide-linux-arm64-musl': 4.0.9
'@tailwindcss/oxide-linux-x64-gnu': 4.0.9
'@tailwindcss/oxide-linux-x64-musl': 4.0.9
'@tailwindcss/oxide-win32-arm64-msvc': 4.0.9
'@tailwindcss/oxide-win32-x64-msvc': 4.0.9
'@tailwindcss/postcss@4.0.9':
dependencies:
'@alloc/quick-lru': 5.2.0
'@tailwindcss/node': 4.0.9
'@tailwindcss/oxide': 4.0.9
lightningcss: 1.29.1
postcss: 8.5.3
tailwindcss: 4.0.9
'@tufjs/canonical-json@2.0.0': {}
'@tufjs/models@3.0.1':
@@ -5967,9 +6197,9 @@ snapshots:
dependencies:
'@types/node': 22.13.5
'@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.11(@types/node@22.13.5)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(terser@5.37.0))':
'@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.11(@types/node@22.13.5)(jiti@2.4.2)(less@4.2.1)(lightningcss@1.29.1)(sass@1.83.1)(terser@5.37.0))':
dependencies:
vite: 6.0.11(@types/node@22.13.5)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(terser@5.37.0)
vite: 6.0.11(@types/node@22.13.5)(jiti@2.4.2)(less@4.2.1)(lightningcss@1.29.1)(sass@1.83.1)(terser@5.37.0)
'@webassemblyjs/ast@1.14.1':
dependencies:
@@ -6198,7 +6428,7 @@ snapshots:
domhandler: 5.0.3
htmlparser2: 9.1.0
picocolors: 1.1.1
postcss: 8.4.49
postcss: 8.5.3
postcss-media-query-parser: 0.2.3
big.js@5.2.2: {}
@@ -6466,12 +6696,12 @@ snapshots:
css-loader@7.1.2(webpack@5.97.1(esbuild@0.24.2)):
dependencies:
icss-utils: 5.1.0(postcss@8.4.49)
postcss: 8.4.49
postcss-modules-extract-imports: 3.1.0(postcss@8.4.49)
postcss-modules-local-by-default: 4.2.0(postcss@8.4.49)
postcss-modules-scope: 3.2.1(postcss@8.4.49)
postcss-modules-values: 4.0.0(postcss@8.4.49)
icss-utils: 5.1.0(postcss@8.5.3)
postcss: 8.5.3
postcss-modules-extract-imports: 3.1.0(postcss@8.5.3)
postcss-modules-local-by-default: 4.2.0(postcss@8.5.3)
postcss-modules-scope: 3.2.1(postcss@8.5.3)
postcss-modules-values: 4.0.0(postcss@8.5.3)
postcss-value-parser: 4.2.0
semver: 7.6.3
optionalDependencies:
@@ -6526,8 +6756,7 @@ snapshots:
destroy@1.2.0: {}
detect-libc@1.0.3:
optional: true
detect-libc@1.0.3: {}
detect-libc@2.0.3:
optional: true
@@ -7045,9 +7274,9 @@ snapshots:
dependencies:
safer-buffer: 2.1.2
icss-utils@5.1.0(postcss@8.4.49):
icss-utils@5.1.0(postcss@8.5.3):
dependencies:
postcss: 8.4.49
postcss: 8.5.3
ieee754@1.2.1: {}
@@ -7217,6 +7446,8 @@ snapshots:
jiti@1.21.7: {}
jiti@2.4.2: {}
js-tokens@4.0.0: {}
js-yaml@4.1.0:
@@ -7342,6 +7573,51 @@ snapshots:
optionalDependencies:
webpack: 5.97.1(esbuild@0.24.2)
lightningcss-darwin-arm64@1.29.1:
optional: true
lightningcss-darwin-x64@1.29.1:
optional: true
lightningcss-freebsd-x64@1.29.1:
optional: true
lightningcss-linux-arm-gnueabihf@1.29.1:
optional: true
lightningcss-linux-arm64-gnu@1.29.1:
optional: true
lightningcss-linux-arm64-musl@1.29.1:
optional: true
lightningcss-linux-x64-gnu@1.29.1:
optional: true
lightningcss-linux-x64-musl@1.29.1:
optional: true
lightningcss-win32-arm64-msvc@1.29.1:
optional: true
lightningcss-win32-x64-msvc@1.29.1:
optional: true
lightningcss@1.29.1:
dependencies:
detect-libc: 1.0.3
optionalDependencies:
lightningcss-darwin-arm64: 1.29.1
lightningcss-darwin-x64: 1.29.1
lightningcss-freebsd-x64: 1.29.1
lightningcss-linux-arm-gnueabihf: 1.29.1
lightningcss-linux-arm64-gnu: 1.29.1
lightningcss-linux-arm64-musl: 1.29.1
lightningcss-linux-x64-gnu: 1.29.1
lightningcss-linux-x64-musl: 1.29.1
lightningcss-win32-arm64-msvc: 1.29.1
lightningcss-win32-x64-msvc: 1.29.1
lines-and-columns@1.2.4: {}
listr2@8.2.5:
@@ -7853,26 +8129,26 @@ snapshots:
postcss-media-query-parser@0.2.3: {}
postcss-modules-extract-imports@3.1.0(postcss@8.4.49):
postcss-modules-extract-imports@3.1.0(postcss@8.5.3):
dependencies:
postcss: 8.4.49
postcss: 8.5.3
postcss-modules-local-by-default@4.2.0(postcss@8.4.49):
postcss-modules-local-by-default@4.2.0(postcss@8.5.3):
dependencies:
icss-utils: 5.1.0(postcss@8.4.49)
postcss: 8.4.49
icss-utils: 5.1.0(postcss@8.5.3)
postcss: 8.5.3
postcss-selector-parser: 7.1.0
postcss-value-parser: 4.2.0
postcss-modules-scope@3.2.1(postcss@8.4.49):
postcss-modules-scope@3.2.1(postcss@8.5.3):
dependencies:
postcss: 8.4.49
postcss: 8.5.3
postcss-selector-parser: 7.1.0
postcss-modules-values@4.0.0(postcss@8.4.49):
postcss-modules-values@4.0.0(postcss@8.5.3):
dependencies:
icss-utils: 5.1.0(postcss@8.4.49)
postcss: 8.4.49
icss-utils: 5.1.0(postcss@8.5.3)
postcss: 8.5.3
postcss-selector-parser@7.1.0:
dependencies:
@@ -7887,6 +8163,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
postcss@8.5.3:
dependencies:
nanoid: 3.3.8
picocolors: 1.1.1
source-map-js: 1.2.1
proc-log@5.0.0: {}
process-nextick-args@2.0.1: {}
@@ -7997,7 +8279,7 @@ snapshots:
adjust-sourcemap-loader: 4.0.0
convert-source-map: 1.9.0
loader-utils: 2.0.4
postcss: 8.4.49
postcss: 8.5.3
source-map: 0.6.1
resolve@1.22.10:
@@ -8411,6 +8693,8 @@ snapshots:
symbol-observable@4.0.0: {}
tailwindcss@4.0.9: {}
tapable@2.2.1: {}
tar@6.2.1:
@@ -8548,16 +8832,17 @@ snapshots:
vary@1.1.2: {}
vite@6.0.11(@types/node@22.13.5)(jiti@1.21.7)(less@4.2.1)(sass@1.83.1)(terser@5.37.0):
vite@6.0.11(@types/node@22.13.5)(jiti@2.4.2)(less@4.2.1)(lightningcss@1.29.1)(sass@1.83.1)(terser@5.37.0):
dependencies:
esbuild: 0.24.2
postcss: 8.4.49
postcss: 8.5.3
rollup: 4.30.1
optionalDependencies:
'@types/node': 22.13.5
fsevents: 2.3.3
jiti: 1.21.7
jiti: 2.4.2
less: 4.2.1
lightningcss: 1.29.1
sass: 1.83.1
terser: 5.37.0

View File

@@ -11,6 +11,6 @@
}
</style>
<app-header></app-header>
<section class="content min-h-[100%] bg-gray-800 items-center">
<section class="content min-h-[100%] bg-black items-center">
<router-outlet></router-outlet> <!-- <app-start-screen /> -->
</section>

View File

@@ -1,9 +1,10 @@
<div class="card" [class.selected]="selected">
<div class="card" [class.small]="small" [class.selected]="selected">
@for (i of parseCount(); track i) {
<img
[width]="shapeWidth"
[width]="shapeWidth"
[src]="shapeFile"
alt="Card Image"
draggable="false"
>
}
</div>

View File

@@ -7,14 +7,28 @@
width: 100px;
height: 140px;
border: 2px solid black;
border: 1px solid #AAAAAA;
background: #666;
border-radius: 10px;
background: #111;
border-radius: 2px;
transition: all 0.3s;
cursor: pointer;
-moz-user-select: none;
-webkit-user-select: none;
user-select: none;
&.selected {
border: 4px solid white;
}
&.small {
width: 30px;
height: 30px;
margin: 1px;
img {
width: 20px;
}
}
}

View File

@@ -10,6 +10,7 @@ import { Card, CardColor, CardCount, CardShade, CardShape } from '../models/card
export class CardComponent implements OnInit {
@Input() card!: Card;
@Input() selected: boolean = false;
@Input() small: boolean = false;
shapeFile: string = '';
shapeWidth: number = 80;

View File

@@ -1,30 +1,24 @@
<div class="wrapper">
<a class="text-blue-500 hover:underline cursor-pointer mt-1 md:mt-0 md:ml-4 self-start md:self-start" (click)="viewGames()">Go back</a>
<div class="table-container text-gray-200 flex flex-col md:flex-row bg-gray-600 w-[90%] mx-auto md:mt-10 md:rounded-lg md:shadow-lg">
<table class="game-table mx-auto w-[90%] mt-15 mb-5 text-xs">
<thead>
<tr>
<th>Game ID</th>
<th>Started At</th>
<th>Status</th>
<th>Fails</th>
<th>Deck Size</th>
</tr>
</thead>
<tbody>
<tr
*ngFor="let game of games"
(click)="enterGame(game.id)"
class="cursor-pointer hover:bg-gray-700"
>
<div class="text-gray-200 flex flex-col md:flex-row w-[90%] mx-auto">
<table class="game-table mx-auto w-[90%] mt-15 mb-5 text-xs">
<thead>
<tr>
<th>Game ID</th>
<th>Started At</th>
<th>Status</th>
<th>Fails</th>
<th>Cards Remaining</th>
</tr>
</thead>
<tbody>
@for(game of games; track game.id) {
<tr (click)="enterGame(game.id)" class="cursor-pointer hover:bg-gray-700">
<td>{{ game.id }}</td>
<td>{{ game.startedAt | date: 'dd-MM-YYYY HH:mm' }}</td>
<td>{{ game.finishedAt ? 'Completed' : 'In Progress' }}</td>
<td>{{ game.fails }}</td>
<td>{{ game.deck.length }}</td>
<td>{{ game.deck.length + game.hand.length }}</td>
</tr>
</tbody>
</table>
</div>
}
</tbody>
</table>
</div>

View File

@@ -1,8 +1,6 @@
<div class="game-wrapper">
<a class="text-blue-500 hover:underline cursor-pointer mt-1 md:mt-0 md:ml-4 self-start md:self-start" (click)="returnHome()">Go back</a>
<div class="game-container text-gray-200 flex flex-col md:flex-row bg-gray-600 w-[90%] mx-auto md:mt-10 md:rounded-lg md:shadow-lg">
<div class="game-board w-full md:w-3/4 md:mr-0">
<div class="game-container text-gray-200 flex flex-col md:flex-row w-[90%] mx-auto md:rounded-lg md:shadow-lg">
<div class="game-board w-full md:w-3/5 md:mr-0">
@for(card of gameService.hand; track card.id) {
<game-card
[card]="card"
@@ -12,8 +10,11 @@
}
</div>
<div class="stats w-full md:w-2/7">
<div class="stats w-full md:w-2/5">
<div class="text-sm">
<button class="red" (click)="deleteGame()">
Delete Game
</button>
<p>
<span class="font-bold">Deck Size</span>
<span class="float-right">{{ gameService.stats().size }}</span>
@@ -23,18 +24,21 @@
<span class="float-right">{{ gameService.stats().fails }}</span>
</p>
<p>
<span class="font-bold">Started on</span>
<span class="font-bold" style="padding-right: 100px;">Started on</span>
<span class="float-right">{{ gameService.stats().dateStarted | date:'dd-MM-YYYY HH:mm' }}</span>
</p>
<p>
<button class="bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded" (click)="deleteGame()">
Delete Game
</button>
</p>
<!-- <p>
<span class="font-bold">Time Played</span>
<span class="float-right">{{ timePlayed }}</span>
</p> -->
<div>
<h1 class="font-bold">Upcoming Cards</h1>
<div class="flex flex-wrap">
@for(card of gameService.deck; track card.id) {
<game-card
[card]="card"
[selected]="false"
[small]="true"
(click)="selectCard(card)"
/>
}
</div>
</div>
</div>
</div>

View File

@@ -1,4 +1,4 @@
<header class="flex flex-col items-center bg-gray-900 text-white shadow-lg rounded-sm">
<header class="flex flex-col items-center text-white shadow-lg rounded-sm">
<div class="flex items-center">
<img src="logo.svg" class="w-12 h-12 mr-3">
<h1 class="text-2xl font-bold">SET</h1>

View File

@@ -1,52 +1,40 @@
// .header-container {
// display: flex;
// flex-direction: column;
// align-items: center;
// padding: 20px;
// background-color: #333;
// color: #fff;
// }
header {
background-color: #111111;
}
// .logo-section {
// display: flex;
// flex-direction: column;
// align-items: center;
// margin-bottom: 20px;
// }
a {
background-image: linear-gradient(
to right,
#AAAAAA,
#AAAAAA 50%,
#FFFFFF 50%
);
background-size: 200% 100%;
background-position: -100%;
display: inline-block;
// padding: 5px 0;
position: relative;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
transition: all 0.3s ease-in-out;
}
// .logo-image {
// width: 50px;
// }
a:before{
content: '';
background: #fff;
display: block;
position: absolute;
bottom: -3px;
left: 0;
width: 0;
height: 3px;
transition: all 0.3s ease-in-out;
}
// .logo-text {
// font-size: 24px;
// font-weight: bold;
// margin-top: 10px;
// }
a:hover {
background-position: 0;
}
// .main-nav ul {
// list-style: none;
// padding: 0;
// display: flex;
// gap: 20px;
// }
// .main-nav .nav-link {
// color: #fff;
// text-decoration: none;
// font-size: 18px;
// }
// .main-nav .nav-link:hover {
// text-decoration: underline;
// }
// .new-game-button {
// background-color: #007bff;
// padding: 10px 20px;
// border-radius: 5px;
// }
// .new-game-button:hover {
// background-color: #0056b3;
// }
a:hover::before{
width: 100%;
}

View File

@@ -1,25 +1,8 @@
<div class="flex flex-col items-center justify-center min-h-[100%] mt-20 bg-gray-800">
<div class="text-center p-8 bg-gray-700 rounded-lg shadow-lg max-w-md w-full">
<div class="flex justify-center items-center mb-6">
<!-- <img src="logo.svg" alt="logo" class="w-32 mr-2"> -->
<h1 class="text-4xl font-bold text-gray-100 uppercase italic title">SETGame</h1>
</div>
<div class="space-y-4">
<button
class="w-[40%] mx-2 py-3 bg-blue-600 hover:bg-blue-700 text-white font-bold
rounded-xs transition duration-100 shadow-md cursor-pointer"
(click)="startNewGame()"
>
Start New Game
</button>
<button
class="w-[40%] mx-2 py-3 bg-gray-500 hover:bg-gray-600 text-white font-bold
rounded-xs transition duration-100 shadow-md cursor-pointer"
(click)="viewGames()">
View Past Games
</button>
<div class="flex items-center justify-center min-h-[400px]">
<div class="text-center w-full">
<div>
<button (click)="routeTo('/game')">Start New Game</button>
<button (click)="routeTo('/game-list')">View Past Games</button>
</div>
</div>
</div>

View File

@@ -1,3 +0,0 @@
.title {
font-family: 'Courier New', Courier, monospace;
}

View File

@@ -1,23 +1,17 @@
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { CommonModule } from '@angular/common';
@Component({
selector: 'app-start-screen',
standalone: true,
imports: [CommonModule],
imports: [],
templateUrl: './start-screen.component.html',
styleUrls: ['./start-screen.component.scss']
})
export class StartScreenComponent {
constructor(private router: Router) {}
startNewGame() {
this.router.navigate(['/game']);
}
viewGames() {
this.router.navigate(['/game-list']);
routeTo(target: string) {
this.router.navigate([target]);
}
}

View File

@@ -5,7 +5,7 @@ import axios from 'axios';
@Injectable({ providedIn: 'root' })
export class GameService {
private deck: Card[] = [];
public deck: Card[] = [];
public hand: Card[] = [];
public gameId: number = 0;

View File

@@ -3,3 +3,48 @@
html, body { height: 100%; }
body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
button {
color: #fff;
cursor: pointer;
font-size:16px;
font-weight: 400;
line-height: 45px;
margin: 0 0 2em;
max-width: 160px;
position: relative;
text-decoration: none;
text-transform: uppercase;
width: 100%;
border: 0 solid;
box-shadow: inset 0 0 20px rgba(255, 255, 255, 0);
outline: 1px solid;
outline-color: rgba(255, 255, 255, .5);
outline-offset: 0px;
text-shadow: none;
transition: all 1250ms cubic-bezier(0.19, 1, 0.22, 1);
@media(min-width: 600px) {
margin: 0 1em 2em;
}
&:hover {
text-decoration: none;
border: 1px solid;
box-shadow: inset 0 0 20px rgba(255, 255, 255, .5), 0 0 20px rgba(255, 255, 255, .2);
outline-color: rgba(255, 255, 255, 0);
outline-offset: 15px;
text-shadow: 1px 1px 2px #427388;
}
&.red {
font-size: 14px;
width: auto;
padding-left: 10px;
padding-right: 10px;
line-height: 30px;
border: 1px solid rgba(140, 0, 0, .5);
outline-color: rgba(140, 0, 0, .5);
}
}