aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/+layout.server.ts6
-rw-r--r--src/routes/+layout.svelte15
-rw-r--r--src/routes/+layout.ts14
-rw-r--r--src/routes/+page.svelte0
-rw-r--r--src/routes/[lang=lang]/+page.server.ts19
-rw-r--r--src/routes/[lang=lang]/+page.svelte17
-rw-r--r--src/routes/[lang=lang]/+page.ts18
7 files changed, 87 insertions, 2 deletions
diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts
new file mode 100644
index 0000000..fc087d8
--- /dev/null
+++ b/src/routes/+layout.server.ts
@@ -0,0 +1,6 @@
+import type { LayoutServerLoad } from './$types'
+
+export const load: LayoutServerLoad = ({ locals: { locale, LL } }) => {
+ // pass locale information from "server-context" to "shared server + client context"
+ return { locale }
+}
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 30062ed..990dd94 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -1,8 +1,19 @@
<script lang="ts">
- import '../app.postcss';
- import type { LayoutData } from './$types';
+ import { page } from "$app/stores";
+ import "../app.postcss";
+ import type { LayoutData } from "./$types";
+ import { locales, baseLocale } from "$i18n/i18n-util";
+ import { replaceLocaleInUrl } from "$lib/utils";
export let data: LayoutData;
</script>
+<svelte:head>
+ <title>{$page.data.title || "auroraklinikken.no"}</title>
+ {#each locales as l}
+ <link rel="alternate" hreflang={l} href={`${replaceLocaleInUrl($page.url, l, true)}`} />
+ {/each}
+ <link rel="alternate" hreflang="x-default" href={`${replaceLocaleInUrl($page.url, baseLocale, true)}`} />
+</svelte:head>
+
<slot />
diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts
new file mode 100644
index 0000000..5a78ab1
--- /dev/null
+++ b/src/routes/+layout.ts
@@ -0,0 +1,14 @@
+import type { LayoutLoad } from './$types'
+import { loadLocaleAsync } from '$i18n/i18n-util.async'
+import { setLocale } from '$i18n/i18n-svelte'
+
+export const load = (async ({ data: { locale } }) => {
+ // load dictionary into memory
+ await loadLocaleAsync(locale)
+
+ // if you need to output a localized string in a `load` function,
+ // you always need to call `setLocale` right before you access the `LL` store
+ setLocale(locale)
+ // pass locale to the "rendering context"
+ return { locale }
+}) satisfies LayoutLoad<{ locale: Locales }>; \ No newline at end of file
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
deleted file mode 100644
index e69de29..0000000
--- a/src/routes/+page.svelte
+++ /dev/null
diff --git a/src/routes/[lang=lang]/+page.server.ts b/src/routes/[lang=lang]/+page.server.ts
new file mode 100644
index 0000000..d3a98a5
--- /dev/null
+++ b/src/routes/[lang=lang]/+page.server.ts
@@ -0,0 +1,19 @@
+import { sanity } from '$lib/sanity-client';
+import type { PageServerLoad } from './$types';
+import groq from "groq";
+import type { ContactModel } from '$components/contact.svelte';
+import { fromLocalizedString } from '$lib/utils';
+
+export const load = (async ({ locals }) => {
+ const contactSection = await sanity.fetch(groq`*[_type == "contact"][0]`);
+ console.log(contactSection);
+
+ return {
+ contact: {
+ phone: fromLocalizedString(contactSection.phone, locals.locale),
+ email: fromLocalizedString(contactSection.email, locals.locale),
+ phoneHours: fromLocalizedString(contactSection.phoneHours, locals.locale),
+ addressLines: contactSection.addressLines.map((el: string | object) => fromLocalizedString(el, locals.locale)),
+ } as ContactModel
+ };
+}) satisfies PageServerLoad; \ No newline at end of file
diff --git a/src/routes/[lang=lang]/+page.svelte b/src/routes/[lang=lang]/+page.svelte
new file mode 100644
index 0000000..666aa80
--- /dev/null
+++ b/src/routes/[lang=lang]/+page.svelte
@@ -0,0 +1,17 @@
+<script lang="ts">
+ import Contact, { type ContactModel } from "$components/contact.svelte";
+ import type { PageData } from "./$types";
+
+ export let data: PageData;
+
+ type Model = {
+ contact: ContactModel;
+ };
+
+ const M: Model = {
+ contact: data.contact,
+ };
+ console.log(data);
+</script>
+
+<Contact model={M.contact} />
diff --git a/src/routes/[lang=lang]/+page.ts b/src/routes/[lang=lang]/+page.ts
new file mode 100644
index 0000000..fa3907b
--- /dev/null
+++ b/src/routes/[lang=lang]/+page.ts
@@ -0,0 +1,18 @@
+import type { PageLoad } from './$types';
+import LL, { setLocale } from '$i18n/i18n-svelte'
+import { get } from 'svelte/store'
+
+export const load = (async ({ parent, data }) => {
+ // wait for `+layout.ts` to load dictionary and pass locale information
+ const { locale } = await parent()
+
+ // if you need to output a localized string in a `load` function,
+ // you always need to call `setLocale` right before you access the `LL` store
+ setLocale(locale)
+ // get the translation functions value from the store
+ const $LL = get(LL)
+ return {
+ title: $LL.homeTitle(),
+ contact: data.contact
+ }
+}) satisfies PageLoad; \ No newline at end of file