aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2023-02-21 23:24:14 +0100
committerivarlovlie <git@ivarlovlie.no>2023-02-21 23:24:14 +0100
commit6cb399e7267ae78e3e498bdbf5f51678ffb2cd45 (patch)
treeb109832a208927821fcfe65bd98ff9e3f391c44c /src/lib
parent54bbc06bd84437c6b38e2f6c57060f21a8318720 (diff)
downloadauroraklinikken.no-6cb399e7267ae78e3e498bdbf5f51678ffb2cd45.tar.xz
auroraklinikken.no-6cb399e7267ae78e3e498bdbf5f51678ffb2cd45.zip
feat: Many things
Configure sanity in same project as the app Implement type safe sanity schema Read localised documents Strip down design
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/sanity/client.ts (renamed from src/lib/sanity-client.ts)0
-rw-r--r--src/lib/sanity/locales.ts5
-rw-r--r--src/lib/sanity/schemas/default/contact.ts36
-rw-r--r--src/lib/sanity/schemas/default/description.ts22
-rw-r--r--src/lib/sanity/schemas/default/faq.ts22
-rw-r--r--src/lib/sanity/schemas/default/hero.ts28
-rw-r--r--src/lib/sanity/schemas/default/index.ts16
-rw-r--r--src/lib/sanity/schemas/default/product.ts37
-rw-r--r--src/lib/sanity/types/block-array.ts9
-rw-r--r--src/lib/utils.ts12
10 files changed, 176 insertions, 11 deletions
diff --git a/src/lib/sanity-client.ts b/src/lib/sanity/client.ts
index 7aa868b..7aa868b 100644
--- a/src/lib/sanity-client.ts
+++ b/src/lib/sanity/client.ts
diff --git a/src/lib/sanity/locales.ts b/src/lib/sanity/locales.ts
new file mode 100644
index 0000000..c3280f4
--- /dev/null
+++ b/src/lib/sanity/locales.ts
@@ -0,0 +1,5 @@
+export const supportedLanguages = [
+ { id: "en", title: "English" },
+ { id: "nb", title: "Norsk Bokmål", isDefault: true },
+];
+export const baseLanguage = supportedLanguages.find((l) => l.isDefault) as { id: string; title: string, isDefault: boolean };
diff --git a/src/lib/sanity/schemas/default/contact.ts b/src/lib/sanity/schemas/default/contact.ts
new file mode 100644
index 0000000..03b1942
--- /dev/null
+++ b/src/lib/sanity/schemas/default/contact.ts
@@ -0,0 +1,36 @@
+import { s } from "sanity-typed-schema-builder";
+
+export default s.document({
+ name: "contact",
+ title: "Contact section",
+ // @ts-ignore
+ i18n: true,
+ fields: [
+ {
+ title: "Address lines",
+ name: "addressLines",
+ type: s.array({
+ of: [s.string()]
+ }),
+ optional: true
+ },
+ {
+ title: "Email",
+ name: "email",
+ type: s.string(),
+ optional: true,
+ },
+ {
+ title: "Phone",
+ name: "phone",
+ type: s.string(),
+ optional: true,
+ },
+ {
+ title: "Phone hours",
+ name: "phoneHours",
+ type: s.string(),
+ optional: true,
+ }
+ ],
+}); \ No newline at end of file
diff --git a/src/lib/sanity/schemas/default/description.ts b/src/lib/sanity/schemas/default/description.ts
new file mode 100644
index 0000000..3c5cbfa
--- /dev/null
+++ b/src/lib/sanity/schemas/default/description.ts
@@ -0,0 +1,22 @@
+import { s } from "sanity-typed-schema-builder";
+
+export default s.document({
+ name: "description",
+ // @ts-ignore
+ i18n: true,
+ title: "Description section",
+ fields: [
+ {
+ title: "Title",
+ name: "title",
+ type: s.string(),
+ },
+ {
+ title: "Content",
+ name: "content",
+ type: s.array({
+ of: [s.block()]
+ })
+ },
+ ],
+});
diff --git a/src/lib/sanity/schemas/default/faq.ts b/src/lib/sanity/schemas/default/faq.ts
new file mode 100644
index 0000000..6fb9e71
--- /dev/null
+++ b/src/lib/sanity/schemas/default/faq.ts
@@ -0,0 +1,22 @@
+import { s } from "sanity-typed-schema-builder";
+
+export default s.document({
+ name: "faq",
+ title: "FAQ section",
+ // @ts-ignore
+ i18n: true,
+ fields: [
+ {
+ name: "title",
+ title: "Question",
+ type: s.string(),
+ },
+ {
+ name: "answer",
+ title: "Answer",
+ type: s.array({
+ of: [s.block()]
+ }),
+ }
+ ]
+}) \ No newline at end of file
diff --git a/src/lib/sanity/schemas/default/hero.ts b/src/lib/sanity/schemas/default/hero.ts
new file mode 100644
index 0000000..df7b8ae
--- /dev/null
+++ b/src/lib/sanity/schemas/default/hero.ts
@@ -0,0 +1,28 @@
+import { s } from "sanity-typed-schema-builder";
+
+export default s.document({
+ name: "hero",
+ title: "Hero section",
+ // @ts-ignore
+ i18n: true,
+ fields: [
+ {
+ title: "Title",
+ name: "title",
+ type: s.string(),
+ },
+ {
+ title: "Content",
+ name: "content",
+ type: s.array({
+ of: [s.block()]
+ }),
+ },
+ {
+ title: "Image",
+ name: "image",
+ type: s.image(),
+ optional: true
+ },
+ ],
+});
diff --git a/src/lib/sanity/schemas/default/index.ts b/src/lib/sanity/schemas/default/index.ts
new file mode 100644
index 0000000..4befb4d
--- /dev/null
+++ b/src/lib/sanity/schemas/default/index.ts
@@ -0,0 +1,16 @@
+import contact from "./contact";
+import description from "./description";
+import faq from "./faq";
+import hero from "./hero";
+import product from "./product";
+
+export default {
+ name: "default-schema",
+ types: [
+ contact.schema(),
+ product.schema(),
+ description.schema(),
+ faq.schema(),
+ hero.schema()
+ ]
+} \ No newline at end of file
diff --git a/src/lib/sanity/schemas/default/product.ts b/src/lib/sanity/schemas/default/product.ts
new file mode 100644
index 0000000..92db714
--- /dev/null
+++ b/src/lib/sanity/schemas/default/product.ts
@@ -0,0 +1,37 @@
+import { s } from "sanity-typed-schema-builder";
+
+export default s.document({
+ name: "product",
+ title: "Products",
+ // @ts-ignore
+ i18n: true,
+ fields: [
+ {
+ name: "title",
+ title: "Title",
+ type: s.string(),
+ },
+ {
+ name: "duration",
+ title: "Duration",
+ type: s.string()
+ },
+ {
+ name: "cost",
+ title: "Cost",
+ type: s.string()
+ },
+ {
+ name: "description",
+ title: "Description",
+ type: s.array({
+ of: [s.block()]
+ })
+ },
+ {
+ name: "orderLink",
+ title: "Link to booking",
+ type: s.url()
+ },
+ ],
+}); \ No newline at end of file
diff --git a/src/lib/sanity/types/block-array.ts b/src/lib/sanity/types/block-array.ts
new file mode 100644
index 0000000..28ca0c4
--- /dev/null
+++ b/src/lib/sanity/types/block-array.ts
@@ -0,0 +1,9 @@
+export type SanityBlockArray = {
+ _type: string;
+ children: any[];
+ markDefs?: any[] | undefined;
+ style?: string | undefined;
+ listItem?: string | undefined;
+ level?: number | undefined;
+ _key: string;
+}[] \ No newline at end of file
diff --git a/src/lib/utils.ts b/src/lib/utils.ts
index f7c040d..1dc98f0 100644
--- a/src/lib/utils.ts
+++ b/src/lib/utils.ts
@@ -14,14 +14,4 @@ export const replaceLocaleInUrl = (url: URL, locale: string, full = false): stri
const newUrl = new URL(url.toString());
newUrl.pathname = new_pathname;
return newUrl.toString();
-};
-
-export function fromLocalizedString(localizedString: string | object, locale: Locales) {
- if (typeof localizedString === "string") return localizedString;
- // @ts-ignore
- if (localizedString[locale]) return localizedString[locale];
- // @ts-ignore
- if (localizedString["nb"]) return localizedString["nb"];
- // @ts-ignore
- if (localizedString["en"]) return localizedString["en"];
-}
+}; \ No newline at end of file