diff --git a/.svelte-kit/generated/client/app.js b/.svelte-kit/generated/client/app.js
deleted file mode 100644
index 4a13723..0000000
--- a/.svelte-kit/generated/client/app.js
+++ /dev/null
@@ -1,34 +0,0 @@
-export { matchers } from './matchers.js';
-
-export const nodes = [
- () => import('./nodes/0'),
- () => import('./nodes/1'),
- () => import('./nodes/2'),
- () => import('./nodes/3'),
- () => import('./nodes/4'),
- () => import('./nodes/5')
-];
-
-export const server_loads = [0];
-
-export const dictionary = {
- "/": [2],
- "/about": [3],
- "/donate": [4],
- "/viewer": [5]
- };
-
-export const hooks = {
- handleError: (({ error }) => { console.error(error) }),
-
- reroute: (() => {}),
- transport: {}
-};
-
-export const decoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.decode]));
-
-export const hash = false;
-
-export const decode = (type, value) => decoders[type](value);
-
-export { default as root } from '../root.js';
\ No newline at end of file
diff --git a/.svelte-kit/generated/client/matchers.js b/.svelte-kit/generated/client/matchers.js
deleted file mode 100644
index f6bd30a..0000000
--- a/.svelte-kit/generated/client/matchers.js
+++ /dev/null
@@ -1 +0,0 @@
-export const matchers = {};
\ No newline at end of file
diff --git a/.svelte-kit/generated/client/nodes/0.js b/.svelte-kit/generated/client/nodes/0.js
deleted file mode 100644
index fed1375..0000000
--- a/.svelte-kit/generated/client/nodes/0.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default as component } from "../../../../src/routes/+layout.svelte";
\ No newline at end of file
diff --git a/.svelte-kit/generated/client/nodes/1.js b/.svelte-kit/generated/client/nodes/1.js
deleted file mode 100644
index bf58bad..0000000
--- a/.svelte-kit/generated/client/nodes/1.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default as component } from "../../../../node_modules/@sveltejs/kit/src/runtime/components/svelte-5/error.svelte";
\ No newline at end of file
diff --git a/.svelte-kit/generated/client/nodes/2.js b/.svelte-kit/generated/client/nodes/2.js
deleted file mode 100644
index 1cb4f85..0000000
--- a/.svelte-kit/generated/client/nodes/2.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default as component } from "../../../../src/routes/+page.svelte";
\ No newline at end of file
diff --git a/.svelte-kit/generated/client/nodes/3.js b/.svelte-kit/generated/client/nodes/3.js
deleted file mode 100644
index 053ed5d..0000000
--- a/.svelte-kit/generated/client/nodes/3.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default as component } from "../../../../src/routes/about/+page.svelte";
\ No newline at end of file
diff --git a/.svelte-kit/generated/client/nodes/4.js b/.svelte-kit/generated/client/nodes/4.js
deleted file mode 100644
index 4fc32c1..0000000
--- a/.svelte-kit/generated/client/nodes/4.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default as component } from "../../../../src/routes/donate/+page.svelte";
\ No newline at end of file
diff --git a/.svelte-kit/generated/client/nodes/5.js b/.svelte-kit/generated/client/nodes/5.js
deleted file mode 100644
index 07732a9..0000000
--- a/.svelte-kit/generated/client/nodes/5.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default as component } from "../../../../src/routes/viewer/+page.svelte";
\ No newline at end of file
diff --git a/.svelte-kit/generated/root.js b/.svelte-kit/generated/root.js
deleted file mode 100644
index 4d1e892..0000000
--- a/.svelte-kit/generated/root.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import { asClassComponent } from 'svelte/legacy';
-import Root from './root.svelte';
-export default asClassComponent(Root);
\ No newline at end of file
diff --git a/.svelte-kit/generated/root.svelte b/.svelte-kit/generated/root.svelte
deleted file mode 100644
index 8f82bae..0000000
--- a/.svelte-kit/generated/root.svelte
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-{#if constructors[1]}
- {@const Pyramid_0 = constructors[0]}
-
-
-
-
-
-
-{:else}
- {@const Pyramid_0 = constructors[0]}
-
-
-
-{/if}
-
-{#if mounted}
-
- {#if navigated}
- {title}
- {/if}
-
-{/if}
\ No newline at end of file
diff --git a/.svelte-kit/generated/server/internal.js b/.svelte-kit/generated/server/internal.js
deleted file mode 100644
index b59a3fa..0000000
--- a/.svelte-kit/generated/server/internal.js
+++ /dev/null
@@ -1,48 +0,0 @@
-
-import root from '../root.js';
-import { set_building, set_prerendering } from '__sveltekit/environment';
-import { set_assets } from '__sveltekit/paths';
-import { set_manifest, set_read_implementation } from '__sveltekit/server';
-import { set_private_env, set_public_env, set_safe_public_env } from '../../../node_modules/@sveltejs/kit/src/runtime/shared-server.js';
-
-export const options = {
- app_template_contains_nonce: false,
- csp: {"mode":"auto","directives":{"upgrade-insecure-requests":false,"block-all-mixed-content":false},"reportOnly":{"upgrade-insecure-requests":false,"block-all-mixed-content":false}},
- csrf_check_origin: true,
- embedded: false,
- env_public_prefix: 'PUBLIC_',
- env_private_prefix: '',
- hash_routing: false,
- hooks: null, // added lazily, via `get_hooks`
- preload_strategy: "modulepreload",
- root,
- service_worker: false,
- templates: {
- app: ({ head, body, assets, nonce, env }) => "\n\n \n \n \n \n \n " + head + "\n \n \n " + body + "
\n \n\n",
- error: ({ status, message }) => "\n\n\t\n\t\t\n\t\t" + message + "\n\n\t\t\n\t\n\t\n\t\t\n\t\t\t
" + status + "\n\t\t\t
\n\t\t\t\t
" + message + "
\n\t\t\t\n\t\t
\n\t\n\n"
- },
- version_hash: "1wnc9w8"
-};
-
-export async function get_hooks() {
- let handle;
- let handleFetch;
- let handleError;
- let init;
-
-
- let reroute;
- let transport;
-
-
- return {
- handle,
- handleFetch,
- handleError,
- init,
- reroute,
- transport
- };
-}
-
-export { set_assets, set_building, set_manifest, set_prerendering, set_private_env, set_public_env, set_read_implementation, set_safe_public_env };
diff --git a/src/lib/components/Footer.svelte b/src/lib/components/Footer.svelte
new file mode 100644
index 0000000..8b1b1d0
--- /dev/null
+++ b/src/lib/components/Footer.svelte
@@ -0,0 +1,95 @@
+
+
+
+
+
diff --git a/src/lib/translations/en-US/footer.json b/src/lib/translations/en-US/footer.json
new file mode 100644
index 0000000..87521bb
--- /dev/null
+++ b/src/lib/translations/en-US/footer.json
@@ -0,0 +1,6 @@
+{
+ "privacy.policy": "🔐 Privacy Policy",
+ "terms.of.service": "📝 Terms of Service",
+ "copyright": "Copyright © {{year}} Leonardo Murça.
All rights reserved.",
+ "version": "🧵 Version: {{version}}"
+}
diff --git a/src/lib/translations/index.js b/src/lib/translations/index.js
index 746b6da..6ea28c5 100644
--- a/src/lib/translations/index.js
+++ b/src/lib/translations/index.js
@@ -24,11 +24,21 @@ const config = {
key: 'header',
loader: async () => (await import('./en-US/header.json')).default,
},
+ {
+ locale: SUPPORTED_LOCALES.EN_US,
+ key: 'footer',
+ loader: async () => (await import('./en-US/footer.json')).default,
+ },
{
locale: SUPPORTED_LOCALES.PT_BR,
key: 'header',
loader: async () => (await import('./pt-BR/header.json')).default,
},
+ {
+ locale: SUPPORTED_LOCALES.PT_BR,
+ key: 'footer',
+ loader: async () => (await import('./pt-BR/footer.json')).default,
+ },
],
};
diff --git a/src/lib/translations/pt-BR/footer.json b/src/lib/translations/pt-BR/footer.json
new file mode 100644
index 0000000..d24a690
--- /dev/null
+++ b/src/lib/translations/pt-BR/footer.json
@@ -0,0 +1,6 @@
+{
+ "privacy.policy": "🔐 Política de Privacidade",
+ "terms.of.service": "📝 Termos de Serviço",
+ "copyright": "Copyright © {{year}} Leonardo Murça.
Todos os direitos reservados.",
+ "version": "🧵 Versão: {{version}}"
+}
diff --git a/src/lib/utils/env.js b/src/lib/utils/env.js
new file mode 100644
index 0000000..9734172
--- /dev/null
+++ b/src/lib/utils/env.js
@@ -0,0 +1,6 @@
+// @ts-nocheck
+function appVersion() {
+ return APP_VERSION;
+}
+
+export { appVersion };
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 6f30239..8766657 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -2,6 +2,7 @@
import { locale, loading } from '$lib/translations';
import Header from '$lib/components/Header.svelte';
import LoadingTranslations from '$lib/components/LoadingTranslations.svelte';
+ import Footer from '$lib/components/Footer.svelte';
export let data;
$: locale.set(data.language);
@@ -10,6 +11,7 @@
{#if !$loading && $locale !== undefined}
+
{:else}
{/if}
diff --git a/vite.config.js b/vite.config.js
index bbf8c7d..786b475 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -2,5 +2,8 @@ import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
export default defineConfig({
- plugins: [sveltekit()]
+ plugins: [sveltekit()],
+ define: {
+ APP_VERSION: JSON.stringify(process.env.npm_package_version),
+ },
});