diff --git a/src/Umbraco.Web.UI.Login/package-lock.json b/src/Umbraco.Web.UI.Login/package-lock.json
index 6c509232c623..3b59e7e12450 100644
--- a/src/Umbraco.Web.UI.Login/package-lock.json
+++ b/src/Umbraco.Web.UI.Login/package-lock.json
@@ -10,7 +10,7 @@
"@umbraco-cms/backoffice": "^16.2.0",
"msw": "^2.11.3",
"typescript": "^5.9.3",
- "vite": "^7.1.11"
+ "vite": "^7.2.0"
},
"engines": {
"node": ">=22",
@@ -529,7 +529,6 @@
"integrity": "sha512-LSBHP2/wTF1BnaccHGX1t+0Ss+2VJQxotrLz/0+LK2z8ocuyVZXOYhfBSd7FP8sK78MDJVDBYrPCsBUvNSlH1g==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@hey-api/codegen-core": "^0.2.0",
"@hey-api/json-schema-ref-parser": "1.2.0",
@@ -644,7 +643,8 @@
"resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz",
"integrity": "sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==",
"dev": true,
- "license": "BSD-3-Clause"
+ "license": "BSD-3-Clause",
+ "peer": true
},
"node_modules/@lit/reactive-element": {
"version": "2.1.1",
@@ -652,6 +652,7 @@
"integrity": "sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg==",
"dev": true,
"license": "BSD-3-Clause",
+ "peer": true,
"dependencies": {
"@lit-labs/ssr-dom-shim": "^1.4.0"
}
@@ -704,7 +705,8 @@
"resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz",
"integrity": "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.47.1",
@@ -1007,6 +1009,7 @@
"integrity": "sha512-viQ6AHRhjCYYipKK6ZepBzwZpkuMvO9yhRHeUZDvlSOAh8rvsUTSre0y74nu8QRYUt4a44lJJ6BpphJK7bEgYA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1021,6 +1024,7 @@
"integrity": "sha512-zCce9PRuTNhadFir71luLo99HERDpGJ0EEflGm7RN8I1SnNi9gD5ooK42BOIQtejGCJqg3hTPZiYDJC2hXvckQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1035,6 +1039,7 @@
"integrity": "sha512-HHakuV4ckYCDOnBbne088FvCEP4YICw+wgPBz/V2dfpiFYQ4WzT0LPK9s7OFMCN+ROraoug+1ryN1Z1KdIgujQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1065,6 +1070,7 @@
"integrity": "sha512-GU9deB1A/Tr4FMPu71CvlcjGKwRhGYz60wQ8m4aM+ELZcVIcZRa1ebR8bExRIEWnvRztQuyRiCQzw2N0xQJ1QQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1079,6 +1085,7 @@
"integrity": "sha512-/TDDOwONl0qEUc4+B6V9NnWtSjz95eg7/8uCb8Y8iRbGvI9vT4/znRKofFxstvKmW4URu/H74/g0ywV57h0B+A==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1094,6 +1101,7 @@
"integrity": "sha512-2P2IZp1NRAE+21mRuFBiP3X2WKfZ6kUC23NJKpn8bcOamY3obYqCt0ltGPhE4eR8n8QAl2fI/3jIgjR07dC8ow==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1108,6 +1116,7 @@
"integrity": "sha512-JkDQU2ZYFOuT5mNYb8OiWGwD1HcjbtmX8tLNugQbToECmz9WvVPqJmn7V/q8VGpP81iEECz/IsyRmuf2kSD4uA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1123,6 +1132,7 @@
"integrity": "sha512-KOiMZc3PwJS3hR0nSq5d0TJi2jkNZkLZElcT6pCEnhRHzPH6dRMu9GM5Jj798ZRUy0T9UFcKJalFZaDxnmRnpg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1138,6 +1148,7 @@
"integrity": "sha512-d6uStdNKi8kjPlHAyO59M6KGWATNwhLCD7dng0NXfwGndc22fthzIk/6j9F6ltQx30huy5qQram6j3JXwNACoA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1152,6 +1163,7 @@
"integrity": "sha512-KSzL8WZV3pjJG9ke4RaU70+B5UlYR2S6olNt5UCAawM+fi11mobVztiBoC19xtpSVqIXC1AmXOqUgnuSvmE4ZA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1166,6 +1178,7 @@
"integrity": "sha512-m6YR1gkkauIDo3PRl0gP+7Oc4n5OqDzcjVh6LvWREmZP8nmi94hfseYbqOXUb6RPHIc0JKF02eiRifT4MSd2nw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1181,6 +1194,7 @@
"integrity": "sha512-mT6baqOhs/NakgrAeDeed194E/ZJFGL692H0C7f1N7WDRaWxUu2oR0LrnRqSH5OyPjELkzu6nQnNy0+0tFGHHg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1211,6 +1225,7 @@
"integrity": "sha512-pOs6oU4LyGO89IrYE4jbE8ZYsPwMMIiKkYfXcfeD9NtpGNBnjeVXXF5I9ndY2ANrCAgC8k58C3/powDRf0T2yA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1244,6 +1259,7 @@
"integrity": "sha512-quOXckC73Luc3x+Dcm88YAEBW+Crh3x5uvtQOQtn2GEG91AshrvbnhGRiYnfvEN7UhWIS+FYI5liHFcRKSUKrQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1258,6 +1274,7 @@
"integrity": "sha512-UHKNRxq6TBnXMGFSq91knD6QaHsyyOwLOsXMzupmKM5Su0s+CRXEjfav3qKlbb9e4m7D7S/a0aPm8nC9KIXNhQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1272,6 +1289,7 @@
"integrity": "sha512-UezvM9VDRAVJlX1tykgHWSD1g3MKfVMWWZ+Tg+PE4+kizOwoYkRWznVPgCAxjmyHajxpCKRXgqTZkOxjJ9Kjzg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1302,6 +1320,7 @@
"integrity": "sha512-CkoRH+pAi6MgdCh7K0cVZl4N2uR4pZdabXAnFSoLZRSg6imLvEUmWHfSi1dl3Z7JOvd3a4yZ4NxerQn5MWbJ7g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1407,6 +1426,7 @@
"integrity": "sha512-p2n8WVMd/2vckdJlol24acaTDIZAhI7qle5cM75bn01sOEZoFlSw6SwINOULrUCzNJsYb43qrLEibZb4j2LeQw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1436,6 +1456,7 @@
"integrity": "sha512-t9Nc/UkrbCfnSHEUi1gvUQ2ZPzvfdYFT5TExoV2DTiUCkhG6+mecT5bTVFGW3QkPmbToL+nFhGn4ZRMDD0SP3Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1560,7 +1581,8 @@
"resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
"integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/@types/markdown-it": {
"version": "14.1.2",
@@ -1568,6 +1590,7 @@
"integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/linkify-it": "^5",
"@types/mdurl": "^2"
@@ -1578,7 +1601,8 @@
"resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz",
"integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/@types/statuses": {
"version": "2.0.5",
@@ -1592,7 +1616,8 @@
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/@umbraco-cms/backoffice": {
"version": "16.2.0",
@@ -1734,6 +1759,7 @@
"integrity": "sha512-O0807+bWVWV/rsFihFVKSOkg9wBtLXKCszE5+eZk2KmONm93BFhIAE35rp7eD6X2SuJMHwYzInIxMIMjHzdpUQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-button-group": "1.15.0"
@@ -1745,6 +1771,7 @@
"integrity": "sha512-eEX83zwRN3tCiHScKcmkROWAfLu3TgFI9SntlbyxiuSSYfhJxWSZXOf6lVvQ/1CyvKq8XqSbBnN3VKXgcaKOpg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -1755,6 +1782,7 @@
"integrity": "sha512-CGYAFAHgNoQK2UTupP7pO0mwP6t9/Ms6WZ0gIC40a+kPjrGtaDWU52hiPsuXrUcR6WjJwZ5WRrJHOboRpdmM0g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-avatar": "1.15.0",
"@umbraco-ui/uui-base": "1.15.0"
@@ -1766,6 +1794,7 @@
"integrity": "sha512-9aGmhRvey98kcR7wfsnno0BNftIRwJ0r2lCH6cNK2lhe69enYm0MWjp+4uutnlEWWskTLEI344BOqmqOHH1NPA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -1776,6 +1805,7 @@
"integrity": "sha512-0vtKmjzUOn/tIUHNrsx7aZpy3eq9aRKqV9kkJTrhH92S4WcMy+cOB1iw9t3Fe3xlBPuL3JpszwuxMTIuIqJTgQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"peerDependencies": {
"lit": ">=2.8.0"
}
@@ -1786,6 +1816,7 @@
"integrity": "sha512-LkYX+p44mFVdvlZSliP5ClMcyHoOIVLWI3WVkaMLQdNi2LO9bbfaTneLzu4ruW6v0iF+kLsznr3bl73VHk7oEg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -1796,6 +1827,7 @@
"integrity": "sha512-MhSNcKsVNymD/yt3NFXujuaQmAqMqj5S+CBoDHEk88H7Id9NMw9RStZFJ37mI2CxHWkeHDotNVgOhSBiHJNJnw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-css": "1.15.0"
@@ -1807,6 +1839,7 @@
"integrity": "sha512-TaUY+hNB0VIwv9SBi9fDjIFRtrmmkcT7hlhLCJLUVfQ7jJlGLPISAAdypSplNeCPthYvP1cJQ9m28OzscXHZxQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -1817,6 +1850,7 @@
"integrity": "sha512-3Oaqj6Yta/Q/Ndme20YA1XbHdBBL71iNhpqREfTHli2YV4TEcgIiNy0s2op2oPhKjIEQPEfitU2BrruYEEWa7Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-icon-registry-essential": "1.15.0"
@@ -1828,6 +1862,7 @@
"integrity": "sha512-MAaJzpwVnlyGJNvLv6qIwrYsI5SaXXiVKgVi47I8+x//QmnArmetCN04766gGzmAb0m2uuC3ht0BXMDv05pxvw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-button": "1.15.0"
@@ -1839,6 +1874,7 @@
"integrity": "sha512-YPEnubKNbKmw04eWRH24/3Uxu+zhtLPeJoaT6ykPCyjr/EKc82rSTvn8fwQuP41UokQrXOac2pKn7SncyoST1Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -1849,6 +1885,7 @@
"integrity": "sha512-nLJZ6P5eK1rYgqjP5zCxbZp8g4WJ23RnUZQ49o7QpU/7zoPOK72/fuM3Ky00Iapixm/kAD6dYHO/P+GtNz8/CA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -1859,6 +1896,7 @@
"integrity": "sha512-pNjpk2iIdSsmTtDdBsWaEr8JX0RcWbl8yKGaqLvo/S7d3bly5z+FjcsgGnX1i1GHo7dqmgVJfbdvN9V1jgn+FA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-checkbox": "1.15.0"
@@ -1870,6 +1908,7 @@
"integrity": "sha512-cWag+D0XrogYZesAN8NMPQCCuU7L7uZ4Xz8dmirKQk1gjMrFDC4vYPZRQ/5O3ETTFupfDipVKimgRDsmarbLSQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-card": "1.15.0"
@@ -1881,6 +1920,7 @@
"integrity": "sha512-DZ6JYNvGb5wVkhhLShENMm+Y6kTpz37YrApQTJVUUgPXhIABO2CDCnqgpH5tkQX73s9jjVB3Ca7SeivuYv8G9A==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-card": "1.15.0",
@@ -1893,6 +1933,7 @@
"integrity": "sha512-EzYebWCzR0wHY902NmAcTRSVSscYac3QntCz+xwSulrhzfy4copeOd1qE+Lz7FjHs+ho0IBPZol8sF4W6rK8FQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-card": "1.15.0",
@@ -1906,6 +1947,7 @@
"integrity": "sha512-oo7gCs3RGJ4ujFs+LpG9I1DS/XSNkz9gaqvp4BkaR0kBXzw5f2SLLGhA9S3M6M+OPlsXuuJNKlTV1tn2+LF6Ng==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-avatar": "1.15.0",
"@umbraco-ui/uui-base": "1.15.0",
@@ -1918,6 +1960,7 @@
"integrity": "sha512-cnKP5GeaI028hGabVCki1kPqAVSekFeP7QEwu7lncA+dcX8uvg+ffV6kW9FV0emOhI5Tmxvh8o+UDKlLs28q3A==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -1928,6 +1971,7 @@
"integrity": "sha512-vPkgrFAPDMvJdJTADIWNj48D8gJWD3dBotucUghg/wHhvJv8h/2MvnwMUNnnSB1REHbanl7hJBVvKcNkoil0gA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-boolean-input": "1.15.0",
@@ -1940,6 +1984,7 @@
"integrity": "sha512-k6u//b+s6UYmzKYMizIf2MRGD4kFy1qWdSk1GnIeDdiQxABJuBZEtkACIe66j+lxnonFvZ/assbLbhRiu15ZCw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"colord": "^2.9.3"
@@ -1951,6 +1996,7 @@
"integrity": "sha512-I4KGyzZZazjeifcavHp7qnMbP0Jh0dM+gzZhV+YtdPR2JT0o7y6stkbY0f+dOln0K6Bu6BQLV0HLHl/1f/1NDg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-popover-container": "1.15.0",
@@ -1963,6 +2009,7 @@
"integrity": "sha512-lpT9kapypGkTelG9COSk169VKs0MSiKweX8menDDn0p6I4RfKQBy0N27HecCcf1RqPsCnTbP3lPr5DJy00KdzA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -1973,6 +2020,7 @@
"integrity": "sha512-1AI0QMr046fKc8xZ4aBO7FDwvggsS9plIpY0W4AGrqQxqGUR2u/mTU49+8xMtboaFOen5RQpJ65DN9hAgeNZ+w==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-icon-registry-essential": "1.15.0",
@@ -1985,6 +2033,7 @@
"integrity": "sha512-UzlgWdsVHyCM/znFThrfA4A/S/K/R9Nc2KyRYiyy2xgBoP7x2vJ5Rn4mnR02W4bhI3gNgCJ2fqhmyiW4dxyk0Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-color-swatch": "1.15.0"
@@ -1996,6 +2045,7 @@
"integrity": "sha512-CKslvVRCKCReMr/ZZh4wc3TKJNvFjKVm/hSIvFqCIoJuSKfC4XuLU9SK9FL1s42NUAUmccSD3hATZJZ9VXqY+Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-button": "1.15.0",
@@ -2012,6 +2062,7 @@
"integrity": "sha512-e8IhqU9AC5pOqXuzPzI+BDsW97Ac0u1GU/5MIJqRcBZ+ZttPcH4fsm4u8siCHbK1khCG0Vzo7HiKPZ0IuuOslg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2033,6 +2084,7 @@
"integrity": "sha512-iVsrVVnvBrCCT9uJhyBE7b1kXwWUUKDmimhs/TyF1SFjxWP/U0Z99QqqI1pawdad+BuK3oVCmxYOdaReWDQXkQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-css": "1.15.0"
@@ -2044,6 +2096,7 @@
"integrity": "sha512-JdDRIzSGGDnvVqXSIhc+5rDXMdYMO+Hd7s2hqLp+iRSn8IHISN/qT1nfFVO9LMbLdcApanl3JJ4Rru9LN4Q3HA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2054,6 +2107,7 @@
"integrity": "sha512-MhJRkVdDQWKEBvemNRD4bZCuIS0JUll1nNoPK7scA+e6vDmbv25vqPHNXGE/sIpVkChY/L+v+twokzlHn57XMw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-symbol-file-dropzone": "1.15.0"
@@ -2065,6 +2119,7 @@
"integrity": "sha512-AHKIdYLC0ga4Wgr68xtW/gG3NDqn+QhD2aus0l2n4lBoq6OAQ5aZiPwD9i1fCD7dgyjKQ6Ov9PJSaqRYQkOlNA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-symbol-file": "1.15.0",
@@ -2078,6 +2133,7 @@
"integrity": "sha512-4u9ZryfVBunpb0IL0+TevytrISA6S1+AajiK/PUk0JMJfqMuQMjmpnNPdtYRNVgFFIcQFQKipjT/mrHbDVawxw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2088,6 +2144,7 @@
"integrity": "sha512-fiWGeQpREnl6k+6VNHz9ixNdEmOoFNm7qsgdIYJ1jCDXBGME1mjxJOr2Eq7UWJuzQM8BeyQEcXq5SVIOv21PRw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-form-validation-message": "1.15.0"
@@ -2099,6 +2156,7 @@
"integrity": "sha512-RYfwmjPkY0KumjaalLW8gkasW25Mj87YFAzJn7mAYiZigURape9RqGpvrBfwcMmGj3W2/uVuHxpAHrvweQOt4A==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2109,6 +2167,7 @@
"integrity": "sha512-e8/W6gu6kwrodH0f0U70LR5rHQhiZGq3NqLqikAQ1rvmwitXUqtkVXIhkGxSf7M6yPhpmoi2qEEZDQH9cvCE5A==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2119,6 +2178,7 @@
"integrity": "sha512-nIdzCqoABeRVG6jW045ok649MiAhm5zPdfuMKc1a+TNw9xkKj+vnA1YcjaBN502+AekMhhwnqgj9mLL+mC2VPQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-icon": "1.15.0"
@@ -2130,6 +2190,7 @@
"integrity": "sha512-llHFVMlV3Uyg2fHiNt1qfDgRhLthD37uQD2FzlQb0GEYjp+4dE8Jyc/eZW2mqABPweUJACVwbrwBUVrCeQJ1OQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-icon-registry": "1.15.0"
@@ -2141,6 +2202,7 @@
"integrity": "sha512-vPc4I/kkQM9RWfHI0F/OQhoTu+KefplbQp0JEQ4gfr6MwxIm6bBTEuw8T5K9t1DQs8EZ7yeLEsSh65FDPepRtg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2151,6 +2213,7 @@
"integrity": "sha512-VVn2FMsflvEWd6fOX0HQ3JaUh7haznqSqCLTSTOduh/H3jE+dVYCW6YC5uTsxArmOwsSBYSfBQNetW23eJim3Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-action-bar": "1.15.0",
"@umbraco-ui/uui-base": "1.15.0",
@@ -2166,6 +2229,7 @@
"integrity": "sha512-AFyVYNeExHXe10b3/5/BLZOmMKyMxzftsO0HKbaQQuxrxL2SCHsQJRUpxSY+/0vAl2JbNdmrk0HTsP1O4Y9zig==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-button": "1.15.0",
@@ -2179,6 +2243,7 @@
"integrity": "sha512-Pe8lNdHz/6IfbQyWEi0o+pKJ6/zunQ2b8HARCU0a9HFXRDk+XsAuBsn79zQXZl5MvseAUQrnouLwPHpdtMbeMg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-icon-registry-essential": "1.15.0",
@@ -2191,6 +2256,7 @@
"integrity": "sha512-8Q/G5Lg6949BbMHQ1BhZ9UpoJjOQ19w1tl2y0d/rP3w/mKnTQaBSf+MQmA/6kQ/Unb2wHXJANr4pAGpUklOg6A==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2201,6 +2267,7 @@
"integrity": "sha512-fnmRl+RGUROERvt+Jw0WiW3Btlddg0Xka6F+gR95gy5gr/v8s34uf1/bbPD3hWUXZPukLmxeMjbzyuqMrO8rpQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2211,6 +2278,7 @@
"integrity": "sha512-HQ2zCp2kz45GWQ3wV153ytuYD2KcdeAA5RRUVrN0Zn3GQB3wfG7xMkQQNRAOWMUdnfqmdQHeK+COO7NaET3VBA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2221,6 +2289,7 @@
"integrity": "sha512-4eMeerunFc5yZsJIwpHADn8oGcu0Nn36oyKbSd0qC0mNmmN2i8UOF9w4O+lndd2L0Mhv23FGvBRo7mb5EAvWlg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2231,6 +2300,7 @@
"integrity": "sha512-4rG8UHvyS2qvsjQYEmYjKX01SRwfk60oH8SSSx8r3z2BM62dCOa+4SBhLxqiBciC/u8FtN8X20MIGE0+eMdtoA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2241,6 +2311,7 @@
"integrity": "sha512-BOebCMB/p4TaK4kJYrYgimC6SSGBHN4y1MytK3tyvObbuj3gVqkbwHW5CZrhK4jMaywRgGq96OsuaGfc52HFog==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-loader-bar": "1.15.0",
@@ -2253,6 +2324,7 @@
"integrity": "sha512-EDz1Qx+mTXNvOu565IculPCyuuFHwBon2wYnfWDBMoHJ5+P54jBHzg2U/8fUVse7xKPvU21hF4JneAvycNIiGQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2263,6 +2335,7 @@
"integrity": "sha512-sPVs1bApKupNd2JcSMwFS1060Y++Fti1ybJrafcLh1+h4IjmLDIRTHTTL8C+kei5G2Oi3+Z7vGpLu7lrTAmRlw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-button": "1.15.0",
@@ -2275,6 +2348,7 @@
"integrity": "sha512-VCHVvO0fd5eL5UvB/RPL/K68UhOgsIpuyr+aXLblaYT/6at2LNosUxR4eRW2r0WOQzOiyE+Nu69pExBKyfT8bw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2285,6 +2359,7 @@
"integrity": "sha512-54M4G0ru8j5ltPAdDGIxogdmos33hxeQeusI/uMFxo2yqHHyMHRi95vvCdcwFmGlEdFd2rsnxZKfNMUKM99GKQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2295,6 +2370,7 @@
"integrity": "sha512-vtGUwHaG4EDLQERkwym51OasoWLj30LQLhcCCYXDJtTL1dG2nIKScEtlSUiVh5qRsI+V+kaBYPGD4TFD5o43tQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2305,6 +2381,7 @@
"integrity": "sha512-5TUF/iWUzbVXvBs9Z273q6s9yLbns8itTiFHCITw5w5fZzDn8R6O5hrOW7tV79kCxAnBSOAVP8v1JhGTwXw19Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2315,6 +2392,7 @@
"integrity": "sha512-HMHVdBoB1O39rojofezee2aXGv6CMn7dUFvNefdF9HxmNrIcpFBYXSL8aBt5QJeziFQMwbCtqyY21aUag0nzfw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2325,6 +2403,7 @@
"integrity": "sha512-w7FZIe5mtsgvsf6hOH5mHKDBzg9Rd/+viyk/xNVs1NeZBn1nWEIHZs0R7YMpv+QxulklhAOpBcbGoUTB8xE+vA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2335,6 +2414,7 @@
"integrity": "sha512-UT65bpUmRlEgVuvn2RlTZ5l2WDF82jH1t8g+6HV6OJctpqTKlOfPkQmd6AluESPhHFEwwTydS/M7x+X3Adkdtw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2345,6 +2425,7 @@
"integrity": "sha512-ybDqIt1cXd7AiZLZsDrSHCMp2zM8I+0lmN599b3NROjm59SZXIvpbY1TS1gJ45htgsc18x2y+S4laInYu2dGUg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-icon": "1.15.0",
@@ -2357,6 +2438,7 @@
"integrity": "sha512-59s16558ySCX7b9IT/Sorq0fdFeCRENSTa7DIkQUrvVPaFWqKFz9jCYFEqDnH11jZHGsNiYh5YCmWlF/VNbwJQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-ref-node": "1.15.0"
@@ -2368,6 +2450,7 @@
"integrity": "sha512-AWPZPkFGcAkRx4j6JnOi2r3EJxnvZUXfhOWNyWB2/dFRckatPH56+lVkqV+fRC+81emKBSQWkx2NphFzLEMr0A==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-ref-node": "1.15.0"
@@ -2379,6 +2462,7 @@
"integrity": "sha512-knIIbbfoWtepOvyC54dCo3xF0Vuap6i5uMQPd+wITCmg56a+yiJFuke+dyzatOIeXzgspLgFUngwQZEj5mJnWA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-ref-node": "1.15.0"
@@ -2390,6 +2474,7 @@
"integrity": "sha512-pXvL523m2JR3P8OO+E1AE4YAaYhJLc519CtjNXSuctNIk1yWvwxBu8VozLIQV+xrOXGz+SiXwDkoaRPwjTQKtg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-ref-node": "1.15.0"
@@ -2401,6 +2486,7 @@
"integrity": "sha512-bQWfZPKJyAf2O/YvOD6fVSSpKaYZMBsrEGT+ydLPv3BNJroYHS8+NEbulZxExWztNApTcs6Vo5T19AUz+vsnLQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-ref-node": "1.15.0"
@@ -2412,6 +2498,7 @@
"integrity": "sha512-4GpRzhGedMwjqW1Wk7AvgakNCc6S1edYpHWeO6cfmryIm0hvnCfkU132lzLmB+Ag2QIOI8p4Ak0OQHYWd+XZHw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-ref-node": "1.15.0"
@@ -2423,6 +2510,7 @@
"integrity": "sha512-L4qM6GPDqu0/9B2OVb3EljZT3zYxbwp6uOz1nfVYpGAWBxd6INOtNbn8WYdZLq6qqa8NR6qK+su2554nInvQGA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2433,6 +2521,7 @@
"integrity": "sha512-yRx+TlXBB05jM8ShThRooFgCS5nSN7eAAnpttZgBWqY3sccIVy2Knbkz3kXLJE6ld+bO5nUXhsZBZ34MEHkiog==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2443,6 +2532,7 @@
"integrity": "sha512-+OAzOutyUB2WCI+e5aFRoUNsFFuc/hUXnpIjx4P1moOYiggc/NxjaTHz5mxbmkC11yyS+0vpl8lVSZglkLCH5w==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2453,6 +2543,7 @@
"integrity": "sha512-6y9rpFfhtuWMnaAamlzrB5Q12dsZ8dprmQaGtKr+g97PTNRPC3/dc5sdROam8VMDAhL9MkfBAZBoS6yAoJsPcQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2463,6 +2554,7 @@
"integrity": "sha512-F0BueWxu6J5P7xyzkp1c/eFZJjStsw65hB3bNEmWBOqkm/jbBKg9+Xs99tov+VwCHYOt8T+DuEDkkKmdxVAxyQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2473,6 +2565,7 @@
"integrity": "sha512-D5DottbukIFxL+YTVEMujHPdqB8Hhw02TKpegfDQb8UGSPC5pCQw4O212TSuyTalKb598niNmCzcjEG5TWNqww==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2483,6 +2576,7 @@
"integrity": "sha512-JLcEVnJqv2LL8VtscPCtPKda9ywWzV4vd0XODHLE3iI1cgHeNwMBhxqgkah0ULuw5w2Hrq8gwQ7/DuPHMSIFxw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2493,6 +2587,7 @@
"integrity": "sha512-CPsr1K5IkdxBgID+xoIcgbumm/z0q+Z/1NPxTO40EL7kx3KOLQ8vwLdOTSW1cTj90JFA9+XuRtOpmMEY0XjICg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2503,6 +2598,7 @@
"integrity": "sha512-5QyDNFjiBeuPgalT9zwPMP220zJUHPpbPvCohWCFLn/2JJsa6IjSMtsAcqxI154ZJ9vYX7vYiYUn8tJTY8CHpA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2513,6 +2609,7 @@
"integrity": "sha512-BQq7BwZ7nCcgKE5tMhG6OVYTrrMEIXpx8kQKec/ULgVfs0/Ws6qeH9u4rGVK/yHU8gecd6DSeUczjjq2iS4djA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2523,6 +2620,7 @@
"integrity": "sha512-5Akw8T0SV2OrwvPk1JSeFr1clvHE4N0DwceSU9bn9f6gLIGGRxvniJAclQDRI/Woe3hm8waMy6cC2fXfSdc6lg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2533,6 +2631,7 @@
"integrity": "sha512-AnPp0QJeI70ucX8ludr3qaFmlxjKZUarX10DI8ieIB8VJiQZo0TjoPcPdSGmZupaPBLiszlpb3rKzGkZhXEIHg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2543,6 +2642,7 @@
"integrity": "sha512-oS0eA5Z8+s+5o2ks3WCED5VGP8AunRLyuB2y7kVdRUfhCfck7B9v83zNfxPVoGoVsTDLtAQM1S4P8SHwNRmk7g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-button": "1.15.0",
@@ -2556,6 +2656,7 @@
"integrity": "sha512-PgyZvAiOZmXmiRW4UhfD6Tybx3ft755aKAVqT8ELpskLSvVr1oz4uTI6+QxoeQ1AkrHovenvIdBX+Iwi91SheQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2566,6 +2667,7 @@
"integrity": "sha512-tk/RVzCxs+KPSJ+qH2Xlr9RYxcdrSNulDKk5sBCQR0A9nwOffa15SGreSMKWgq+gYOVYChHBg/WxLWLq3d7Rlg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2576,6 +2678,7 @@
"integrity": "sha512-nz+snpjPFE+ftH5R/ekgZYy9ofGAf51yQYjWCtBwkrQ6D1dIBYA6kynZFdqIefrRwJJ5zHpe25BcS/AyRPc/9Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-button": "1.15.0",
@@ -2590,6 +2693,7 @@
"integrity": "sha512-fd5d0DU/x2+u15rP0wrjw29M0oqsDFmnAfbPEdgQoPV+hvq9/SLhxJtzx10ZSNXoyuO9sTK50Q7nYsqOvGCzqg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-toast-notification": "1.15.0"
@@ -2601,6 +2705,7 @@
"integrity": "sha512-uf/e/dVN6kqX76vcawiQM3w1nMHa8A+ZTtNwxtmAZi8bNPwjXLNaqKfeSp2thTByCIzFz7imnft56QtYLbksOA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-css": "1.15.0"
@@ -2612,6 +2717,7 @@
"integrity": "sha512-WLooENcxuAobbXxN1W2uKGh/cN9k0f3cRmDDtCZdgjeheGlBYWatkc5HQte7zchXHUi0xTrsvBCBa9CsLKN/3Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0",
"@umbraco-ui/uui-boolean-input": "1.15.0"
@@ -2623,6 +2729,7 @@
"integrity": "sha512-vn3dbpYGekAqG944Vkwd0ILQRtTaZtL1BVdsge2UsU8sOsEKwv5YzQal4b+o8yu8nb4vZbWHZ2zRmnpnPgPmjg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@umbraco-ui/uui-base": "1.15.0"
}
@@ -2848,7 +2955,8 @@
"resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
"integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/commander": {
"version": "13.0.0",
@@ -2892,7 +3000,8 @@
"resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
"integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/default-browser": {
"version": "5.2.1",
@@ -3007,6 +3116,7 @@
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"engines": {
"node": ">=0.12"
},
@@ -3071,6 +3181,7 @@
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=10"
},
@@ -3282,6 +3393,7 @@
"integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"uc.micro": "^2.0.0"
}
@@ -3291,7 +3403,8 @@
"resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.2.tgz",
"integrity": "sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/lit": {
"version": "3.3.1",
@@ -3312,6 +3425,7 @@
"integrity": "sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw==",
"dev": true,
"license": "BSD-3-Clause",
+ "peer": true,
"dependencies": {
"@lit-labs/ssr-dom-shim": "^1.4.0",
"@lit/reactive-element": "^2.1.0",
@@ -3324,6 +3438,7 @@
"integrity": "sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==",
"dev": true,
"license": "BSD-3-Clause",
+ "peer": true,
"dependencies": {
"@types/trusted-types": "^2.0.2"
}
@@ -3341,6 +3456,7 @@
"integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"argparse": "^2.0.1",
"entities": "^4.4.0",
@@ -3372,7 +3488,8 @@
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
"integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/minimist": {
"version": "1.2.8",
@@ -3532,7 +3649,8 @@
"resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz",
"integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/outvariant": {
"version": "1.4.3",
@@ -3575,7 +3693,6 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=12"
},
@@ -3630,6 +3747,7 @@
"integrity": "sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-transform": "^1.0.0"
}
@@ -3640,6 +3758,7 @@
"integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-state": "^1.0.0"
}
@@ -3650,6 +3769,7 @@
"integrity": "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-model": "^1.0.0",
"prosemirror-state": "^1.0.0",
@@ -3662,6 +3782,7 @@
"integrity": "sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-state": "^1.0.0",
"prosemirror-transform": "^1.1.0",
@@ -3674,6 +3795,7 @@
"integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-keymap": "^1.0.0",
"prosemirror-model": "^1.0.0",
@@ -3687,6 +3809,7 @@
"integrity": "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-state": "^1.2.2",
"prosemirror-transform": "^1.0.0",
@@ -3700,6 +3823,7 @@
"integrity": "sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-state": "^1.0.0",
"prosemirror-transform": "^1.0.0"
@@ -3711,6 +3835,7 @@
"integrity": "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-state": "^1.0.0",
"w3c-keyname": "^2.2.0"
@@ -3722,6 +3847,7 @@
"integrity": "sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/markdown-it": "^14.0.0",
"markdown-it": "^14.0.0",
@@ -3734,6 +3860,7 @@
"integrity": "sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"crelt": "^1.0.0",
"prosemirror-commands": "^1.0.0",
@@ -3758,6 +3885,7 @@
"integrity": "sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-model": "^1.25.0"
}
@@ -3768,6 +3896,7 @@
"integrity": "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-model": "^1.0.0",
"prosemirror-state": "^1.0.0",
@@ -3793,6 +3922,7 @@
"integrity": "sha512-eRQ97Bf+i9Eby99QbyAiyov43iOKgWa7QCGly+lrDt7efZ1v8NWolhXiB43hSDGIXT1UXgbs4KJN3a06FGpr1Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-keymap": "^1.2.2",
"prosemirror-model": "^1.25.0",
@@ -3807,6 +3937,7 @@
"integrity": "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@remirror/core-constants": "3.0.0",
"escape-string-regexp": "^4.0.0"
@@ -3823,6 +3954,7 @@
"integrity": "sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-model": "^1.21.0"
}
@@ -3846,6 +3978,7 @@
"integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=6"
}
@@ -3937,7 +4070,8 @@
"resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz",
"integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/run-applescript": {
"version": "7.0.0",
@@ -4116,7 +4250,8 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"dev": true,
- "license": "0BSD"
+ "license": "0BSD",
+ "peer": true
},
"node_modules/type-fest": {
"version": "4.34.1",
@@ -4137,7 +4272,6 @@
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -4151,7 +4285,8 @@
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
"integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/uglify-js": {
"version": "3.19.3",
@@ -4193,9 +4328,9 @@
}
},
"node_modules/vite": {
- "version": "7.1.11",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz",
- "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.0.tgz",
+ "integrity": "sha512-C/Naxf8H0pBx1PA4BdpT+c/5wdqI9ILMdwjSMILw7tVIh3JsxzZqdeTLmmdaoh5MYUEOyBnM9K3o0DzoZ/fe+w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4272,7 +4407,8 @@
"resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
"integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/wordwrap": {
"version": "1.0.0",
diff --git a/src/Umbraco.Web.UI.Login/package.json b/src/Umbraco.Web.UI.Login/package.json
index c0f863dc50f8..47809d0d1496 100644
--- a/src/Umbraco.Web.UI.Login/package.json
+++ b/src/Umbraco.Web.UI.Login/package.json
@@ -1,28 +1,28 @@
{
- "name": "login",
- "private": true,
- "type": "module",
- "scripts": {
- "dev": "vite",
- "build": "tsc && vite build",
- "watch": "tsc && vite build --watch",
- "preview": "vite preview",
- "generate:server-api": "openapi-ts"
- },
- "engines": {
- "node": ">=22",
- "npm": ">=10.9"
- },
- "devDependencies": {
- "@hey-api/openapi-ts": "^0.85.0",
- "@umbraco-cms/backoffice": "^16.2.0",
- "msw": "^2.11.3",
- "typescript": "^5.9.3",
- "vite": "^7.1.11"
- },
- "msw": {
- "workerDirectory": [
- "public"
- ]
- }
+ "name": "login",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "watch": "tsc && vite build --watch",
+ "preview": "vite preview",
+ "generate:server-api": "openapi-ts"
+ },
+ "engines": {
+ "node": ">=22",
+ "npm": ">=10.9"
+ },
+ "devDependencies": {
+ "@hey-api/openapi-ts": "^0.85.0",
+ "@umbraco-cms/backoffice": "^16.2.0",
+ "msw": "^2.11.3",
+ "typescript": "^5.9.3",
+ "vite": "^7.2.0"
+ },
+ "msw": {
+ "workerDirectory": [
+ "public"
+ ]
+ }
}
diff --git a/src/Umbraco.Web.UI.Login/public/closedEye.svg b/src/Umbraco.Web.UI.Login/src/assets/eye-closed.svg
similarity index 100%
rename from src/Umbraco.Web.UI.Login/public/closedEye.svg
rename to src/Umbraco.Web.UI.Login/src/assets/eye-closed.svg
diff --git a/src/Umbraco.Web.UI.Login/public/openEye.svg b/src/Umbraco.Web.UI.Login/src/assets/eye-open.svg
similarity index 100%
rename from src/Umbraco.Web.UI.Login/public/openEye.svg
rename to src/Umbraco.Web.UI.Login/src/assets/eye-open.svg
diff --git a/src/Umbraco.Web.UI.Login/src/auth-styles.css b/src/Umbraco.Web.UI.Login/src/auth-styles.css
index 9ea9111fc88a..76c38bc09112 100644
--- a/src/Umbraco.Web.UI.Login/src/auth-styles.css
+++ b/src/Umbraco.Web.UI.Login/src/auth-styles.css
@@ -1,4 +1,19 @@
-#umb-login-form #username-input {
+.errormessage {
+ color: var(--uui-color-invalid-standalone);
+ display: none;
+ margin-top: var(--uui-size-1);
+}
+
+.errormessage.active {
+ display: block;
+}
+
+uui-form-layout-item {
+ margin-top: var(--uui-size-space-4);
+ margin-bottom: var(--uui-size-space-4);
+}
+
+#username-input {
width: 100%;
height: var(--input-height);
box-sizing: border-box;
@@ -9,21 +24,16 @@
padding: var(--uui-size-1, 3px) var(--uui-size-space-4, 9px);
}
-#umb-login-form uui-form-layout-item {
- margin-top: var(--uui-size-space-4);
- margin-bottom: var(--uui-size-space-4);
-}
-
-#umb-login-form #username-input:focus-within {
+#username-input:focus-within {
border-color: var(--uui-input-border-color-focus, var(--uui-color-border-emphasis, #a1a1a1));
outline: calc(2px * var(--uui-show-focus-outline, 1)) solid var(--uui-color-focus);
}
-#umb-login-form #username-input:hover:not(:focus-within) {
+#username-input:hover:not(:focus-within) {
border-color: var(--uui-input-border-color-hover, var(--uui-color-border-standalone, #c2c2c2));
}
-#umb-login-form #password-input-span button {
+#password-show-toggle {
color: var(--uui-color-default-standalone);
display: inline-flex;
justify-content: center;
@@ -39,12 +49,12 @@
transition-timing-function: linear;
}
-#umb-login-form #password-input-span button:hover {
+#password-show-toggle:hover {
color: var(--uui-color-default-emphasis);
cursor: pointer;
}
-#umb-login-form #password-input-span {
+#password-input-span {
display: inline-flex;
width: 100%;
align-items: center;
@@ -60,7 +70,7 @@
padding: var(--uui-size-1, 3px) var(--uui-size-space-4, 9px);
}
-#umb-login-form #password-input-span input {
+#password-input {
flex-grow: 1;
align-self: stretch;
min-width: 0;
@@ -70,15 +80,15 @@
outline-style: none;
}
-#umb-login-form #password-input-span:focus-within {
+#password-input-span:focus-within {
border-color: var(--uui-input-border-color-focus, var(--uui-color-border-emphasis, #a1a1a1));
outline: calc(2px * var(--uui-show-focus-outline, 1)) solid var(--uui-color-focus);
}
-#umb-login-form #password-input-span:hover:not(:focus-within) {
+#password-input-span:hover:not(:focus-within) {
border-color: var(--uui-input-border-color-hover, var(--uui-color-border-standalone, #c2c2c2));
}
-#umb-login-form input::-ms-reveal {
+#password-input::-ms-reveal {
display: none;
}
diff --git a/src/Umbraco.Web.UI.Login/src/auth.element.ts b/src/Umbraco.Web.UI.Login/src/auth.element.ts
index d574ef460186..a3ba757cb025 100644
--- a/src/Umbraco.Web.UI.Login/src/auth.element.ts
+++ b/src/Umbraco.Web.UI.Login/src/auth.element.ts
@@ -3,15 +3,15 @@ import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import type { InputType, UUIFormLayoutItemElement } from '@umbraco-cms/backoffice/external/uui';
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
-import { UMB_AUTH_CONTEXT, UmbAuthContext } from './contexts';
-import { UmbSlimBackofficeController } from './controllers';
+import { UMB_AUTH_CONTEXT, UmbAuthContext } from './contexts/index.js';
+import { UmbSlimBackofficeController } from './controllers/index.js';
// We import the authStyles here so that we can inline it in the shadow DOM that is created outside of the UmbAuthElement.
import authStyles from './auth-styles.css?inline';
// Import the SVG files
-import openEyeSVG from '../public/openEye.svg?raw';
-import closedEyeSVG from '../public/closedEye.svg?raw';
+import svgEyeOpen from './assets/eye-open.svg?raw';
+import svgEyeClosed from './assets/eye-closed.svg?raw';
// Import the main bundle
import { extensions } from './umbraco-package.js';
@@ -21,6 +21,7 @@ const createInput = (opts: {
type: InputType;
name: string;
autocomplete: AutoFill;
+ errorId: string;
inputmode: string;
autofocus?: boolean;
}) => {
@@ -31,7 +32,10 @@ const createInput = (opts: {
input.id = opts.id;
input.required = true;
input.inputMode = opts.inputmode;
+ input.setAttribute('aria-errormessage', opts.errorId);
input.autofocus = opts.autofocus || false;
+ input.className = 'input';
+
return input;
};
@@ -46,6 +50,14 @@ const createLabel = (opts: { forId: string; localizeAlias: string; localizeFallb
return label;
};
+const createValidationMessage = (errorId: string) => {
+ const validationElement = document.createElement('div');
+ validationElement.className = 'errormessage';
+ validationElement.id = errorId;
+ validationElement.role = 'alert';
+ return validationElement;
+};
+
const createShowPasswordToggleButton = (opts: {
id: string;
name: string;
@@ -58,7 +70,7 @@ const createShowPasswordToggleButton = (opts: {
button.name = opts.name;
button.type = 'button';
- button.innerHTML = openEyeSVG;
+ button.innerHTML = svgEyeOpen;
button.onclick = () => {
const passwordInput = document.getElementById('password-input') as HTMLInputElement;
@@ -66,11 +78,11 @@ const createShowPasswordToggleButton = (opts: {
if (passwordInput.type === 'password') {
passwordInput.type = 'text';
button.ariaLabel = opts.ariaLabelHidePassword;
- button.innerHTML = closedEyeSVG;
+ button.innerHTML = svgEyeClosed;
} else {
passwordInput.type = 'password';
button.ariaLabel = opts.ariaLabelShowPassword;
- button.innerHTML = openEyeSVG;
+ button.innerHTML = svgEyeOpen;
}
passwordInput.focus();
@@ -87,44 +99,67 @@ const createShowPasswordToggleItem = (button: HTMLButtonElement) => {
return span;
};
-const createFormLayoutItem = (label: HTMLLabelElement, input: HTMLInputElement) => {
+const createFormLayoutItem = (label: HTMLLabelElement, input: HTMLInputElement, localizationKey: string) => {
const formLayoutItem = document.createElement('uui-form-layout-item') as UUIFormLayoutItemElement;
+ const errorId = input.getAttribute('aria-errormessage') || input.id + '-error';
formLayoutItem.appendChild(label);
formLayoutItem.appendChild(input);
+ const validationMessage = createValidationMessage(errorId);
+ formLayoutItem.appendChild(validationMessage);
+
+ // Bind validation
+ input.oninput = () => validateInput(input, validationMessage, localizationKey);
+ input.onblur = () => validateInput(input, validationMessage, localizationKey);
+
return formLayoutItem;
};
const createFormLayoutPasswordItem = (
label: HTMLLabelElement,
input: HTMLInputElement,
- showPasswordToggle: HTMLSpanElement
+ showPasswordToggle: HTMLSpanElement,
+ requiredMessageKey: string
) => {
const formLayoutItem = document.createElement('uui-form-layout-item') as UUIFormLayoutItemElement;
+ const errorId = input.getAttribute('aria-errormessage') || input.id + '-error';
formLayoutItem.appendChild(label);
+
const span = document.createElement('span');
span.id = 'password-input-span';
span.appendChild(input);
span.appendChild(showPasswordToggle);
formLayoutItem.appendChild(span);
- return formLayoutItem;
-};
+ const validationMessage = createValidationMessage(errorId);
+ formLayoutItem.appendChild(validationMessage);
-const createForm = (elements: HTMLElement[]) => {
- const styles = document.createElement('style');
- styles.innerHTML = authStyles;
- const form = document.createElement('form');
- form.id = 'umb-login-form';
- form.name = 'login-form';
- form.spellcheck = false;
+ // Bind validation
+ input.oninput = () => validateInput(input, validationMessage, requiredMessageKey);
+ input.onblur = () => validateInput(input, validationMessage, requiredMessageKey);
- elements.push(styles);
- elements.forEach((element) => form.appendChild(element));
+ return formLayoutItem;
+};
- return form;
+const validateInput = (input: HTMLInputElement, validationElement: HTMLElement, requiredMessage = '') => {
+ validationElement.innerHTML = '';
+ if (input.validity.valid) {
+ input.removeAttribute('aria-invalid');
+ validationElement.classList.remove('active');
+ validationElement.ariaLive = 'off';
+ } else {
+ input.setAttribute('aria-invalid', 'true');
+
+ const localizeElement = document.createElement('umb-localize');
+ localizeElement.innerHTML = input.validationMessage;
+ localizeElement.key = requiredMessage;
+ validationElement.appendChild(localizeElement);
+
+ validationElement.classList.add('active');
+ validationElement.ariaLive = 'assertive';
+ }
};
@customElement('umb-auth')
@@ -168,16 +203,6 @@ export default class UmbAuthElement extends UmbLitElement {
*/
protected flow?: 'mfa' | 'reset-password' | 'invite-user';
- _form?: HTMLFormElement;
- _usernameLayoutItem?: UUIFormLayoutItemElement;
- _passwordLayoutItem?: UUIFormLayoutItemElement;
- _usernameInput?: HTMLInputElement;
- _passwordInput?: HTMLInputElement;
- _usernameLabel?: HTMLLabelElement;
- _passwordLabel?: HTMLLabelElement;
- _passwordShowPasswordToggleItem?: HTMLSpanElement;
- _passwordShowPasswordToggleButton?: HTMLButtonElement;
-
#authContext = new UmbAuthContext(this, UMB_AUTH_CONTEXT);
constructor() {
@@ -186,6 +211,16 @@ export default class UmbAuthElement extends UmbLitElement {
(this as unknown as EventTarget).addEventListener('umb-login-flow', (e) => {
if (e instanceof CustomEvent) {
this.flow = e.detail.flow || undefined;
+ if (typeof e.detail.status !== 'undefined') {
+ const searchParams = new URLSearchParams(window.location.search);
+ if (e.detail.status === null) {
+ searchParams.delete('status');
+ } else {
+ searchParams.set('status', e.detail.status);
+ }
+ const newRelativePathQuery = window.location.pathname + '?' + searchParams.toString();
+ window.history.pushState(null, '', newRelativePathQuery);
+ }
}
this.requestUpdate();
});
@@ -229,18 +264,6 @@ export default class UmbAuthElement extends UmbLitElement {
});
}
- disconnectedCallback() {
- super.disconnectedCallback();
- this._usernameLayoutItem?.remove();
- this._passwordLayoutItem?.remove();
- this._usernameLabel?.remove();
- this._usernameInput?.remove();
- this._passwordLabel?.remove();
- this._passwordInput?.remove();
- this._passwordShowPasswordToggleItem?.remove();
- this._passwordShowPasswordToggleButton?.remove();
- }
-
/**
* Creates the login form and adds it to the DOM in the default slot.
* This is done to avoid having to deal with the shadow DOM, which is not supported in Google Chrome for autocomplete/autofill.
@@ -249,48 +272,65 @@ export default class UmbAuthElement extends UmbLitElement {
* @private
*/
#initializeForm() {
- this._usernameInput = createInput({
+ const usernameInput = createInput({
id: 'username-input',
type: 'text',
name: 'username',
autocomplete: 'username',
+ errorId: 'username-input-error',
inputmode: this.usernameIsEmail ? 'email' : '',
autofocus: true,
});
- this._passwordInput = createInput({
+ const passwordInput = createInput({
id: 'password-input',
type: 'password',
name: 'password',
autocomplete: 'current-password',
+ errorId: 'password-input-error',
inputmode: '',
});
- this._passwordShowPasswordToggleButton = createShowPasswordToggleButton({
+ const passwordShowPasswordToggleButton = createShowPasswordToggleButton({
id: 'password-show-toggle',
name: 'password-show-toggle',
ariaLabelShowPassword: this.localize.term('auth_showPassword'),
ariaLabelHidePassword: this.localize.term('auth_hidePassword'),
});
- this._passwordShowPasswordToggleItem = createShowPasswordToggleItem(this._passwordShowPasswordToggleButton);
- this._usernameLabel = createLabel({
+ const passwordShowPasswordToggleItem = createShowPasswordToggleItem(passwordShowPasswordToggleButton);
+ const usernameLabel = createLabel({
forId: 'username-input',
localizeAlias: this.usernameIsEmail ? 'auth_email' : 'auth_username',
localizeFallback: this.usernameIsEmail ? 'Email' : 'Username',
});
- this._passwordLabel = createLabel({
+ const passwordLabel = createLabel({
forId: 'password-input',
localizeAlias: 'auth_password',
localizeFallback: 'Password',
});
- this._usernameLayoutItem = createFormLayoutItem(this._usernameLabel, this._usernameInput);
- this._passwordLayoutItem = createFormLayoutPasswordItem(
- this._passwordLabel,
- this._passwordInput,
- this._passwordShowPasswordToggleItem
+ const usernameLayoutItem = createFormLayoutItem(
+ usernameLabel,
+ usernameInput,
+ this.usernameIsEmail ? 'auth_requiredEmailValidationMessage' : 'auth_requiredUsernameValidationMessage'
);
+ const passwordLayoutItem = createFormLayoutPasswordItem(
+ passwordLabel,
+ passwordInput,
+ passwordShowPasswordToggleItem,
+ 'auth_requiredPasswordValidationMessage'
+ );
+ const style = document.createElement('style');
+ style.innerHTML = authStyles;
+ document.head.appendChild(style);
+
+ const form = document.createElement('form');
+ form.id = 'umb-login-form';
+ form.name = 'login-form';
+ form.spellcheck = false;
+ form.setAttribute('novalidate', '');
- this._form = createForm([this._usernameLayoutItem, this._passwordLayoutItem]);
+ form.appendChild(usernameLayoutItem);
+ form.appendChild(passwordLayoutItem);
- this.insertAdjacentElement('beforeend', this._form);
+ this.insertAdjacentElement('beforeend', form);
}
render() {
@@ -347,12 +387,11 @@ export default class UmbAuthElement extends UmbLitElement {
return html`
-
-