mirror of
https://github.com/gethomepage/homepage.git
synced 2025-12-05 21:47:48 +01:00
Compare commits
15 Commits
6b63cfd491
...
l10n_dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a52068997 | ||
|
|
96ac9046b3 | ||
|
|
6d5f35f07e | ||
|
|
c77dfa4c64 | ||
|
|
307d7f4b2d | ||
|
|
fb9927ab0c | ||
|
|
d13165699b | ||
|
|
65ff248ee7 | ||
|
|
87e5643892 | ||
|
|
5b50e8ff81 | ||
|
|
c36c6a9012 | ||
|
|
cf990063b9 | ||
|
|
610f1bd974 | ||
|
|
4031178831 | ||
|
|
b65c8399d8 |
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -38,3 +38,4 @@ What type of change does your PR introduce to Homepage?
|
||||
- [ ] If applicable, I have reviewed the [feature / enhancement](https://gethomepage.dev/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/more/development/#service-widget-guidelines).
|
||||
- [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/more/development/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/more/development/#code-linting).
|
||||
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.
|
||||
- [ ] In the description above I have disclosed the use of AI tools in the coding of this PR.
|
||||
|
||||
2
.github/workflows/crowdin.yml
vendored
2
.github/workflows/crowdin.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
- name: crowdin action
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
|
||||
4
.github/workflows/docker-publish.yml
vendored
4
.github/workflows/docker-publish.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Install python
|
||||
uses: actions/setup-python@v6
|
||||
@@ -62,7 +62,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Extract Docker metadata
|
||||
id: meta
|
||||
|
||||
6
.github/workflows/docs-publish.yml
vendored
6
.github/workflows/docs-publish.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
- name: Install python
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
needs:
|
||||
- pre-commit
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: 3.x
|
||||
@@ -54,7 +54,7 @@ jobs:
|
||||
needs:
|
||||
- pre-commit
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- name: Configure Git Credentials
|
||||
run: |
|
||||
git config user.name github-actions[bot]
|
||||
|
||||
@@ -159,6 +159,19 @@ Widgets can tint their metric block text automatically based on rules defined al
|
||||
|
||||
Supported numeric operators for the `when` property are `gt`, `gte`, `lt`, `lte`, `eq`, `ne`, `between`, and `outside`. String rules support `equals`, `includes`, `startsWith`, `endsWith`, and `regex`. Each rule can be inverted with `negate: true`, and string rules may pass `caseSensitive: true` or custom regex `flags`. The highlight engine does its best to coerce formatted values, but you will get the most reliable results when you pass plain numbers or strings into `<Block>`.
|
||||
|
||||
#### Value Only Highlighting
|
||||
|
||||
You can optionally apply highlighting only to the value portion of a block (not the label) by setting `valueOnly: true` on the field configuration. This keeps the label visible while highlighting only the metric value itself.
|
||||
|
||||
```yaml
|
||||
- Sonarr:
|
||||
...
|
||||
highlight:
|
||||
queued:
|
||||
valueOnly: true
|
||||
...
|
||||
```
|
||||
|
||||
## Descriptions
|
||||
|
||||
Services may have descriptions,
|
||||
|
||||
@@ -396,7 +396,9 @@ Set your desired language using:
|
||||
language: fr
|
||||
```
|
||||
|
||||
Currently supported languages: ca, de, en, es, fr, he, hr, hu, it, nb-NO, nl, pt, ru, sv, vi, zh-CN, zh-Hant
|
||||
Currently supported languages: ca, de, en, es, fr, he, hr, hu, it, nb-NO, nl, pt, ru, sv, vi, zh-Hans (Simplified), zh-Hant (Traditional)
|
||||
|
||||
`zh-CN` will still work and is automatically mapped to `zh-Hans` for backwards compatibility.
|
||||
|
||||
You can also specify locales e.g. for the DateTime widget, e.g. en-AU, en-GB, etc.
|
||||
|
||||
|
||||
@@ -14,4 +14,6 @@ widget:
|
||||
type: frigate
|
||||
url: http://frigate.host.or.ip:port
|
||||
enableRecentEvents: true # Optional, defaults to false
|
||||
username: username # optional
|
||||
password: password # optional
|
||||
```
|
||||
|
||||
@@ -12,11 +12,17 @@ Learn more about [Gluetun](https://github.com/qdm12/gluetun).
|
||||
Allowed fields: `["public_ip", "region", "country", "port_forwarded"]`.
|
||||
Default fields: `["public_ip", "region", "country"]`.
|
||||
|
||||
To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication). Note that to use the api key method, you must add the route `GET /v1/publicip/ip` to the `routes` array in your Gluetun config.toml. Similarly, if you want to include the `port_forwarded` field, you must add the route `GET /v1/openvpn/portforwarded` to your Gluetun config.toml.
|
||||
To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication). Note that to use the api key method, you must add the route `GET /v1/publicip/ip` to the `routes` array in your Gluetun config.toml. Similarly, if you want to include the `port_forwarded` field, you must add the route `GET /v1/openvpn/portforwarded` (or `/v1/portforward`) to your Gluetun config.toml.
|
||||
|
||||
| Gluetun Version | Homepage Widget Version |
|
||||
| --------------- | ----------------------- |
|
||||
| < 3.40.1 | 1 (default) |
|
||||
| >= 3.40.1 | 2 |
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: gluetun
|
||||
url: http://gluetun.host.or.ip:port
|
||||
key: gluetunkey # Not required if /v1/publicip/ip endpoint is configured with `auth = none`
|
||||
version: 2 # optional, default is 1
|
||||
```
|
||||
|
||||
@@ -25,18 +25,18 @@
|
||||
"luxon": "^3.6.1",
|
||||
"memory-cache": "^0.2.0",
|
||||
"minecraftstatuspinger": "^1.2.2",
|
||||
"next": "^15.5.2",
|
||||
"next": "^15.5.7",
|
||||
"next-i18next": "^12.1.0",
|
||||
"ping": "^0.4.4",
|
||||
"pretty-bytes": "^7.1.0",
|
||||
"raw-body": "^3.0.1",
|
||||
"raw-body": "^3.0.2",
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-i18next": "^15.5.3",
|
||||
"react-icons": "^5.4.0",
|
||||
"recharts": "^3.1.2",
|
||||
"swr": "^2.3.3",
|
||||
"systeminformation": "^5.27.7",
|
||||
"systeminformation": "^5.27.11",
|
||||
"tough-cookie": "^6.0.0",
|
||||
"urbackup-server-api": "^0.8.9",
|
||||
"winston": "^3.17.0",
|
||||
@@ -54,7 +54,7 @@
|
||||
"eslint-plugin-react": "^7.37.4",
|
||||
"eslint-plugin-react-hooks": "^5.2.0",
|
||||
"postcss": "^8.5.6",
|
||||
"prettier": "^3.6.2",
|
||||
"prettier": "^3.7.3",
|
||||
"prettier-plugin-organize-imports": "^4.3.0",
|
||||
"tailwind-scrollbar": "^4.0.2",
|
||||
"tailwindcss": "^4.0.9",
|
||||
|
||||
434
pnpm-lock.yaml
generated
434
pnpm-lock.yaml
generated
@@ -51,11 +51,11 @@ importers:
|
||||
specifier: ^1.2.2
|
||||
version: 1.2.2
|
||||
next:
|
||||
specifier: ^15.5.2
|
||||
version: 15.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
specifier: ^15.5.7
|
||||
version: 15.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
next-i18next:
|
||||
specifier: ^12.1.0
|
||||
version: 12.1.0(next@15.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
version: 12.1.0(next@15.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
ping:
|
||||
specifier: ^0.4.4
|
||||
version: 0.4.4
|
||||
@@ -63,8 +63,8 @@ importers:
|
||||
specifier: ^7.1.0
|
||||
version: 7.1.0
|
||||
raw-body:
|
||||
specifier: ^3.0.1
|
||||
version: 3.0.1
|
||||
specifier: ^3.0.2
|
||||
version: 3.0.2
|
||||
react:
|
||||
specifier: ^18.3.1
|
||||
version: 18.3.1
|
||||
@@ -84,8 +84,8 @@ importers:
|
||||
specifier: ^2.3.3
|
||||
version: 2.3.3(react@18.3.1)
|
||||
systeminformation:
|
||||
specifier: ^5.27.7
|
||||
version: 5.27.7
|
||||
specifier: ^5.27.11
|
||||
version: 5.27.11
|
||||
tough-cookie:
|
||||
specifier: ^6.0.0
|
||||
version: 6.0.0
|
||||
@@ -122,7 +122,7 @@ importers:
|
||||
version: 6.10.2(eslint@9.25.1(jiti@2.6.1))
|
||||
eslint-plugin-prettier:
|
||||
specifier: ^5.5.4
|
||||
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.25.1(jiti@2.6.1)))(eslint@9.25.1(jiti@2.6.1))(prettier@3.6.2)
|
||||
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.25.1(jiti@2.6.1)))(eslint@9.25.1(jiti@2.6.1))(prettier@3.7.3)
|
||||
eslint-plugin-react:
|
||||
specifier: ^7.37.4
|
||||
version: 7.37.4(eslint@9.25.1(jiti@2.6.1))
|
||||
@@ -133,11 +133,11 @@ importers:
|
||||
specifier: ^8.5.6
|
||||
version: 8.5.6
|
||||
prettier:
|
||||
specifier: ^3.6.2
|
||||
version: 3.6.2
|
||||
specifier: ^3.7.3
|
||||
version: 3.7.3
|
||||
prettier-plugin-organize-imports:
|
||||
specifier: ^4.3.0
|
||||
version: 4.3.0(prettier@3.6.2)(typescript@5.7.3)
|
||||
version: 4.3.0(prettier@3.7.3)(typescript@5.7.3)
|
||||
tailwind-scrollbar:
|
||||
specifier: ^4.0.2
|
||||
version: 4.0.2(react@18.3.1)(tailwindcss@4.0.9)
|
||||
@@ -183,8 +183,8 @@ packages:
|
||||
'@emnapi/core@1.4.0':
|
||||
resolution: {integrity: sha512-H+N/FqT07NmLmt6OFFtDfwe8PNygprzBikrEMyQfgqSmT0vzE515Pz7R8izwB9q/zsH/MA64AKoul3sA6/CzVg==}
|
||||
|
||||
'@emnapi/runtime@1.5.0':
|
||||
resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==}
|
||||
'@emnapi/runtime@1.7.1':
|
||||
resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
|
||||
|
||||
'@emnapi/wasi-threads@1.0.1':
|
||||
resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==}
|
||||
@@ -284,124 +284,139 @@ packages:
|
||||
resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
|
||||
engines: {node: '>=18.18'}
|
||||
|
||||
'@img/sharp-darwin-arm64@0.34.3':
|
||||
resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==}
|
||||
'@img/colour@1.0.0':
|
||||
resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@img/sharp-darwin-arm64@0.34.5':
|
||||
resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@img/sharp-darwin-x64@0.34.3':
|
||||
resolution: {integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==}
|
||||
'@img/sharp-darwin-x64@0.34.5':
|
||||
resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@img/sharp-libvips-darwin-arm64@1.2.0':
|
||||
resolution: {integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==}
|
||||
'@img/sharp-libvips-darwin-arm64@1.2.4':
|
||||
resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@img/sharp-libvips-darwin-x64@1.2.0':
|
||||
resolution: {integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==}
|
||||
'@img/sharp-libvips-darwin-x64@1.2.4':
|
||||
resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@img/sharp-libvips-linux-arm64@1.2.0':
|
||||
resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==}
|
||||
'@img/sharp-libvips-linux-arm64@1.2.4':
|
||||
resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linux-arm@1.2.0':
|
||||
resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==}
|
||||
'@img/sharp-libvips-linux-arm@1.2.4':
|
||||
resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linux-ppc64@1.2.0':
|
||||
resolution: {integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==}
|
||||
'@img/sharp-libvips-linux-ppc64@1.2.4':
|
||||
resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linux-s390x@1.2.0':
|
||||
resolution: {integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==}
|
||||
'@img/sharp-libvips-linux-riscv64@1.2.4':
|
||||
resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linux-s390x@1.2.4':
|
||||
resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linux-x64@1.2.0':
|
||||
resolution: {integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==}
|
||||
'@img/sharp-libvips-linux-x64@1.2.4':
|
||||
resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linuxmusl-arm64@1.2.0':
|
||||
resolution: {integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==}
|
||||
'@img/sharp-libvips-linuxmusl-arm64@1.2.4':
|
||||
resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linuxmusl-x64@1.2.0':
|
||||
resolution: {integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==}
|
||||
'@img/sharp-libvips-linuxmusl-x64@1.2.4':
|
||||
resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linux-arm64@0.34.3':
|
||||
resolution: {integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==}
|
||||
'@img/sharp-linux-arm64@0.34.5':
|
||||
resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linux-arm@0.34.3':
|
||||
resolution: {integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==}
|
||||
'@img/sharp-linux-arm@0.34.5':
|
||||
resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linux-ppc64@0.34.3':
|
||||
resolution: {integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==}
|
||||
'@img/sharp-linux-ppc64@0.34.5':
|
||||
resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linux-s390x@0.34.3':
|
||||
resolution: {integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==}
|
||||
'@img/sharp-linux-riscv64@0.34.5':
|
||||
resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linux-s390x@0.34.5':
|
||||
resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linux-x64@0.34.3':
|
||||
resolution: {integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==}
|
||||
'@img/sharp-linux-x64@0.34.5':
|
||||
resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linuxmusl-arm64@0.34.3':
|
||||
resolution: {integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==}
|
||||
'@img/sharp-linuxmusl-arm64@0.34.5':
|
||||
resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linuxmusl-x64@0.34.3':
|
||||
resolution: {integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==}
|
||||
'@img/sharp-linuxmusl-x64@0.34.5':
|
||||
resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-wasm32@0.34.3':
|
||||
resolution: {integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==}
|
||||
'@img/sharp-wasm32@0.34.5':
|
||||
resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [wasm32]
|
||||
|
||||
'@img/sharp-win32-arm64@0.34.3':
|
||||
resolution: {integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==}
|
||||
'@img/sharp-win32-arm64@0.34.5':
|
||||
resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@img/sharp-win32-ia32@0.34.3':
|
||||
resolution: {integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==}
|
||||
'@img/sharp-win32-ia32@0.34.5':
|
||||
resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@img/sharp-win32-x64@0.34.3':
|
||||
resolution: {integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==}
|
||||
'@img/sharp-win32-x64@0.34.5':
|
||||
resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
@@ -451,56 +466,56 @@ packages:
|
||||
'@napi-rs/wasm-runtime@0.2.8':
|
||||
resolution: {integrity: sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==}
|
||||
|
||||
'@next/env@15.5.2':
|
||||
resolution: {integrity: sha512-Qe06ew4zt12LeO6N7j8/nULSOe3fMXE4dM6xgpBQNvdzyK1sv5y4oAP3bq4LamrvGCZtmRYnW8URFCeX5nFgGg==}
|
||||
'@next/env@15.5.7':
|
||||
resolution: {integrity: sha512-4h6Y2NyEkIEN7Z8YxkA27pq6zTkS09bUSYC0xjd0NpwFxjnIKeZEeH591o5WECSmjpUhLn3H2QLJcDye3Uzcvg==}
|
||||
|
||||
'@next/eslint-plugin-next@15.2.4':
|
||||
resolution: {integrity: sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==}
|
||||
|
||||
'@next/swc-darwin-arm64@15.5.2':
|
||||
resolution: {integrity: sha512-8bGt577BXGSd4iqFygmzIfTYizHb0LGWqH+qgIF/2EDxS5JsSdERJKA8WgwDyNBZgTIIA4D8qUtoQHmxIIquoQ==}
|
||||
'@next/swc-darwin-arm64@15.5.7':
|
||||
resolution: {integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@next/swc-darwin-x64@15.5.2':
|
||||
resolution: {integrity: sha512-2DjnmR6JHK4X+dgTXt5/sOCu/7yPtqpYt8s8hLkHFK3MGkka2snTv3yRMdHvuRtJVkPwCGsvBSwmoQCHatauFQ==}
|
||||
'@next/swc-darwin-x64@15.5.7':
|
||||
resolution: {integrity: sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@next/swc-linux-arm64-gnu@15.5.2':
|
||||
resolution: {integrity: sha512-3j7SWDBS2Wov/L9q0mFJtEvQ5miIqfO4l7d2m9Mo06ddsgUK8gWfHGgbjdFlCp2Ek7MmMQZSxpGFqcC8zGh2AA==}
|
||||
'@next/swc-linux-arm64-gnu@15.5.7':
|
||||
resolution: {integrity: sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@next/swc-linux-arm64-musl@15.5.2':
|
||||
resolution: {integrity: sha512-s6N8k8dF9YGc5T01UPQ08yxsK6fUow5gG1/axWc1HVVBYQBgOjca4oUZF7s4p+kwhkB1bDSGR8QznWrFZ/Rt5g==}
|
||||
'@next/swc-linux-arm64-musl@15.5.7':
|
||||
resolution: {integrity: sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@next/swc-linux-x64-gnu@15.5.2':
|
||||
resolution: {integrity: sha512-o1RV/KOODQh6dM6ZRJGZbc+MOAHww33Vbs5JC9Mp1gDk8cpEO+cYC/l7rweiEalkSm5/1WGa4zY7xrNwObN4+Q==}
|
||||
'@next/swc-linux-x64-gnu@15.5.7':
|
||||
resolution: {integrity: sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@next/swc-linux-x64-musl@15.5.2':
|
||||
resolution: {integrity: sha512-/VUnh7w8RElYZ0IV83nUcP/J4KJ6LLYliiBIri3p3aW2giF+PAVgZb6mk8jbQSB3WlTai8gEmCAr7kptFa1H6g==}
|
||||
'@next/swc-linux-x64-musl@15.5.7':
|
||||
resolution: {integrity: sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@next/swc-win32-arm64-msvc@15.5.2':
|
||||
resolution: {integrity: sha512-sMPyTvRcNKXseNQ/7qRfVRLa0VhR0esmQ29DD6pqvG71+JdVnESJaHPA8t7bc67KD5spP3+DOCNLhqlEI2ZgQg==}
|
||||
'@next/swc-win32-arm64-msvc@15.5.7':
|
||||
resolution: {integrity: sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@next/swc-win32-x64-msvc@15.5.2':
|
||||
resolution: {integrity: sha512-W5VvyZHnxG/2ukhZF/9Ikdra5fdNftxI6ybeVKYvBPDtyx7x4jPPSNduUkfH5fo3zG0JQ0bPxgy41af2JX5D4Q==}
|
||||
'@next/swc-win32-x64-msvc@15.5.7':
|
||||
resolution: {integrity: sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
@@ -1105,8 +1120,8 @@ packages:
|
||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
caniuse-lite@1.0.30001739:
|
||||
resolution: {integrity: sha512-y+j60d6ulelrNSwpPyrHdl+9mJnQzHBr08xm48Qno0nSk4h3Qojh+ziv2qE6rXf4k3tadF4o1J/1tAbVm1NtnA==}
|
||||
caniuse-lite@1.0.30001759:
|
||||
resolution: {integrity: sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==}
|
||||
|
||||
chalk@4.1.2:
|
||||
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
||||
@@ -1152,10 +1167,6 @@ packages:
|
||||
color@3.2.1:
|
||||
resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
|
||||
|
||||
color@4.2.3:
|
||||
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
|
||||
engines: {node: '>=12.5.0'}
|
||||
|
||||
colorspace@1.1.4:
|
||||
resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==}
|
||||
|
||||
@@ -1309,14 +1320,14 @@ packages:
|
||||
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
detect-libc@2.0.4:
|
||||
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
detect-libc@2.1.1:
|
||||
resolution: {integrity: sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
detect-libc@2.1.2:
|
||||
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
docker-modem@5.0.6:
|
||||
resolution: {integrity: sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==}
|
||||
engines: {node: '>= 8.0'}
|
||||
@@ -1749,8 +1760,8 @@ packages:
|
||||
http-cache-semantics@4.2.0:
|
||||
resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
|
||||
|
||||
http-errors@2.0.0:
|
||||
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
|
||||
http-errors@2.0.1:
|
||||
resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
|
||||
engines: {node: '>= 0.8'}
|
||||
|
||||
http2-wrapper@2.2.1:
|
||||
@@ -2201,8 +2212,8 @@ packages:
|
||||
next: '>= 10.0.0'
|
||||
react: '>= 16.8.0'
|
||||
|
||||
next@15.5.2:
|
||||
resolution: {integrity: sha512-H8Otr7abj1glFhbGnvUt3gz++0AF1+QoCXEBmd/6aKbfdFwrn0LpA836Ed5+00va/7HQSDD+mOoVhn3tNy3e/Q==}
|
||||
next@15.5.7:
|
||||
resolution: {integrity: sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==}
|
||||
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@@ -2371,8 +2382,8 @@ packages:
|
||||
vue-tsc:
|
||||
optional: true
|
||||
|
||||
prettier@3.6.2:
|
||||
resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
|
||||
prettier@3.7.3:
|
||||
resolution: {integrity: sha512-QgODejq9K3OzoBbuyobZlUhznP5SKwPqp+6Q6xw6o8gnhr4O85L2U915iM2IDcfF2NPXVaM9zlo9tdwipnYwzg==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
|
||||
@@ -2409,8 +2420,8 @@ packages:
|
||||
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
raw-body@3.0.1:
|
||||
resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==}
|
||||
raw-body@3.0.2:
|
||||
resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
|
||||
engines: {node: '>= 0.10'}
|
||||
|
||||
react-dom@18.3.1:
|
||||
@@ -2597,8 +2608,8 @@ packages:
|
||||
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
|
||||
hasBin: true
|
||||
|
||||
semver@7.7.2:
|
||||
resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==}
|
||||
semver@7.7.3:
|
||||
resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
|
||||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
|
||||
@@ -2617,8 +2628,8 @@ packages:
|
||||
setprototypeof@1.2.0:
|
||||
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
|
||||
|
||||
sharp@0.34.3:
|
||||
resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==}
|
||||
sharp@0.34.5:
|
||||
resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
|
||||
shebang-command@2.0.0:
|
||||
@@ -2669,8 +2680,8 @@ packages:
|
||||
stack-trace@0.0.10:
|
||||
resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==}
|
||||
|
||||
statuses@2.0.1:
|
||||
resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
|
||||
statuses@2.0.2:
|
||||
resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
|
||||
engines: {node: '>= 0.8'}
|
||||
|
||||
stop-iteration-iterator@1.1.0:
|
||||
@@ -2776,8 +2787,8 @@ packages:
|
||||
resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==}
|
||||
engines: {node: ^14.18.0 || >=16.0.0}
|
||||
|
||||
systeminformation@5.27.7:
|
||||
resolution: {integrity: sha512-saaqOoVEEFaux4v0K8Q7caiauRwjXC4XbD2eH60dxHXbpKxQ8kH9Rf7Jh+nryKpOUSEFxtCdBlSUx0/lO6rwRg==}
|
||||
systeminformation@5.27.11:
|
||||
resolution: {integrity: sha512-K3Lto/2m3K2twmKHdgx5B+0in9qhXK4YnoT9rIlgwN/4v7OV5c8IjbeAUkuky/6VzCQC7iKCAqi8rZathCdjHg==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android]
|
||||
hasBin: true
|
||||
@@ -3078,7 +3089,7 @@ snapshots:
|
||||
tslib: 2.8.1
|
||||
optional: true
|
||||
|
||||
'@emnapi/runtime@1.5.0':
|
||||
'@emnapi/runtime@1.7.1':
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
optional: true
|
||||
@@ -3192,90 +3203,101 @@ snapshots:
|
||||
|
||||
'@humanwhocodes/retry@0.4.2': {}
|
||||
|
||||
'@img/sharp-darwin-arm64@0.34.3':
|
||||
'@img/colour@1.0.0':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-darwin-arm64@0.34.5':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-darwin-arm64': 1.2.0
|
||||
'@img/sharp-libvips-darwin-arm64': 1.2.4
|
||||
optional: true
|
||||
|
||||
'@img/sharp-darwin-x64@0.34.3':
|
||||
'@img/sharp-darwin-x64@0.34.5':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-darwin-x64': 1.2.0
|
||||
'@img/sharp-libvips-darwin-x64': 1.2.4
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-darwin-arm64@1.2.0':
|
||||
'@img/sharp-libvips-darwin-arm64@1.2.4':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-darwin-x64@1.2.0':
|
||||
'@img/sharp-libvips-darwin-x64@1.2.4':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linux-arm64@1.2.0':
|
||||
'@img/sharp-libvips-linux-arm64@1.2.4':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linux-arm@1.2.0':
|
||||
'@img/sharp-libvips-linux-arm@1.2.4':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linux-ppc64@1.2.0':
|
||||
'@img/sharp-libvips-linux-ppc64@1.2.4':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linux-s390x@1.2.0':
|
||||
'@img/sharp-libvips-linux-riscv64@1.2.4':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linux-x64@1.2.0':
|
||||
'@img/sharp-libvips-linux-s390x@1.2.4':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linuxmusl-arm64@1.2.0':
|
||||
'@img/sharp-libvips-linux-x64@1.2.4':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linuxmusl-x64@1.2.0':
|
||||
'@img/sharp-libvips-linuxmusl-arm64@1.2.4':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linux-arm64@0.34.3':
|
||||
'@img/sharp-libvips-linuxmusl-x64@1.2.4':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linux-arm64@0.34.5':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linux-arm64': 1.2.0
|
||||
'@img/sharp-libvips-linux-arm64': 1.2.4
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linux-arm@0.34.3':
|
||||
'@img/sharp-linux-arm@0.34.5':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linux-arm': 1.2.0
|
||||
'@img/sharp-libvips-linux-arm': 1.2.4
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linux-ppc64@0.34.3':
|
||||
'@img/sharp-linux-ppc64@0.34.5':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linux-ppc64': 1.2.0
|
||||
'@img/sharp-libvips-linux-ppc64': 1.2.4
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linux-s390x@0.34.3':
|
||||
'@img/sharp-linux-riscv64@0.34.5':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linux-s390x': 1.2.0
|
||||
'@img/sharp-libvips-linux-riscv64': 1.2.4
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linux-x64@0.34.3':
|
||||
'@img/sharp-linux-s390x@0.34.5':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linux-x64': 1.2.0
|
||||
'@img/sharp-libvips-linux-s390x': 1.2.4
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linuxmusl-arm64@0.34.3':
|
||||
'@img/sharp-linux-x64@0.34.5':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linuxmusl-arm64': 1.2.0
|
||||
'@img/sharp-libvips-linux-x64': 1.2.4
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linuxmusl-x64@0.34.3':
|
||||
'@img/sharp-linuxmusl-arm64@0.34.5':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linuxmusl-x64': 1.2.0
|
||||
'@img/sharp-libvips-linuxmusl-arm64': 1.2.4
|
||||
optional: true
|
||||
|
||||
'@img/sharp-wasm32@0.34.3':
|
||||
'@img/sharp-linuxmusl-x64@0.34.5':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linuxmusl-x64': 1.2.4
|
||||
optional: true
|
||||
|
||||
'@img/sharp-wasm32@0.34.5':
|
||||
dependencies:
|
||||
'@emnapi/runtime': 1.5.0
|
||||
'@emnapi/runtime': 1.7.1
|
||||
optional: true
|
||||
|
||||
'@img/sharp-win32-arm64@0.34.3':
|
||||
'@img/sharp-win32-arm64@0.34.5':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-win32-ia32@0.34.3':
|
||||
'@img/sharp-win32-ia32@0.34.5':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-win32-x64@0.34.3':
|
||||
'@img/sharp-win32-x64@0.34.5':
|
||||
optional: true
|
||||
|
||||
'@isaacs/cliui@8.0.2':
|
||||
@@ -3348,38 +3370,38 @@ snapshots:
|
||||
'@napi-rs/wasm-runtime@0.2.8':
|
||||
dependencies:
|
||||
'@emnapi/core': 1.4.0
|
||||
'@emnapi/runtime': 1.5.0
|
||||
'@emnapi/runtime': 1.7.1
|
||||
'@tybys/wasm-util': 0.9.0
|
||||
optional: true
|
||||
|
||||
'@next/env@15.5.2': {}
|
||||
'@next/env@15.5.7': {}
|
||||
|
||||
'@next/eslint-plugin-next@15.2.4':
|
||||
dependencies:
|
||||
fast-glob: 3.3.1
|
||||
|
||||
'@next/swc-darwin-arm64@15.5.2':
|
||||
'@next/swc-darwin-arm64@15.5.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-darwin-x64@15.5.2':
|
||||
'@next/swc-darwin-x64@15.5.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-linux-arm64-gnu@15.5.2':
|
||||
'@next/swc-linux-arm64-gnu@15.5.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-linux-arm64-musl@15.5.2':
|
||||
'@next/swc-linux-arm64-musl@15.5.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-linux-x64-gnu@15.5.2':
|
||||
'@next/swc-linux-x64-gnu@15.5.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-linux-x64-musl@15.5.2':
|
||||
'@next/swc-linux-x64-musl@15.5.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-win32-arm64-msvc@15.5.2':
|
||||
'@next/swc-win32-arm64-msvc@15.5.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-win32-x64-msvc@15.5.2':
|
||||
'@next/swc-win32-x64-msvc@15.5.7':
|
||||
optional: true
|
||||
|
||||
'@nodelib/fs.scandir@2.1.5':
|
||||
@@ -3727,7 +3749,7 @@ snapshots:
|
||||
fast-glob: 3.3.3
|
||||
is-glob: 4.0.3
|
||||
minimatch: 9.0.5
|
||||
semver: 7.7.2
|
||||
semver: 7.7.3
|
||||
ts-api-utils: 2.1.0(typescript@5.7.3)
|
||||
typescript: 5.7.3
|
||||
transitivePeerDependencies:
|
||||
@@ -4002,7 +4024,7 @@ snapshots:
|
||||
|
||||
callsites@3.1.0: {}
|
||||
|
||||
caniuse-lite@1.0.30001739: {}
|
||||
caniuse-lite@1.0.30001759: {}
|
||||
|
||||
chalk@4.1.2:
|
||||
dependencies:
|
||||
@@ -4047,12 +4069,6 @@ snapshots:
|
||||
color-convert: 1.9.3
|
||||
color-string: 1.9.1
|
||||
|
||||
color@4.2.3:
|
||||
dependencies:
|
||||
color-convert: 2.0.1
|
||||
color-string: 1.9.1
|
||||
optional: true
|
||||
|
||||
colorspace@1.1.4:
|
||||
dependencies:
|
||||
color: 3.2.1
|
||||
@@ -4184,11 +4200,11 @@ snapshots:
|
||||
|
||||
dequal@2.0.3: {}
|
||||
|
||||
detect-libc@2.0.4:
|
||||
optional: true
|
||||
|
||||
detect-libc@2.1.1: {}
|
||||
|
||||
detect-libc@2.1.2:
|
||||
optional: true
|
||||
|
||||
docker-modem@5.0.6:
|
||||
dependencies:
|
||||
debug: 4.4.1
|
||||
@@ -4506,10 +4522,10 @@ snapshots:
|
||||
safe-regex-test: 1.1.0
|
||||
string.prototype.includes: 2.0.1
|
||||
|
||||
eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.25.1(jiti@2.6.1)))(eslint@9.25.1(jiti@2.6.1))(prettier@3.6.2):
|
||||
eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.25.1(jiti@2.6.1)))(eslint@9.25.1(jiti@2.6.1))(prettier@3.7.3):
|
||||
dependencies:
|
||||
eslint: 9.25.1(jiti@2.6.1)
|
||||
prettier: 3.6.2
|
||||
prettier: 3.7.3
|
||||
prettier-linter-helpers: 1.0.0
|
||||
synckit: 0.11.11
|
||||
optionalDependencies:
|
||||
@@ -4850,12 +4866,12 @@ snapshots:
|
||||
|
||||
http-cache-semantics@4.2.0: {}
|
||||
|
||||
http-errors@2.0.0:
|
||||
http-errors@2.0.1:
|
||||
dependencies:
|
||||
depd: 2.0.0
|
||||
inherits: 2.0.4
|
||||
setprototypeof: 1.2.0
|
||||
statuses: 2.0.1
|
||||
statuses: 2.0.2
|
||||
toidentifier: 1.0.1
|
||||
|
||||
http2-wrapper@2.2.1:
|
||||
@@ -4931,7 +4947,7 @@ snapshots:
|
||||
|
||||
is-bun-module@2.0.0:
|
||||
dependencies:
|
||||
semver: 7.7.2
|
||||
semver: 7.7.3
|
||||
|
||||
is-callable@1.2.7: {}
|
||||
|
||||
@@ -5243,7 +5259,7 @@ snapshots:
|
||||
|
||||
net@1.0.2: {}
|
||||
|
||||
next-i18next@12.1.0(next@15.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
next-i18next@12.1.0(next@15.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.9
|
||||
'@types/hoist-non-react-statics': 3.3.6
|
||||
@@ -5251,32 +5267,32 @@ snapshots:
|
||||
hoist-non-react-statics: 3.3.2
|
||||
i18next: 21.10.0
|
||||
i18next-fs-backend: 1.2.0
|
||||
next: 15.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
next: 15.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react: 18.3.1
|
||||
react-i18next: 11.18.6(i18next@21.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
transitivePeerDependencies:
|
||||
- react-dom
|
||||
- react-native
|
||||
|
||||
next@15.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
next@15.5.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
dependencies:
|
||||
'@next/env': 15.5.2
|
||||
'@next/env': 15.5.7
|
||||
'@swc/helpers': 0.5.15
|
||||
caniuse-lite: 1.0.30001739
|
||||
caniuse-lite: 1.0.30001759
|
||||
postcss: 8.4.31
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
styled-jsx: 5.1.6(react@18.3.1)
|
||||
optionalDependencies:
|
||||
'@next/swc-darwin-arm64': 15.5.2
|
||||
'@next/swc-darwin-x64': 15.5.2
|
||||
'@next/swc-linux-arm64-gnu': 15.5.2
|
||||
'@next/swc-linux-arm64-musl': 15.5.2
|
||||
'@next/swc-linux-x64-gnu': 15.5.2
|
||||
'@next/swc-linux-x64-musl': 15.5.2
|
||||
'@next/swc-win32-arm64-msvc': 15.5.2
|
||||
'@next/swc-win32-x64-msvc': 15.5.2
|
||||
sharp: 0.34.3
|
||||
'@next/swc-darwin-arm64': 15.5.7
|
||||
'@next/swc-darwin-x64': 15.5.7
|
||||
'@next/swc-linux-arm64-gnu': 15.5.7
|
||||
'@next/swc-linux-arm64-musl': 15.5.7
|
||||
'@next/swc-linux-x64-gnu': 15.5.7
|
||||
'@next/swc-linux-x64-musl': 15.5.7
|
||||
'@next/swc-win32-arm64-msvc': 15.5.7
|
||||
'@next/swc-win32-x64-msvc': 15.5.7
|
||||
sharp: 0.34.5
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- babel-plugin-macros
|
||||
@@ -5416,12 +5432,12 @@ snapshots:
|
||||
dependencies:
|
||||
fast-diff: 1.3.0
|
||||
|
||||
prettier-plugin-organize-imports@4.3.0(prettier@3.6.2)(typescript@5.7.3):
|
||||
prettier-plugin-organize-imports@4.3.0(prettier@3.7.3)(typescript@5.7.3):
|
||||
dependencies:
|
||||
prettier: 3.6.2
|
||||
prettier: 3.7.3
|
||||
typescript: 5.7.3
|
||||
|
||||
prettier@3.6.2: {}
|
||||
prettier@3.7.3: {}
|
||||
|
||||
pretty-bytes@7.1.0: {}
|
||||
|
||||
@@ -5465,10 +5481,10 @@ snapshots:
|
||||
|
||||
quick-lru@5.1.1: {}
|
||||
|
||||
raw-body@3.0.1:
|
||||
raw-body@3.0.2:
|
||||
dependencies:
|
||||
bytes: 3.1.2
|
||||
http-errors: 2.0.0
|
||||
http-errors: 2.0.1
|
||||
iconv-lite: 0.7.0
|
||||
unpipe: 1.0.0
|
||||
|
||||
@@ -5668,7 +5684,7 @@ snapshots:
|
||||
|
||||
semver@6.3.1: {}
|
||||
|
||||
semver@7.7.2: {}
|
||||
semver@7.7.3: {}
|
||||
|
||||
set-function-length@1.2.2:
|
||||
dependencies:
|
||||
@@ -5694,34 +5710,36 @@ snapshots:
|
||||
|
||||
setprototypeof@1.2.0: {}
|
||||
|
||||
sharp@0.34.3:
|
||||
sharp@0.34.5:
|
||||
dependencies:
|
||||
color: 4.2.3
|
||||
detect-libc: 2.0.4
|
||||
semver: 7.7.2
|
||||
'@img/colour': 1.0.0
|
||||
detect-libc: 2.1.2
|
||||
semver: 7.7.3
|
||||
optionalDependencies:
|
||||
'@img/sharp-darwin-arm64': 0.34.3
|
||||
'@img/sharp-darwin-x64': 0.34.3
|
||||
'@img/sharp-libvips-darwin-arm64': 1.2.0
|
||||
'@img/sharp-libvips-darwin-x64': 1.2.0
|
||||
'@img/sharp-libvips-linux-arm': 1.2.0
|
||||
'@img/sharp-libvips-linux-arm64': 1.2.0
|
||||
'@img/sharp-libvips-linux-ppc64': 1.2.0
|
||||
'@img/sharp-libvips-linux-s390x': 1.2.0
|
||||
'@img/sharp-libvips-linux-x64': 1.2.0
|
||||
'@img/sharp-libvips-linuxmusl-arm64': 1.2.0
|
||||
'@img/sharp-libvips-linuxmusl-x64': 1.2.0
|
||||
'@img/sharp-linux-arm': 0.34.3
|
||||
'@img/sharp-linux-arm64': 0.34.3
|
||||
'@img/sharp-linux-ppc64': 0.34.3
|
||||
'@img/sharp-linux-s390x': 0.34.3
|
||||
'@img/sharp-linux-x64': 0.34.3
|
||||
'@img/sharp-linuxmusl-arm64': 0.34.3
|
||||
'@img/sharp-linuxmusl-x64': 0.34.3
|
||||
'@img/sharp-wasm32': 0.34.3
|
||||
'@img/sharp-win32-arm64': 0.34.3
|
||||
'@img/sharp-win32-ia32': 0.34.3
|
||||
'@img/sharp-win32-x64': 0.34.3
|
||||
'@img/sharp-darwin-arm64': 0.34.5
|
||||
'@img/sharp-darwin-x64': 0.34.5
|
||||
'@img/sharp-libvips-darwin-arm64': 1.2.4
|
||||
'@img/sharp-libvips-darwin-x64': 1.2.4
|
||||
'@img/sharp-libvips-linux-arm': 1.2.4
|
||||
'@img/sharp-libvips-linux-arm64': 1.2.4
|
||||
'@img/sharp-libvips-linux-ppc64': 1.2.4
|
||||
'@img/sharp-libvips-linux-riscv64': 1.2.4
|
||||
'@img/sharp-libvips-linux-s390x': 1.2.4
|
||||
'@img/sharp-libvips-linux-x64': 1.2.4
|
||||
'@img/sharp-libvips-linuxmusl-arm64': 1.2.4
|
||||
'@img/sharp-libvips-linuxmusl-x64': 1.2.4
|
||||
'@img/sharp-linux-arm': 0.34.5
|
||||
'@img/sharp-linux-arm64': 0.34.5
|
||||
'@img/sharp-linux-ppc64': 0.34.5
|
||||
'@img/sharp-linux-riscv64': 0.34.5
|
||||
'@img/sharp-linux-s390x': 0.34.5
|
||||
'@img/sharp-linux-x64': 0.34.5
|
||||
'@img/sharp-linuxmusl-arm64': 0.34.5
|
||||
'@img/sharp-linuxmusl-x64': 0.34.5
|
||||
'@img/sharp-wasm32': 0.34.5
|
||||
'@img/sharp-win32-arm64': 0.34.5
|
||||
'@img/sharp-win32-ia32': 0.34.5
|
||||
'@img/sharp-win32-x64': 0.34.5
|
||||
optional: true
|
||||
|
||||
shebang-command@2.0.0:
|
||||
@@ -5780,7 +5798,7 @@ snapshots:
|
||||
|
||||
stack-trace@0.0.10: {}
|
||||
|
||||
statuses@2.0.1: {}
|
||||
statuses@2.0.2: {}
|
||||
|
||||
stop-iteration-iterator@1.1.0:
|
||||
dependencies:
|
||||
@@ -5905,7 +5923,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@pkgr/core': 0.2.9
|
||||
|
||||
systeminformation@5.27.7: {}
|
||||
systeminformation@5.27.11: {}
|
||||
|
||||
tabbable@6.3.0: {}
|
||||
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Vandag",
|
||||
"gross_percent_1y": "Een jaar",
|
||||
"gross_percent_max": "Alle tyd"
|
||||
"gross_percent_max": "Alle tyd",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podsendinge",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "سنة",
|
||||
"gross_percent_max": "كل الوقت"
|
||||
"gross_percent_max": "كل الوقت",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "بودكاست",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Една година",
|
||||
"gross_percent_max": "All time"
|
||||
"gross_percent_max": "All time",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Подкасти",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Un any",
|
||||
"gross_percent_max": "Sempre"
|
||||
"gross_percent_max": "Sempre",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Pòdcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Jeden rok",
|
||||
"gross_percent_max": "Za celou dobu"
|
||||
"gross_percent_max": "Za celou dobu",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasty",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Et År",
|
||||
"gross_percent_max": "Altid"
|
||||
"gross_percent_max": "Altid",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Heute",
|
||||
"gross_percent_1y": "Ein Jahr",
|
||||
"gross_percent_max": "Gesamt"
|
||||
"gross_percent_max": "Gesamt",
|
||||
"net_worth": ""
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Ένας χρόνος",
|
||||
"gross_percent_max": "Διαχρονικά"
|
||||
"gross_percent_max": "Διαχρονικά",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "One year",
|
||||
"gross_percent_max": "All time"
|
||||
"gross_percent_max": "All time",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Hoy",
|
||||
"gross_percent_1y": "Un año",
|
||||
"gross_percent_max": "Todo el tiempo"
|
||||
"gross_percent_max": "Todo el tiempo",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "One year",
|
||||
"gross_percent_max": "All time"
|
||||
"gross_percent_max": "All time",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "One year",
|
||||
"gross_percent_max": "All time"
|
||||
"gross_percent_max": "All time",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -142,8 +142,8 @@
|
||||
"connectionStatusDisconnected": "Déconnecté",
|
||||
"connectionStatusConnected": "Connecté",
|
||||
"uptime": "Démarré depuis",
|
||||
"maxDown": "Réception max.",
|
||||
"maxUp": "Envoi max.",
|
||||
"maxDown": "Réception max",
|
||||
"maxUp": "Envoi max",
|
||||
"down": "Réception",
|
||||
"up": "Envoi",
|
||||
"received": "Reçu",
|
||||
@@ -229,7 +229,7 @@
|
||||
"seed": "En partage"
|
||||
},
|
||||
"develancacheui": {
|
||||
"cachehitbytes": "Cache Hit (B)",
|
||||
"cachehitbytes": "Octets acquis du cache",
|
||||
"cachemissbytes": "Cache Miss (B)"
|
||||
},
|
||||
"downloadstation": {
|
||||
@@ -294,7 +294,7 @@
|
||||
"queries": "Requêtes",
|
||||
"blocked": "Bloqué",
|
||||
"blocked_percent": "% bloqué",
|
||||
"gravity": "Listes dom. bloqués"
|
||||
"gravity": "Listes dom. Bloqués"
|
||||
},
|
||||
"adguard": {
|
||||
"queries": "Requêtes",
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Aujourd'hui",
|
||||
"gross_percent_1y": "Un an",
|
||||
"gross_percent_max": "Depuis le début"
|
||||
"gross_percent_max": "Depuis le début",
|
||||
"net_worth": "Patrimoine net"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
@@ -1091,7 +1092,7 @@
|
||||
"NEW_ARRAY": "Nouveau tableau",
|
||||
"RECON_DISK": "Reconstruction du disque",
|
||||
"DISABLE_DISK": "Disque désactivé",
|
||||
"SWAP_DSBL": "Swap Disable",
|
||||
"SWAP_DSBL": "Désactiver le swap",
|
||||
"INVALID_EXPANSION": "Extension invalide",
|
||||
"PARITY_NOT_BIGGEST": "La parité n'est pas la plus grande",
|
||||
"TOO_MANY_MISSING_DISKS": "Trop de disques manquants",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "היום",
|
||||
"gross_percent_1y": "שנה",
|
||||
"gross_percent_max": "כל הזמן"
|
||||
"gross_percent_max": "כל הזמן",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "פודקאסטים",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "One year",
|
||||
"gross_percent_max": "All time"
|
||||
"gross_percent_max": "All time",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Danas",
|
||||
"gross_percent_1y": "Jedna godina",
|
||||
"gross_percent_max": "Svo vrijeme"
|
||||
"gross_percent_max": "Svo vrijeme",
|
||||
"net_worth": "Neto vrijednost"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasti",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Egy év",
|
||||
"gross_percent_max": "Mindig"
|
||||
"gross_percent_max": "Mindig",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcast",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Satu Tahun",
|
||||
"gross_percent_max": "Sepanjang Masa"
|
||||
"gross_percent_max": "Sepanjang Masa",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcast",
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
"passes": "Tessere"
|
||||
},
|
||||
"tautulli": {
|
||||
"playing": "Playing",
|
||||
"playing": "In riproduzione",
|
||||
"transcoding": "Transcoding",
|
||||
"bitrate": "Bitrate",
|
||||
"no_active": "No Active Streams",
|
||||
@@ -313,7 +313,7 @@
|
||||
"total": "Total"
|
||||
},
|
||||
"suwayomi": {
|
||||
"download": "Downloaded",
|
||||
"download": "Scaricati",
|
||||
"nondownload": "Non Scaricato",
|
||||
"read": "Read",
|
||||
"unread": "Unread",
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Un anno",
|
||||
"gross_percent_max": "Sempre"
|
||||
"gross_percent_max": "Sempre",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcast",
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
"docker": {
|
||||
"rx": "受信済み",
|
||||
"tx": "送信済み",
|
||||
"mem": "MEM",
|
||||
"mem": "メモリ",
|
||||
"cpu": "CPU",
|
||||
"running": "起動中",
|
||||
"offline": "オフライン",
|
||||
@@ -83,7 +83,7 @@
|
||||
"partial": "部分的"
|
||||
},
|
||||
"ping": {
|
||||
"error": "Error",
|
||||
"error": "エラー",
|
||||
"ping": "Ping",
|
||||
"down": "下へ",
|
||||
"up": "稼働",
|
||||
@@ -112,7 +112,7 @@
|
||||
"offline_alt": "オフライン",
|
||||
"online": "オンライン",
|
||||
"total": "Total",
|
||||
"unknown": "Unknown"
|
||||
"unknown": "不明"
|
||||
},
|
||||
"evcc": {
|
||||
"pv_power": "発電量",
|
||||
@@ -223,8 +223,8 @@
|
||||
"invalid": "無効"
|
||||
},
|
||||
"deluge": {
|
||||
"download": "Download",
|
||||
"upload": "Upload",
|
||||
"download": "ダウンロード",
|
||||
"upload": "アップロード",
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
@@ -233,8 +233,8 @@
|
||||
"cachemissbytes": "キャッシュミスバイト"
|
||||
},
|
||||
"downloadstation": {
|
||||
"download": "Download",
|
||||
"upload": "Upload",
|
||||
"download": "ダウンロード",
|
||||
"upload": "アップロード",
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
@@ -251,7 +251,7 @@
|
||||
"queued": "Queued",
|
||||
"movies": "Movies",
|
||||
"queue": "Queue",
|
||||
"unknown": "Unknown"
|
||||
"unknown": "不明"
|
||||
},
|
||||
"lidarr": {
|
||||
"wanted": "Wanted",
|
||||
@@ -692,8 +692,8 @@
|
||||
},
|
||||
"diskstation": {
|
||||
"days": "Days",
|
||||
"uptime": "Uptime",
|
||||
"volumeAvailable": "Available"
|
||||
"uptime": "稼働時間",
|
||||
"volumeAvailable": "利用可能"
|
||||
},
|
||||
"mylar": {
|
||||
"series": "Series",
|
||||
@@ -754,12 +754,13 @@
|
||||
"gatus": {
|
||||
"up": "Sites Up",
|
||||
"down": "Sites Down",
|
||||
"uptime": "Uptime"
|
||||
"uptime": "稼働時間"
|
||||
},
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "1年",
|
||||
"gross_percent_max": "全期間"
|
||||
"gross_percent_max": "全期間",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "ポッドキャスト",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "오늘",
|
||||
"gross_percent_1y": "1년",
|
||||
"gross_percent_max": "전체 기간"
|
||||
"gross_percent_max": "전체 기간",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "팟캐스트",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "One year",
|
||||
"gross_percent_max": "All time"
|
||||
"gross_percent_max": "All time",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Satu tahun",
|
||||
"gross_percent_max": "Sepanjang masa"
|
||||
"gross_percent_max": "Sepanjang masa",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podkas",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Vandaag",
|
||||
"gross_percent_1y": "Een jaar",
|
||||
"gross_percent_max": "Altijd"
|
||||
"gross_percent_max": "Altijd",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Ett år",
|
||||
"gross_percent_max": "Gjennom tidene"
|
||||
"gross_percent_max": "Gjennom tidene",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podkaster",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Dzisiaj",
|
||||
"gross_percent_1y": "Rok",
|
||||
"gross_percent_max": "Od początku"
|
||||
"gross_percent_max": "Od początku",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasty",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Um ano",
|
||||
"gross_percent_max": "Desde Sempre"
|
||||
"gross_percent_max": "Desde Sempre",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Hoje",
|
||||
"gross_percent_1y": "Um ano",
|
||||
"gross_percent_max": "Todo o tempo"
|
||||
"gross_percent_max": "Todo o tempo",
|
||||
"net_worth": "Patrimônio Líquido"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Un an",
|
||||
"gross_percent_max": "Tot timpul"
|
||||
"gross_percent_max": "Tot timpul",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasturi",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Сегодня",
|
||||
"gross_percent_1y": "Один год",
|
||||
"gross_percent_max": "Все время"
|
||||
"gross_percent_max": "Все время",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Подкасты",
|
||||
|
||||
@@ -362,8 +362,8 @@
|
||||
},
|
||||
"trilium": {
|
||||
"version": "Verzia",
|
||||
"notesCount": "Notes",
|
||||
"dbSize": "Database Size",
|
||||
"notesCount": "Poznámky",
|
||||
"dbSize": "Veľkosť databázy",
|
||||
"unknown": "Neznáme"
|
||||
},
|
||||
"navidrome": {
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Dnes",
|
||||
"gross_percent_1y": "Jeden rok",
|
||||
"gross_percent_max": "Za celý čas"
|
||||
"gross_percent_max": "Za celý čas",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasty",
|
||||
@@ -786,7 +787,7 @@
|
||||
"downloadCount": "Poradie",
|
||||
"downloadBytesRemaining": "Zostávajúce",
|
||||
"downloadTotalBytes": "Veľkosť",
|
||||
"downloadSpeed": "Speed"
|
||||
"downloadSpeed": "Rýchlosť"
|
||||
},
|
||||
"kavita": {
|
||||
"seriesCount": "Series",
|
||||
@@ -952,7 +953,7 @@
|
||||
"loading": "Načítava sa",
|
||||
"open": "Open - US Market",
|
||||
"closed": "Closed - US Market",
|
||||
"invalidConfiguration": "Invalid Configuration"
|
||||
"invalidConfiguration": "Neplatná konfigurácia"
|
||||
},
|
||||
"frigate": {
|
||||
"cameras": "Kamery",
|
||||
@@ -1022,10 +1023,10 @@
|
||||
"loading": "Načítava sa"
|
||||
},
|
||||
"gitlab": {
|
||||
"groups": "Groups",
|
||||
"issues": "Issues",
|
||||
"groups": "Skupiny",
|
||||
"issues": "Problémy",
|
||||
"merges": "Merge Requests",
|
||||
"projects": "Projects"
|
||||
"projects": "Projekty"
|
||||
},
|
||||
"apcups": {
|
||||
"status": "Stav",
|
||||
@@ -1035,7 +1036,7 @@
|
||||
},
|
||||
"karakeep": {
|
||||
"bookmarks": "Bookmarks",
|
||||
"favorites": "Favorites",
|
||||
"favorites": "Obľúbené",
|
||||
"archived": "Archived",
|
||||
"highlights": "Highlights",
|
||||
"lists": "Zoznamy",
|
||||
@@ -1065,13 +1066,13 @@
|
||||
"komodo": {
|
||||
"total": "Celkom",
|
||||
"running": "Beží",
|
||||
"stopped": "Stopped",
|
||||
"stopped": "Zastavené",
|
||||
"down": "Down",
|
||||
"unhealthy": "Nezdravý",
|
||||
"unknown": "Neznáme",
|
||||
"servers": "Servers",
|
||||
"servers": "Servery",
|
||||
"stacks": "Stacks",
|
||||
"containers": "Containers"
|
||||
"containers": "Kontajnery"
|
||||
},
|
||||
"filebrowser": {
|
||||
"available": "Dostupné",
|
||||
@@ -1080,8 +1081,8 @@
|
||||
},
|
||||
"wallos": {
|
||||
"activeSubscriptions": "Subscriptions",
|
||||
"thisMonthlyCost": "This Month",
|
||||
"nextMonthlyCost": "Next Month",
|
||||
"thisMonthlyCost": "Tento mesiac",
|
||||
"nextMonthlyCost": "Ďalší mesiac",
|
||||
"previousMonthlyCost": "Prev. Month",
|
||||
"nextRenewingSubscription": "Next Payment"
|
||||
},
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Eno leto",
|
||||
"gross_percent_max": "Celoten čas"
|
||||
"gross_percent_max": "Celoten čas",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasti",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Данас",
|
||||
"gross_percent_1y": "Једна година",
|
||||
"gross_percent_max": "Све време"
|
||||
"gross_percent_max": "Све време",
|
||||
"net_worth": "Нето вредност"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Подкасти",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "One year",
|
||||
"gross_percent_max": "All time"
|
||||
"gross_percent_max": "All time",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "One year",
|
||||
"gross_percent_max": "All time"
|
||||
"gross_percent_max": "All time",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "One year",
|
||||
"gross_percent_max": "All time"
|
||||
"gross_percent_max": "All time",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Bugün",
|
||||
"gross_percent_1y": "Bir yıl",
|
||||
"gross_percent_max": "Tüm zaman"
|
||||
"gross_percent_max": "Tüm zaman",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcast",
|
||||
|
||||
@@ -63,14 +63,14 @@
|
||||
"wlan_users": "WLAN користувачі",
|
||||
"up": "UP",
|
||||
"down": "Завантаження",
|
||||
"wait": "Please wait",
|
||||
"wait": "Будь ласка, зачекайте",
|
||||
"empty_data": "Статус підсистеми невідомий"
|
||||
},
|
||||
"docker": {
|
||||
"rx": "RX",
|
||||
"tx": "TX",
|
||||
"mem": "MEM",
|
||||
"cpu": "CPU",
|
||||
"mem": "Пам'ять",
|
||||
"cpu": "Процесор",
|
||||
"running": "Запущено",
|
||||
"offline": "Офлайн",
|
||||
"error": "Помилка",
|
||||
@@ -83,7 +83,7 @@
|
||||
"partial": "Частковий"
|
||||
},
|
||||
"ping": {
|
||||
"error": "Error",
|
||||
"error": "Помилка",
|
||||
"ping": "Пінг",
|
||||
"down": "Офлайн",
|
||||
"up": "Онлайн",
|
||||
@@ -91,11 +91,11 @@
|
||||
},
|
||||
"siteMonitor": {
|
||||
"http_status": "HTTP статус",
|
||||
"error": "Error",
|
||||
"error": "Помилка",
|
||||
"response": "Відповідь",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"not_available": "Not Available"
|
||||
"down": "Офлайн",
|
||||
"up": "Онлайн",
|
||||
"not_available": "Не доступний"
|
||||
},
|
||||
"emby": {
|
||||
"playing": "Відтворення",
|
||||
@@ -108,10 +108,10 @@
|
||||
"songs": "Пісні"
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"offline": "Офлайн",
|
||||
"offline_alt": "Офлайн",
|
||||
"online": "Онлайн",
|
||||
"total": "Total",
|
||||
"total": "Усього",
|
||||
"unknown": "Невідомо"
|
||||
},
|
||||
"evcc": {
|
||||
@@ -133,7 +133,7 @@
|
||||
"unread": "Не прочитано"
|
||||
},
|
||||
"fritzbox": {
|
||||
"connectionStatus": "Status",
|
||||
"connectionStatus": "Стан",
|
||||
"connectionStatusUnconfigured": "Не налаштовано",
|
||||
"connectionStatusConnecting": "Підключення",
|
||||
"connectionStatusAuthenticating": "Автентифікація",
|
||||
@@ -141,11 +141,11 @@
|
||||
"connectionStatusDisconnecting": "Відключення",
|
||||
"connectionStatusDisconnected": "Відключено",
|
||||
"connectionStatusConnected": "З'єднано",
|
||||
"uptime": "Uptime",
|
||||
"uptime": "Час роботи",
|
||||
"maxDown": "Макс. завантаження",
|
||||
"maxUp": "Макс. віддача",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"down": "Офлайн",
|
||||
"up": "Онлайн",
|
||||
"received": "Отримано",
|
||||
"sent": "Надіслано",
|
||||
"externalIPAddress": "Зовнішній IP",
|
||||
@@ -168,10 +168,10 @@
|
||||
"passes": "Пропуски"
|
||||
},
|
||||
"tautulli": {
|
||||
"playing": "Playing",
|
||||
"transcoding": "Transcoding",
|
||||
"bitrate": "Bitrate",
|
||||
"no_active": "No Active Streams",
|
||||
"playing": "Грає",
|
||||
"transcoding": "Транскодування",
|
||||
"bitrate": "Бітрейт",
|
||||
"no_active": "Немає активних потоків",
|
||||
"plex_connection_error": "Перевірте з'єднання Plex"
|
||||
},
|
||||
"omada": {
|
||||
@@ -189,30 +189,30 @@
|
||||
"plex": {
|
||||
"streams": "Активні потоки",
|
||||
"albums": "Альбоми",
|
||||
"movies": "Movies",
|
||||
"movies": "Фільми",
|
||||
"tv": "TБ шоу"
|
||||
},
|
||||
"sabnzbd": {
|
||||
"rate": "Rate",
|
||||
"rate": "Швидкість",
|
||||
"queue": "Черга",
|
||||
"timeleft": "Залишилось"
|
||||
},
|
||||
"rutorrent": {
|
||||
"active": "Активний",
|
||||
"upload": "Upload",
|
||||
"download": "Download"
|
||||
"upload": "Вивантаж.",
|
||||
"download": "Завантажено"
|
||||
},
|
||||
"transmission": {
|
||||
"download": "Download",
|
||||
"upload": "Upload",
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
"download": "Завантажено",
|
||||
"upload": "Вивантаж.",
|
||||
"leech": "Ліч",
|
||||
"seed": "Сід"
|
||||
},
|
||||
"qbittorrent": {
|
||||
"download": "Download",
|
||||
"upload": "Upload",
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
"download": "Завантажити",
|
||||
"upload": "Вивантаж.",
|
||||
"leech": "Ліч",
|
||||
"seed": "Сід"
|
||||
},
|
||||
"qnap": {
|
||||
"cpuUsage": "Використання CPU",
|
||||
@@ -225,8 +225,8 @@
|
||||
"deluge": {
|
||||
"download": "Download",
|
||||
"upload": "Upload",
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
"leech": "Ліч",
|
||||
"seed": "Сід"
|
||||
},
|
||||
"develancacheui": {
|
||||
"cachehitbytes": "Кеш-хіт байт",
|
||||
@@ -234,33 +234,33 @@
|
||||
},
|
||||
"downloadstation": {
|
||||
"download": "Download",
|
||||
"upload": "Upload",
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
"upload": "Вивантаж.",
|
||||
"leech": "Ліч",
|
||||
"seed": "Сід"
|
||||
},
|
||||
"sonarr": {
|
||||
"wanted": "Розшукується",
|
||||
"queued": "У черзі",
|
||||
"series": "Series",
|
||||
"queue": "Queue",
|
||||
"unknown": "Unknown"
|
||||
"series": "Серіали",
|
||||
"queue": "Черга",
|
||||
"unknown": "Невідомо"
|
||||
},
|
||||
"radarr": {
|
||||
"wanted": "Wanted",
|
||||
"wanted": "У бажаних",
|
||||
"missing": "Відсутній",
|
||||
"queued": "Queued",
|
||||
"movies": "Movies",
|
||||
"queue": "Queue",
|
||||
"unknown": "Unknown"
|
||||
"queued": "У черзі",
|
||||
"movies": "Фільми",
|
||||
"queue": "Черга",
|
||||
"unknown": "Невідомо"
|
||||
},
|
||||
"lidarr": {
|
||||
"wanted": "Wanted",
|
||||
"queued": "Queued",
|
||||
"wanted": "У бажаних",
|
||||
"queued": "У черзі",
|
||||
"artists": "Виконавці"
|
||||
},
|
||||
"readarr": {
|
||||
"wanted": "Wanted",
|
||||
"queued": "Queued",
|
||||
"wanted": "У бажаних",
|
||||
"queued": "У черзі",
|
||||
"books": "Книжки"
|
||||
},
|
||||
"bazarr": {
|
||||
@@ -273,20 +273,20 @@
|
||||
"available": "Доступно"
|
||||
},
|
||||
"jellyseerr": {
|
||||
"pending": "Pending",
|
||||
"approved": "Approved",
|
||||
"available": "Available",
|
||||
"issues": "Open Issues"
|
||||
"pending": "Очікує",
|
||||
"approved": "Схвалено",
|
||||
"available": "Доступно",
|
||||
"issues": "Проблеми до усунення"
|
||||
},
|
||||
"overseerr": {
|
||||
"pending": "Pending",
|
||||
"pending": "Очікує",
|
||||
"processing": "Обробка",
|
||||
"approved": "Approved",
|
||||
"available": "Available"
|
||||
"approved": "Схвалено",
|
||||
"available": "Доступно"
|
||||
},
|
||||
"netalertx": {
|
||||
"total": "Total",
|
||||
"connected": "Connected",
|
||||
"total": "Усього",
|
||||
"connected": "З'єднано",
|
||||
"new_devices": "Нові пристрої",
|
||||
"down_alerts": "Сповіщення про падіння"
|
||||
},
|
||||
@@ -297,13 +297,13 @@
|
||||
"gravity": "Доменів в списку"
|
||||
},
|
||||
"adguard": {
|
||||
"queries": "Queries",
|
||||
"blocked": "Blocked",
|
||||
"queries": "Запити",
|
||||
"blocked": "Заблоковано",
|
||||
"filtered": "Відфільтровано",
|
||||
"latency": "Затримка"
|
||||
},
|
||||
"speedtest": {
|
||||
"upload": "Upload",
|
||||
"upload": "Вивантаж.",
|
||||
"download": "Download",
|
||||
"ping": "Ping"
|
||||
},
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Один рік",
|
||||
"gross_percent_max": "Весь час"
|
||||
"gross_percent_max": "Весь час",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Подкасти",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "One year",
|
||||
"gross_percent_max": "All time"
|
||||
"gross_percent_max": "All time",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "一年",
|
||||
"gross_percent_max": "所有時間"
|
||||
"gross_percent_max": "所有時間",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "播客",
|
||||
|
||||
@@ -1,750 +0,0 @@
|
||||
{
|
||||
"widget": {
|
||||
"missing_type": "缺少小部件类型:{{type}}",
|
||||
"api_error": "API错误",
|
||||
"status": "状态",
|
||||
"information": "信息",
|
||||
"url": "URL",
|
||||
"raw_error": "原始错误",
|
||||
"response_data": "返回数据"
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "搜索…"
|
||||
},
|
||||
"resources": {
|
||||
"total": "总计",
|
||||
"free": "空闲",
|
||||
"used": "已用",
|
||||
"load": "负载",
|
||||
"cpu": "处理器",
|
||||
"mem": "内存",
|
||||
"temp": "温度",
|
||||
"max": "最大",
|
||||
"uptime": "运行时间",
|
||||
"months": "月",
|
||||
"days": "天",
|
||||
"hours": "时",
|
||||
"minutes": "分"
|
||||
},
|
||||
"docker": {
|
||||
"rx": "接收",
|
||||
"tx": "发送",
|
||||
"mem": "内存",
|
||||
"cpu": "处理器",
|
||||
"offline": "离线",
|
||||
"error": "错误",
|
||||
"unknown": "未知问题",
|
||||
"starting": "启动中",
|
||||
"unhealthy": "不健康的",
|
||||
"not_found": "未找到",
|
||||
"running": "运行中",
|
||||
"exited": "已退出",
|
||||
"partial": "部分",
|
||||
"healthy": "健康的"
|
||||
},
|
||||
"emby": {
|
||||
"playing": "播放中",
|
||||
"transcoding": "转码",
|
||||
"bitrate": "比特率",
|
||||
"no_active": "暂无播放",
|
||||
"movies": "电影",
|
||||
"series": "系列",
|
||||
"episodes": "剧集",
|
||||
"songs": "歌曲"
|
||||
},
|
||||
"tautulli": {
|
||||
"playing": "播放中",
|
||||
"transcoding": "转码",
|
||||
"bitrate": "比特率",
|
||||
"no_active": "暂无播放",
|
||||
"plex_connection_error": "Check Plex Connection"
|
||||
},
|
||||
"rutorrent": {
|
||||
"active": "活动中",
|
||||
"upload": "上传",
|
||||
"download": "下载"
|
||||
},
|
||||
"sonarr": {
|
||||
"wanted": "想看",
|
||||
"queued": "排队",
|
||||
"series": "系列",
|
||||
"queue": "Queue",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"radarr": {
|
||||
"wanted": "想看",
|
||||
"queued": "队列",
|
||||
"movies": "电影",
|
||||
"missing": "丢失",
|
||||
"queue": "Queue",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"readarr": {
|
||||
"wanted": "订阅",
|
||||
"queued": "队列",
|
||||
"books": "书籍"
|
||||
},
|
||||
"ombi": {
|
||||
"pending": "待办的",
|
||||
"approved": "已批准",
|
||||
"available": "可用的"
|
||||
},
|
||||
"jellyseerr": {
|
||||
"pending": "待办的",
|
||||
"approved": "得到正式认可的",
|
||||
"available": "可用的"
|
||||
},
|
||||
"pihole": {
|
||||
"queries": "查询",
|
||||
"blocked": "阻止",
|
||||
"gravity": "重力",
|
||||
"blocked_percent": "拦截 %"
|
||||
},
|
||||
"speedtest": {
|
||||
"upload": "上传",
|
||||
"download": "下载",
|
||||
"ping": "ping"
|
||||
},
|
||||
"portainer": {
|
||||
"running": "运行中",
|
||||
"stopped": "停止",
|
||||
"total": "总计"
|
||||
},
|
||||
"traefik": {
|
||||
"routers": "路由器",
|
||||
"services": "服务",
|
||||
"middleware": "中间件"
|
||||
},
|
||||
"npm": {
|
||||
"enabled": "已启用",
|
||||
"disabled": "禁用",
|
||||
"total": "全部的"
|
||||
},
|
||||
"weather": {
|
||||
"current": "当前定位",
|
||||
"allow": "点击并允许",
|
||||
"updating": "更新中",
|
||||
"wait": "请稍候"
|
||||
},
|
||||
"overseerr": {
|
||||
"pending": "待办",
|
||||
"approved": "已批准",
|
||||
"available": "可用",
|
||||
"processing": "处理中"
|
||||
},
|
||||
"sabnzbd": {
|
||||
"rate": "速率",
|
||||
"queue": "队列",
|
||||
"timeleft": "剩余时间"
|
||||
},
|
||||
"nzbget": {
|
||||
"rate": "速率",
|
||||
"remaining": "剩余",
|
||||
"downloaded": "下载"
|
||||
},
|
||||
"coinmarketcap": {
|
||||
"configure": "配置一个或多个需要追踪的加密",
|
||||
"1hour": "1小时",
|
||||
"1day": "1天",
|
||||
"7days": "7天",
|
||||
"30days": "30天"
|
||||
},
|
||||
"gotify": {
|
||||
"apps": "应用",
|
||||
"clients": "客户端",
|
||||
"messages": "信息"
|
||||
},
|
||||
"prowlarr": {
|
||||
"enableIndexers": "索引器",
|
||||
"numberOfGrabs": "抓取",
|
||||
"numberOfQueries": "查询",
|
||||
"numberOfFailGrabs": "抓取失败",
|
||||
"numberOfFailQueries": "查询失败"
|
||||
},
|
||||
"transmission": {
|
||||
"download": "下载",
|
||||
"upload": "上传",
|
||||
"leech": "下载中",
|
||||
"seed": "做种"
|
||||
},
|
||||
"jackett": {
|
||||
"configured": "已配置",
|
||||
"errored": "出错了"
|
||||
},
|
||||
"bazarr": {
|
||||
"missingEpisodes": "缺少的剧集",
|
||||
"missingMovies": "缺少的电影"
|
||||
},
|
||||
"lidarr": {
|
||||
"wanted": "订阅",
|
||||
"queued": "队列",
|
||||
"artists": "Artists"
|
||||
},
|
||||
"adguard": {
|
||||
"queries": "查询",
|
||||
"blocked": "阻止",
|
||||
"filtered": "过滤",
|
||||
"latency": "延迟"
|
||||
},
|
||||
"qbittorrent": {
|
||||
"download": "下载",
|
||||
"upload": "上传",
|
||||
"leech": "下载中",
|
||||
"seed": "做种"
|
||||
},
|
||||
"mastodon": {
|
||||
"user_count": "用户",
|
||||
"status_count": "帖子",
|
||||
"domain_count": "域"
|
||||
},
|
||||
"strelaysrv": {
|
||||
"numActiveSessions": "会话",
|
||||
"dataRelayed": "中继",
|
||||
"numConnections": "连接",
|
||||
"transferRate": "速度"
|
||||
},
|
||||
"authentik": {
|
||||
"users": "用户",
|
||||
"loginsLast24H": "登录 (24h)",
|
||||
"failedLoginsLast24H": "登录失败 (24h)"
|
||||
},
|
||||
"proxmox": {
|
||||
"mem": "内存",
|
||||
"cpu": "处理器",
|
||||
"lxc": "容器",
|
||||
"vms": "虚拟机"
|
||||
},
|
||||
"unifi": {
|
||||
"users": "用户",
|
||||
"uptime": "系统运行时间",
|
||||
"days": "天",
|
||||
"wan": "广域网",
|
||||
"lan_users": "局域网用户",
|
||||
"wlan_users": "无线局域网用户",
|
||||
"up": "向上",
|
||||
"down": "向下",
|
||||
"wait": "请稍候",
|
||||
"lan": "局域网",
|
||||
"wlan": "无线局域网",
|
||||
"devices": "设备",
|
||||
"lan_devices": "局域网设备",
|
||||
"wlan_devices": "无线局域网设备",
|
||||
"empty_data": "子系统状态未知"
|
||||
},
|
||||
"plex": {
|
||||
"streams": "活动流",
|
||||
"movies": "电影",
|
||||
"tv": "电视节目",
|
||||
"albums": "专辑"
|
||||
},
|
||||
"glances": {
|
||||
"cpu": "处理器",
|
||||
"wait": "请稍等",
|
||||
"temp": "温度",
|
||||
"uptime": "运行时间",
|
||||
"days": "天",
|
||||
"hours": "时",
|
||||
"load": "Load",
|
||||
"warn": "Warn",
|
||||
"total": "Total",
|
||||
"free": "Free",
|
||||
"used": "Used",
|
||||
"crit": "Crit",
|
||||
"read": "Read",
|
||||
"write": "Write",
|
||||
"gpu": "GPU",
|
||||
"mem": "Mem",
|
||||
"swap": "Swap",
|
||||
"_temp": "Temp"
|
||||
},
|
||||
"changedetectionio": {
|
||||
"totalObserved": "观察到的总数",
|
||||
"diffsDetected": "检测到差异"
|
||||
},
|
||||
"wmo": {
|
||||
"0-day": "晴天",
|
||||
"0-night": "晴朗",
|
||||
"1-day": "主要是晴天",
|
||||
"3-day": "阴天",
|
||||
"3-night": "阴天",
|
||||
"45-day": "有雾",
|
||||
"48-day": "有雾",
|
||||
"51-day": "小雨",
|
||||
"73-night": "中雪",
|
||||
"75-day": "大雪",
|
||||
"1-night": "大部晴朗",
|
||||
"2-day": "多云",
|
||||
"2-night": "多云",
|
||||
"45-night": "有雾",
|
||||
"48-night": "有雾",
|
||||
"51-night": "小雨",
|
||||
"53-day": "小雨",
|
||||
"53-night": "小雨",
|
||||
"55-day": "毛毛雨",
|
||||
"55-night": "毛毛雨",
|
||||
"56-day": "小冻毛雨",
|
||||
"56-night": "小冻毛雨",
|
||||
"57-day": "冻毛雨",
|
||||
"57-night": "冻毛雨",
|
||||
"61-day": "小雨",
|
||||
"61-night": "小雨",
|
||||
"63-day": "雨",
|
||||
"63-night": "雨",
|
||||
"65-day": "大雨",
|
||||
"65-night": "大雨",
|
||||
"66-day": "冻雨",
|
||||
"66-night": "冻雨",
|
||||
"67-day": "冻雨",
|
||||
"67-night": "冻雨",
|
||||
"71-day": "小雪",
|
||||
"71-night": "小雪",
|
||||
"73-day": "中雪",
|
||||
"75-night": "大雪",
|
||||
"77-day": "雪粒",
|
||||
"77-night": "雪粒",
|
||||
"80-day": "微阵雨",
|
||||
"80-night": "微阵雨",
|
||||
"81-day": "阵雨",
|
||||
"81-night": "阵雨",
|
||||
"82-day": "强阵雨",
|
||||
"82-night": "强阵雨",
|
||||
"85-day": "阵雪",
|
||||
"85-night": "阵雪",
|
||||
"86-day": "阵雪",
|
||||
"86-night": "阵雪",
|
||||
"95-day": "雷雨",
|
||||
"95-night": "雷雨",
|
||||
"96-day": "雷雨伴随冰雹",
|
||||
"96-night": "雷雨伴随冰雹",
|
||||
"99-day": "雷雨伴随冰雹",
|
||||
"99-night": "雷雨伴随冰雹"
|
||||
},
|
||||
"quicklaunch": {
|
||||
"bookmark": "书签",
|
||||
"service": "服务",
|
||||
"search": "搜索",
|
||||
"custom": "自定",
|
||||
"visit": "访问",
|
||||
"url": "网址"
|
||||
},
|
||||
"homebridge": {
|
||||
"available_update": "System",
|
||||
"updates": "更新",
|
||||
"update_available": "有可用的更新",
|
||||
"up_to_date": "Up to Date",
|
||||
"child_bridges": "子网桥",
|
||||
"child_bridges_status": "{{ok}}/{{total}}",
|
||||
"up": "Up",
|
||||
"pending": "待定中",
|
||||
"down": "Down"
|
||||
},
|
||||
"autobrr": {
|
||||
"approvedPushes": "已核准",
|
||||
"rejectedPushes": "拒绝",
|
||||
"filters": "Filters",
|
||||
"indexers": "索引器"
|
||||
},
|
||||
"watchtower": {
|
||||
"containers_scanned": "已扫描",
|
||||
"containers_updated": "已升级",
|
||||
"containers_failed": "失败"
|
||||
},
|
||||
"tubearchivist": {
|
||||
"downloads": "队列",
|
||||
"videos": "影片",
|
||||
"channels": "频道",
|
||||
"playlists": "播放清单"
|
||||
},
|
||||
"truenas": {
|
||||
"load": "系统负载",
|
||||
"uptime": "运行时间",
|
||||
"alerts": "警报",
|
||||
"time": "{{value, number(style: unit; unitDisplay: long;)}}"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "暂无播放",
|
||||
"please_wait": "请等待"
|
||||
},
|
||||
"pyload": {
|
||||
"speed": "速度",
|
||||
"active": "Active",
|
||||
"queue": "队列",
|
||||
"total": "Total"
|
||||
},
|
||||
"gluetun": {
|
||||
"public_ip": "公网 IP",
|
||||
"region": "区域",
|
||||
"country": "国家"
|
||||
},
|
||||
"hdhomerun": {
|
||||
"channels": "频道",
|
||||
"hd": "HD"
|
||||
},
|
||||
"ping": {
|
||||
"error": "错误",
|
||||
"ping": "Ping",
|
||||
"up": "Up",
|
||||
"down": "Down"
|
||||
},
|
||||
"scrutiny": {
|
||||
"passed": "通过",
|
||||
"failed": "失败",
|
||||
"unknown": "未知的"
|
||||
},
|
||||
"paperlessngx": {
|
||||
"inbox": "收件箱",
|
||||
"total": "Total"
|
||||
},
|
||||
"deluge": {
|
||||
"download": "下载",
|
||||
"upload": "上传",
|
||||
"leech": "下载中",
|
||||
"seed": "做种"
|
||||
},
|
||||
"flood": {
|
||||
"leech": "下载中",
|
||||
"download": "下载",
|
||||
"upload": "上传",
|
||||
"seed": "做种"
|
||||
},
|
||||
"tdarr": {
|
||||
"saved": "已保存",
|
||||
"queue": "队列",
|
||||
"processed": "已处理",
|
||||
"errored": "出错"
|
||||
},
|
||||
"miniflux": {
|
||||
"read": "已读",
|
||||
"unread": "未读"
|
||||
},
|
||||
"nextdns": {
|
||||
"wait": "请稍候",
|
||||
"no_devices": "没有接收到设备数据"
|
||||
},
|
||||
"common": {
|
||||
"bibyterate": "{{value, rate(bits: false; binary: true)}}",
|
||||
"bibitrate": "{{value, rate(bits: true; binary: true)}}"
|
||||
},
|
||||
"omada": {
|
||||
"connectedAp": "连接中的AP",
|
||||
"activeUser": "活跃设备",
|
||||
"alerts": "警报",
|
||||
"connectedGateway": "已连接网关",
|
||||
"connectedSwitches": "已连接开关"
|
||||
},
|
||||
"downloadstation": {
|
||||
"download": "下载",
|
||||
"upload": "上传",
|
||||
"leech": "下载中",
|
||||
"seed": "做种"
|
||||
},
|
||||
"mikrotik": {
|
||||
"cpuLoad": "处理器",
|
||||
"memoryUsed": "内存",
|
||||
"uptime": "运行时间",
|
||||
"numberOfLeases": "租约"
|
||||
},
|
||||
"xteve": {
|
||||
"streams_all": "所有播放活动",
|
||||
"streams_active": "正在播放",
|
||||
"streams_xepg": "XEPG 频道"
|
||||
},
|
||||
"opnsense": {
|
||||
"cpu": "处理器",
|
||||
"memory": "内存",
|
||||
"wanUpload": "WAN上传",
|
||||
"wanDownload": "WAN下载"
|
||||
},
|
||||
"moonraker": {
|
||||
"printer_state": "打印机状态",
|
||||
"print_status": "打印状态",
|
||||
"print_progress": "打印进程",
|
||||
"layers": "层"
|
||||
},
|
||||
"medusa": {
|
||||
"wanted": "关注中",
|
||||
"queued": "已加入队列",
|
||||
"series": "Series"
|
||||
},
|
||||
"octoprint": {
|
||||
"printer_state": "打印机状态",
|
||||
"temp_tool": "喷头温度",
|
||||
"temp_bed": "平台温度",
|
||||
"job_completion": "完成度"
|
||||
},
|
||||
"cloudflared": {
|
||||
"origin_ip": "源IP",
|
||||
"status": "状态"
|
||||
},
|
||||
"proxmoxbackupserver": {
|
||||
"datastore_usage": "数据存储",
|
||||
"failed_tasks_24h": "24h失败任务",
|
||||
"cpu_usage": "处理器",
|
||||
"memory_usage": "内存"
|
||||
},
|
||||
"immich": {
|
||||
"users": "使用者",
|
||||
"photos": "照片",
|
||||
"videos": "影片",
|
||||
"storage": "储存空间"
|
||||
},
|
||||
"uptimekuma": {
|
||||
"up": "在线网站",
|
||||
"down": "离线网站",
|
||||
"uptime": "运行时间",
|
||||
"incident": "严重事件",
|
||||
"m": "m"
|
||||
},
|
||||
"komga": {
|
||||
"libraries": "书库",
|
||||
"series": "系列",
|
||||
"books": "书刊"
|
||||
},
|
||||
"mylar": {
|
||||
"series": "系列",
|
||||
"issues": "问题",
|
||||
"wanted": "关注中"
|
||||
},
|
||||
"photoprism": {
|
||||
"albums": "相册",
|
||||
"photos": "照片",
|
||||
"videos": "视频",
|
||||
"people": "人物"
|
||||
},
|
||||
"diskstation": {
|
||||
"uptime": "运行时间",
|
||||
"volumeAvailable": "剩余存储",
|
||||
"days": "天"
|
||||
},
|
||||
"fileflows": {
|
||||
"queue": "队列",
|
||||
"processing": "处理中",
|
||||
"processed": "已处理",
|
||||
"time": "时间"
|
||||
},
|
||||
"grafana": {
|
||||
"totalalerts": "警报总数",
|
||||
"dashboards": "控制面板",
|
||||
"datasources": "数据来源",
|
||||
"alertstriggered": "触发的警报"
|
||||
},
|
||||
"nextcloud": {
|
||||
"cpuload": "处理器",
|
||||
"memoryusage": "内存",
|
||||
"freespace": "剩余空间",
|
||||
"activeusers": "活跃用户",
|
||||
"numfiles": "Files",
|
||||
"numshares": "共享项目"
|
||||
},
|
||||
"kopia": {
|
||||
"status": "状态",
|
||||
"size": "大小",
|
||||
"lastrun": "最后运行",
|
||||
"nextrun": "下次运行",
|
||||
"failed": "失败"
|
||||
},
|
||||
"unmanic": {
|
||||
"active_workers": "在线工作节点",
|
||||
"total_workers": "工作节点总数",
|
||||
"records_total": "队列长度"
|
||||
},
|
||||
"healthchecks": {
|
||||
"new": "新建立",
|
||||
"up": "在线的",
|
||||
"grace": "延缓中",
|
||||
"down": "离线",
|
||||
"paused": "暂停",
|
||||
"status": "状态",
|
||||
"last_ping": "上次检查",
|
||||
"never": "尚未检查"
|
||||
},
|
||||
"pterodactyl": {
|
||||
"servers": "服务器",
|
||||
"nodes": "节点"
|
||||
},
|
||||
"prometheus": {
|
||||
"targets_up": "目标上线",
|
||||
"targets_down": "目标在线",
|
||||
"targets_total": "总目标"
|
||||
},
|
||||
"minecraft": {
|
||||
"players": "玩家",
|
||||
"version": "版本",
|
||||
"status": "状态",
|
||||
"up": "在线的",
|
||||
"down": "离线"
|
||||
},
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "今天",
|
||||
"gross_percent_1y": "一年",
|
||||
"gross_percent_max": "所有时间"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "播客",
|
||||
"books": "图书",
|
||||
"podcastsDuration": "持续时间",
|
||||
"booksDuration": "持续时间"
|
||||
},
|
||||
"homeassistant": {
|
||||
"people_home": "房间",
|
||||
"lights_on": "照明开",
|
||||
"switches_on": "开关开"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "订阅",
|
||||
"unread": "未读"
|
||||
},
|
||||
"channelsdvrserver": {
|
||||
"shows": "节目",
|
||||
"recordings": "录像",
|
||||
"scheduled": "已计划的",
|
||||
"passes": "通行证"
|
||||
},
|
||||
"whatsupdocker": {
|
||||
"monitoring": "监测中",
|
||||
"updates": "可更新"
|
||||
},
|
||||
"tailscale": {
|
||||
"address": "地址",
|
||||
"expires": "失效",
|
||||
"never": "从不",
|
||||
"last_seen": "最后上线",
|
||||
"days": "{{number}}d",
|
||||
"hours": "{{number}}h",
|
||||
"minutes": "{{number}}m",
|
||||
"seconds": "{{number}}s",
|
||||
"ago": "{{value}} 以前",
|
||||
"now": "现在",
|
||||
"years": "{{number}}年",
|
||||
"weeks": "{{number}}周"
|
||||
},
|
||||
"qnap": {
|
||||
"cpuUsage": "处理器",
|
||||
"memUsage": "内存",
|
||||
"systemTempC": "系统温度",
|
||||
"poolUsage": "存储池",
|
||||
"volumeUsage": "Volume Usage",
|
||||
"invalid": "Invalid"
|
||||
},
|
||||
"pfsense": {
|
||||
"load": "平均负载",
|
||||
"memory": "内存",
|
||||
"wanStatus": "WAN 状态",
|
||||
"up": "上传",
|
||||
"down": "下载",
|
||||
"temp": "温度",
|
||||
"disk": "磁盘",
|
||||
"wanIP": "WAN IP"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "上游",
|
||||
"requests": "当前请求",
|
||||
"requests_failed": "失败请求"
|
||||
},
|
||||
"evcc": {
|
||||
"pv_power": "正式环境",
|
||||
"battery_soc": "Battery",
|
||||
"grid_power": "Grid",
|
||||
"home_power": "Consumption",
|
||||
"charge_power": "Charger",
|
||||
"watt_hour": "Wh"
|
||||
},
|
||||
"pialert": {
|
||||
"total": "Total",
|
||||
"connected": "Connected",
|
||||
"new_devices": "New Devices",
|
||||
"down_alerts": "Down Alerts"
|
||||
},
|
||||
"jdownloader": {
|
||||
"downloadCount": "Queue Count",
|
||||
"downloadSpeed": "Download Speed",
|
||||
"downloadBytesRemaining": "Remaining",
|
||||
"downloadTotalBytes": "Size"
|
||||
},
|
||||
"kavita": {
|
||||
"seriesCount": "系列",
|
||||
"totalFiles": "文件"
|
||||
},
|
||||
"gamedig": {
|
||||
"name": "Name",
|
||||
"map": "Map",
|
||||
"currentPlayers": "Current players",
|
||||
"players": "Players",
|
||||
"maxPlayers": "Max players",
|
||||
"bots": "Bots",
|
||||
"ping": "Ping",
|
||||
"status": "Status",
|
||||
"online": "Online",
|
||||
"offline": "Offline"
|
||||
},
|
||||
"azuredevops": {
|
||||
"canceled": "Canceled",
|
||||
"inProgress": "In Progress",
|
||||
"result": "Result",
|
||||
"status": "Status",
|
||||
"buildId": "Build ID",
|
||||
"succeeded": "Succeeded",
|
||||
"notStarted": "Not Started",
|
||||
"failed": "Failed",
|
||||
"totalPrs": "Total PRs",
|
||||
"myPrs": "My PRs",
|
||||
"approved": "Approved"
|
||||
},
|
||||
"urbackup": {
|
||||
"ok": "Ok",
|
||||
"errored": "Errors",
|
||||
"noRecent": "Out of Date",
|
||||
"totalUsed": "Used Storage"
|
||||
},
|
||||
"openmediavault": {
|
||||
"downloading": "Downloading",
|
||||
"total": "Total",
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"passed": "Passed",
|
||||
"failed": "Failed"
|
||||
},
|
||||
"mealie": {
|
||||
"recipes": "Recipes",
|
||||
"users": "Users",
|
||||
"categories": "Categories",
|
||||
"tags": "Tags"
|
||||
},
|
||||
"atsumeru": {
|
||||
"series": "Series",
|
||||
"archives": "Archives",
|
||||
"chapters": "Chapters",
|
||||
"categories": "Categories"
|
||||
},
|
||||
"calibreweb": {
|
||||
"books": "书籍",
|
||||
"authors": "作者",
|
||||
"categories": "分类",
|
||||
"series": "丛书"
|
||||
},
|
||||
"uptimerobot": {
|
||||
"status": "Status",
|
||||
"uptime": "Uptime",
|
||||
"lastDown": "Last Downtime",
|
||||
"downDuration": "Downtime Duration",
|
||||
"sitesUp": "Sites Up",
|
||||
"sitesDown": "Sites Down",
|
||||
"paused": "Paused",
|
||||
"notyetchecked": "Not Yet Checked",
|
||||
"up": "Up",
|
||||
"seemsdown": "Seems Down",
|
||||
"down": "Down",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"opendtu": {
|
||||
"relativePower": "Power %",
|
||||
"yieldDay": "Today",
|
||||
"limit": "Limit",
|
||||
"absolutePower": "Power"
|
||||
},
|
||||
"calendar": {
|
||||
"physicalRelease": "Physical release",
|
||||
"inCinemas": "In cinemas",
|
||||
"digitalRelease": "Digital release"
|
||||
}
|
||||
}
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "一年",
|
||||
"gross_percent_max": "所有时间"
|
||||
"gross_percent_max": "所有时间",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "播客",
|
||||
|
||||
@@ -759,7 +759,8 @@
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "一年",
|
||||
"gross_percent_max": "所有時間"
|
||||
"gross_percent_max": "所有時間",
|
||||
"net_worth": "Net Worth"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
|
||||
@@ -32,6 +32,8 @@ export default function Block({ value, label, field }) {
|
||||
return getHighlightClass(highlight.level, highlightConfig);
|
||||
}, [highlight, highlightConfig]);
|
||||
|
||||
const applyToValueOnly = highlight?.valueOnly === true;
|
||||
|
||||
return (
|
||||
<div
|
||||
className={classNames(
|
||||
@@ -44,7 +46,11 @@ export default function Block({ value, label, field }) {
|
||||
data-highlight-source={highlight?.source}
|
||||
>
|
||||
<div className="font-thin text-sm">{value === undefined || value === null ? "-" : value}</div>
|
||||
<div className="font-bold text-xs uppercase">{t(label)}</div>
|
||||
<div
|
||||
className={classNames("font-bold text-xs uppercase", applyToValueOnly && "text-theme-700 dark:text-theme-200")}
|
||||
>
|
||||
{t(label)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@ export default function Error({ error }) {
|
||||
|
||||
if (typeof error === "string") {
|
||||
error = { message: error }; // eslint-disable-line no-param-reassign
|
||||
} else if (typeof error === "number") {
|
||||
error = { message: `Error ${error}` }; // eslint-disable-line no-param-reassign
|
||||
}
|
||||
|
||||
if (error?.data?.error) {
|
||||
|
||||
@@ -41,6 +41,17 @@ const Version = dynamic(() => import("components/version"), {
|
||||
|
||||
const rightAlignedWidgets = ["weatherapi", "openweathermap", "weather", "openmeteo", "search", "datetime"];
|
||||
|
||||
// Normalize language codes so older config values like zh-CN still point to Crowdin-provided ones
|
||||
const LANGUAGE_ALIASES = {
|
||||
"zh-cn": "zh-Hans",
|
||||
};
|
||||
|
||||
const normalizeLanguage = (language) => {
|
||||
if (!language) return "en";
|
||||
const alias = LANGUAGE_ALIASES[language.toLowerCase()];
|
||||
return alias || language;
|
||||
};
|
||||
|
||||
export async function getStaticProps() {
|
||||
let logger;
|
||||
try {
|
||||
@@ -50,6 +61,7 @@ export async function getStaticProps() {
|
||||
const services = await servicesResponse();
|
||||
const bookmarks = await bookmarksResponse();
|
||||
const widgets = await widgetsResponse();
|
||||
const language = normalizeLanguage(settings.language);
|
||||
|
||||
return {
|
||||
props: {
|
||||
@@ -60,7 +72,7 @@ export async function getStaticProps() {
|
||||
"/api/widgets": widgets,
|
||||
"/api/hash": false,
|
||||
},
|
||||
...(await serverSideTranslations(settings.language ?? "en")),
|
||||
...(await serverSideTranslations(language)),
|
||||
},
|
||||
};
|
||||
} catch (e) {
|
||||
@@ -218,8 +230,9 @@ function Home({ initialSettings }) {
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
if (settings.language) {
|
||||
i18n.changeLanguage(settings.language);
|
||||
const language = normalizeLanguage(settings.language);
|
||||
if (language) {
|
||||
i18n.changeLanguage(language);
|
||||
}
|
||||
|
||||
if (settings.theme && theme !== settings.theme) {
|
||||
|
||||
@@ -111,7 +111,7 @@ export async function servicesFromDocker() {
|
||||
};
|
||||
}
|
||||
let substitutedVal = substituteEnvironmentVars(containerLabels[label]);
|
||||
if (value === "widget.version") {
|
||||
if (value === "widget.version" || /^widgets\[\d+\]\.version$/.test(value)) {
|
||||
substitutedVal = parseInt(substitutedVal, 10);
|
||||
}
|
||||
shvl.set(constructedService, value, substitutedVal);
|
||||
@@ -563,6 +563,7 @@ export function cleanServiceGroups(groups) {
|
||||
"speedtest",
|
||||
"wgeasy",
|
||||
"grafana",
|
||||
"gluetun",
|
||||
].includes(type)
|
||||
) {
|
||||
if (version) widget.version = parseInt(version, 10);
|
||||
|
||||
@@ -200,7 +200,7 @@ const ensureArray = (value) => {
|
||||
};
|
||||
|
||||
const findHighlightLevel = (ruleSet, numericValue, stringValue) => {
|
||||
const { numeric, string } = ruleSet;
|
||||
const { numeric, string, valueOnly } = ruleSet;
|
||||
|
||||
if (numeric && numericValue !== undefined) {
|
||||
const numericRules = ensureArray(numeric);
|
||||
@@ -208,7 +208,7 @@ const findHighlightLevel = (ruleSet, numericValue, stringValue) => {
|
||||
for (const candidate of numericCandidates) {
|
||||
for (const rule of numericRules) {
|
||||
if (rule?.level && evaluateNumericRule(candidate, rule)) {
|
||||
return { level: rule.level, source: "numeric", rule };
|
||||
return { level: rule.level, source: "numeric", rule, valueOnly };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -218,7 +218,7 @@ const findHighlightLevel = (ruleSet, numericValue, stringValue) => {
|
||||
const stringRules = ensureArray(string);
|
||||
for (const rule of stringRules) {
|
||||
if (rule?.level && evaluateStringRule(stringValue, rule)) {
|
||||
return { level: rule.level, source: "string", rule };
|
||||
return { level: rule.level, source: "string", rule, valueOnly };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,7 +166,11 @@ export default function Component({ service }) {
|
||||
refreshInterval: Math.max(1000, refreshInterval),
|
||||
});
|
||||
|
||||
if (customError) {
|
||||
// if mappings includes an error field and the data contains an error field then show data even if there is an error
|
||||
const mappingsIncludesError = Array.isArray(mappings) && mappings.find((mapping) => mapping.field === "error");
|
||||
const errorIsData = customData && typeof customData === "object" && "error" in customData;
|
||||
|
||||
if (customError && !(mappingsIncludesError && errorIsData)) {
|
||||
return <Container service={service} error={customError} />;
|
||||
}
|
||||
|
||||
|
||||
95
src/widgets/frigate/proxy.js
Normal file
95
src/widgets/frigate/proxy.js
Normal file
@@ -0,0 +1,95 @@
|
||||
import getServiceWidget from "utils/config/service-helpers";
|
||||
import createLogger from "utils/logger";
|
||||
import { asJson, formatApiCall, sanitizeErrorURL } from "utils/proxy/api-helpers";
|
||||
import { addCookieToJar } from "utils/proxy/cookie-jar";
|
||||
import { httpProxy } from "utils/proxy/http";
|
||||
import widgets from "widgets/widgets";
|
||||
|
||||
const proxyName = "frigateProxyHandler";
|
||||
const logger = createLogger(proxyName);
|
||||
|
||||
export default async function frigateProxyHandler(req, res, map) {
|
||||
const { group, service, endpoint, index } = req.query;
|
||||
|
||||
if (group && service) {
|
||||
const widget = await getServiceWidget(group, service, index);
|
||||
|
||||
if (!widgets?.[widget.type]?.api) {
|
||||
return res.status(403).json({ error: "Service does not support API calls" });
|
||||
}
|
||||
|
||||
if (widget) {
|
||||
const url = formatApiCall(widgets[widget.type].api, { endpoint, ...widget });
|
||||
|
||||
const params = {
|
||||
method: "GET",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
};
|
||||
|
||||
let [status, , data] = await httpProxy(url, params);
|
||||
|
||||
if (status === 401 && widget.username && widget.password) {
|
||||
const loginUrl = `${widget.url}/api/login`;
|
||||
logger.debug("Attempting login to Frigate at %s", loginUrl);
|
||||
const [loginStatus, , , loginResponseHeaders] = await httpProxy(loginUrl, {
|
||||
method: "POST",
|
||||
body: JSON.stringify({ user: widget.username, password: widget.password }),
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
});
|
||||
|
||||
if (loginStatus !== 200) {
|
||||
logger.error("HTTP Error %d calling %s", loginStatus, sanitizeErrorURL(loginUrl));
|
||||
return res.status(status).json({
|
||||
error: {
|
||||
message: `HTTP Error ${status} while trying to login to Frigate`,
|
||||
url: sanitizeErrorURL(url),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
addCookieToJar(url, loginResponseHeaders);
|
||||
// Retry original request with cookie set
|
||||
[status, , data] = await httpProxy(url, params);
|
||||
}
|
||||
|
||||
if (status >= 400) {
|
||||
logger.error("HTTP Error %d calling %s", status, sanitizeErrorURL(url));
|
||||
return res.status(status).json({
|
||||
error: {
|
||||
message: `HTTP Error ${status} from Frigate`,
|
||||
url: sanitizeErrorURL(url),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
data = asJson(data);
|
||||
|
||||
if (endpoint == "stats") {
|
||||
res.status(status).send({
|
||||
num_cameras: data?.cameras !== undefined ? Object.keys(data?.cameras).length : 0,
|
||||
uptime: data?.service?.uptime,
|
||||
version: data?.service.version,
|
||||
});
|
||||
} else if (endpoint == "events") {
|
||||
return res.status(status).send(
|
||||
data.slice(0, 5).map((event) => ({
|
||||
id: event.id,
|
||||
camera: event.camera,
|
||||
label: event.label,
|
||||
start_time: new Date(event.start_time * 1000),
|
||||
thumbnail: event.thumbnail,
|
||||
score: event.data.score,
|
||||
type: event.data.type,
|
||||
})),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
logger.debug("Invalid or missing proxy service type '%s' in group '%s'", service, group);
|
||||
return res.status(400).json({ error: "Invalid proxy service type" });
|
||||
}
|
||||
@@ -1,37 +1,12 @@
|
||||
import { asJson } from "utils/proxy/api-helpers";
|
||||
import genericProxyHandler from "utils/proxy/handlers/generic";
|
||||
import frigateProxyHandler from "./proxy";
|
||||
|
||||
const widget = {
|
||||
api: "{url}/api/{endpoint}",
|
||||
proxyHandler: genericProxyHandler,
|
||||
proxyHandler: frigateProxyHandler,
|
||||
|
||||
mappings: {
|
||||
stats: {
|
||||
endpoint: "stats",
|
||||
map: (data) => {
|
||||
const jsonData = asJson(data);
|
||||
return {
|
||||
num_cameras: jsonData?.cameras !== undefined ? Object.keys(jsonData?.cameras).length : 0,
|
||||
uptime: jsonData?.service?.uptime,
|
||||
version: jsonData?.service.version,
|
||||
};
|
||||
},
|
||||
},
|
||||
events: {
|
||||
endpoint: "events",
|
||||
map: (data) =>
|
||||
asJson(data)
|
||||
.slice(0, 5)
|
||||
.map((event) => ({
|
||||
id: event.id,
|
||||
camera: event.camera,
|
||||
label: event.label,
|
||||
start_time: new Date(event.start_time * 1000),
|
||||
thumbnail: event.thumbnail,
|
||||
score: event.data.score,
|
||||
type: event.data.type,
|
||||
})),
|
||||
},
|
||||
stats: { endpoint: "stats" },
|
||||
events: { endpoint: "events" },
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -38,11 +38,7 @@ export default function Component({ service }) {
|
||||
);
|
||||
}
|
||||
|
||||
const status = serverData.online ? (
|
||||
<span className="text-green-500">{t("gamedig.online")}</span>
|
||||
) : (
|
||||
<span className="text-red-500">{t("gamedig.offline")}</span>
|
||||
);
|
||||
const status = serverData.online ? t("gamedig.online") : t("gamedig.offline");
|
||||
const name = serverData.online ? serverData.name : "-";
|
||||
const map = serverData.online ? serverData.map : "-";
|
||||
const currentPlayers = serverData.online ? `${serverData.players} / ${serverData.maxplayers}` : "-";
|
||||
|
||||
@@ -12,10 +12,8 @@ export default function Component({ service }) {
|
||||
|
||||
const { data: gluetunData, error: gluetunError } = useWidgetAPI(widget, "ip");
|
||||
const includePF = widget.fields.includes("port_forwarded");
|
||||
const { data: portForwardedData, error: portForwardedError } = useWidgetAPI(
|
||||
widget,
|
||||
includePF ? "port_forwarded" : "",
|
||||
);
|
||||
const pfEndpoint = widget.version > 1 ? "port_forwarded_v2" : "port_forwarded";
|
||||
const { data: portForwardedData, error: portForwardedError } = useWidgetAPI(widget, includePF ? pfEndpoint : "");
|
||||
|
||||
if (gluetunError || (includePF && portForwardedError)) {
|
||||
return <Container service={service} error={gluetunError || portForwardedError} />;
|
||||
|
||||
@@ -13,6 +13,10 @@ const widget = {
|
||||
endpoint: "openvpn/portforwarded",
|
||||
validate: ["port"],
|
||||
},
|
||||
port_forwarded_v2: {
|
||||
endpoint: "portforward",
|
||||
validate: ["port"],
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -22,11 +22,7 @@ export default function Component({ service }) {
|
||||
);
|
||||
}
|
||||
|
||||
const statusIndicator = serverData.online ? (
|
||||
<span className="text-green-500">{t("minecraft.up")}</span>
|
||||
) : (
|
||||
<span className="text-red-500">{t("minecraft.down")}</span>
|
||||
);
|
||||
const statusIndicator = serverData.online ? t("minecraft.up") : t("minecraft.down");
|
||||
const players = serverData.players ? `${serverData.players.online} / ${serverData.players.max}` : "-";
|
||||
const version = serverData.version || "-";
|
||||
|
||||
|
||||
@@ -20,16 +20,7 @@ export default function Component({ service }) {
|
||||
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block
|
||||
label="widget.status"
|
||||
value={
|
||||
up ? (
|
||||
<span className="text-green-500">{t("openwrt.up")}</span>
|
||||
) : (
|
||||
<span className="text-red-500">{t("openwrt.down")}</span>
|
||||
)
|
||||
}
|
||||
/>
|
||||
<Block label="widget.status" value={up ? t("openwrt.up") : t("openwrt.down")} />
|
||||
<Block label="openwrt.bytesTx" value={t("common.bytes", { value: bytesTx })} />
|
||||
<Block label="openwrt.bytesRx" value={t("common.bytes", { value: bytesRx })} />
|
||||
</Container>
|
||||
|
||||
@@ -56,16 +56,7 @@ export default function Component({ service }) {
|
||||
label="pfsense.temp"
|
||||
value={t("common.number", { value: systemData.data.temp_c, style: "unit", unit: "celsius" })}
|
||||
/>
|
||||
<Block
|
||||
label="pfsense.wanStatus"
|
||||
value={
|
||||
wan.status === "up" ? (
|
||||
<span className="text-green-500">{t("pfsense.up")}</span>
|
||||
) : (
|
||||
<span className="text-red-500">{t("pfsense.down")}</span>
|
||||
)
|
||||
}
|
||||
/>
|
||||
<Block label="pfsense.wanStatus" value={wan.status === "up" ? t("pfsense.up") : t("pfsense.down")} />
|
||||
{showWanIP && <Block label="pfsense.wanIP" value={wan.ipaddr} />}
|
||||
{showDiskUsage && <Block label="pfsense.disk" value={t("common.percent", { value: diskUsage.toFixed(2) })} />}
|
||||
</Container>
|
||||
|
||||
Reference in New Issue
Block a user