add missing files
Build and Deploy / build-and-deploy (push) Failing after 2m42s

This commit is contained in:
2026-05-07 09:46:44 +02:00
parent bf04f8679d
commit 2a0f7d5bcf
13 changed files with 609 additions and 14 deletions
+2
View File
@@ -0,0 +1,2 @@
/// <reference types="astro/client" />
/// <reference types="@sanity/astro/module" />
+1
View File
@@ -0,0 +1 @@
export { sanityClient } from 'sanity:client'
+11
View File
@@ -0,0 +1,11 @@
import { createImageUrlBuilder } from '@sanity/image-url'
const builder = createImageUrlBuilder({
projectId: import.meta.env.PUBLIC_SANITY_PROJECT_ID,
dataset: import.meta.env.PUBLIC_SANITY_DATASET ?? 'production',
})
export function urlFor(source: any): string {
if (!source) return ''
return builder.image(source).url()
}
+6
View File
@@ -0,0 +1,6 @@
import { toHTML } from '@portabletext/to-html'
export function renderPortableText(blocks: any[]): string {
if (!blocks?.length) return ''
return toHTML(blocks)
}
+34
View File
@@ -0,0 +1,34 @@
export const theaterHomepageQuery = `*[_type == "theaterHomepage" && _id == "theaterHomepage"][0]`
export const allPostsQuery = `
*[_type == "post"] | order(date desc) {
_id,
title,
"slug": slug.current,
date,
excerpt,
coverImage,
body
}
`
export const postBySlugQuery = `
*[_type == "post" && slug.current == $slug][0] {
_id,
title,
"slug": slug.current,
date,
excerpt,
coverImage,
body
}
`
export const pageBySlugQuery = `
*[_type == "page" && slug.current == $slug][0] {
_id,
title,
description,
body
}
`
+5
View File
@@ -0,0 +1,5 @@
import { postSchema } from './post'
import { pageSchema } from './page'
import { theaterHomepageSchema } from './theaterHomepage'
export const schemaTypes = [postSchema, pageSchema, theaterHomepageSchema]
+33
View File
@@ -0,0 +1,33 @@
import { defineType, defineField } from 'sanity'
export const pageSchema = defineType({
name: 'page',
title: 'Pages',
type: 'document',
fields: [
defineField({
name: 'title',
title: 'Title',
type: 'string',
validation: (r) => r.required(),
}),
defineField({
name: 'slug',
title: 'Slug',
type: 'slug',
options: { source: 'title' },
}),
defineField({
name: 'description',
title: 'Description',
type: 'string',
}),
defineField({
name: 'body',
title: 'Content',
type: 'array',
of: [{ type: 'block' }],
validation: (r) => r.required(),
}),
],
})
+47
View File
@@ -0,0 +1,47 @@
import { defineType, defineField } from 'sanity'
export const postSchema = defineType({
name: 'post',
title: 'Blog Posts',
type: 'document',
fields: [
defineField({
name: 'title',
title: 'Title',
type: 'string',
validation: (r) => r.required(),
}),
defineField({
name: 'slug',
title: 'Slug',
type: 'slug',
options: { source: 'title' },
validation: (r) => r.required(),
}),
defineField({
name: 'date',
title: 'Publication Date',
type: 'datetime',
validation: (r) => r.required(),
}),
defineField({
name: 'excerpt',
title: 'Excerpt',
type: 'string',
validation: (r) => r.required(),
}),
defineField({
name: 'coverImage',
title: 'Cover Image',
type: 'image',
options: { hotspot: true },
}),
defineField({
name: 'body',
title: 'Body',
type: 'array',
of: [{ type: 'block' }, { type: 'image' }],
validation: (r) => r.required(),
}),
],
})
+173
View File
@@ -0,0 +1,173 @@
import { defineType, defineField, defineArrayMember } from 'sanity'
export const theaterHomepageSchema = defineType({
name: 'theaterHomepage',
title: 'Theater Homepage',
type: 'document',
// Singleton: disable create/delete — only update and publish
__experimental_actions: ['update', 'publish'],
fields: [
defineField({
name: 'title',
title: 'Page Title',
type: 'string',
}),
// Hero Section
defineField({
name: 'hero',
title: 'Hero Section',
type: 'object',
fields: [
defineField({ name: 'title_de', title: 'Title (German)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'title_en', title: 'Title (English)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'subtitle_de', title: 'Subtitle (German)', type: 'text' }),
defineField({ name: 'subtitle_en', title: 'Subtitle (English)', type: 'text' }),
],
}),
// Section 1: Das Projekt / The Project
defineField({
name: 'projekt',
title: 'Section 1: Das Projekt / The Project',
type: 'object',
fields: [
defineField({ name: 'title_de', title: 'Title (German)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'title_en', title: 'Title (English)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'content_de', title: 'Content (German)', type: 'array', of: [{ type: 'block' }] }),
defineField({ name: 'content_en', title: 'Content (English)', type: 'array', of: [{ type: 'block' }] }),
],
}),
// Section 2: Wer steckt dahinter / Who's Behind It
defineField({
name: 'team',
title: "Section 2: Wer steckt dahinter / Who's Behind It",
type: 'object',
fields: [
defineField({ name: 'title_de', title: 'Title (German)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'title_en', title: 'Title (English)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'content_de', title: 'Content (German)', type: 'array', of: [{ type: 'block' }] }),
defineField({ name: 'content_en', title: 'Content (English)', type: 'array', of: [{ type: 'block' }] }),
defineField({
name: 'organizations',
title: 'Organizations',
type: 'array',
of: [
defineArrayMember({
type: 'object',
fields: [
defineField({ name: 'name', title: 'Name', type: 'string' }),
defineField({ name: 'role_de', title: 'Role (German)', type: 'string' }),
defineField({ name: 'role_en', title: 'Role (English)', type: 'string' }),
defineField({ name: 'logo', title: 'Logo', type: 'image', options: { hotspot: false } }),
defineField({ name: 'url', title: 'Website URL', type: 'url' }),
],
}),
],
}),
],
}),
// Section 3: Das Stück / The Play
defineField({
name: 'stueck',
title: 'Section 3: Das Stück / The Play',
type: 'object',
fields: [
defineField({ name: 'title_de', title: 'Title (German)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'title_en', title: 'Title (English)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'content_de', title: 'Content (German)', type: 'array', of: [{ type: 'block' }] }),
defineField({ name: 'content_en', title: 'Content (English)', type: 'array', of: [{ type: 'block' }] }),
],
}),
// Section 4: Mitwirkung / Participation
defineField({
name: 'mitwirkung',
title: 'Section 4: Mitwirkung / Participation',
type: 'object',
fields: [
defineField({ name: 'title_de', title: 'Title (German)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'title_en', title: 'Title (English)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'content_de', title: 'Content (German)', type: 'array', of: [{ type: 'block' }] }),
defineField({ name: 'content_en', title: 'Content (English)', type: 'array', of: [{ type: 'block' }] }),
defineField({ name: 'director_name', title: 'Director Name', type: 'string' }),
defineField({ name: 'director_email', title: 'Director Email', type: 'string' }),
defineField({ name: 'director_phone', title: 'Director Phone', type: 'string' }),
],
}),
// Section 5: Termine / Schedule
defineField({
name: 'termine',
title: 'Section 5: Termine / Schedule',
type: 'object',
fields: [
defineField({ name: 'title_de', title: 'Title (German)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'title_en', title: 'Title (English)', type: 'string', validation: (r) => r.required() }),
defineField({
name: 'events',
title: 'Events',
type: 'array',
of: [
defineArrayMember({
type: 'object',
fields: [
defineField({ name: 'title_de', title: 'Event Title (German)', type: 'string' }),
defineField({ name: 'title_en', title: 'Event Title (English)', type: 'string' }),
defineField({ name: 'date', title: 'Date / Period', type: 'string' }),
defineField({ name: 'description_de', title: 'Description (German)', type: 'text' }),
defineField({ name: 'description_en', title: 'Description (English)', type: 'text' }),
],
}),
],
}),
],
}),
// Section 6: Presse / Press
defineField({
name: 'presse',
title: 'Section 6: Presse / Press',
type: 'object',
fields: [
defineField({ name: 'title_de', title: 'Title (German)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'title_en', title: 'Title (English)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'content_de', title: 'Content (German)', type: 'array', of: [{ type: 'block' }] }),
defineField({ name: 'content_en', title: 'Content (English)', type: 'array', of: [{ type: 'block' }] }),
],
}),
// Section 7: Foto Galerie / Photo Gallery
defineField({
name: 'gallery',
title: 'Section 7: Foto Galerie / Photo Gallery',
type: 'object',
fields: [
defineField({ name: 'title_de', title: 'Title (German)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'title_en', title: 'Title (English)', type: 'string', validation: (r) => r.required() }),
defineField({
name: 'images',
title: 'Gallery Images',
type: 'array',
of: [{ type: 'image' }],
}),
],
}),
// Section 8: Tickets
defineField({
name: 'tickets',
title: 'Section 8: Tickets',
type: 'object',
fields: [
defineField({ name: 'title_de', title: 'Title (German)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'title_en', title: 'Title (English)', type: 'string', validation: (r) => r.required() }),
defineField({ name: 'content_de', title: 'Content (German)', type: 'array', of: [{ type: 'block' }] }),
defineField({ name: 'content_en', title: 'Content (English)', type: 'array', of: [{ type: 'block' }] }),
defineField({ name: 'ticket_url', title: 'Ticket Purchase URL', type: 'url' }),
],
}),
],
})