From 260f46463a91343ca788226aa079f5f839fcf8d3 Mon Sep 17 00:00:00 2001 From: liquidiert Date: Thu, 5 Oct 2023 19:16:10 +0200 Subject: [PATCH] feat: added prismic - added prismic dependency - added dynamic rendering of events via prismic --- customtypes/event/index.json | 59 + package.json | 9 +- slicemachine.config.json | 6 + src/lib/prismicio.ts | 21 + src/lib/slices/index.ts | 3 + src/prismicio-types.d.ts | 95 + src/routes/+page.svelte | 2 +- src/routes/landing/Termine.svelte | 89 +- src/routes/slice-simulator/+page.svelte | 9 + vite.config.ts | 7 +- yarn.lock | 4137 +++++++++++++++++++++++ 11 files changed, 4410 insertions(+), 27 deletions(-) create mode 100644 customtypes/event/index.json create mode 100644 slicemachine.config.json create mode 100644 src/lib/prismicio.ts create mode 100644 src/lib/slices/index.ts create mode 100644 src/prismicio-types.d.ts create mode 100644 src/routes/slice-simulator/+page.svelte create mode 100644 yarn.lock diff --git a/customtypes/event/index.json b/customtypes/event/index.json new file mode 100644 index 0000000..89fa7e4 --- /dev/null +++ b/customtypes/event/index.json @@ -0,0 +1,59 @@ +{ + "id": "event", + "label": "Event", + "format": "custom", + "repeatable": true, + "status": true, + "json": { + "Main": { + "uid": { + "config": { + "label": "UID" + }, + "type": "UID" + }, + "title": { + "type": "StructuredText", + "config": { + "label": "Title", + "placeholder": "", + "allowTargetBlank": true, + "single": "heading5" + } + }, + "date": { + "type": "Timestamp", + "config": { + "label": "Date", + "placeholder": "" + } + }, + "description": { + "type": "StructuredText", + "config": { + "label": "Description", + "placeholder": "", + "allowTargetBlank": true, + "single": "paragraph" + } + }, + "link": { + "type": "Link", + "config": { + "label": "Link", + "placeholder": "", + "allowTargetBlank": false, + "select": null + } + }, + "image": { + "type": "Link", + "config": { + "label": "Image", + "placeholder": "", + "select": "media" + } + } + } + } +} diff --git a/package.json b/package.json index 8cb418c..011804c 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,12 @@ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --plugin-search-dir . --check . && eslint .", - "format": "prettier --plugin-search-dir . --write ." + "format": "prettier --plugin-search-dir . --write .", + "slicemachine": "start-slicemachine" }, "devDependencies": { "@popperjs/core": "^2.11.6", + "@slicemachine/adapter-sveltekit": "^0.3.18", "@sveltejs/adapter-auto": "next", "@sveltejs/adapter-cloudflare": "^1.0.0-next.40", "@sveltejs/adapter-static": "^1.0.0-next.48", @@ -28,16 +30,19 @@ "postcss": "^8.4.19", "prettier": "^2.6.2", "prettier-plugin-svelte": "^2.7.0", + "slice-machine-ui": "^1.15.0", "svelte": "^3.44.0", "svelte-check": "^2.7.1", "svelte-preprocess": "^4.10.7", "tailwindcss": "^3.2.3", "tslib": "^2.3.1", "typescript": "^4.7.4", - "vite": "^3.1.0" + "vite": "^4.4.10" }, "type": "module", "dependencies": { + "@prismicio/client": "^7.2.0", + "@prismicio/svelte": "^1.0.1", "@sveltejs/svelte-scroller": "^2.0.7" } } diff --git a/slicemachine.config.json b/slicemachine.config.json new file mode 100644 index 0000000..584b9af --- /dev/null +++ b/slicemachine.config.json @@ -0,0 +1,6 @@ +{ + "repositoryName": "ratisbona-coding", + "adapter": "@slicemachine/adapter-sveltekit", + "libraries": ["./src/lib/slices"], + "localSliceSimulatorURL": "http://localhost:5173/slice-simulator" +} diff --git a/src/lib/prismicio.ts b/src/lib/prismicio.ts new file mode 100644 index 0000000..8dc2494 --- /dev/null +++ b/src/lib/prismicio.ts @@ -0,0 +1,21 @@ +import * as prismic from '@prismicio/client'; +import config from '../../slicemachine.config.json'; + +/** + * The project's Prismic repository name. + */ +export const repositoryName = config.repositoryName; + +/** + * Creates a Prismic client for the project's repository. The client is used to + * query content from the Prismic API. + * + * @param config - Configuration for the Prismic client. + */ +export const createClient = (config: prismic.ClientConfig = {}) => { + const client = prismic.createClient(repositoryName, { + ...config + }); + + return client; +}; diff --git a/src/lib/slices/index.ts b/src/lib/slices/index.ts new file mode 100644 index 0000000..83f6c02 --- /dev/null +++ b/src/lib/slices/index.ts @@ -0,0 +1,3 @@ +// Code generated by Slice Machine. DO NOT EDIT. + +export const components = {}; diff --git a/src/prismicio-types.d.ts b/src/prismicio-types.d.ts new file mode 100644 index 0000000..4e70ec9 --- /dev/null +++ b/src/prismicio-types.d.ts @@ -0,0 +1,95 @@ +// Code generated by Slice Machine. DO NOT EDIT. + +import type * as prismic from '@prismicio/client'; + +type Simplify = { [KeyType in keyof T]: T[KeyType] }; + +/** + * Content for Event documents + */ +interface EventDocumentData { + /** + * Title field in *Event* + * + * - **Field Type**: Title + * - **Placeholder**: *None* + * - **API ID Path**: event.title + * - **Tab**: Main + * - **Documentation**: https://prismic.io/docs/field#rich-text-title + */ + title: prismic.TitleField; + + /** + * Date field in *Event* + * + * - **Field Type**: Timestamp + * - **Placeholder**: *None* + * - **API ID Path**: event.date + * - **Tab**: Main + * - **Documentation**: https://prismic.io/docs/field#timestamp + */ + date: prismic.TimestampField; + + /** + * Description field in *Event* + * + * - **Field Type**: Rich Text + * - **Placeholder**: *None* + * - **API ID Path**: event.description + * - **Tab**: Main + * - **Documentation**: https://prismic.io/docs/field#rich-text-title + */ + description: prismic.RichTextField; + + /** + * Link field in *Event* + * + * - **Field Type**: Link + * - **Placeholder**: *None* + * - **API ID Path**: event.link + * - **Tab**: Main + * - **Documentation**: https://prismic.io/docs/field#link-content-relationship + */ + link: prismic.LinkField; + + /** + * Image field in *Event* + * + * - **Field Type**: Link to Media + * - **Placeholder**: *None* + * - **API ID Path**: event.image + * - **Tab**: Main + * - **Documentation**: https://prismic.io/docs/field#link-content-relationship + */ + image: prismic.LinkToMediaField; +} + +/** + * Event document from Prismic + * + * - **API ID**: `event` + * - **Repeatable**: `true` + * - **Documentation**: https://prismic.io/docs/custom-types + * + * @typeParam Lang - Language API ID of the document. + */ +export type EventDocument = prismic.PrismicDocumentWithUID< + Simplify, + 'event', + Lang +>; + +export type AllDocumentTypes = EventDocument; + +declare module '@prismicio/client' { + interface CreateClient { + ( + repositoryNameOrEndpoint: string, + options?: prismic.ClientConfig + ): prismic.Client; + } + + namespace Content { + export type { EventDocument, EventDocumentData, AllDocumentTypes }; + } +} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 30f0456..33117a9 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -17,10 +17,10 @@
+ -