diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 000000000..3c1848749 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,9 @@ +# This configuration file was automatically generated by Gitpod. +# Please adjust to your needs (see https://www.gitpod.io/docs/introduction/learn-gitpod/gitpod-yaml) +# and commit this file to your remote git repository to share the goodness with others. + +# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart + +tasks: + - init: npm install && npm run build + command: npm run dev diff --git a/package-lock.json b/package-lock.json index 8276179cd..d4d3f9f2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,8 @@ "name": "@appwrite/console", "dependencies": { "@analytics/google-analytics": "^1.0.5", - "@appwrite.io/console": "^0.1.1", + "@analytics/google-tag-manager": "^0.5.3", + "@appwrite.io/console": "0.2.0", "@appwrite.io/pink": "^0.0.6-rc.14", "@popperjs/core": "^2.11.6", "@sentry/svelte": "^7.44.2", @@ -20,6 +21,7 @@ "nanoid": "^4.0.2", "pretty-bytes": "^6.1.0", "prismjs": "^1.29.0", + "svelte-confetti": "^1.2.2", "tippy.js": "^6.3.7", "web-vitals": "^3.1.1" }, @@ -124,6 +126,11 @@ "resolved": "https://registry.npmjs.org/@analytics/google-analytics/-/google-analytics-1.0.7.tgz", "integrity": "sha512-KZ69NaMIi5kOcouzqI8cu7tZgQl7ziGiRahfU6zniUf32G8bv7wQDh73JFz1NwO6gBPloUc+5BzEoWzScM5Rgw==" }, + "node_modules/@analytics/google-tag-manager": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@analytics/google-tag-manager/-/google-tag-manager-0.5.5.tgz", + "integrity": "sha512-bYTzseT3DRwMhkWr0+zJH6BHdk5FDZv1TqU5dHseh60zf/sl3LlWUbb8Lgl41LAOmA2Qy1frJXr3mIO1Tak8Yg==" + }, "node_modules/@analytics/localstorage-utils": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/@analytics/localstorage-utils/-/localstorage-utils-0.1.10.tgz", @@ -158,9 +165,9 @@ "integrity": "sha512-TD+xbmsBLyYy/IxFimW/YL/9L2IEnM7/EoV9Aeh56U64Ify8o27HJcKjo38XY9Tcn0uOq1AX3thkKgvtWvwFQg==" }, "node_modules/@appwrite.io/console": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@appwrite.io/console/-/console-0.1.1.tgz", - "integrity": "sha512-7aBh/8QxKmaMsP9tVJgNsrOBstuikKasSUoSyRNxblK3J/OdPXnQRInZELT9uaK+vqjZaCYspA3B+5UH+DZ9Dw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@appwrite.io/console/-/console-0.2.0.tgz", + "integrity": "sha512-jgFYoskSCWaesF8zfsgYoTEKfyn6Kq3R9c5sM4AH2H+B/hmT8jwu9c3UU+LHBZ3BLdB9Zm3xOMa4bPyiQwzSeQ==", "dependencies": { "cross-fetch": "3.1.5", "isomorphic-form-data": "2.0.0" @@ -8174,6 +8181,11 @@ "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0" } }, + "node_modules/svelte-confetti": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/svelte-confetti/-/svelte-confetti-1.2.4.tgz", + "integrity": "sha512-2ut7fEjfHIQ5foXuBaVwalUdl7JlyhgEkFbepGYpOx2dOGC2vjj4kkepcYr/Fl3+CyqfnVmXre1owM+3rpfJEg==" + }, "node_modules/svelte-hmr": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.2.tgz", diff --git a/package.json b/package.json index 83f5967ca..82564d85a 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,9 @@ }, "dependencies": { "@analytics/google-analytics": "^1.0.5", - "@appwrite.io/console": "^0.1.1", "@appwrite.io/pink": "^0.0.6-rc.14", + "@appwrite.io/console": "0.2.0", + "@analytics/google-tag-manager": "^0.5.3", "@popperjs/core": "^2.11.6", "@sentry/svelte": "^7.44.2", "@sentry/tracing": "^7.44.2", @@ -32,6 +33,7 @@ "nanoid": "^4.0.2", "pretty-bytes": "^6.1.0", "prismjs": "^1.29.0", + "svelte-confetti": "^1.2.2", "tippy.js": "^6.3.7", "web-vitals": "^3.1.1" }, diff --git a/src/app.html b/src/app.html index 994a0b038..3a25d1151 100644 --- a/src/app.html +++ b/src/app.html @@ -43,6 +43,8 @@ + + %sveltekit.head% diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index 664d86d46..e68e166c2 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -1,8 +1,9 @@ import { page } from '$app/stores'; import { user } from '$lib/stores/user'; -import { ENV, MODE, VARS } from '$lib/system'; +import { ENV, MODE, VARS, isCloud } from '$lib/system'; import googleAnalytics from '@analytics/google-analytics'; import { AppwriteException } from '@appwrite.io/console'; +import googleTagManager from '@analytics/google-tag-manager'; import Analytics from 'analytics'; import { get } from 'svelte/store'; @@ -11,7 +12,14 @@ const analytics = Analytics({ plugins: [ googleAnalytics({ measurementIds: [VARS.GOOGLE_ANALYTICS || 'G-R4YJ9JN8L4'] - }) + }), + ...(isCloud + ? [ + googleTagManager({ + containerId: [VARS.GOOGLE_TAG || 'GTM-P3T9TBV'] + }) + ] + : []) ] }); diff --git a/src/lib/components/cardGrid.svelte b/src/lib/components/cardGrid.svelte index e7870a977..7616831e3 100644 --- a/src/lib/components/cardGrid.svelte +++ b/src/lib/components/cardGrid.svelte @@ -19,3 +19,10 @@ {/if} + + diff --git a/src/lib/components/clickableListItem.svelte b/src/lib/components/clickableListItem.svelte index 00308d47a..78a4dbe08 100644 --- a/src/lib/components/clickableListItem.svelte +++ b/src/lib/components/clickableListItem.svelte @@ -4,11 +4,15 @@
  • -
    - -
    -
    -

    -
    + {#if $$slots.default} +
    + +
    + {/if} + {#if $$slots.desc} +
    +

    +
    + {/if}
  • diff --git a/src/lib/components/drop.svelte b/src/lib/components/drop.svelte index ca65fb4e3..d89577556 100644 --- a/src/lib/components/drop.svelte +++ b/src/lib/components/drop.svelte @@ -14,7 +14,9 @@ export let fullWidth = false; export let fixed = false; - const dispatch = createEventDispatcher(); + const dispatch = createEventDispatcher<{ + blur: undefined; + }>(); let element: HTMLDivElement; let tooltip: HTMLDivElement; diff --git a/src/lib/components/permissions/actions.svelte b/src/lib/components/permissions/actions.svelte index e85deb2fd..d3c7e91cc 100644 --- a/src/lib/components/permissions/actions.svelte +++ b/src/lib/components/permissions/actions.svelte @@ -20,7 +20,7 @@ } - + dispatch('create', ['any'])}> diff --git a/src/lib/components/permissions/permissions.svelte b/src/lib/components/permissions/permissions.svelte index e50feb9a6..9b9a4dbb8 100644 --- a/src/lib/components/permissions/permissions.svelte +++ b/src/lib/components/permissions/permissions.svelte @@ -12,7 +12,6 @@ {#if [...$groups]?.length} - - - Role - {#if withCreate} - Create - {/if} - Read - Update - Delete - - - - {#each [...$groups].sort(sortRoles) as [role, permission] (role)} - - - - +
    +
    + + Role + {#if withCreate} + Create + {/if} + Read + Update + Delete + + + + {#each [...$groups].sort(sortRoles) as [role, permission] (role)} + + + + - {#if withCreate} - + {#if withCreate} + + togglePermission(role, 'create')} /> + + {/if} + togglePermission(role, 'create')} /> + aria-label="Read" + checked={permission.read} + on:change={() => togglePermission(role, 'read')} /> + + + togglePermission(role, 'update')} /> + + + togglePermission(role, 'delete')} /> - {/if} - - togglePermission(role, 'read')} /> - - - togglePermission(role, 'update')} /> - - - togglePermission(role, 'delete')} /> - - -
    - -
    -
    -
    - {/each} -
    -
    + +
    + +
    +
    + + {/each} + + + {/if} + + diff --git a/src/lib/elements/forms/formItem.svelte b/src/lib/elements/forms/formItem.svelte index d1301d5d6..3e08ea271 100644 --- a/src/lib/elements/forms/formItem.svelte +++ b/src/lib/elements/forms/formItem.svelte @@ -1,3 +1,7 @@ -
  • + + +
  • diff --git a/src/lib/elements/forms/inputFile.svelte b/src/lib/elements/forms/inputFile.svelte index 0c73f3dc2..e85d755e2 100644 --- a/src/lib/elements/forms/inputFile.svelte +++ b/src/lib/elements/forms/inputFile.svelte @@ -1,11 +1,12 @@ `.${n}`).join(',')} type="file" @@ -123,7 +152,7 @@ {fileSize.value + fileSize.unit}