diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte index 5976dd8..a4f0511 100644 --- a/frontend/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -68,3 +68,17 @@ {/if} {@render children?.()} + + diff --git a/frontend/src/routes/account/+page.svelte b/frontend/src/routes/account/+page.svelte index 0827b08..c57ee18 100644 --- a/frontend/src/routes/account/+page.svelte +++ b/frontend/src/routes/account/+page.svelte @@ -1550,6 +1550,24 @@ + +
+

Data Privacy

+

+ View and export all personal data we hold about you +

+ +
+ + + {#if authStore.currentUser?.role !== 'admin'}
diff --git a/frontend/src/routes/gdpr/+page.svelte b/frontend/src/routes/gdpr/+page.svelte new file mode 100644 index 0000000..4cda041 --- /dev/null +++ b/frontend/src/routes/gdpr/+page.svelte @@ -0,0 +1,1014 @@ + + + + Your Personal Data — Crussell + + +
+ {#if pageState === 'loading' || pageState === 'generating'} +

Your Personal Data Report

+
+
+ Loading… +
+

Generating report…

+
+
+ {#each [1, 2, 3] as _i (_i)} +
+ +
+ + + +
+
+ {/each} +
+ {:else if pageState === 'error'} +
+

Something went wrong

+

{errorMessage}

+
+ + +
+
+ {:else if pageState === 'loaded' && gdprData} + + {/if} +
+ + diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 37bb642..9fb2c09 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -7,5 +7,8 @@ export default defineConfig({ assetsInclude: ['**/*.wasm'], optimizeDeps: { exclude: ['@discourse/jxl', '@jsquash/avif', '@jsquash/webp', '@jsquash/jpeg'] + }, + worker: { + format: 'es' } });