diff --git a/README.md b/README.md
index f4e2dbffb..76f82ba16 100644
--- a/README.md
+++ b/README.md
@@ -147,7 +147,7 @@ Adding a new dependency should have vital value on the product with minimum poss
│ │ │ │ ├── _create.svelte // Component to Create collections
│ │ │ │ └── index.svelte // Entrypoint for "/console/[PROJECT_ID]/database"
│ │ │ ├── storage // Storage Service "/console/[PROJECT]/storage"
-│ │ │ └── users // Users Service "/console/[PROJECT]/users"
+│ │ │ └── authentication // Users Service "/console/[PROJECT]/authentication"
│ │ └──...
│ ├── login.svelte // Component for Login "/console/login"
│ └── register.svelte // Component for Register "/console/register"
diff --git a/package-lock.json b/package-lock.json
index 292b89de5..7d3cfe055 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,8 +9,8 @@
"version": "0.0.1",
"dependencies": {
"@aw-labs/appwrite-console": "^1.0.0-0",
- "@aw-labs/icons": "0.0.0-37",
- "@aw-labs/ui": "0.0.0-37",
+ "@aw-labs/icons": "0.0.0-44",
+ "@aw-labs/ui": "0.0.0-44",
"echarts": "^5.3.3",
"tippy.js": "^6.3.7"
},
@@ -70,14 +70,14 @@
}
},
"node_modules/@aw-labs/icons": {
- "version": "0.0.0-37",
- "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-37.tgz",
- "integrity": "sha512-4II+SFnVlDWuFwlzU2pMAy5y9Bq09bOEP1mEknZ+0BlPhDlvks742N5m0cNjlTQFCZwa/Y5YxzLNXgVszFqEfA=="
+ "version": "0.0.0-44",
+ "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-44.tgz",
+ "integrity": "sha512-nZ/YfsgFR5EYItnHKSoMmCMMeQPOUoGCsIgtcKW8iEhMjoZK8PxU8qnoLnAZOJONDSY484G9j7/yofdeXTfL8Q=="
},
"node_modules/@aw-labs/ui": {
- "version": "0.0.0-37",
- "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-37.tgz",
- "integrity": "sha512-OxAM0ZDedo6yipN3I5CcHt1Jbc7v3vZk9k+hAVWc7F6OPF5JJ7R3ZadVvyl4fxEMo2ooK+jbbkeG62/PxgwEWw==",
+ "version": "0.0.0-44",
+ "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-44.tgz",
+ "integrity": "sha512-po8t4/8XUMCJZCwvv6hB6HmHEQQBPDqHEoJLeimZrR+HQam8bbPJ1a7jAj/JfH6mHFiE3qk0nM4PHTnHbYo4QA==",
"dependencies": {
"@aw-labs/icons": "*"
}
@@ -3126,118 +3126,6 @@
"esbuild-windows-arm64": "0.14.49"
}
},
- "node_modules/esbuild-android-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz",
- "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-android-arm64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz",
- "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-darwin-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz",
- "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-darwin-arm64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz",
- "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-freebsd-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz",
- "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-freebsd-arm64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz",
- "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-32": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz",
- "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/esbuild-linux-64": {
"version": "0.14.49",
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz",
@@ -3254,198 +3142,6 @@
"node": ">=12"
}
},
- "node_modules/esbuild-linux-arm": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz",
- "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-arm64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz",
- "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-mips64le": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz",
- "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-ppc64le": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz",
- "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-riscv64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz",
- "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-linux-s390x": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz",
- "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-netbsd-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz",
- "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-openbsd-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz",
- "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-sunos-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz",
- "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-32": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz",
- "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz",
- "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/esbuild-windows-arm64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz",
- "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -4039,20 +3735,6 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -8078,14 +7760,14 @@
}
},
"@aw-labs/icons": {
- "version": "0.0.0-37",
- "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-37.tgz",
- "integrity": "sha512-4II+SFnVlDWuFwlzU2pMAy5y9Bq09bOEP1mEknZ+0BlPhDlvks742N5m0cNjlTQFCZwa/Y5YxzLNXgVszFqEfA=="
+ "version": "0.0.0-44",
+ "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-44.tgz",
+ "integrity": "sha512-nZ/YfsgFR5EYItnHKSoMmCMMeQPOUoGCsIgtcKW8iEhMjoZK8PxU8qnoLnAZOJONDSY484G9j7/yofdeXTfL8Q=="
},
"@aw-labs/ui": {
- "version": "0.0.0-37",
- "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-37.tgz",
- "integrity": "sha512-OxAM0ZDedo6yipN3I5CcHt1Jbc7v3vZk9k+hAVWc7F6OPF5JJ7R3ZadVvyl4fxEMo2ooK+jbbkeG62/PxgwEWw==",
+ "version": "0.0.0-44",
+ "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-44.tgz",
+ "integrity": "sha512-po8t4/8XUMCJZCwvv6hB6HmHEQQBPDqHEoJLeimZrR+HQam8bbPJ1a7jAj/JfH6mHFiE3qk0nM4PHTnHbYo4QA==",
"requires": {
"@aw-labs/icons": "*"
}
@@ -10485,55 +10167,6 @@
"esbuild-windows-arm64": "0.14.49"
}
},
- "esbuild-android-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz",
- "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==",
- "dev": true,
- "optional": true
- },
- "esbuild-android-arm64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz",
- "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==",
- "dev": true,
- "optional": true
- },
- "esbuild-darwin-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz",
- "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==",
- "dev": true,
- "optional": true
- },
- "esbuild-darwin-arm64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz",
- "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==",
- "dev": true,
- "optional": true
- },
- "esbuild-freebsd-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz",
- "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==",
- "dev": true,
- "optional": true
- },
- "esbuild-freebsd-arm64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz",
- "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-32": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz",
- "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==",
- "dev": true,
- "optional": true
- },
"esbuild-linux-64": {
"version": "0.14.49",
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz",
@@ -10541,90 +10174,6 @@
"dev": true,
"optional": true
},
- "esbuild-linux-arm": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz",
- "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-arm64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz",
- "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-mips64le": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz",
- "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-ppc64le": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz",
- "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-riscv64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz",
- "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==",
- "dev": true,
- "optional": true
- },
- "esbuild-linux-s390x": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz",
- "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==",
- "dev": true,
- "optional": true
- },
- "esbuild-netbsd-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz",
- "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==",
- "dev": true,
- "optional": true
- },
- "esbuild-openbsd-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz",
- "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==",
- "dev": true,
- "optional": true
- },
- "esbuild-sunos-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz",
- "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==",
- "dev": true,
- "optional": true
- },
- "esbuild-windows-32": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz",
- "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==",
- "dev": true,
- "optional": true
- },
- "esbuild-windows-64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz",
- "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==",
- "dev": true,
- "optional": true
- },
- "esbuild-windows-arm64": {
- "version": "0.14.49",
- "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz",
- "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==",
- "dev": true,
- "optional": true
- },
"escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -11088,13 +10637,6 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
diff --git a/package.json b/package.json
index 7bdab3bea..2ed5cac14 100644
--- a/package.json
+++ b/package.json
@@ -20,8 +20,8 @@
},
"dependencies": {
"@aw-labs/appwrite-console": "^1.0.0-0",
- "@aw-labs/icons": "0.0.0-37",
- "@aw-labs/ui": "0.0.0-37",
+ "@aw-labs/icons": "0.0.0-44",
+ "@aw-labs/ui": "0.0.0-44",
"echarts": "^5.3.3",
"tippy.js": "^6.3.7"
},
diff --git a/src/lib/components/copyInput.svelte b/src/lib/components/copyInput.svelte
index 5c2488067..507d69fcc 100644
--- a/src/lib/components/copyInput.svelte
+++ b/src/lib/components/copyInput.svelte
@@ -21,7 +21,7 @@
-
+
diff --git a/src/lib/layout/shell.svelte b/src/lib/layout/shell.svelte
index 97ca79d1d..111165f91 100644
--- a/src/lib/layout/shell.svelte
+++ b/src/lib/layout/shell.svelte
@@ -78,12 +78,12 @@
- {#if $backButton}
-
-
-
- {/if}
+ {#if $backButton}
+
+
+
+ {/if}
{$title}
{#if $copyData?.value}
diff --git a/src/lib/stores/auth-methods.ts b/src/lib/stores/auth-methods.ts
index 82b7ecb6d..2f8d50f13 100644
--- a/src/lib/stores/auth-methods.ts
+++ b/src/lib/stores/auth-methods.ts
@@ -1,14 +1,25 @@
import { writable } from 'svelte/store';
import type { Models } from '@aw-labs/appwrite-console';
+export type AuthMethod = {
+ label: string;
+ method: string;
+ value: boolean | null;
+};
+
function createAuthMethods() {
const { subscribe, set } = writable({
list: [
{
- label: 'Password',
+ label: 'Email/Password',
method: 'email-password',
value: null
},
+ {
+ label: 'Phone',
+ method: 'phone',
+ value: null
+ },
{
label: 'Magic URL',
method: 'magic-url',
@@ -28,11 +39,6 @@ function createAuthMethods() {
label: 'JWT',
method: 'jwt',
value: null
- },
- {
- label: 'Phone',
- method: 'phone',
- value: null
}
]
});
@@ -43,10 +49,15 @@ function createAuthMethods() {
load: (project: Models.Project) => {
const list = [
{
- label: 'Password',
+ label: 'Email/Password',
method: 'email-password',
value: project.authEmailPassword
},
+ {
+ label: 'Phone',
+ method: 'phone',
+ value: project.authPhone
+ },
{
label: 'Magic URL',
method: 'magic-url',
@@ -66,11 +77,6 @@ function createAuthMethods() {
label: 'JWT',
method: 'jwt',
value: project.authJWT
- },
- {
- label: 'Phone',
- method: 'phone',
- value: project.authPhone
}
];
set({ list });
diff --git a/src/lib/stores/layout.ts b/src/lib/stores/layout.ts
index 1e4f55518..43c374ed5 100644
--- a/src/lib/stores/layout.ts
+++ b/src/lib/stores/layout.ts
@@ -1,5 +1,5 @@
import { project } from '../../routes/console/[project]/store';
-import { get, writable } from 'svelte/store';
+import { get, readable, writable } from 'svelte/store';
export type Tab = {
href: string;
@@ -64,3 +64,5 @@ export function updateLayout(args: updateLayoutArguments) {
}
}
}
+
+export const pageLimit = readable(12); // default page limit
diff --git a/src/lib/stores/notifications.ts b/src/lib/stores/notifications.ts
index 0642824df..397b578e4 100644
--- a/src/lib/stores/notifications.ts
+++ b/src/lib/stores/notifications.ts
@@ -32,7 +32,13 @@ export const addNotification = (notification: Omit) => {
};
const n = { ...defaults, ...notification };
- notifications.update((all) => [n, ...all]);
+ notifications.update((all) => {
+ if (all.length < 3) {
+ return [n, ...all];
+ } else {
+ return [n, ...all.slice(0, 2)];
+ }
+ });
if (n.timeout) setTimeout(() => dismissNotification(n.id), n.timeout);
};
diff --git a/src/lib/stores/oauth-providers.ts b/src/lib/stores/oauth-providers.ts
index 45512bc7c..68baf0ff4 100644
--- a/src/lib/stores/oauth-providers.ts
+++ b/src/lib/stores/oauth-providers.ts
@@ -1,11 +1,11 @@
import { writable } from 'svelte/store';
import type { Models } from '@aw-labs/appwrite-console';
import type { SvelteComponent } from 'svelte';
-import Apple from '../../routes/console/[project]/users/_appleOAuth.svelte';
-import Microsoft from '../../routes/console/[project]/users/_microsoftOAuth.svelte';
-import Okta from '../../routes/console/[project]/users/_oktaOAuth.svelte';
-import Auth0 from '../../routes/console/[project]/users/_auth0OAuth.svelte';
-import Main from '../../routes/console/[project]/users/_mainOAuth.svelte';
+import Apple from '../../routes/console/[project]/authentication/_appleOAuth.svelte';
+import Microsoft from '../../routes/console/[project]/authentication/_microsoftOAuth.svelte';
+import Okta from '../../routes/console/[project]/authentication/_oktaOAuth.svelte';
+import Auth0 from '../../routes/console/[project]/authentication/_auth0OAuth.svelte';
+import Main from '../../routes/console/[project]/authentication/_mainOAuth.svelte';
export type Provider = {
name: string;
diff --git a/src/routes/console/[project]/users/__layout.svelte b/src/routes/console/[project]/authentication/__layout.svelte
similarity index 84%
rename from src/routes/console/[project]/users/__layout.svelte
rename to src/routes/console/[project]/authentication/__layout.svelte
index a5ccdc10f..16b0c10d1 100644
--- a/src/routes/console/[project]/users/__layout.svelte
+++ b/src/routes/console/[project]/authentication/__layout.svelte
@@ -3,7 +3,7 @@
import { updateLayout } from '$lib/stores/layout';
import { onMount } from 'svelte';
- const path = 'users';
+ const path = 'authentication';
onMount(handle);
afterNavigate(handle);
@@ -13,10 +13,10 @@
function handle(event = null) {
updateLayout({
navigate: event,
- title: 'Users',
+ title: 'Authentication',
level: 3,
breadcrumbs: {
- title: 'Users',
+ title: 'Authentication',
href: path
},
tabs: [
@@ -28,10 +28,6 @@
href: `${path}/teams`,
title: 'Teams'
},
- {
- href: `${path}/authentication`,
- title: 'Authentication'
- },
{
href: `${path}/usage`,
title: 'Usage'
@@ -39,6 +35,10 @@
{
href: `${path}/security`,
title: 'Security'
+ },
+ {
+ href: `${path}/settings`,
+ title: 'Settings'
}
]
});
diff --git a/src/routes/console/[project]/users/_appleOAuth.svelte b/src/routes/console/[project]/authentication/_appleOAuth.svelte
similarity index 93%
rename from src/routes/console/[project]/users/_appleOAuth.svelte
rename to src/routes/console/[project]/authentication/_appleOAuth.svelte
index 157ce1900..f7e18291b 100644
--- a/src/routes/console/[project]/users/_appleOAuth.svelte
+++ b/src/routes/console/[project]/authentication/_appleOAuth.svelte
@@ -29,6 +29,12 @@
secret
);
showModal = false;
+ addNotification({
+ type: 'success',
+ message: `${provider.name} authentication has been ${
+ provider.active ? 'enabled' : 'disabled'
+ }`
+ });
} catch (error) {
addNotification({
type: 'error',
diff --git a/src/routes/console/[project]/users/_auth0OAuth.svelte b/src/routes/console/[project]/authentication/_auth0OAuth.svelte
similarity index 93%
rename from src/routes/console/[project]/users/_auth0OAuth.svelte
rename to src/routes/console/[project]/authentication/_auth0OAuth.svelte
index ee16907db..7baa58b4d 100644
--- a/src/routes/console/[project]/users/_auth0OAuth.svelte
+++ b/src/routes/console/[project]/authentication/_auth0OAuth.svelte
@@ -29,6 +29,12 @@
secret
);
showModal = false;
+ addNotification({
+ type: 'success',
+ message: `${provider.name} authentication has been ${
+ provider.active ? 'enabled' : 'disabled'
+ }`
+ });
} catch (error) {
addNotification({
type: 'error',
diff --git a/src/routes/console/[project]/users/_createTeam.svelte b/src/routes/console/[project]/authentication/_createTeam.svelte
similarity index 100%
rename from src/routes/console/[project]/users/_createTeam.svelte
rename to src/routes/console/[project]/authentication/_createTeam.svelte
diff --git a/src/routes/console/[project]/users/_createUser.svelte b/src/routes/console/[project]/authentication/_createUser.svelte
similarity index 100%
rename from src/routes/console/[project]/users/_createUser.svelte
rename to src/routes/console/[project]/authentication/_createUser.svelte
diff --git a/src/routes/console/[project]/users/_mainOAuth.svelte b/src/routes/console/[project]/authentication/_mainOAuth.svelte
similarity index 92%
rename from src/routes/console/[project]/users/_mainOAuth.svelte
rename to src/routes/console/[project]/authentication/_mainOAuth.svelte
index 85677ab84..f874c8198 100644
--- a/src/routes/console/[project]/users/_mainOAuth.svelte
+++ b/src/routes/console/[project]/authentication/_mainOAuth.svelte
@@ -25,6 +25,12 @@
provider.secret
);
showModal = false;
+ addNotification({
+ type: 'success',
+ message: `${provider.name} authentication has been ${
+ provider.active ? 'enabled' : 'disabled'
+ }`
+ });
} catch (error) {
addNotification({
type: 'error',
diff --git a/src/routes/console/[project]/users/_microsoftOAuth.svelte b/src/routes/console/[project]/authentication/_microsoftOAuth.svelte
similarity index 93%
rename from src/routes/console/[project]/users/_microsoftOAuth.svelte
rename to src/routes/console/[project]/authentication/_microsoftOAuth.svelte
index 432e54569..fc3bff73a 100644
--- a/src/routes/console/[project]/users/_microsoftOAuth.svelte
+++ b/src/routes/console/[project]/authentication/_microsoftOAuth.svelte
@@ -29,6 +29,12 @@
);
showModal = false;
+ addNotification({
+ type: 'success',
+ message: `${provider.name} authentication has been ${
+ provider.active ? 'enabled' : 'disabled'
+ }`
+ });
} catch (error) {
addNotification({
type: 'error',
diff --git a/src/routes/console/[project]/users/_oktaOAuth.svelte b/src/routes/console/[project]/authentication/_oktaOAuth.svelte
similarity index 93%
rename from src/routes/console/[project]/users/_oktaOAuth.svelte
rename to src/routes/console/[project]/authentication/_oktaOAuth.svelte
index 32bb06db6..fb32e4b64 100644
--- a/src/routes/console/[project]/users/_oktaOAuth.svelte
+++ b/src/routes/console/[project]/authentication/_oktaOAuth.svelte
@@ -28,8 +28,13 @@
provider.id,
secret
);
-
showModal = false;
+ addNotification({
+ type: 'success',
+ message: `${provider.name} authentication has been ${
+ provider.active ? 'enabled' : 'disabled'
+ }`
+ });
} catch (error) {
addNotification({
type: 'error',
diff --git a/src/routes/console/[project]/users/index.svelte b/src/routes/console/[project]/authentication/index.svelte
similarity index 92%
rename from src/routes/console/[project]/users/index.svelte
rename to src/routes/console/[project]/authentication/index.svelte
index 61a8d0f07..db078a2c7 100644
--- a/src/routes/console/[project]/users/index.svelte
+++ b/src/routes/console/[project]/authentication/index.svelte
@@ -21,20 +21,20 @@
import { base } from '$app/paths';
import { usersList } from './store';
import type { Models } from '@aw-labs/appwrite-console';
+ import { pageLimit } from '$lib/stores/layout';
let showCreate = false;
let search = '';
let offset = 0;
- const limit = 5;
const project = $page.params.project;
const getAvatar = (name: string) => sdkForProject.avatars.getInitials(name, 32, 32).toString();
const userCreated = async (event: CustomEvent>>) => {
- await goto(`${base}/console/${project}/users/user/${event.detail.$id}`);
+ await goto(`${base}/console/${project}/authentication/user/${event.detail.$id}`);
};
$: if (search) offset = 0;
- $: usersList.load(search, limit, offset ?? 0);
+ $: usersList.load(search, $pageLimit, offset ?? 0);
@@ -63,7 +63,8 @@
{#each $usersList.users as user}
-
+
@@ -98,7 +99,7 @@
Total results: {$usersList.total}
-
+
{:else if search}
@@ -114,7 +115,7 @@
Total results: {$usersList.total}
-
+
{:else}
diff --git a/src/routes/console/[project]/users/security.svelte b/src/routes/console/[project]/authentication/security.svelte
similarity index 96%
rename from src/routes/console/[project]/users/security.svelte
rename to src/routes/console/[project]/authentication/security.svelte
index d65672589..f2467c717 100644
--- a/src/routes/console/[project]/users/security.svelte
+++ b/src/routes/console/[project]/authentication/security.svelte
@@ -135,7 +135,7 @@
- Session Length
+ Session Length - (Coming Soon)
If you reduce the limit, users who are currently logged in will be logged out of the
application.
@@ -143,8 +143,9 @@
@@ -104,7 +104,7 @@
class="u-flex u-margin-block-start-32
u-main-space-between">
Total results: {response.total}
-
+
{/await}
diff --git a/src/routes/console/[project]/users/user/[user]/store.ts b/src/routes/console/[project]/authentication/user/[user]/store.ts
similarity index 100%
rename from src/routes/console/[project]/users/user/[user]/store.ts
rename to src/routes/console/[project]/authentication/user/[user]/store.ts
diff --git a/src/routes/console/[project]/storage/bucket/[bucket]/index.svelte b/src/routes/console/[project]/storage/bucket/[bucket]/index.svelte
index d3b437560..3d8647b4e 100644
--- a/src/routes/console/[project]/storage/bucket/[bucket]/index.svelte
+++ b/src/routes/console/[project]/storage/bucket/[bucket]/index.svelte
@@ -25,6 +25,7 @@
import { uploader } from '$lib/stores/uploader';
import { addNotification } from '$lib/stores/notifications';
import { goto } from '$app/navigation';
+ import { pageLimit } from '$lib/stores/layout';
let search = '';
let showCreate = false;
@@ -33,7 +34,6 @@
let selectedFile: Models.File = null;
let offset = 0;
- const limit = 5;
const project = $page.params.project;
const bucket = $page.params.bucket;
@@ -42,20 +42,20 @@
const fileCreated = () => {
showCreate = false;
- files.load(bucket, search, limit, offset);
+ files.load(bucket, search, $pageLimit, offset);
};
const fileDeleted = (event: CustomEvent) => {
showDelete = false;
uploader.removeFile(event.detail);
- files.load(bucket, search, limit, offset);
+ files.load(bucket, search, $pageLimit, offset);
};
const deleteFile = async (file: Models.File) => {
try {
await sdkForProject.storage.deleteFile(file.bucketId, file.$id);
uploader.removeFile(file);
- files.load(bucket, search, limit, offset);
+ files.load(bucket, search, $pageLimit, offset);
} catch (error) {
addNotification({
type: 'error',
@@ -64,7 +64,7 @@
}
};
- $: files.load(bucket, search, limit, offset);
+ $: files.load(bucket, search, $pageLimit, offset);
$: if (search) offset = 0;
@@ -175,7 +175,7 @@
Total results: {$files.total}
-
+
{:else if search}
@@ -191,7 +191,7 @@
Total results: {$files?.total}
-
+
{:else}
diff --git a/src/routes/console/[project]/storage/index.svelte b/src/routes/console/[project]/storage/index.svelte
index 3c16cd351..d65192ec9 100644
--- a/src/routes/console/[project]/storage/index.svelte
+++ b/src/routes/console/[project]/storage/index.svelte
@@ -10,19 +10,19 @@
import { base } from '$app/paths';
import { bucketList } from './store';
import { tooltip } from '$lib/actions/tooltip';
+ import { pageLimit } from '$lib/stores/layout';
let showCreate = false;
let search = '';
let offset = 0;
- const limit = 5;
const project = $page.params.project;
const bucketCreated = async (event: CustomEvent) => {
showCreate = false;
await goto(`${base}/console/${project}/storage/bucket/${event.detail.$id}`);
};
- $: bucketList.load(search, limit, offset ?? 0);
+ $: bucketList.load(search, $pageLimit, offset ?? 0);
$: if (search) offset = 0;
@@ -97,7 +97,7 @@
Total results: {$bucketList.total}
-
+
{:else if search}
@@ -113,7 +113,7 @@
Total results: {$bucketList?.total}
-
+
{:else}
diff --git a/static/icons/dark/color/firefox.svg b/static/icons/dark/color/firefox.svg
new file mode 100644
index 000000000..2c2d6095e
--- /dev/null
+++ b/static/icons/dark/color/firefox.svg
@@ -0,0 +1,106 @@
+
diff --git a/static/icons/dark/color/microsoft_edge.svg b/static/icons/dark/color/microsoft_edge.svg
new file mode 100644
index 000000000..07a4e636c
--- /dev/null
+++ b/static/icons/dark/color/microsoft_edge.svg
@@ -0,0 +1,41 @@
+
diff --git a/static/icons/dark/color/opera.svg b/static/icons/dark/color/opera.svg
new file mode 100644
index 000000000..0efa1752f
--- /dev/null
+++ b/static/icons/dark/color/opera.svg
@@ -0,0 +1,17 @@
+
diff --git a/static/icons/dark/color/safari.svg b/static/icons/dark/color/safari.svg
new file mode 100644
index 000000000..3b7c36e91
--- /dev/null
+++ b/static/icons/dark/color/safari.svg
@@ -0,0 +1,42 @@
+
diff --git a/static/icons/dark/grayscale/firefox.svg b/static/icons/dark/grayscale/firefox.svg
new file mode 100644
index 000000000..d73dc97f5
--- /dev/null
+++ b/static/icons/dark/grayscale/firefox.svg
@@ -0,0 +1,3 @@
+
diff --git a/static/icons/dark/grayscale/microsoft_edge.svg b/static/icons/dark/grayscale/microsoft_edge.svg
new file mode 100644
index 000000000..1a54e0f1f
--- /dev/null
+++ b/static/icons/dark/grayscale/microsoft_edge.svg
@@ -0,0 +1,3 @@
+
diff --git a/static/icons/dark/grayscale/opera.svg b/static/icons/dark/grayscale/opera.svg
new file mode 100644
index 000000000..57a6f9113
--- /dev/null
+++ b/static/icons/dark/grayscale/opera.svg
@@ -0,0 +1,3 @@
+
diff --git a/static/icons/dark/grayscale/safari.svg b/static/icons/dark/grayscale/safari.svg
new file mode 100644
index 000000000..4c38e6ebb
--- /dev/null
+++ b/static/icons/dark/grayscale/safari.svg
@@ -0,0 +1,3 @@
+
diff --git a/static/icons/light/color/firefox.svg b/static/icons/light/color/firefox.svg
new file mode 100644
index 000000000..2c2d6095e
--- /dev/null
+++ b/static/icons/light/color/firefox.svg
@@ -0,0 +1,106 @@
+
diff --git a/static/icons/light/color/microsoft_edge.svg b/static/icons/light/color/microsoft_edge.svg
new file mode 100644
index 000000000..07a4e636c
--- /dev/null
+++ b/static/icons/light/color/microsoft_edge.svg
@@ -0,0 +1,41 @@
+
diff --git a/static/icons/light/color/opera.svg b/static/icons/light/color/opera.svg
new file mode 100644
index 000000000..0efa1752f
--- /dev/null
+++ b/static/icons/light/color/opera.svg
@@ -0,0 +1,17 @@
+
diff --git a/static/icons/light/color/safari.svg b/static/icons/light/color/safari.svg
new file mode 100644
index 000000000..3b7c36e91
--- /dev/null
+++ b/static/icons/light/color/safari.svg
@@ -0,0 +1,42 @@
+
diff --git a/static/icons/light/grayscale/firefox.svg b/static/icons/light/grayscale/firefox.svg
new file mode 100644
index 000000000..692e2ec0d
--- /dev/null
+++ b/static/icons/light/grayscale/firefox.svg
@@ -0,0 +1,3 @@
+
diff --git a/static/icons/light/grayscale/microsoft_edge.svg b/static/icons/light/grayscale/microsoft_edge.svg
new file mode 100644
index 000000000..c5450831b
--- /dev/null
+++ b/static/icons/light/grayscale/microsoft_edge.svg
@@ -0,0 +1,3 @@
+
diff --git a/static/icons/light/grayscale/opera.svg b/static/icons/light/grayscale/opera.svg
new file mode 100644
index 000000000..4fdf7668d
--- /dev/null
+++ b/static/icons/light/grayscale/opera.svg
@@ -0,0 +1,3 @@
+
diff --git a/static/icons/light/grayscale/safari.svg b/static/icons/light/grayscale/safari.svg
new file mode 100644
index 000000000..09b484189
--- /dev/null
+++ b/static/icons/light/grayscale/safari.svg
@@ -0,0 +1,3 @@
+
diff --git a/tests/unit/components/copyInput.test.ts b/tests/unit/components/copyInput.test.ts
index 95c0ff689..f4d9986dc 100644
--- a/tests/unit/components/copyInput.test.ts
+++ b/tests/unit/components/copyInput.test.ts
@@ -13,7 +13,7 @@ test('shows CopyInput component', () => {
expect(input).toBeInTheDocument();
expect(button).toBeInTheDocument();
expect(input).toHaveAttribute('type', 'text');
- expect(input).toBeDisabled();
+ expect(input).toHaveAttribute('readonly');
});
test('copy to clipboard function called on click', async () => {
diff --git a/tests/unit/components/switchBox.test.ignore.ts b/tests/unit/components/switchBox.test.ignore.ts
deleted file mode 100644
index a2f4c538d..000000000
--- a/tests/unit/components/switchBox.test.ignore.ts
+++ /dev/null
@@ -1,74 +0,0 @@
-import '@testing-library/jest-dom';
-import { render, fireEvent } from '@testing-library/svelte';
-import { SwitchBox } from '../../../src/lib/components';
-
-const box = {
- id: 'input',
- src: 'https://via.placeholder.com/50',
- label: 'Bool',
- alt: 'image',
- required: false,
- disabled: false,
- value: false
-};
-
-test('shows boolean input', () => {
- const { getByText, getByRole, getByAltText } = render(SwitchBox, {
- box
- });
- const checkbox = getByRole('switch');
- const img = getByAltText('image');
-
- expect(getByText('Bool')).toBeInTheDocument();
- expect(img).toBeInTheDocument();
- expect(checkbox).toBeInTheDocument();
- expect(checkbox).toHaveAttribute('type', 'checkbox');
-});
-
-test('shows boolean input - required', () => {
- box.required = true;
- const { getByRole } = render(SwitchBox, { box });
-
- expect(getByRole('switch')).toBeRequired();
-});
-
-test('shows boolean input - disabled', () => {
- box.disabled = true;
- const { getByRole } = render(SwitchBox, { box });
-
- expect(getByRole('switch')).toBeDisabled();
-});
-
-test('state', async () => {
- const { getByRole, component } = render(SwitchBox, { box });
- const checkbox = getByRole('switch');
-
- setTimeout(() => {
- expect(checkbox).not.toBeChecked();
- expect(component.box.value).toStrictEqual(false);
- }, 1);
-
- await fireEvent.click(checkbox);
- setTimeout(() => {
- expect(checkbox).toBeChecked();
- expect(component.box.value).toStrictEqual(true);
- }, 1);
-
- await fireEvent.click(checkbox);
- setTimeout(() => {
- expect(checkbox).not.toBeChecked();
- expect(component.box.value).toStrictEqual(false);
- }, 1);
-
- component.box.value = true;
- setTimeout(() => {
- expect(checkbox).toBeChecked();
- expect(component.box.value).toStrictEqual(true);
- }, 1);
-
- component.box.value = false;
- setTimeout(() => {
- expect(checkbox).not.toBeChecked();
- expect(component.box.value).toStrictEqual(false);
- }, 1);
-});