diff options
Diffstat (limited to 'src/lib/sanity')
| -rw-r--r-- | src/lib/sanity/client.ts | 9 | ||||
| -rw-r--r-- | src/lib/sanity/locales.ts | 5 | ||||
| -rw-r--r-- | src/lib/sanity/schemas/default/contact.ts | 36 | ||||
| -rw-r--r-- | src/lib/sanity/schemas/default/description.ts | 22 | ||||
| -rw-r--r-- | src/lib/sanity/schemas/default/faq.ts | 22 | ||||
| -rw-r--r-- | src/lib/sanity/schemas/default/hero.ts | 28 | ||||
| -rw-r--r-- | src/lib/sanity/schemas/default/index.ts | 16 | ||||
| -rw-r--r-- | src/lib/sanity/schemas/default/product.ts | 37 | ||||
| -rw-r--r-- | src/lib/sanity/types/block-array.ts | 9 |
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 |
