mirror of
https://github.com/home-assistant/frontend.git
synced 2026-11-01 10:35:31 +00:00
Compare commits
14
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e82170a11a | ||
|
|
178831c7c2 | ||
|
|
215e6a2514 | ||
|
|
d3dc40398d | ||
|
|
0c6bc28ed1 | ||
|
|
e7a74930cc | ||
|
|
3bd106e4cc | ||
|
|
48960e377b | ||
|
|
83893d942b | ||
|
|
ee89c980d0 | ||
|
|
216044b5f0 | ||
|
|
2051456f19 | ||
|
|
9a9f505ddd | ||
|
|
412912d01c |
No files matched your search
@@ -44,14 +44,21 @@ export const lorawanFixtures: ConnectivityFixtures = {
|
||||
],
|
||||
commands: ["lorawan/"],
|
||||
manifests: [
|
||||
manifest("lorawan", "LoRaWAN", { integration_type: "helper" }),
|
||||
manifest("lorawan", "LoRaWAN", {
|
||||
config_flow: false,
|
||||
integration_type: "helper",
|
||||
}),
|
||||
manifest("sensecap_lorawan", "SenseCAP", {
|
||||
integration_type: "device",
|
||||
dependencies: ["lorawan"],
|
||||
}),
|
||||
manifest("chirpstack", "ChirpStack", { integration_type: "hub" }),
|
||||
manifest("chirpstack", "ChirpStack", {
|
||||
integration_type: "hub",
|
||||
dependencies: ["lorawan"],
|
||||
}),
|
||||
manifest("thethingsnetwork_lorawan", "The Things Network", {
|
||||
integration_type: "hub",
|
||||
dependencies: ["lorawan"],
|
||||
}),
|
||||
],
|
||||
configEntries: [
|
||||
|
||||
@@ -13,16 +13,23 @@ export const modbusFixtures: ConnectivityFixtures = {
|
||||
components: ["modbus"],
|
||||
commands: ["modbus/"],
|
||||
manifests: [
|
||||
manifest("modbus", "Modbus", {
|
||||
config_flow: false,
|
||||
iot_class: "local_polling",
|
||||
}),
|
||||
manifest("flexit", "Flexit", {
|
||||
integration_type: "device",
|
||||
dependencies: ["modbus"],
|
||||
iot_class: "local_polling",
|
||||
}),
|
||||
manifest("solaredge_modbus", "SolarEdge Modbus", {
|
||||
integration_type: "device",
|
||||
dependencies: ["modbus"],
|
||||
iot_class: "local_polling",
|
||||
}),
|
||||
manifest("fronius", "Fronius", {
|
||||
integration_type: "device",
|
||||
dependencies: ["modbus"],
|
||||
iot_class: "local_polling",
|
||||
}),
|
||||
],
|
||||
|
||||
+4
-4
@@ -82,7 +82,7 @@
|
||||
"@tsparticles/preset-links": "4.5.0",
|
||||
"@versatiles/style": "7.0.1",
|
||||
"@vibrant/color": "4.0.4",
|
||||
"@vvo/tzdb": "6.202.0",
|
||||
"@vvo/tzdb": "6.201.1",
|
||||
"@webcomponents/scoped-custom-element-registry": "0.0.10",
|
||||
"barcode-detector": "3.2.3",
|
||||
"cally": "0.9.2",
|
||||
@@ -100,7 +100,7 @@
|
||||
"element-internals-polyfill": "3.0.2",
|
||||
"fullcalendar": "7.1.3",
|
||||
"fuse.js": "7.5.0",
|
||||
"hls.js": "1.7.4",
|
||||
"hls.js": "1.7.3",
|
||||
"home-assistant-js-websocket": "9.8.1",
|
||||
"idb-keyval": "6.3.0",
|
||||
"intl-messageformat": "12.1.4",
|
||||
@@ -188,7 +188,7 @@
|
||||
"fancy-log": "2.0.0",
|
||||
"fs-extra": "11.4.1",
|
||||
"generate-license-file": "4.2.5",
|
||||
"glob": "14.0.3",
|
||||
"glob": "13.0.6",
|
||||
"globals": "17.13.0",
|
||||
"gulp": "5.0.1",
|
||||
"gulp-json-transform": "0.5.0",
|
||||
@@ -222,7 +222,7 @@
|
||||
"webpackbar": "7.0.0",
|
||||
"workbox-build": "7.4.1"
|
||||
},
|
||||
"packageManager": "[email protected].1",
|
||||
"packageManager": "[email protected].0",
|
||||
"volta": {
|
||||
"node": "24.22.2"
|
||||
}
|
||||
|
||||
Generated
+77
-110
@@ -7,153 +7,153 @@ importers:
|
||||
configDependencies: {}
|
||||
packageManagerDependencies:
|
||||
pnpm:
|
||||
specifier: 12.16.1
|
||||
version: 12.16.1
|
||||
specifier: 12.16.0
|
||||
version: 12.16.0
|
||||
|
||||
packages:
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-PKf78Ew+i0CBYf0Xc+eMcqQiqyBT+u8XCVg1F5roc98/6wWfdYlWhrUMmEBiKWaJ3JqHxrtt8l1NwZ7qfJt2/Q==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-Air4kk1RA4C8PGkkIH91eme/ERTV6xEmPfJS+OO1UMMzx7ZDeM44WGfcizGPnQbWiqfJ0l7TSttzYzQ0FvRLIA==}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-xdu7gMbB98pdvhwMeA6612Of515FDlRUtfA/1f7nWPZfPLnEdSRBO2u+1N0XBtQ/ennhPH/lrxB1gC6gnR/cdg==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-MHQdX7J3b12gsBbKSV4phbGZaIAYxhIbXRS2E56XgVXpcL9R+HiQ/Aq9PDkJtNVaOaGfrFR9kzGMLF4PXk6jRw==}
|
||||
cpu: [x64]
|
||||
os: [android]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-pVbmIIbhixiLvADLu1WA3TaW8FZy/D72R1De27WbbFx8/2mxvnsTyFVm4fO9kjpjMY7RzJd48CiQ96p8fO3ebQ==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-0kMENoYlVTxiCPWf7fXEF3EtYXUySilIC+UAe5Z7kC8keY8+ul8ddhuHjSU0e85qlKDIJfIxDYACse/Lx8It/Q==}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-xZvQBFqcZjO7vFKTK3XsJpqY6lnBL9EWSLCzVUPq3kZ94+D96gwJCa76xxGNK8Cj32f4eeM91Qg+yNRR4sRpDw==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-jsS6Q5gTjRD4TOyyFazO/3ctRHfigGtLatfV2ZxCGd0/ZD/m/9RIT8P38oyo+r3ARHhgL7YPT8dXmj5UGd9iSA==}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-zTtunfi9mBhRXiXEJYfwiJj0tk7MgTSfqDSRh+Az9FZ9THazVIiQiVNS8jpcsftDOqu7LKNffQdjmgwHDThfUg==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-Rs8pV7jAhRnAzKdJWU20ECeRB4KUdV5xChUvmXyaHq+60+UfUhYVJjL0btApxX/AIBscrK/+tjP3w6RTb9RDCA==}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-BJ3mOmcmQgcUo92Ee/WfEOt1pRiv3y2MMAkhEiYHd85UiPpHTfFhv+SpCbALmfExzXk3UlaRtMYwHlkQymc4VA==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-1p8s61byKqiaDi+TatmMoxFVFPXpLwrHBI4CZBJlH2A58hi3EfqfDgWB5w2IutciGrBQ5DxVFE8VsbITnpqfUQ==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-JaRd5gNxwdNGBBkrZFt8bknrK4YmHVJBW0JMhUQ0fJ0dEYp6C2GT9ExaCqOO8EwYEyqM+jpKgJIK+8WFaJy3ew==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-6vwpzcLhopnnz/x537ET62PBFh8QxWsE9miRT8lhHXYuq0WVXxT6L6W0BcjZNVEQyp1WggdHq4qt8LXrdk2RFQ==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-FnSV0Jv40S1cMv7vFNWwvu0X567Lec4L4HCRead3CFcD6zQDNbGw81s8N5bcKPahtPD9ApVuhsbmFCx4rw6RMw==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-58n7z+x7M/gWK+lhoRrABp0X2dYvUGhdjKb1S0UCm1I7v1KwltEvAIlWgYSyq9/jOqTp/uCtZE9dU1sP/fqs3Q==}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-C1Sww4FN5IttD4atRRhAKmQtSGWVp04ZAKNxO8pfu2bkRPwOW+7v+2DH1Xs1W+kZYYpO86BYDvUcadefF+AgaQ==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-N81hKRql41PisaxO0EJcmBVvGjQ+aY8vgprPhB6DFaCzohuT0EAfsc5icM/NZkdFLLaglYja8zAk3E59ToNUaA==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-kn2fautsTcxIMODoovQVqZyfpDRdNgGkoeVqNdrKqbeBBvrEl+fXLkmZiq5xDht1LMr4sYiCNcsMfNMT6JPFmg==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-8UfyGGA9o8IqdoPtCg9c/t7Ht/ArO+T318Yomlp36WvImnBj3etnO0GKh0CPOp7fG+AvNcspxCXIr5vNjYo84w==}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-PM6ccHCOe/O9SsTflTJTYWfwogJZa6EmUvpnwZgiPguJBddh20wDQKgxUPXf48rDsPm9vMsIij0uHswwwbXL8g==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-BCp9UPPqS9wyZmfB1CeX8ODpUaY3icHPNQvnlutDUymexM0frPxgd1Qf1iWfC+IhvszevGnVlkUqEITSMowHNw==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-RK//8ZLcXGW8A2k8bQOXZDBN1Qu92zN4dYnG1bzj1zoQ1fkZ6jNzZ1AvXtsfGVma795CJtvoaF5bLXf4l/FIUw==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-NSZrQRBatoGG4C14DBYyQHnUGQA1fejrwoiKRnqyzFFXPFbydK8avYcLu3evb9Nry8iGIQujRnwysdCNmSFBlg==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-Ox3kNNVxtGw6pK7SVejmeOUgHhUTZgAM7NQQ6cU7frPw3ix9+j7d2MGbRg3fyEFAaKWq8ZAZLTQGcDyLnAu+qA==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-RsPE7hktWUn+oCi5IlnpMGBBMO+Lgf+VUUgiqrBHsdmdpTk3KDOM9TA0xOgK+xwvQdLtvc28JwigR4HmGMNyIQ==}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
resolution: {integrity: sha512-k+FhRJ0ttphFoFIVB1Sk4v76YJAulafmA/Ly57cysesUhhIzVlApeOShUz0jXubKx317TThlEfpQrukldnqORA==}
|
||||
'@pnpm/[email protected].0':
|
||||
resolution: {integrity: sha512-mphDCqBvSu7o8j3DqnVDkpCf0HKaKJjEdlN6ymfpxh4VUYw5SW4zQLGmvjdxUUZZb6nuU/R8bTn2rAdJdYCk5w==}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
[email protected].1:
|
||||
resolution: {integrity: sha512-CR0d7nknV1Zhsl2rPCrjHK/BxU1rce1qZgDPDByxBDSkR+rhQBXxsj4ua+3u1535SpMuIWTSgyKA3OP7MvZW0Q==}
|
||||
[email protected].0:
|
||||
resolution: {integrity: sha512-6czJGguNUtopfBaEH57gXz3dYxvXV+8mohFofUo43mU8YURTZJKUQ4xYvnTCumLVPmM6ThU3CMASKW0PPuJ7Ng==}
|
||||
engines: {node: '>=18'}
|
||||
hasBin: true
|
||||
|
||||
snapshots:
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
'@pnpm/[email protected].1':
|
||||
'@pnpm/[email protected].0':
|
||||
optional: true
|
||||
|
||||
[email protected].1:
|
||||
[email protected].0:
|
||||
optionalDependencies:
|
||||
'@pnpm/exe.android-arm64': 12.16.1
|
||||
'@pnpm/exe.android-x64': 12.16.1
|
||||
'@pnpm/exe.darwin-arm64': 12.16.1
|
||||
'@pnpm/exe.darwin-x64': 12.16.1
|
||||
'@pnpm/exe.freebsd-x64': 12.16.1
|
||||
'@pnpm/exe.linux-arm64': 12.16.1
|
||||
'@pnpm/exe.linux-arm64-musl': 12.16.1
|
||||
'@pnpm/exe.linux-ppc64': 12.16.1
|
||||
'@pnpm/exe.linux-riscv64': 12.16.1
|
||||
'@pnpm/exe.linux-s390x': 12.16.1
|
||||
'@pnpm/exe.linux-x64': 12.16.1
|
||||
'@pnpm/exe.linux-x64-musl': 12.16.1
|
||||
'@pnpm/exe.win32-arm64': 12.16.1
|
||||
'@pnpm/exe.win32-x64': 12.16.1
|
||||
'@pnpm/exe.android-arm64': 12.16.0
|
||||
'@pnpm/exe.android-x64': 12.16.0
|
||||
'@pnpm/exe.darwin-arm64': 12.16.0
|
||||
'@pnpm/exe.darwin-x64': 12.16.0
|
||||
'@pnpm/exe.freebsd-x64': 12.16.0
|
||||
'@pnpm/exe.linux-arm64': 12.16.0
|
||||
'@pnpm/exe.linux-arm64-musl': 12.16.0
|
||||
'@pnpm/exe.linux-ppc64': 12.16.0
|
||||
'@pnpm/exe.linux-riscv64': 12.16.0
|
||||
'@pnpm/exe.linux-s390x': 12.16.0
|
||||
'@pnpm/exe.linux-x64': 12.16.0
|
||||
'@pnpm/exe.linux-x64-musl': 12.16.0
|
||||
'@pnpm/exe.win32-arm64': 12.16.0
|
||||
'@pnpm/exe.win32-x64': 12.16.0
|
||||
|
||||
---
|
||||
lockfileVersion: '9.0'
|
||||
@@ -307,8 +307,8 @@ importers:
|
||||
specifier: 4.0.4
|
||||
version: 4.0.4
|
||||
'@vvo/tzdb':
|
||||
specifier: 6.202.0
|
||||
version: 6.202.0
|
||||
specifier: 6.201.1
|
||||
version: 6.201.1
|
||||
'@webcomponents/scoped-custom-element-registry':
|
||||
specifier: 0.0.10
|
||||
version: 0.0.10
|
||||
@@ -361,8 +361,8 @@ importers:
|
||||
specifier: 7.5.0
|
||||
version: 7.5.0
|
||||
hls.js:
|
||||
specifier: 1.7.4
|
||||
version: 1.7.4
|
||||
specifier: 1.7.3
|
||||
version: 1.7.3
|
||||
home-assistant-js-websocket:
|
||||
specifier: 9.8.1
|
||||
version: 9.8.1
|
||||
@@ -620,8 +620,8 @@ importers:
|
||||
specifier: 4.2.5
|
||||
version: 4.2.5([email protected])
|
||||
glob:
|
||||
specifier: 14.0.3
|
||||
version: 14.0.3
|
||||
specifier: 13.0.6
|
||||
version: 13.0.6
|
||||
globals:
|
||||
specifier: 17.13.0
|
||||
version: 17.13.0
|
||||
@@ -2078,9 +2078,6 @@ packages:
|
||||
resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@isaacs/[email protected]':
|
||||
resolution: {integrity: sha512-GJPHIgPPtFl+nLhFHyF0zZoFcOFLsZWbHFFzo+Zr+PWDXJbl9hHxb2w+9SiF2fHmLgKaXIpUzQo3SbBBZ9WObw==}
|
||||
|
||||
'@isaacs/[email protected]':
|
||||
resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==}
|
||||
|
||||
@@ -3753,8 +3750,8 @@ packages:
|
||||
'@vscode/[email protected]':
|
||||
resolution: {integrity: sha512-2ZUIRfhofZ/npLlf872EBnPmn27Kt4M2UssmQIfnJvgGgMYZJ5fvtHEDnttBBf2hnVtBgNCqZMVHJA+wsFVqTA==}
|
||||
|
||||
'@vvo/[email protected]2.0':
|
||||
resolution: {integrity: sha512-MGsedU65ypk/Y7yrp+oOLBzhQj/124xvyoUzx7csPiBSf1b3lgTp5imatuWU4SF6s1Ue3I6GxC+GxE8R5O1l0w==}
|
||||
'@vvo/[email protected]1.1':
|
||||
resolution: {integrity: sha512-ib7ymHHyiGD9N/WWGMX5951hmxaFnOP3W8l0ATUxaH0Y/NczPHWS4cQgJUd1S9zyjCq0od8WXxRHlnjlHNPdNg==}
|
||||
|
||||
'@webcomponents/[email protected]':
|
||||
resolution: {integrity: sha512-wP4LF28aysE2Pq3NQRNQxko7Q0vOOwcoOSMg8FFI4S6z76UuXkYIc5ndC31dJMwso1/vSteL75LW2CEKedAJbA==}
|
||||
@@ -4094,8 +4091,8 @@ packages:
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==}
|
||||
|
||||
[email protected].12:
|
||||
resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==}
|
||||
[email protected].9:
|
||||
resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==}
|
||||
engines: {node: 20 || >=22}
|
||||
|
||||
[email protected]:
|
||||
@@ -5114,10 +5111,6 @@ packages:
|
||||
resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==}
|
||||
engines: {node: 18 || 20 || >=22}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-A1vjIwC3qpdCso45Iw127gnp7sPhqgY8lUQhDrArIs+GbmfaaVPFuoyy7WyLT9EPZCRZ7j7aLdwUhQmHWesEow==}
|
||||
engines: {node: 18 || 20 || >=22}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
@@ -5209,8 +5202,8 @@ packages:
|
||||
resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
[email protected].4:
|
||||
resolution: {integrity: sha512-3GlxGdPvT2YHvQYOt+yOzT/DEior/qJVNIylHA77kgeoBTdQQqi70GwefNEUmHQeNGyjC8U62+bruqW/Tpm+tg==}
|
||||
[email protected].3:
|
||||
resolution: {integrity: sha512-MsPlx6yVW4Qv4C7mEVou4/gk/5cN2dVxOTnrNjPSmyH2f0Ln+/UkG10Ax1PE6OvrmTVPKgQYozTtBaPOuCzq7A==}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-WvovbrSoYLTKfh6aY5SxSWPPy50/mLWLCihQL8G2N+2e3mTrg3QTQCAp4R32/LwbkRBDGj0XNs6JFj8e2IYEUw==}
|
||||
@@ -5978,10 +5971,6 @@ packages:
|
||||
resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==}
|
||||
engines: {node: 18 || 20 || >=22}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-pWTgz5CN3tjqyZNSK2tePlSmu9IwM41q8yn8Usdqqwe9TIHh+9dEpLLjF4uApsfPEAZY71qtSiA2B2APEr+1Yw==}
|
||||
engines: {node: 18 || 20 || >=22}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
|
||||
|
||||
@@ -6387,10 +6376,6 @@ packages:
|
||||
resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==}
|
||||
engines: {node: 18 || 20 || >=22}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-1pTbQqH1wIwMi/eleQ5leFTTCkzFsPcgXNjwOA8YGGW/W4/kHT3dssE7Z6NH+zuqNLOzOB0uaD61yl7cAcVhgg==}
|
||||
engines: {node: 18 || 20 || >=22}
|
||||
|
||||
[email protected]:
|
||||
resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==}
|
||||
|
||||
@@ -9579,8 +9564,6 @@ snapshots:
|
||||
dependencies:
|
||||
minipass: 7.1.3
|
||||
|
||||
'@isaacs/[email protected]': {}
|
||||
|
||||
'@isaacs/[email protected]': {}
|
||||
|
||||
'@jimp/[email protected](@jimp/[email protected])':
|
||||
@@ -11390,7 +11373,7 @@ snapshots:
|
||||
|
||||
'@vscode/[email protected]': {}
|
||||
|
||||
'@vvo/[email protected]2.0': {}
|
||||
'@vvo/[email protected]1.1': {}
|
||||
|
||||
'@webcomponents/[email protected]': {}
|
||||
|
||||
@@ -11699,7 +11682,7 @@ snapshots:
|
||||
dependencies:
|
||||
balanced-match: 1.0.2
|
||||
|
||||
[email protected].12:
|
||||
[email protected].9:
|
||||
dependencies:
|
||||
balanced-match: 4.0.4
|
||||
|
||||
@@ -12869,12 +12852,6 @@ snapshots:
|
||||
minipass: 7.1.3
|
||||
path-scurry: 2.0.2
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
minimatch: 11.0.2
|
||||
minipass: 7.1.3
|
||||
path-scurry: 3.0.0
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
global-prefix: 1.0.2
|
||||
@@ -12983,7 +12960,7 @@ snapshots:
|
||||
dependencies:
|
||||
function-bind: 1.1.2
|
||||
|
||||
[email protected].4: {}
|
||||
[email protected].3: {}
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
@@ -13761,12 +13738,7 @@ snapshots:
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
brace-expansion: 5.0.12
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
'@isaacs/nonrecursive-glob-match': 1.0.2
|
||||
brace-expansion: 5.0.12
|
||||
brace-expansion: 5.0.9
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
@@ -14243,11 +14215,6 @@ snapshots:
|
||||
lru-cache: 11.5.3
|
||||
minipass: 7.1.3
|
||||
|
||||
[email protected]:
|
||||
dependencies:
|
||||
lru-cache: 11.5.3
|
||||
minipass: 7.1.3
|
||||
|
||||
[email protected]: {}
|
||||
|
||||
[email protected]:
|
||||
|
||||
@@ -2312,9 +2312,6 @@ export class HaChartBase extends MobileAwareMixin(LitElement) {
|
||||
--ha-assist-chip-trailing-space: var(--ha-space-2);
|
||||
--ha-assist-chip-icon-label-space: var(--ha-space-1);
|
||||
}
|
||||
.zoom-reset {
|
||||
margin-inline-end: var(--ha-space-3);
|
||||
}
|
||||
`;
|
||||
}
|
||||
|
||||
|
||||
@@ -648,7 +648,7 @@ export class HaNetworkGraph extends LitElement {
|
||||
|
||||
ha-icon-button,
|
||||
::slotted(ha-icon-button) {
|
||||
margin-inline-end: var(--ha-space-3);
|
||||
margin-right: 12px;
|
||||
}
|
||||
`;
|
||||
}
|
||||
|
||||
@@ -292,8 +292,8 @@ export class HaConfigAppsInstalled extends LitElement {
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: var(--ha-space-6) var(--ha-space-4) var(--ha-space-4);
|
||||
margin: 0 0 var(--ha-space-18);
|
||||
padding: var(--ha-space-4);
|
||||
margin-bottom: var(--ha-space-18);
|
||||
gap: var(--ha-space-4);
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(min(336px, 100%), 1fr));
|
||||
|
||||
@@ -347,22 +347,11 @@ export class HaBackupOverviewProgress extends LitElement {
|
||||
: nothing
|
||||
}
|
||||
</div>
|
||||
<span class="segment-label" title=${segment.label}
|
||||
>${segment.label}</span
|
||||
>
|
||||
<span class="segment-label">${segment.label}</span>
|
||||
</div>
|
||||
`
|
||||
)}
|
||||
</div>
|
||||
${
|
||||
this.manager.stage
|
||||
? html`<span class="stage-label"
|
||||
>${this.hass.localize(
|
||||
`ui.panel.config.backup.overview.progress.description.create_backup.${this.manager.stage}`
|
||||
)}</span
|
||||
>`
|
||||
: nothing
|
||||
}
|
||||
`;
|
||||
}
|
||||
|
||||
@@ -483,7 +472,6 @@ export class HaBackupOverviewProgress extends LitElement {
|
||||
css`
|
||||
.progress-content {
|
||||
padding: var(--ha-space-2) var(--ha-space-4) var(--ha-space-4);
|
||||
container-type: inline-size;
|
||||
}
|
||||
.segmented-progress {
|
||||
display: flex;
|
||||
@@ -529,21 +517,6 @@ export class HaBackupOverviewProgress extends LitElement {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.stage-label {
|
||||
display: none;
|
||||
margin-top: var(--ha-space-1);
|
||||
font-size: var(--ha-font-size-xs);
|
||||
color: var(--secondary-text-color);
|
||||
}
|
||||
/* Segment labels don't fit a narrow bar, name the current stage instead */
|
||||
@container (max-width: 479px) {
|
||||
.segment-label {
|
||||
display: none;
|
||||
}
|
||||
.stage-label {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@keyframes pulse {
|
||||
0%,
|
||||
100% {
|
||||
|
||||
@@ -357,19 +357,13 @@ class HaBackupOverviewBackups extends LitElement {
|
||||
justify-content: flex-end;
|
||||
border-top: none;
|
||||
}
|
||||
ha-list-base {
|
||||
--ha-list-padding: 0 0 var(--ha-space-2);
|
||||
}
|
||||
ha-list-item-base {
|
||||
--ha-row-item-padding-block: var(--ha-space-2);
|
||||
--ha-row-item-min-height: 40px;
|
||||
--ha-row-item-min-height: 40x;
|
||||
}
|
||||
ha-list-item-base::part(start) {
|
||||
color: var(--ha-color-text-secondary);
|
||||
}
|
||||
ha-list-item-base::part(headline) {
|
||||
white-space: wrap;
|
||||
}
|
||||
span.skeleton {
|
||||
position: relative;
|
||||
display: block;
|
||||
|
||||
@@ -19,6 +19,7 @@ import { until } from "lit/directives/until";
|
||||
import memoizeOne from "memoize-one";
|
||||
import { isComponentLoaded } from "../../../common/config/is_component_loaded";
|
||||
import { QueryParamsController } from "../../../common/controllers/query-params-controller";
|
||||
import { ContextSubscriptionController } from "../../../common/decorators/consume";
|
||||
import type { HASSDomTargetEvent } from "../../../common/dom/fire_event";
|
||||
import { computeDeviceNameDisplay } from "../../../common/entity/compute_device_name";
|
||||
import {
|
||||
@@ -37,7 +38,9 @@ import "../../../components/ha-dropdown";
|
||||
import "../../../components/ha-dropdown-item";
|
||||
import "../../../components/input/ha-input-search";
|
||||
import type { HaInputSearch } from "../../../components/input/ha-input-search";
|
||||
import "../../../components/ha-icon-next";
|
||||
import "../../../components/item/ha-list-item-base";
|
||||
import "../../../components/item/ha-list-item-button";
|
||||
import "../../../components/list/ha-list-base";
|
||||
import { getSignedPath } from "../../../data/auth";
|
||||
import type { ConfigEntry, SubEntry } from "../../../data/config_entries";
|
||||
@@ -57,7 +60,9 @@ import {
|
||||
getCoreLogFileDownloadUnavailableReason,
|
||||
getErrorLogDownloadUrl,
|
||||
} from "../../../data/error_log";
|
||||
import { manifestsContext } from "../../../data/context";
|
||||
import type {
|
||||
DomainManifestLookup,
|
||||
IntegrationLogInfo,
|
||||
IntegrationManifest,
|
||||
} from "../../../data/integration";
|
||||
@@ -160,6 +165,11 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
|
||||
|
||||
@state() private _manifest?: IntegrationManifest;
|
||||
|
||||
/** The manifests of all loaded integrations, to find the dependents. */
|
||||
@state() private _loadedManifests?: DomainManifestLookup;
|
||||
|
||||
private _manifestsConsumer?: ContextSubscriptionController<DomainManifestLookup>;
|
||||
|
||||
@state() private _extraConfigEntries?: ConfigEntry[];
|
||||
|
||||
@state() private _diagnosticHandler?: DiagnosticInfo;
|
||||
@@ -396,6 +406,13 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
|
||||
this.domain
|
||||
);
|
||||
|
||||
// Without the dependents, a dependency looks like a YAML integration.
|
||||
const dependents =
|
||||
this._manifest && !this._manifest.config_flow
|
||||
? this._getDependents(this.domain, this._loadedManifests)
|
||||
: [];
|
||||
const showDependents = normalEntries.length === 0 && dependents.length > 0;
|
||||
|
||||
const documentationLink = this._manifest?.is_built_in
|
||||
? documentationUrl(this.hass, `/integrations/${this._manifest.domain}`)
|
||||
: this._manifest?.documentation;
|
||||
@@ -581,6 +598,7 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
|
||||
}
|
||||
${
|
||||
normalEntries.length === 0 &&
|
||||
!showDependents &&
|
||||
this._manifest &&
|
||||
!this._manifest.config_flow &&
|
||||
this.hass.config.components.find(
|
||||
@@ -702,6 +720,7 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
|
||||
}
|
||||
${
|
||||
this._manifest?.integration_type !== "hardware" &&
|
||||
!showDependents &&
|
||||
(!this._manifest?.single_config_entry ||
|
||||
(normalData.length === 0 && attentionData.length === 0))
|
||||
? html`<ha-button
|
||||
@@ -880,61 +899,127 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
|
||||
`
|
||||
: nothing
|
||||
}
|
||||
|
||||
<div class="section">
|
||||
<h3 class="section-header">
|
||||
${
|
||||
this._manifest?.integration_type
|
||||
? this.hass.localize(
|
||||
`ui.panel.config.integrations.integration_page.entries_${this._manifest.integration_type}`
|
||||
)
|
||||
: this.hass.localize(
|
||||
`ui.panel.config.integrations.integration_page.entries`
|
||||
)
|
||||
}
|
||||
</h3>
|
||||
${
|
||||
filteredNormalData.length === 0
|
||||
? html`<div class="card-content no-entries">
|
||||
${
|
||||
this._filter
|
||||
? this.hass.localize(
|
||||
"ui.panel.config.integrations.none_found"
|
||||
)
|
||||
: this._manifest &&
|
||||
!this._manifest.config_flow &&
|
||||
this.hass.config.components.find(
|
||||
(comp) => comp.split(".")[0] === this.domain
|
||||
)
|
||||
? this.hass.localize(
|
||||
"ui.panel.config.integrations.integration_page.yaml_entry"
|
||||
)
|
||||
: this.hass.localize(
|
||||
"ui.panel.config.integrations.integration_page.no_entries"
|
||||
)
|
||||
}
|
||||
</div>`
|
||||
: html`
|
||||
${filteredNormalData.map(
|
||||
(data) =>
|
||||
html`<ha-config-entry-row
|
||||
.hass=${this.hass}
|
||||
.narrow=${this.narrow}
|
||||
.manifest=${this._manifest}
|
||||
.diagnosticHandler=${this._diagnosticHandler}
|
||||
.entities=${this._entities}
|
||||
.data=${data}
|
||||
data-entry-id=${data.entry.entry_id}
|
||||
></ha-config-entry-row>`
|
||||
${
|
||||
showDependents
|
||||
? html`<div class="section">
|
||||
<h3 class="section-header">
|
||||
${this.hass.localize(
|
||||
"ui.panel.config.integrations.integration_page.used_by"
|
||||
)}
|
||||
`
|
||||
}
|
||||
</div>
|
||||
</h3>
|
||||
${this._renderDependents(dependents)}
|
||||
</div>`
|
||||
: html`<div class="section">
|
||||
<h3 class="section-header">
|
||||
${
|
||||
this._manifest?.integration_type
|
||||
? this.hass.localize(
|
||||
`ui.panel.config.integrations.integration_page.entries_${this._manifest.integration_type}`
|
||||
)
|
||||
: this.hass.localize(
|
||||
`ui.panel.config.integrations.integration_page.entries`
|
||||
)
|
||||
}
|
||||
</h3>
|
||||
${
|
||||
filteredNormalData.length === 0
|
||||
? html`<div class="card-content no-entries">
|
||||
${
|
||||
this._filter
|
||||
? this.hass.localize(
|
||||
"ui.panel.config.integrations.none_found"
|
||||
)
|
||||
: this._manifest &&
|
||||
!this._manifest.config_flow &&
|
||||
this.hass.config.components.find(
|
||||
(comp) => comp.split(".")[0] === this.domain
|
||||
)
|
||||
? this.hass.localize(
|
||||
"ui.panel.config.integrations.integration_page.yaml_entry"
|
||||
)
|
||||
: this.hass.localize(
|
||||
"ui.panel.config.integrations.integration_page.no_entries"
|
||||
)
|
||||
}
|
||||
</div>`
|
||||
: html`
|
||||
${filteredNormalData.map(
|
||||
(data) =>
|
||||
html`<ha-config-entry-row
|
||||
.hass=${this.hass}
|
||||
.narrow=${this.narrow}
|
||||
.manifest=${this._manifest}
|
||||
.diagnosticHandler=${this._diagnosticHandler}
|
||||
.entities=${this._entities}
|
||||
.data=${data}
|
||||
data-entry-id=${data.entry.entry_id}
|
||||
></ha-config-entry-row>`
|
||||
)}
|
||||
`
|
||||
}
|
||||
</div>`
|
||||
}
|
||||
</div>
|
||||
</hass-subpage>
|
||||
`;
|
||||
}
|
||||
|
||||
// Only an integration without a config flow needs the loaded manifests, so
|
||||
// other integration pages do not make the context fetch them.
|
||||
private _watchLoadedManifests(): void {
|
||||
if (this._manifestsConsumer) {
|
||||
return;
|
||||
}
|
||||
this._manifestsConsumer = new ContextSubscriptionController(
|
||||
this,
|
||||
manifestsContext,
|
||||
(manifests) => {
|
||||
this._loadedManifests = manifests;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
private _getDependents = memoizeOne(
|
||||
(domain: string, manifests?: DomainManifestLookup) =>
|
||||
Object.values(manifests ?? {}).filter(
|
||||
// System integrations, like Default Configuration, are not useful to list.
|
||||
(manifest) =>
|
||||
manifest.integration_type !== "system" &&
|
||||
manifest.dependencies?.includes(domain)
|
||||
)
|
||||
);
|
||||
|
||||
private _renderDependents(dependents: IntegrationManifest[]) {
|
||||
return html`<ha-list-base>
|
||||
${dependents.map(
|
||||
(manifest) =>
|
||||
html`<ha-list-item-button
|
||||
class="dependent"
|
||||
href=${`/config/integrations/integration/${manifest.domain}`}
|
||||
>
|
||||
<img
|
||||
slot="start"
|
||||
alt=""
|
||||
src=${brandsUrl(
|
||||
{
|
||||
domain: manifest.domain,
|
||||
type: "icon@2x",
|
||||
darkOptimized: this.hass.themes?.darkMode,
|
||||
},
|
||||
this.hass.auth.data.hassUrl
|
||||
)}
|
||||
crossorigin="anonymous"
|
||||
referrerpolicy="no-referrer"
|
||||
/>
|
||||
<div slot="headline">
|
||||
${domainToName(this.hass.localize, manifest.domain, manifest)}
|
||||
</div>
|
||||
<ha-icon-next slot="end"></ha-icon-next>
|
||||
</ha-list-item-button>`
|
||||
)}
|
||||
</ha-list-base>`;
|
||||
}
|
||||
|
||||
private _onImageLoad(ev) {
|
||||
ev.target.style.display = "inline-block";
|
||||
}
|
||||
@@ -975,6 +1060,9 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
|
||||
return;
|
||||
}
|
||||
this._manifest = await fetchIntegrationManifest(this.hass, this.domain);
|
||||
if (!this._manifest.config_flow) {
|
||||
this._watchLoadedManifests();
|
||||
}
|
||||
if (
|
||||
this._manifest.integration_type &&
|
||||
!["device", "hub", "service"].includes(this._manifest.integration_type)
|
||||
@@ -1624,6 +1712,17 @@ class HaConfigIntegrationPage extends SubscribeMixin(LitElement) {
|
||||
ha-list-item-base.discovered {
|
||||
--ha-row-item-min-height: 72px;
|
||||
}
|
||||
ha-list-item-button.dependent {
|
||||
--ha-row-item-min-height: 72px;
|
||||
}
|
||||
ha-list-item-button.dependent + ha-list-item-button.dependent {
|
||||
border-top: var(--ha-border-width-sm) solid var(--divider-color);
|
||||
}
|
||||
ha-list-item-button.dependent img {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
object-fit: contain;
|
||||
}
|
||||
ha-list-item-base.config_entry {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@@ -243,6 +243,14 @@ class HaConfigIntegrationsDashboard extends KeyboardShortcutMixin(
|
||||
] => {
|
||||
const entryDomains = new Set(configEntries.map((entry) => entry.domain));
|
||||
|
||||
// An integration loaded as a dependency of another is not set up in YAML.
|
||||
const dependencies = new Set<string>();
|
||||
for (const component of components) {
|
||||
manifests[component.split(".")[0]]?.dependencies?.forEach((domain) =>
|
||||
dependencies.add(domain)
|
||||
);
|
||||
}
|
||||
|
||||
const domains = new Set<string>();
|
||||
|
||||
for (const component of components) {
|
||||
@@ -250,6 +258,7 @@ class HaConfigIntegrationsDashboard extends KeyboardShortcutMixin(
|
||||
const manifest = manifests[componentDomain];
|
||||
if (
|
||||
!entryDomains.has(componentDomain) &&
|
||||
!dependencies.has(componentDomain) &&
|
||||
manifest &&
|
||||
!manifest.config_flow &&
|
||||
(!manifest.integration_type ||
|
||||
|
||||
+11
-10
@@ -3952,15 +3952,15 @@
|
||||
"addon_repositories": "[%key:ui::panel::config::backup::overview::progress::description::create_backup::app_repositories%]",
|
||||
"addons": "[%key:ui::panel::config::backup::overview::progress::description::create_backup::apps%]",
|
||||
"await_addon_restarts": "[%key:ui::panel::config::backup::overview::progress::description::create_backup::await_app_restarts%]",
|
||||
"app_repositories": "Backing up app repositories...",
|
||||
"apps": "Backing up apps...",
|
||||
"await_app_restarts": "Waiting for apps to restart...",
|
||||
"docker_config": "Backing up Docker configuration...",
|
||||
"finishing_file": "Finishing backup file...",
|
||||
"folders": "Backing up folders...",
|
||||
"home_assistant": "Backing up Home Assistant...",
|
||||
"upload_to_agents": "Uploading backup...",
|
||||
"cleaning_up": "Cleaning up..."
|
||||
"app_repositories": "Backing up app repositories",
|
||||
"apps": "Backing up apps",
|
||||
"await_app_restarts": "Waiting for apps to restart",
|
||||
"docker_config": "Backing up Docker configuration",
|
||||
"finishing_file": "Finishing backup file",
|
||||
"folders": "Backing up folders",
|
||||
"home_assistant": "Backing up Home Assistant",
|
||||
"upload_to_agents": "Uploading to locations",
|
||||
"cleaning_up": "Cleaning up"
|
||||
},
|
||||
"restore_backup": {
|
||||
"addon_repositories": "[%key:ui::panel::config::backup::overview::progress::description::restore_backup::app_repositories%]",
|
||||
@@ -3988,7 +3988,7 @@
|
||||
"apps": "Apps",
|
||||
"media": "Media",
|
||||
"upload": "Uploading backup",
|
||||
"cleaning_up": "Cleanup"
|
||||
"cleaning_up": "Cleaning up"
|
||||
},
|
||||
"agent_status": {
|
||||
"uploading": "Uploading...",
|
||||
@@ -7808,6 +7808,7 @@
|
||||
"entries_virtual": "[%key:ui::panel::config::integrations::integration_page::entries%]",
|
||||
"entries_entity": "[%key:ui::panel::config::integrations::integration_page::entries%]",
|
||||
"no_entries": "No entries",
|
||||
"used_by": "Used by",
|
||||
"yaml_entry": "This integration was not set up via the UI, you have either set it up in YAML or it is a dependency set up by another integration. If you want to configure it, you will need to do so in your configuration.yaml file.",
|
||||
"attention_entries": "Needs attention",
|
||||
"add_entry": "Add entry",
|
||||
|
||||
Reference in new issue
Block a user