aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/sanity
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/sanity
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/sanity')
-rw-r--r--src/lib/sanity/client.ts9
-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
9 files changed, 184 insertions, 0 deletions
diff --git a/src/lib/sanity/client.ts b/src/lib/sanity/client.ts
new file mode 100644
index 0000000..7aa868b
--- /dev/null
+++ b/src/lib/sanity/client.ts
@@ -0,0 +1,9 @@
+import { env } from "$env/dynamic/private";
+import { createClient } from "@sanity/client";
+
+export const sanity = createClient({
+ projectId: env.SANITY_STUDIO_API_PROJECT_ID,
+ dataset: env.SANITY_STUDIO_API_DATASET,
+ apiVersion: "2022-03-24",
+ useCdn: true,
+});
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