diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2023-02-21 23:24:14 +0100 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2023-02-21 23:24:14 +0100 |
| commit | 6cb399e7267ae78e3e498bdbf5f51678ffb2cd45 (patch) | |
| tree | b109832a208927821fcfe65bd98ff9e3f391c44c /src/lib | |
| parent | 54bbc06bd84437c6b38e2f6c57060f21a8318720 (diff) | |
| download | auroraklinikken.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.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 | ||||
| -rw-r--r-- | src/lib/utils.ts | 12 |
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 |
