diff --git a/.env.example b/.env.example index e490a6ef4d..0eca036483 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,5 @@ VITE_APPWRITE_ENDPOINT=http://localhost/v1 VITE_APPWRITE_GROWTH_ENDPOINT= VITE_GA_PROJECT= -VITE_CONSOLE_MODE=self-hosted \ No newline at end of file +VITE_CONSOLE_MODE=self-hosted +VITE_STRIPE_PUBLIC_KEY= diff --git a/package-lock.json b/package-lock.json index 4e11b21dca..464a87ffaa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,12 +6,13 @@ "": { "name": "@appwrite/console", "dependencies": { - "@appwrite.io/console": "^0.3.0", - "@appwrite.io/pink": "0.1.0", - "@appwrite.io/pink-icons": "^0.1.0", + "@appwrite.io/console": "^0.4.2", + "@appwrite.io/pink": "0.2.0", + "@appwrite.io/pink-icons": "0.2.0", "@popperjs/core": "^2.11.8", "@sentry/svelte": "^7.66.0", "@sentry/tracing": "^7.66.0", + "@stripe/stripe-js": "^2.2.0", "ai": "^2.2.11", "analytics": "^0.8.9", "dayjs": "^1.11.9", @@ -28,6 +29,8 @@ "web-vitals": "^3.4.0" }, "devDependencies": { + "@melt-ui/pp": "^0.1.4", + "@melt-ui/svelte": "^0.61.2", "@playwright/test": "^1.37.1", "@sveltejs/adapter-static": "^2.0.3", "@sveltejs/kit": "^1.24.0", @@ -53,6 +56,7 @@ "svelte-check": "^3.5.1", "svelte-jester": "^2.3.2", "svelte-preprocess": "^5.0.4", + "svelte-sequential-preprocessor": "^2.0.1", "tslib": "^2.6.2", "typescript": "^5.2.2", "vite": "^4.4.9", @@ -72,9 +76,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -155,33 +159,33 @@ "integrity": "sha512-TD+xbmsBLyYy/IxFimW/YL/9L2IEnM7/EoV9Aeh56U64Ify8o27HJcKjo38XY9Tcn0uOq1AX3thkKgvtWvwFQg==" }, "node_modules/@appwrite.io/console": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@appwrite.io/console/-/console-0.3.0.tgz", - "integrity": "sha512-XHKQHirzQliXoDpMLakSdXwpq9aPoeTABNhW8Z7MK3p6oBfp2gMplDD43Fbd91JREXoJ+RG8okX0z0nIc6hDiQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@appwrite.io/console/-/console-0.4.2.tgz", + "integrity": "sha512-WUltkC5q7RIK7TDCb+qTXq2cPtBek9k98Ilqcn8Lv3rN5ZuK0x33AwcpTAEPD0DE9phWXmvoV1a8H5PGMcGKew==", "dependencies": { "cross-fetch": "3.1.5", "isomorphic-form-data": "2.0.0" } }, "node_modules/@appwrite.io/pink": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@appwrite.io/pink/-/pink-0.1.0.tgz", - "integrity": "sha512-z+4wiTH2PBMrbxvXiNjGQY0hs6ziCbKSb2rK0O/2M3aa9CHN/dBDSTpWCcED8G9BWDkeS5XMVZrQbyrdqMVc/Q==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@appwrite.io/pink/-/pink-0.2.0.tgz", + "integrity": "sha512-ni6O/yPiWkCYQ68PNcbmus6QrPpIEl7xmzKHU2dkV2L19RVio8thtBtT9ckJJ8uBMGsczASWs0fUqOxIvBmtNw==", "dependencies": { - "@appwrite.io/pink-icons": "0.1.0", + "@appwrite.io/pink-icons": "0.2.0", "normalize.css": "^8.0.1", "the-new-css-reset": "^1.11.2" } }, "node_modules/@appwrite.io/pink-icons": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@appwrite.io/pink-icons/-/pink-icons-0.1.0.tgz", - "integrity": "sha512-Y5DmvosdCoBD0oyqKV+ncbXTzQuhX0WOe4N7uonMaz1NaFm3ODaIb/CF77hV2vg86oOQ+f+BirdhfPsBue2pNA==" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@appwrite.io/pink-icons/-/pink-icons-0.2.0.tgz", + "integrity": "sha512-wThBUGdvpwT0q2fcUapiugfBiB4RFDvTlW6p+U7Dol61mmCpNteFSIoBPiPJzN5015n1v4UEWL/rdOia4CWdBQ==" }, "node_modules/@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { "@babel/highlight": "^7.23.4", @@ -263,9 +267,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, "peer": true, "engines": { @@ -273,22 +277,22 @@ } }, "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", + "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", "dev": true, "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", + "@babel/helpers": "^7.23.5", + "@babel/parser": "^7.23.5", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -314,13 +318,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", - "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", + "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", "dev": true, "peer": true, "dependencies": { - "@babel/types": "^7.23.4", + "@babel/types": "^7.23.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -482,9 +486,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, "peer": true, "engines": { @@ -492,15 +496,15 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", - "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", + "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", "dev": true, "peer": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.4", - "@babel/types": "^7.23.4" + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5" }, "engines": { "node": ">=6.9.0" @@ -592,9 +596,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", "peer": true, "bin": { "parser": "bin/babel-parser.js" @@ -795,9 +799,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", - "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", + "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -822,20 +826,20 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", - "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", + "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", "dev": true, "peer": true, "dependencies": { - "@babel/code-frame": "^7.23.4", - "@babel/generator": "^7.23.4", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.4", - "@babel/types": "^7.23.4", + "@babel/parser": "^7.23.5", + "@babel/types": "^7.23.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -854,9 +858,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", - "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", "dev": true, "peer": true, "dependencies": { @@ -1252,9 +1256,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -1275,9 +1279,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1292,6 +1296,31 @@ "node": ">=14" } }, + "node_modules/@floating-ui/core": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz", + "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", + "dev": true, + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dev": true, + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==", + "dev": true + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.13", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", @@ -1325,6 +1354,15 @@ "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, + "node_modules/@internationalized/date": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.0.tgz", + "integrity": "sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ==", + "dev": true, + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -1809,6 +1847,39 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@melt-ui/pp": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@melt-ui/pp/-/pp-0.1.4.tgz", + "integrity": "sha512-zR+Kl3CZJPJBHW8V7YcdQCMI/dVcnW9Ct3yGbVaIywYVStVRS7F9uEDOea3xLLT2WTGodQePzPlUn53yKFu87g==", + "dev": true, + "dependencies": { + "estree-walker": "^3.0.3" + }, + "engines": { + "pnpm": ">=8.6.3" + }, + "peerDependencies": { + "@melt-ui/svelte": ">= 0.29.0", + "svelte": "^3.55.0 || ^4.0.0 || ^5.0.0-next.1" + } + }, + "node_modules/@melt-ui/svelte": { + "version": "0.61.3", + "resolved": "https://registry.npmjs.org/@melt-ui/svelte/-/svelte-0.61.3.tgz", + "integrity": "sha512-6btfQJs1zfXpZ++vftqXCYCqAq3DDdAj3TbSn/myZbFPYLib/HoFKQryg1Ctts3tIxCATaYtVQZVfSWHm8ZdWQ==", + "dev": true, + "dependencies": { + "@floating-ui/core": "^1.3.1", + "@floating-ui/dom": "^1.4.5", + "@internationalized/date": "^3.5.0", + "dequal": "^2.0.3", + "focus-trap": "^7.5.2", + "nanoid": "^4.0.2" + }, + "peerDependencies": { + "svelte": ">=3 <5" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1845,12 +1916,12 @@ } }, "node_modules/@playwright/test": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.40.0.tgz", - "integrity": "sha512-PdW+kn4eV99iP5gxWNSDQCbhMaDVej+RXL5xr6t04nbKLCBwYtA046t7ofoczHOm8u6c+45hpDKQVZqtqwkeQg==", + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.40.1.tgz", + "integrity": "sha512-EaaawMTOeEItCRvfmkI9v6rBkF1svM8wjl/YPRrg2N2Wmp+4qJYkWtJsbew1szfKKDm6fPLy4YAanBhIlf9dWw==", "dev": true, "dependencies": { - "playwright": "1.40.0" + "playwright": "1.40.1" }, "bin": { "playwright": "cli.js" @@ -1860,9 +1931,9 @@ } }, "node_modules/@polka/url": { - "version": "1.0.0-next.23", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", - "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", + "version": "1.0.0-next.24", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", + "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==", "dev": true }, "node_modules/@popperjs/core": { @@ -1874,68 +1945,82 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@sentry-internal/feedback": { + "version": "7.86.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.86.0.tgz", + "integrity": "sha512-6rl0JYjmAKnhm4/fuFaROh4Ht8oi9f6ZeIcViCuGJcrGICZJJY0s+R77XJI78rNa82PYFrSCcnWXcGji4T8E7g==", + "dependencies": { + "@sentry/core": "7.86.0", + "@sentry/types": "7.86.0", + "@sentry/utils": "7.86.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@sentry-internal/tracing": { - "version": "7.81.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.81.1.tgz", - "integrity": "sha512-E5xm27xrLXL10knH2EWDQsQYh5nb4SxxZzJ3sJwDGG9XGKzBdlp20UUhKqx00wixooVX9uCj3e4Jg8SvNB1hKg==", + "version": "7.86.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.86.0.tgz", + "integrity": "sha512-b4dUsNWlPWRwakGwR7bhOkqiFlqQszH1hhVFwrm/8s3kqEBZ+E4CeIfCvuHBHQ1cM/fx55xpXX/BU163cy+3iQ==", "dependencies": { - "@sentry/core": "7.81.1", - "@sentry/types": "7.81.1", - "@sentry/utils": "7.81.1" + "@sentry/core": "7.86.0", + "@sentry/types": "7.86.0", + "@sentry/utils": "7.86.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.81.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.81.1.tgz", - "integrity": "sha512-DNtS7bZEnFPKVoGazKs5wHoWC0FwsOFOOMNeDvEfouUqKKbjO7+RDHbr7H6Bo83zX4qmZWRBf8V+3n3YPIiJFw==", + "version": "7.86.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.86.0.tgz", + "integrity": "sha512-nfYWpVOmug+W7KJO7/xhA1JScMZcYHcoOVHLsUFm4znx51U4qZEk+zZDM11Q2Nw6MuDyEYg6bsH1QCwaoC6nLw==", "dependencies": { - "@sentry-internal/tracing": "7.81.1", - "@sentry/core": "7.81.1", - "@sentry/replay": "7.81.1", - "@sentry/types": "7.81.1", - "@sentry/utils": "7.81.1" + "@sentry-internal/feedback": "7.86.0", + "@sentry-internal/tracing": "7.86.0", + "@sentry/core": "7.86.0", + "@sentry/replay": "7.86.0", + "@sentry/types": "7.86.0", + "@sentry/utils": "7.86.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.81.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.81.1.tgz", - "integrity": "sha512-tU37yAmckOGCw/moWKSwekSCWWJP15O6luIq+u7wal22hE88F3Vc5Avo8SeF3upnPR+4ejaOFH+BJTr6bgrs6Q==", + "version": "7.86.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.86.0.tgz", + "integrity": "sha512-SbLvqd1bRYzhDS42u7GMnmbDMfth/zRiLElQWbLK/shmuZzTcfQSwNNdF4Yj+VfjOkqPFgGmICHSHVUc9dh01g==", "dependencies": { - "@sentry/types": "7.81.1", - "@sentry/utils": "7.81.1" + "@sentry/types": "7.86.0", + "@sentry/utils": "7.86.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/replay": { - "version": "7.81.1", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.81.1.tgz", - "integrity": "sha512-4ueT0C4bYjngN/9p0fEYH10dTMLovHyk9HxJ6zSTgePvGVexhg+cSEHXisoBDwHeRZVnbIvsVM0NA7rmEDXJJw==", + "version": "7.86.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.86.0.tgz", + "integrity": "sha512-YYZO8bfQSx1H87Te/zzyHPLHvExWiYwUfMWW68yGX+PPZIIzxaM81/iCQHkoucxlvuPCOtxCgf7RSMbsnqEa8g==", "dependencies": { - "@sentry-internal/tracing": "7.81.1", - "@sentry/core": "7.81.1", - "@sentry/types": "7.81.1", - "@sentry/utils": "7.81.1" + "@sentry-internal/tracing": "7.86.0", + "@sentry/core": "7.86.0", + "@sentry/types": "7.86.0", + "@sentry/utils": "7.86.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/svelte": { - "version": "7.81.1", - "resolved": "https://registry.npmjs.org/@sentry/svelte/-/svelte-7.81.1.tgz", - "integrity": "sha512-RXh2sUOflIqp/q5ZFln9UKVCqFPfk3Bm4lZqfDEToJYc6RGa+wadCQclVgXZZAP3a2Lw/BoZpEfx6gmo/jm2jQ==", + "version": "7.86.0", + "resolved": "https://registry.npmjs.org/@sentry/svelte/-/svelte-7.86.0.tgz", + "integrity": "sha512-Qf81DORscJrr/8nXdfRRIPThjfGD+db6VvuoNCwQ+/t3WyqSVz96huURkImTBsnQUY0Bw1y4R72ySHRzg0ynNA==", "dependencies": { - "@sentry/browser": "7.81.1", - "@sentry/types": "7.81.1", - "@sentry/utils": "7.81.1", + "@sentry/browser": "7.86.0", + "@sentry/types": "7.86.0", + "@sentry/utils": "7.86.0", "magic-string": "^0.30.0" }, "engines": { @@ -1946,30 +2031,30 @@ } }, "node_modules/@sentry/tracing": { - "version": "7.81.1", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.81.1.tgz", - "integrity": "sha512-of9WMu0XgEBl9onTEk8SMaxj4BUadaUvHH96T1OpRMjdyuCM/3u2mjCkh3ekINr3Fu/uT2kJ/kO3goUxfcdXIQ==", + "version": "7.86.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.86.0.tgz", + "integrity": "sha512-WPqgmbLm6ntpIoTZd1L/RHIVEDMmvVjIDxKeXGiJeXHZG2VMtgwoxuZAFluVFaD0Sr20Nhj+ZS7HvKOWTxrjjA==", "dependencies": { - "@sentry-internal/tracing": "7.81.1" + "@sentry-internal/tracing": "7.86.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "7.81.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.81.1.tgz", - "integrity": "sha512-dvJvGyctiaPMIQqa46k56Re5IODWMDxiHJ1UjBs/WYDLrmWFPGrEbyJ8w8CYLhYA+7qqrCyIZmHbWSTRIxstHw==", + "version": "7.86.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.86.0.tgz", + "integrity": "sha512-pGAt0+bMfWgo0KG2epthfNV4Wae03tURpoxNjGo5Fr4cXxvLTSijSAQ6rmmO4bXBJ7+rErEjX30g30o/eEdP9g==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.81.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.81.1.tgz", - "integrity": "sha512-gq+MDXIirHKxNZ+c9/lVvCXd6y2zaZANujwlFggRH2u9SRiPaIXVilLpvMm4uJqmqBMEcY81ArujExtHvkbCqg==", + "version": "7.86.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.86.0.tgz", + "integrity": "sha512-6PejFtw9VTFFy5vu0ks+U7Ozkqz+eMt+HN8AZKBKErYzX5/xs0kpkOcSRpu3ETdTYcZf8VAmLVgFgE2BE+3WuQ==", "dependencies": { - "@sentry/types": "7.81.1" + "@sentry/types": "7.86.0" }, "engines": { "node": ">=8" @@ -2001,6 +2086,11 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@stripe/stripe-js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-2.2.0.tgz", + "integrity": "sha512-YyXQbsXvnNRJ6MofFhCLIQ4W7UpfkfSOQhjIaHEiCMBv3IBxhzugXiYNNzceGTK/7DL31v7HtTnkJ+FI+6AIow==" + }, "node_modules/@sveltejs/adapter-static": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-2.0.3.tgz", @@ -2011,9 +2101,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "1.27.6", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.27.6.tgz", - "integrity": "sha512-GsjTkMbKzXdbeRg0tk8S7HNShQ4879ftRr0ZHaZfjbig1xQwG57Bvcm9U9/mpLJtCapLbLWUnygKrgcLISLC8A==", + "version": "1.27.7", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.27.7.tgz", + "integrity": "sha512-AzXYDoYt42clCBwLF9GTHsXyg2DFR31Ncyt8yxu8Aw4tgB433V+w+hcr1RTfAN9zKW2J2PY9FMQ8FoX/4Vw8CA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -2081,6 +2171,15 @@ "vite": "^4.0.0" } }, + "node_modules/@swc/helpers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz", + "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@testing-library/dom": { "version": "9.3.3", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", @@ -2296,9 +2395,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.10", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz", - "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==", + "version": "29.5.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", + "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -2344,9 +2443,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", - "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -2401,16 +2500,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.12.0.tgz", - "integrity": "sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz", + "integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.12.0", - "@typescript-eslint/type-utils": "6.12.0", - "@typescript-eslint/utils": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/type-utils": "6.13.2", + "@typescript-eslint/utils": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -2436,15 +2535,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.12.0.tgz", - "integrity": "sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz", + "integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.12.0", - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/typescript-estree": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/typescript-estree": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4" }, "engines": { @@ -2464,13 +2563,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.12.0.tgz", - "integrity": "sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz", + "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0" + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2481,13 +2580,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.12.0.tgz", - "integrity": "sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz", + "integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.12.0", - "@typescript-eslint/utils": "6.12.0", + "@typescript-eslint/typescript-estree": "6.13.2", + "@typescript-eslint/utils": "6.13.2", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -2508,9 +2607,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.12.0.tgz", - "integrity": "sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz", + "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2521,13 +2620,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.12.0.tgz", - "integrity": "sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz", + "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2548,17 +2647,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.12.0.tgz", - "integrity": "sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.2.tgz", + "integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.12.0", - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/typescript-estree": "6.12.0", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/typescript-estree": "6.13.2", "semver": "^7.5.4" }, "engines": { @@ -2573,12 +2672,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.12.0.tgz", - "integrity": "sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz", + "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/types": "6.13.2", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -2679,13 +2778,13 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.9.tgz", - "integrity": "sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.11.tgz", + "integrity": "sha512-h97/TGWBilnLuRaj58sxNrsUU66fwdRKLOLQ9N/5iNDfp+DZhYH9Obhe0bXxhedl8fjAgpRANpiZfbgWyruQ0w==", "peer": true, "dependencies": { - "@babel/parser": "^7.23.3", - "@vue/shared": "3.3.9", + "@babel/parser": "^7.23.5", + "@vue/shared": "3.3.11", "estree-walker": "^2.0.2", "source-map-js": "^1.0.2" } @@ -2697,30 +2796,30 @@ "peer": true }, "node_modules/@vue/compiler-dom": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.9.tgz", - "integrity": "sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.11.tgz", + "integrity": "sha512-zoAiUIqSKqAJ81WhfPXYmFGwDRuO+loqLxvXmfUdR5fOitPoUiIeFI9cTTyv9MU5O1+ZZglJVTusWzy+wfk5hw==", "peer": true, "dependencies": { - "@vue/compiler-core": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/compiler-core": "3.3.11", + "@vue/shared": "3.3.11" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.9.tgz", - "integrity": "sha512-wy0CNc8z4ihoDzjASCOCsQuzW0A/HP27+0MDSSICMjVIFzk/rFViezkR3dzH+miS2NDEz8ywMdbjO5ylhOLI2A==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.11.tgz", + "integrity": "sha512-U4iqPlHO0KQeK1mrsxCN0vZzw43/lL8POxgpzcJweopmqtoYy9nljJzWDIQS3EfjiYhfdtdk9Gtgz7MRXnz3GA==", "peer": true, "dependencies": { - "@babel/parser": "^7.23.3", - "@vue/compiler-core": "3.3.9", - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-ssr": "3.3.9", - "@vue/reactivity-transform": "3.3.9", - "@vue/shared": "3.3.9", + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.11", + "@vue/compiler-dom": "3.3.11", + "@vue/compiler-ssr": "3.3.11", + "@vue/reactivity-transform": "3.3.11", + "@vue/shared": "3.3.11", "estree-walker": "^2.0.2", "magic-string": "^0.30.5", - "postcss": "^8.4.31", + "postcss": "^8.4.32", "source-map-js": "^1.0.2" } }, @@ -2731,33 +2830,33 @@ "peer": true }, "node_modules/@vue/compiler-ssr": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.9.tgz", - "integrity": "sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.11.tgz", + "integrity": "sha512-Zd66ZwMvndxRTgVPdo+muV4Rv9n9DwQ4SSgWWKWkPFebHQfVYRrVjeygmmDmPewsHyznCNvJ2P2d6iOOhdv8Qg==", "peer": true, "dependencies": { - "@vue/compiler-dom": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/compiler-dom": "3.3.11", + "@vue/shared": "3.3.11" } }, "node_modules/@vue/reactivity": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.9.tgz", - "integrity": "sha512-VmpIqlNp+aYDg2X0xQhJqHx9YguOmz2UxuUJDckBdQCNkipJvfk9yA75woLWElCa0Jtyec3lAAt49GO0izsphw==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.11.tgz", + "integrity": "sha512-D5tcw091f0nuu+hXq5XANofD0OXnBmaRqMYl5B3fCR+mX+cXJIGNw/VNawBqkjLNWETrFW0i+xH9NvDbTPVh7g==", "peer": true, "dependencies": { - "@vue/shared": "3.3.9" + "@vue/shared": "3.3.11" } }, "node_modules/@vue/reactivity-transform": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.9.tgz", - "integrity": "sha512-HnUFm7Ry6dFa4Lp63DAxTixUp8opMtQr6RxQCpDI1vlh12rkGIeYqMvJtK+IKyEfEOa2I9oCkD1mmsPdaGpdVg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.11.tgz", + "integrity": "sha512-fPGjH0wqJo68A0wQ1k158utDq/cRyZNlFoxGwNScE28aUFOKFEnCBsvyD8jHn+0kd0UKVpuGuaZEQ6r9FJRqCg==", "peer": true, "dependencies": { - "@babel/parser": "^7.23.3", - "@vue/compiler-core": "3.3.9", - "@vue/shared": "3.3.9", + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.11", + "@vue/shared": "3.3.11", "estree-walker": "^2.0.2", "magic-string": "^0.30.5" } @@ -2769,49 +2868,50 @@ "peer": true }, "node_modules/@vue/runtime-core": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.9.tgz", - "integrity": "sha512-xxaG9KvPm3GTRuM4ZyU8Tc+pMVzcu6eeoSRQJ9IE7NmCcClW6z4B3Ij6L4EDl80sxe/arTtQ6YmgiO4UZqRc+w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.11.tgz", + "integrity": "sha512-g9ztHGwEbS5RyWaOpXuyIVFTschclnwhqEbdy5AwGhYOgc7m/q3NFwr50MirZwTTzX55JY8pSkeib9BX04NIpw==", "peer": true, "dependencies": { - "@vue/reactivity": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/reactivity": "3.3.11", + "@vue/shared": "3.3.11" } }, "node_modules/@vue/runtime-dom": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.9.tgz", - "integrity": "sha512-e7LIfcxYSWbV6BK1wQv9qJyxprC75EvSqF/kQKe6bdZEDNValzeRXEVgiX7AHI6hZ59HA4h7WT5CGvm69vzJTQ==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.11.tgz", + "integrity": "sha512-OlhtV1PVpbgk+I2zl+Y5rQtDNcCDs12rsRg71XwaA2/Rbllw6mBLMi57VOn8G0AjOJ4Mdb4k56V37+g8ukShpQ==", "peer": true, "dependencies": { - "@vue/runtime-core": "3.3.9", - "@vue/shared": "3.3.9", + "@vue/runtime-core": "3.3.11", + "@vue/shared": "3.3.11", "csstype": "^3.1.2" } }, "node_modules/@vue/server-renderer": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.9.tgz", - "integrity": "sha512-w0zT/s5l3Oa3ZjtLW88eO4uV6AQFqU8X5GOgzq7SkQQu6vVr+8tfm+OI2kDBplS/W/XgCBuFXiPw6T5EdwXP0A==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.11.tgz", + "integrity": "sha512-AIWk0VwwxCAm4wqtJyxBylRTXSy1wCLOKbWxHaHiu14wjsNYtiRCSgVuqEPVuDpErOlRdNnuRgipQfXRLjLN5A==", "peer": true, "dependencies": { - "@vue/compiler-ssr": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/compiler-ssr": "3.3.11", + "@vue/shared": "3.3.11" }, "peerDependencies": { - "vue": "3.3.9" + "vue": "3.3.11" } }, "node_modules/@vue/shared": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.9.tgz", - "integrity": "sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.11.tgz", + "integrity": "sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw==", "peer": true }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", "dev": true }, "node_modules/acorn": { @@ -2835,9 +2935,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", - "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "dev": true, "engines": { "node": ">=0.4.0" @@ -2856,9 +2956,9 @@ } }, "node_modules/ai": { - "version": "2.2.25", - "resolved": "https://registry.npmjs.org/ai/-/ai-2.2.25.tgz", - "integrity": "sha512-iXu3pzPpDPBGDir8hz86FAJmJTynMfBH4V/DXyR3GGeaHOfjdrErlcMm862CSalR6PDMwDOSCQVwJqtdnvIncQ==", + "version": "2.2.28", + "resolved": "https://registry.npmjs.org/ai/-/ai-2.2.28.tgz", + "integrity": "sha512-NUPwtXjIghlkhrR8x9nEnzpaKnWVhABe4XsSYIRbwWS1f9M8DxV413W+bpQ52iKkzputuraipHSyjnAtgU88cA==", "dependencies": { "eventsource-parser": "1.0.0", "nanoid": "3.3.6", @@ -3248,9 +3348,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "dev": true, "funding": [ { @@ -3268,9 +3368,9 @@ ], "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, "bin": { @@ -3348,9 +3448,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001564", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz", - "integrity": "sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==", + "version": "1.0.30001566", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz", + "integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==", "dev": true, "funding": [ { @@ -3716,9 +3816,9 @@ } }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "peer": true }, "node_modules/data-urls": { @@ -3963,6 +4063,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", "dev": true, "dependencies": { "webidl-conversions": "^7.0.0" @@ -4003,9 +4104,9 @@ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" }, "node_modules/electron-to-chromium": { - "version": "1.4.594", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.594.tgz", - "integrity": "sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ==", + "version": "1.4.608", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.608.tgz", + "integrity": "sha512-J2f/3iIIm3Mo0npneITZ2UPe4B1bg8fTNrFjD8715F/k1BvbviRuqYGkET1PgprrczXYTHFvotbBOmUp6KE0uA==", "dev": true, "peer": true }, @@ -4135,15 +4236,15 @@ } }, "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -4202,9 +4303,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -4546,6 +4647,15 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, + "node_modules/focus-trap": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", + "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", + "dev": true, + "dependencies": { + "tabbable": "^6.2.0" + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -6832,9 +6942,9 @@ "peer": true }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true, "peer": true }, @@ -6903,12 +7013,12 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -7228,12 +7338,12 @@ } }, "node_modules/playwright": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.40.0.tgz", - "integrity": "sha512-gyHAgQjiDf1m34Xpwzaqb76KgfzYrhK7iih+2IzcOCoZWr/8ZqmdBw+t0RU85ZmfJMgtgAiNtBQ/KS2325INXw==", + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.40.1.tgz", + "integrity": "sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw==", "dev": true, "dependencies": { - "playwright-core": "1.40.0" + "playwright-core": "1.40.1" }, "bin": { "playwright": "cli.js" @@ -7246,9 +7356,9 @@ } }, "node_modules/playwright-core": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.40.0.tgz", - "integrity": "sha512-fvKewVJpGeca8t0ipM56jkVSU6Eo0RmFvQ/MaCQNDYm+sdvKkMBBWTE1FdeMqIdumRaXXjZChWHvIzCGM/tA/Q==", + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.40.1.tgz", + "integrity": "sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ==", "dev": true, "bin": { "playwright-core": "cli.js" @@ -7272,9 +7382,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", "funding": [ { "type": "opencollective", @@ -7290,7 +7400,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -7876,9 +7986,9 @@ "dev": true }, "node_modules/seroval": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/seroval/-/seroval-0.14.1.tgz", - "integrity": "sha512-ZlC9y1KVDhZFdEHLYZup1RjKDutyX1tt3ffOauqRbRURa2vRr2NU/bHuVEuNEqR3zE2uCU3WM6LqH6Oinc3tWg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/seroval/-/seroval-0.15.1.tgz", + "integrity": "sha512-OPVtf0qmeC7RW+ScVX+7aOS+xoIM7pWcZ0jOWg2aTZigCydgRB04adfteBRbecZnnrO1WuGQ+C3tLeBBzX2zSQ==", "peer": true, "engines": { "node": ">=10" @@ -8023,13 +8133,13 @@ } }, "node_modules/solid-js": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.6.tgz", - "integrity": "sha512-yiH6ZfBBZ3xj/aU/PBpVKB+8r8WWp100NGF7k/Z0IrK9Y8Lv0jwvFiJY1cHdc6Tj7GqXArKnMBabM0m1k+LzkA==", + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.7.tgz", + "integrity": "sha512-9dzrSVieh2zj3SnJ02II6xZkonR6c+j/91b7XZUNcC6xSaldlqjjGh98F1fk5cRJ8ZTkzqF5fPIWDxEOs6QZXA==", "peer": true, "dependencies": { "csstype": "^3.1.0", - "seroval": "^0.14.1" + "seroval": "^0.15.1" } }, "node_modules/solid-swr-store": { @@ -8133,9 +8243,9 @@ "dev": true }, "node_modules/std-env": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.5.0.tgz", - "integrity": "sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.6.0.tgz", + "integrity": "sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==", "dev": true }, "node_modules/stop-iteration-iterator": { @@ -8301,9 +8411,9 @@ } }, "node_modules/svelte": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.7.tgz", - "integrity": "sha512-UExR1KS7raTdycsUrKLtStayu4hpdV3VZQgM0akX8XbXgLBlosdE/Sf3crOgyh9xIjqSYB3UEBuUlIQKRQX2hg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.8.tgz", + "integrity": "sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==", "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", @@ -8479,6 +8589,19 @@ "node": ">=12" } }, + "node_modules/svelte-sequential-preprocessor": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/svelte-sequential-preprocessor/-/svelte-sequential-preprocessor-2.0.1.tgz", + "integrity": "sha512-N5JqlBni6BzElxmuFrOPxOJnjsxh1cFDACLEVKs8OHBcx8ZNRO1p5SxuQex1m3qbLzAC8G99EHeWcxGkjyKjLQ==", + "dev": true, + "dependencies": { + "svelte": "^4.0.1", + "tslib": "~2.6.0" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/svelte/node_modules/aria-query": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", @@ -8528,6 +8651,12 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -8713,9 +8842,9 @@ } }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "devOptional": true, "bin": { "tsc": "bin/tsc", @@ -8838,9 +8967,9 @@ } }, "node_modules/vite": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz", - "integrity": "sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", + "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", "dev": true, "dependencies": { "esbuild": "^0.18.10", @@ -9007,16 +9136,16 @@ } }, "node_modules/vue": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.9.tgz", - "integrity": "sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.11.tgz", + "integrity": "sha512-d4oBctG92CRO1cQfVBZp6WJAs0n8AK4Xf5fNjQCBeKCvMI1efGQ5E3Alt1slFJS9fZuPcFoiAiqFvQlv1X7t/w==", "peer": true, "dependencies": { - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-sfc": "3.3.9", - "@vue/runtime-dom": "3.3.9", - "@vue/server-renderer": "3.3.9", - "@vue/shared": "3.3.9" + "@vue/compiler-dom": "3.3.11", + "@vue/compiler-sfc": "3.3.11", + "@vue/runtime-dom": "3.3.11", + "@vue/server-renderer": "3.3.11", + "@vue/shared": "3.3.11" }, "peerDependencies": { "typescript": "*" diff --git a/package.json b/package.json index 633d192740..410b4d658c 100644 --- a/package.json +++ b/package.json @@ -18,12 +18,13 @@ "e2e": "playwright test tests/e2e" }, "dependencies": { - "@appwrite.io/console": "^0.3.0", - "@appwrite.io/pink": "0.1.0", - "@appwrite.io/pink-icons": "^0.1.0", + "@appwrite.io/console": "^0.4.2", + "@appwrite.io/pink": "0.2.0", + "@appwrite.io/pink-icons": "0.2.0", "@popperjs/core": "^2.11.8", "@sentry/svelte": "^7.66.0", "@sentry/tracing": "^7.66.0", + "@stripe/stripe-js": "^2.2.0", "ai": "^2.2.11", "analytics": "^0.8.9", "dayjs": "^1.11.9", @@ -40,6 +41,8 @@ "web-vitals": "^3.4.0" }, "devDependencies": { + "@melt-ui/pp": "^0.1.4", + "@melt-ui/svelte": "^0.61.2", "@playwright/test": "^1.37.1", "@sveltejs/adapter-static": "^2.0.3", "@sveltejs/kit": "^1.24.0", @@ -65,6 +68,7 @@ "svelte-check": "^3.5.1", "svelte-jester": "^2.3.2", "svelte-preprocess": "^5.0.4", + "svelte-sequential-preprocessor": "^2.0.1", "tslib": "^2.6.2", "typescript": "^5.2.2", "vite": "^4.4.9", diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index 8755353fda..8a15993fcf 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -256,6 +256,25 @@ export enum Submit { FileCreate = 'submit_file_create', FileDelete = 'submit_file_delete', FileUpdatePermissions = 'submit_file_update_permissions', + BudgetCapUpdate = 'submit_budget_cap_update', + BudgetAlertsUpdate = 'submit_budget_alert_conditions_update', + CreditRedeem = 'submit_credit_redeem', + PaymentMethodCreate = 'submit_payment_method_create', + PaymentMethodUpdate = 'submit_payment_method_update', + PaymentMethodDelete = 'submit_payment_method_delete', + BillingAddressCreate = 'submit_billing_address_create', + BillingAddressUpdate = 'submit_billing_address_update', + BillingAddressDelete = 'submit_billing_address_delete', + OrganizationPaymentUpdate = 'submit_organization_payment_update', + OrganizationPaymentDelete = 'submit_organization_payment_delete', + OrganizationBackupPaymentUpdate = 'submit_organization_backup_payment_update', + OrganizationBackupPaymentDelete = 'submit_organization_backup_payment_delete', + OrganizationBillingAddressUpdate = 'submit_organization_billing_address_update', + OrganizationBillingAddressDelete = 'submit_organization_billing_address_delete', + OrganizationUpgrade = 'submit_organization_upgrade', + OrganizationDowngrade = 'submit_organization_downgrade', + OrganizationBillingTaxIdUpdate = 'submit_organization_billing_tax_id_update', + SupportTicket = 'submit_support_ticket', InstallationCreate = 'submit_installation_create', InstallationDelete = 'submit_installation_delete', EmailChangeLocale = 'submit_email_change_locale', diff --git a/src/lib/components/alert.svelte b/src/lib/components/alert.svelte index 4dc90b3ff4..c553d6042d 100644 --- a/src/lib/components/alert.svelte +++ b/src/lib/components/alert.svelte @@ -1,6 +1,7 @@ + +{#if $organization?.markedForDeletion && !$page.url.pathname.includes('/console/account')} + + + All existing projects in the {$organization.name} organization have been paused. This organization + will be deleted once your upcoming invoice is processed successfully. + + +{/if} diff --git a/src/lib/components/billing/alerts/paymentAuthRequired.svelte b/src/lib/components/billing/alerts/paymentAuthRequired.svelte new file mode 100644 index 0000000000..d8819b4920 --- /dev/null +++ b/src/lib/components/billing/alerts/paymentAuthRequired.svelte @@ -0,0 +1,29 @@ + + +{#if $actionRequiredInvoices && $actionRequiredInvoices?.invoices?.length && !$page.url.pathname.includes('/console/account')} + + Please authorize your upcoming payment for {$organization.name}. Your bank requires this + security measure to proceed with payment. + + + + + +{/if} diff --git a/src/lib/components/billing/alerts/projectsAtRisk.svelte b/src/lib/components/billing/alerts/projectsAtRisk.svelte new file mode 100644 index 0000000000..348fe3ebd1 --- /dev/null +++ b/src/lib/components/billing/alerts/projectsAtRisk.svelte @@ -0,0 +1,32 @@ + + +{#if $failedInvoice && !$page.url.pathname.includes('/console/account')} + {@const daysPassed = diffDays(new Date($failedInvoice.dueAt), new Date())} + + + {#if daysPassed > 30} + Your scheduled payment on {toLocaleDate($failedInvoice?.dueAt)} failed. To resume + write access of your organization, please update your billing details. + {:else} + Your scheduled payment on {toLocaleDate($failedInvoice?.dueAt)} failed. Access + to paid projects within this organization will be disabled if no action is taken within + 30 days. + {/if} + + + + + +{/if} diff --git a/src/lib/components/billing/alerts/tooManyFreeOrgs.svelte b/src/lib/components/billing/alerts/tooManyFreeOrgs.svelte new file mode 100644 index 0000000000..f5fa340d4c --- /dev/null +++ b/src/lib/components/billing/alerts/tooManyFreeOrgs.svelte @@ -0,0 +1,11 @@ + + +{#if $failedInvoice} + + All but one organization will be automatically upgraded to a Pro plan on 01 Feb 2024. + You can add a payment method or transfer projects from your settings. + +{/if} diff --git a/src/lib/components/billing/couponInput.svelte b/src/lib/components/billing/couponInput.svelte new file mode 100644 index 0000000000..1f81a3a74a --- /dev/null +++ b/src/lib/components/billing/couponInput.svelte @@ -0,0 +1,74 @@ + + + + + + + {#if couponData?.status === 'error'} +
+ + + {couponData.code} is not a valid promo code + +
+ {:else if couponData?.status === 'active'} +
+
+ + + + {couponData.code} applied (-${couponData.credits}) + + +
+ +
+ {/if} +
diff --git a/src/lib/components/billing/index.ts b/src/lib/components/billing/index.ts new file mode 100644 index 0000000000..0d7a98daa0 --- /dev/null +++ b/src/lib/components/billing/index.ts @@ -0,0 +1,2 @@ +export { default as PaymentBoxes } from './paymentBoxes.svelte'; +export { default as CouponInput } from './couponInput.svelte'; diff --git a/src/lib/components/billing/paymentBoxes.svelte b/src/lib/components/billing/paymentBoxes.svelte new file mode 100644 index 0000000000..62170b8137 --- /dev/null +++ b/src/lib/components/billing/paymentBoxes.svelte @@ -0,0 +1,87 @@ + + + + + + + + {element.brand} ending in {element.last4} + + + + + + Add new payment method + + + + + +
+
+
+
+
+ +
+
+
+
+ + diff --git a/src/lib/components/box.svelte b/src/lib/components/box.svelte index d77ca8eb4e..9d164cd57c 100644 --- a/src/lib/components/box.svelte +++ b/src/lib/components/box.svelte @@ -5,7 +5,7 @@ export { classes as class }; enum radiuses { - xsmall = '--border-radius-extra-large', + xsmall = '--border-radius-xsmall', small = '--border-radius-small', medium = '--border-radius-medium', large = '--border-radius-large' diff --git a/src/lib/components/card.svelte b/src/lib/components/card.svelte index 24c81e6e1e..d5a3cbdb72 100644 --- a/src/lib/components/card.svelte +++ b/src/lib/components/card.svelte @@ -24,6 +24,8 @@ export let isButton = false; export let danger = false; export let href: string = null; + let classes = ''; + export { classes as class }; function getElement() { switch (true) { @@ -39,7 +41,7 @@ @@ -18,8 +25,12 @@ {#if total > 3 ? total < limit + offset : total % 2 !== 0} - - - + {#if isCloud && serviceId && total >= planLimit} + + {:else} + + + + {/if} {/if} diff --git a/src/lib/components/cardGrid.svelte b/src/lib/components/cardGrid.svelte index 20622e636e..33dff20d1b 100644 --- a/src/lib/components/cardGrid.svelte +++ b/src/lib/components/cardGrid.svelte @@ -10,7 +10,7 @@
-
+
diff --git a/src/lib/components/cardPlanLimit.svelte b/src/lib/components/cardPlanLimit.svelte new file mode 100644 index 0000000000..966337d2fa --- /dev/null +++ b/src/lib/components/cardPlanLimit.svelte @@ -0,0 +1,16 @@ + + +
+
+

Upgrade your plan to add more {service}

+ +
+
diff --git a/src/lib/components/creditCardBrandImage.svelte b/src/lib/components/creditCardBrandImage.svelte new file mode 100644 index 0000000000..6bfe34c7ce --- /dev/null +++ b/src/lib/components/creditCardBrandImage.svelte @@ -0,0 +1,14 @@ + + +{brand} diff --git a/src/lib/components/creditCardInfo.svelte b/src/lib/components/creditCardInfo.svelte new file mode 100644 index 0000000000..b3b89d0d70 --- /dev/null +++ b/src/lib/components/creditCardInfo.svelte @@ -0,0 +1,36 @@ + + +
+
+
+ +

+ {paymentMethod?.brand} ending in {paymentMethod?.last4} +

+ +
+

+ Expires {paymentMethod?.expiryMonth}/{paymentMethod?.expiryYear} +

+ {#if paymentMethod?.name} +

+ {paymentMethod.name} +

+ {/if} +
+ + +
+ {#if paymentMethod?.expired} + + This payment method has expired + + {/if} +
diff --git a/src/lib/components/drop.svelte b/src/lib/components/drop.svelte index 31077c10d3..d6c899df21 100644 --- a/src/lib/components/drop.svelte +++ b/src/lib/components/drop.svelte @@ -143,7 +143,7 @@ .drop-arrow::before { content: ''; transform: rotate(45deg); - background: hsl(var(--color-neutral-200)); + background: hsl(var(--color-neutral-85)); body.theme-light & { background: hsl(var(--color-neutral-10)); diff --git a/src/lib/components/dropListItem.svelte b/src/lib/components/dropListItem.svelte index 98d7c2676c..acf02686b0 100644 --- a/src/lib/components/dropListItem.svelte +++ b/src/lib/components/dropListItem.svelte @@ -4,6 +4,7 @@ export let disabled = false; export let icon: string = null; export let event: string = null; + export let loading = false; function track() { if (!event) { @@ -17,10 +18,17 @@
  • -
  • diff --git a/src/lib/components/dropListLink.svelte b/src/lib/components/dropListLink.svelte index f0b0ca024b..0267a21d05 100644 --- a/src/lib/components/dropListLink.svelte +++ b/src/lib/components/dropListLink.svelte @@ -1,13 +1,27 @@
  • + class="card u-grid u-cross-center u-width-full-line dashed" + class:common-section={marginTop}>
    diff --git a/src/lib/components/fakeModal.svelte b/src/lib/components/fakeModal.svelte new file mode 100644 index 0000000000..34dc2ea6bb --- /dev/null +++ b/src/lib/components/fakeModal.svelte @@ -0,0 +1,164 @@ + + + + +{#if show} + +
    + +
    +{/if} + + diff --git a/src/lib/components/gridItem1.svelte b/src/lib/components/gridItem1.svelte index e5041f9da5..ac1bb8ea0b 100644 --- a/src/lib/components/gridItem1.svelte +++ b/src/lib/components/gridItem1.svelte @@ -7,7 +7,7 @@
    - +
    diff --git a/src/lib/components/heading.svelte b/src/lib/components/heading.svelte index f6c4d4740d..440693da16 100644 --- a/src/lib/components/heading.svelte +++ b/src/lib/components/heading.svelte @@ -6,8 +6,10 @@ export let size: Size; export let trimmed = true; export let id: string = null; + let classes = ''; + export { classes as class }; - + diff --git a/src/lib/components/index.ts b/src/lib/components/index.ts index 4b12577c84..781ce567c5 100644 --- a/src/lib/components/index.ts +++ b/src/lib/components/index.ts @@ -46,13 +46,20 @@ export { default as EventModal } from './eventModal.svelte'; export { default as Status } from './status.svelte'; export { default as Heading } from './heading.svelte'; export { default as Output } from './output.svelte'; +export { default as Support } from './support.svelte'; export { default as ViewSelector } from './viewSelector.svelte'; export { default as LabelCard } from './labelCard.svelte'; +export { default as RegionCard } from './regionCard.svelte'; export { default as Limit } from './limit.svelte'; export { default as PaginationWithLimit } from './paginationWithLimit.svelte'; export { default as ClickableList } from './clickableList.svelte'; export { default as ClickableListItem } from './clickableListItem.svelte'; export { default as Id } from './id.svelte'; +export { default as ProgressBar } from './progressBar.svelte'; +export { default as ProgressBarBig } from './progressBarBig.svelte'; +export { default as CreditCardInfo } from './creditCardInfo.svelte'; +export { default as CreditCardBrandImage } from './creditCardBrandImage.svelte'; +export { default as CardPlanLimit } from './cardPlanLimit.svelte'; export { default as NumericList } from './numericList.svelte'; export { default as NumericListItem } from './numericListItem.svelte'; export { default as EyebrowHeading } from './eyebrowHeading.svelte'; @@ -60,3 +67,7 @@ export { default as SvgIcon } from './svgIcon.svelte'; export { default as MigrationBox } from './migrationBox.svelte'; export { default as FloatingActionBar } from './floatingActionBar.svelte'; export { default as LoadingDots } from './loadingDots.svelte'; +export { default as FakeModal } from './fakeModal.svelte'; +export { default as RadioBoxes } from './radioBoxes.svelte'; +export { default as ModalWrapper } from './modalWrapper.svelte'; +export { default as ModalSideCol } from './modalSideCol.svelte'; diff --git a/src/lib/components/labelCard.svelte b/src/lib/components/labelCard.svelte index 5565b392e4..9d30f9b0c1 100644 --- a/src/lib/components/labelCard.svelte +++ b/src/lib/components/labelCard.svelte @@ -1,4 +1,6 @@ diff --git a/src/lib/components/list.svelte b/src/lib/components/list.svelte index 2b3b007b58..518497ae71 100644 --- a/src/lib/components/list.svelte +++ b/src/lib/components/list.svelte @@ -1,3 +1,4 @@ -
      + +
      diff --git a/src/lib/components/listItem.svelte b/src/lib/components/listItem.svelte index 68b959ff20..26805f943b 100644 --- a/src/lib/components/listItem.svelte +++ b/src/lib/components/listItem.svelte @@ -1,16 +1,8 @@ -
    • -
      - -
      - -
      -

      - -

      - -
      +
    • +
    • diff --git a/src/lib/components/modal.svelte b/src/lib/components/modal.svelte index 6d123ef696..816ce20466 100644 --- a/src/lib/components/modal.svelte +++ b/src/lib/components/modal.svelte @@ -1,6 +1,5 @@ - - - - {#if show} -
      - +
      + +
    + + {#if $$slots.footer} + + {/if} + + diff --git a/src/lib/components/modalSideCol.svelte b/src/lib/components/modalSideCol.svelte new file mode 100644 index 0000000000..4e12602abf --- /dev/null +++ b/src/lib/components/modalSideCol.svelte @@ -0,0 +1,77 @@ + + + +
    +
    + +
    +
    + + +
    +
    +
    + + diff --git a/src/lib/components/modalWrapper.svelte b/src/lib/components/modalWrapper.svelte new file mode 100644 index 0000000000..0e28bdf618 --- /dev/null +++ b/src/lib/components/modalWrapper.svelte @@ -0,0 +1,82 @@ + + + + + + {#if show} + + {/if} + diff --git a/src/lib/components/progressBar.svelte b/src/lib/components/progressBar.svelte new file mode 100644 index 0000000000..406f69c025 --- /dev/null +++ b/src/lib/components/progressBar.svelte @@ -0,0 +1,38 @@ + + +
    +
    +

    + {#if icon} +

    +

    + {progress}% +

    +
    +
    +
    + {used}{unit} + {max}{unit} +
    +
    diff --git a/src/lib/components/progressBarBig.svelte b/src/lib/components/progressBarBig.svelte new file mode 100644 index 0000000000..3a177f6a38 --- /dev/null +++ b/src/lib/components/progressBarBig.svelte @@ -0,0 +1,36 @@ + + +
    +
    +
    +

    + {currentValue} + {currentUnit} +

    +

    {progress}%

    +
    +

    + {maxValue} + {maxUnit} +

    +
    + {#if showBar} +
    = 75 && progress < 100} + class:is-danger={progress >= 100} + style:--graph-size={Math.max(Math.min(progress, maximum), minimum) + '%'} /> + {/if} +
    diff --git a/src/lib/components/radioBoxes.svelte b/src/lib/components/radioBoxes.svelte new file mode 100644 index 0000000000..74e84a85ae --- /dev/null +++ b/src/lib/components/radioBoxes.svelte @@ -0,0 +1,41 @@ + + +
    + {#if total} + {#each elements as element} + {@const value = element[variableName]?.toString()} +
    + + + +
    + {/each} + {/if} + +
    + {#if total} + + + Add new {name} + + + {/if} + {#if group === null} + + {/if} +
    +
    diff --git a/src/lib/components/regionCard.svelte b/src/lib/components/regionCard.svelte new file mode 100644 index 0000000000..3e1964802b --- /dev/null +++ b/src/lib/components/regionCard.svelte @@ -0,0 +1,34 @@ + + + diff --git a/src/lib/components/step.svelte b/src/lib/components/step.svelte index 17597f4c16..a229f65ba7 100644 --- a/src/lib/components/step.svelte +++ b/src/lib/components/step.svelte @@ -3,12 +3,14 @@ export let current = false; export let currentSub = 0; export let isSub = false; - export let step: { text: string; substeps?: { text: string }[] }; + export let step: { text: string; disabled?: boolean; substeps?: { text: string }[] };
  • + {:else} + + {/if} + +{/if} +
    +
    +

    Troubleshooting

    + +
    + {#key $app.themeInUse} + + {/key} +
    +
    + +
    +
    +
    +
    +

    Community support

    +

    Get help from our community

    +
    +
      +
    • + +
    • +
    • + +
    • +
    +
    diff --git a/src/lib/constants.ts b/src/lib/constants.ts index a2107d03cd..52d2b999bd 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -3,6 +3,10 @@ export const CARD_LIMIT = 6; // default card limit export const INTERVAL = 5 * 60000; // default interval to check for feedback export enum Dependencies { + CREDIT = 'dependency:credit', + INVOICES = 'dependency:invoices', + ADDRESS = 'dependency:address', + PAYMENT_METHODS = 'dependency:paymentMethods', ORGANIZATION = 'dependency:organization', PROJECT = 'dependency:project', PROJECT_VARIABLES = 'dependency:project_variables', @@ -273,3 +277,342 @@ export const eventServices: Array = [ ] } ]; + +export const usageRates = { + 'tier-0': [ + { + id: 'members', + resource: 'Organization members', + amount: 1, + unit: '', + rate: '$20/member' + }, + { id: 'bandwith', resource: 'Bandwidth', amount: 10, unit: 'GB', rate: '$0.04/GB' }, + { id: 'storage', resource: 'Storage', amount: 2, unit: 'GB', rate: '$0.025/GB' }, + { + id: 'executions', + resource: 'Function executions', + amount: 750000, + unit: 'executions', + rate: '$2/1M executions' + }, + { + id: 'users', + resource: 'Active users', + amount: 200000, + unit: 'AU', + rate: '$0.0012/user' + }, + { + id: 'connections', + resource: 'Concurrent connections', + amount: 750, + unit: 'connections', + rate: '$5/1K connections' + } + ], + 'tier-1': [ + { + id: 'members', + resource: 'Organization members', + amount: 'Unlimited', + unit: '', + rate: '$20/member' + }, + { id: 'bandwith', resource: 'Bandwidth', amount: 1, unit: 'TB', rate: '$0.04/GB' }, + { id: 'storage', resource: 'Storage', amount: 150, unit: 'GB', rate: '$0.025/GB' }, + { + id: 'executions', + resource: 'Function executions', + amount: 3500000, + unit: 'executions', + rate: '$2/1M executions' + }, + { + id: 'users', + resource: 'Active users', + amount: 200000, + unit: 'AU', + rate: '$0.0012/user' + }, + { + id: 'connections', + resource: 'Concurrent connections', + amount: 750, + unit: 'connections', + rate: '$5/1K connections' + } + ], + 'tier-2': [ + { + id: 'members', + resource: 'Organization members', + amount: 'Unlimited', + unit: '', + rate: '$20/member' + }, + { id: 'bandwith', resource: 'Bandwidth', amount: 1, unit: 'TB', rate: '$0.04/GB' }, + { id: 'storage', resource: 'Storage', amount: 150, unit: 'GB', rate: '$0.025/GB' }, + { + id: 'executions', + resource: 'Function executions', + amount: 3500000, + unit: 'executions', + rate: '$2/1M executions' + }, + { + id: 'users', + resource: 'Active users', + amount: 200000, + unit: 'AU', + rate: '$0.0012/user' + }, + { + id: 'connections', + resource: 'Concurrent connections', + amount: 750, + unit: 'connections', + rate: '$5/1K connections' + } + ] +}; + +//resources: bandwidth, buckets, file size limit, functions, executions, users,teams,logs, members, platforms, webhooks, databases, connections, messages +export const limitRates = { + 'tier-0': [ + { + id: 'bandwith', + amount: 10, + unit: 'GB' + }, + { + id: 'buckets', + amount: 3, + unit: '' + }, + { + id: 'file-size-limit', + amount: 1, + unit: 'MB' + }, + { + id: 'storage', + amount: 5, + unit: 'GB' + }, + { + id: 'functions', + amount: 1, + unit: '' + }, + { + id: 'executions', + amount: 750000, + unit: 'executions' + }, + { + id: 'users', + amount: 200000, + unit: 'AU' + }, + + { + id: 'teams', + amount: 1, + unit: '' + }, + + { + id: 'logs', + amount: 1, + unit: '' + }, + + { + id: 'members', + amount: 1, + unit: '' + }, + { + id: 'platforms', + amount: 1, + unit: '' + }, + { + id: 'webhooks', + amount: 1, + unit: '' + }, + { + id: 'databases', + amount: 1, + unit: '' + }, + { + id: 'connections', + amount: 1, + unit: '' + }, + { + id: 'messages', + amount: 1, + unit: '' + } + ], + 'tier-1': [ + { + id: 'bandwith', + amount: 10, + unit: 'GB' + }, + { + id: 'buckets', + amount: 1, + unit: '' + }, + { + id: 'file-size-limit', + amount: 5, + unit: 'MB' + }, + { + id: 'storage', + amount: 5, + unit: 'GB' + }, + { + id: 'functions', + amount: 1, + unit: '' + }, + { + id: 'executions', + amount: 750000, + unit: 'executions' + }, + { + id: 'users', + amount: 200000, + unit: 'AU' + }, + + { + id: 'teams', + amount: 1, + unit: '' + }, + { + id: 'logs', + amount: 1, + unit: '' + }, + { + id: 'members', + amount: 1, + unit: '' + }, + { + id: 'platforms', + amount: 1, + unit: '' + }, + { + id: 'webhooks', + amount: 1, + unit: '' + }, + { + id: 'databases', + amount: 1, + unit: '' + }, + { + id: 'connections', + amount: 1, + unit: '' + }, + { + id: 'messages', + amount: 1, + unit: '' + } + ], + 'tier-2': [ + { + id: 'bandwith', + amount: 10, + unit: 'GB' + }, + { + id: 'buckets', + amount: 1, + unit: '' + }, + { + id: 'file-size-limit', + amount: 5, + unit: 'MB' + }, + { + id: 'storage', + amount: 5, + unit: 'GB' + }, + { + id: 'functions', + amount: 1, + unit: '' + }, + { + id: 'executions', + amount: 750000, + unit: 'executions' + }, + { + id: 'users', + amount: 200000, + unit: 'AU' + }, + + { + id: 'teams', + amount: 1, + unit: '' + }, + { + id: 'logs', + amount: 1, + unit: '' + }, + { + id: 'members', + amount: 1, + unit: '' + }, + { + id: 'platforms', + amount: 1, + unit: '' + }, + { + id: 'webhooks', + amount: 1, + unit: '' + }, + { + id: 'databases', + amount: 1, + unit: '' + }, + { + id: 'connections', + amount: 1, + unit: '' + }, + { + id: 'messages', + amount: 1, + unit: '' + } + ] +}; diff --git a/src/lib/elements/flag.svelte b/src/lib/elements/flag.svelte new file mode 100644 index 0000000000..d1088bddb5 --- /dev/null +++ b/src/lib/elements/flag.svelte @@ -0,0 +1,28 @@ + + +{name} diff --git a/src/lib/elements/forms/button.svelte b/src/lib/elements/forms/button.svelte index af466aa46b..3b8647c217 100644 --- a/src/lib/elements/forms/button.svelte +++ b/src/lib/elements/forms/button.svelte @@ -10,11 +10,13 @@ export let github = false; export let text = false; export let danger = false; - export let disabled = false; export let round = false; + export let link = false; + export let disabled = false; export let external = false; export let href: string = null; export let fullWidth = false; + export let fullWidthMobile = false; export let ariaLabel: string = null; export let noMargin = false; export let event: string = null; @@ -39,7 +41,7 @@ } $: resolvedClasses = [ - 'button', + link ? 'link' : 'button', disabled && 'is-disabled', round && 'is-only-icon', secondary && 'is-secondary', @@ -47,6 +49,7 @@ text && 'is-text', danger && 'is-danger', fullWidth && 'is-full-width', + fullWidthMobile && 'is-full-width-mobile', noMargin && 'u-padding-inline-0', classes ] diff --git a/src/lib/elements/forms/form.svelte b/src/lib/elements/forms/form.svelte index 8145f2c698..c382d58ccf 100644 --- a/src/lib/elements/forms/form.svelte +++ b/src/lib/elements/forms/form.svelte @@ -14,6 +14,8 @@ export let noStyle = false; export let isModal = false; export let onSubmit: (e: SubmitEvent) => Promise | void; + let classes = ''; + export { classes as class }; const { isSubmitting } = setContext('form', { isSubmitting: writable(false) @@ -27,6 +29,7 @@
    diff --git a/src/lib/elements/forms/index.ts b/src/lib/elements/forms/index.ts index 1f729ba4b6..22f3688a2d 100644 --- a/src/lib/elements/forms/index.ts +++ b/src/lib/elements/forms/index.ts @@ -27,3 +27,5 @@ export { default as InputSecret } from './inputSecret.svelte'; export { default as Helper } from './helper.svelte'; export { default as Label } from './label.svelte'; export { default as InputProjectId } from './inputProjectId.svelte'; +export { default as InputDate } from './inputDate.svelte'; +export { default as InputDateRange } from './inputDateRange.svelte'; diff --git a/src/lib/elements/forms/inputCheckbox.svelte b/src/lib/elements/forms/inputCheckbox.svelte index d32c95bd62..4aaf52c6be 100644 --- a/src/lib/elements/forms/inputCheckbox.svelte +++ b/src/lib/elements/forms/inputCheckbox.svelte @@ -1,5 +1,6 @@ - + {#if label}
  • diff --git a/src/routes/register/+page.svelte b/src/routes/register/+page.svelte index 3677e7de33..f2c15e4f30 100644 --- a/src/routes/register/+page.svelte +++ b/src/routes/register/+page.svelte @@ -18,6 +18,7 @@ import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { ID } from '@appwrite.io/console'; import { isCloud } from '$lib/system'; + import { page } from '$app/stores'; let name: string, mail: string, pass: string, disabled: boolean; let terms = false; @@ -28,7 +29,17 @@ await sdk.forConsole.account.create(ID.unique(), mail, pass, name ?? ''); await sdk.forConsole.account.createEmailSession(mail, pass); await invalidate(Dependencies.ACCOUNT); - await goto(`${base}/console`); + if ($page.url.searchParams) { + const redirect = $page.url.searchParams.get('redirect'); + $page.url.searchParams.delete('redirect'); + if (redirect) { + await goto(`${base}${redirect}${$page.url.search}`); + } else { + await goto(`${base}/console${$page.url.search ?? ''}`); + } + } else { + await goto(`${base}/console`); + } trackEvent(Submit.AccountCreate); } catch (error) { disabled = false; diff --git a/src/routes/register/invite/[slug]/+page.svelte b/src/routes/register/invite/[slug]/+page.svelte index 0d31350a4c..fa7cacb81e 100644 --- a/src/routes/register/invite/[slug]/+page.svelte +++ b/src/routes/register/invite/[slug]/+page.svelte @@ -73,7 +73,9 @@ throw new Error((await res.json()).message); } else { await sdk.forConsole.account.createEmailSession(mail, pass); - await sdk.forConsole.account.updatePrefs({ code }); + const prefs = await sdk.forConsole.account.getPrefs(); + const newPrefs = { ...prefs, code }; + await sdk.forConsole.account.updatePrefs(newPrefs); await invalidate(Dependencies.ACCOUNT); await goto(`${base}/console`); trackEvent('submit_account_create', { code: code }); diff --git a/src/routes/store.ts b/src/routes/store.ts index be68598774..5c5fe880de 100644 --- a/src/routes/store.ts +++ b/src/routes/store.ts @@ -1,10 +1,5 @@ -import { page } from '$app/stores'; -import type { Models } from '@appwrite.io/console'; -import { derived, writable } from 'svelte/store'; +import { writable } from 'svelte/store'; export const loading = writable(true); -export const organizations = derived(page, ($page) => { - return $page.data.organizations as Models.TeamList; -}); export const requestedMigration = writable | null>(null); diff --git a/svelte.config.js b/svelte.config.js index ca8f1dd0ba..a3e96612f2 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,11 +1,13 @@ import adapter from '@sveltejs/adapter-static'; import preprocess from 'svelte-preprocess'; +import { preprocessMeltUI } from '@melt-ui/pp'; +import sequence from 'svelte-sequential-preprocessor'; /** @type {import('@sveltejs/kit').Config} */ const config = { // Consult https://github.com/sveltejs/svelte-preprocess // for more information about preprocessors - preprocess: preprocess(), + preprocess: sequence([preprocess(), preprocessMeltUI()]), compilerOptions: { accessors: process.env.VITEST },