155 lines
2.9 KiB
TypeScript
155 lines
2.9 KiB
TypeScript
interface Ssr {
|
|
id?: string
|
|
path: string
|
|
content: string
|
|
// validUntil: any // go Time
|
|
}
|
|
|
|
interface ApiOptions {
|
|
method?: "GET" | "POST" | "PUT" | "DELETE"
|
|
filter?: any
|
|
sort?: string
|
|
lookup?: string
|
|
limit?: number
|
|
offset?: number
|
|
projection?: string
|
|
headers?: {
|
|
[key: string]: string
|
|
}
|
|
params?: {
|
|
[key: string]: string
|
|
}
|
|
signal?: AbortSignal
|
|
}
|
|
|
|
interface LocationStore {
|
|
path: string
|
|
search: string
|
|
hash: string
|
|
push: boolean
|
|
pop: boolean
|
|
previousLocation?: LocationStore
|
|
}
|
|
|
|
interface ApiResult<T> {
|
|
data: T
|
|
count: number
|
|
/** Build timestamp from server (X-Build-Time header), only present on client requests */
|
|
buildTime?: string | null
|
|
}
|
|
|
|
interface FileField {
|
|
path: string
|
|
src: string
|
|
type: string
|
|
size: number
|
|
}
|
|
|
|
interface MedialibEntry {
|
|
id?: string
|
|
file?: {
|
|
src?: string
|
|
type?: string
|
|
}
|
|
alt?: string
|
|
[key: string]: unknown
|
|
}
|
|
|
|
/** Pagebuilder: Content Block Entry */
|
|
interface ContentBlockEntry {
|
|
hide?: boolean
|
|
headline?: string
|
|
headlineH1?: boolean
|
|
subline?: string
|
|
tagline?: string
|
|
anchorId?: string
|
|
containerWidth?: "" | "wide" | "full"
|
|
background?: {
|
|
color?: string
|
|
image?: string
|
|
}
|
|
padding?: {
|
|
top?: string
|
|
bottom?: string
|
|
}
|
|
type?: string
|
|
callToAction?: {
|
|
buttonText?: string
|
|
buttonLink?: string
|
|
buttonTarget?: string
|
|
}
|
|
heroImage?: {
|
|
image?: string
|
|
}
|
|
// richtext fields
|
|
text?: string
|
|
imagePosition?: "none" | "left" | "right"
|
|
imageRounded?: string
|
|
image?: string
|
|
// accordion fields
|
|
accordionItems?: {
|
|
question?: string
|
|
answer?: string
|
|
open?: boolean
|
|
}[]
|
|
// imageGallery fields
|
|
imageGallery?: {
|
|
images?: {
|
|
image?: string
|
|
caption?: string
|
|
showCaption?: boolean
|
|
}[]
|
|
}
|
|
// richtext caption fields
|
|
showImageCaption?: boolean
|
|
imageCaption?: string
|
|
}
|
|
|
|
/** Content Entry from the CMS */
|
|
interface ContentEntry {
|
|
id?: string
|
|
_id?: string
|
|
active?: boolean
|
|
publication?: {
|
|
from?: string | Date
|
|
to?: string | Date
|
|
}
|
|
type?: string
|
|
lang?: string
|
|
translationKey?: string
|
|
name?: string
|
|
path?: string
|
|
alternativePaths?: { path?: string }[]
|
|
thumbnail?: string
|
|
teaserText?: string
|
|
blocks?: ContentBlockEntry[]
|
|
meta?: {
|
|
title?: string
|
|
description?: string
|
|
keywords?: string
|
|
}
|
|
}
|
|
|
|
/** Navigation element */
|
|
interface NavigationElement {
|
|
name: string
|
|
external?: boolean
|
|
page?: string
|
|
hash?: string
|
|
externalUrl?: string
|
|
}
|
|
|
|
/** Navigation entry from the CMS */
|
|
interface NavigationEntry {
|
|
id?: string
|
|
_id?: string
|
|
language?: string
|
|
type?: "header" | "footer"
|
|
elements?: NavigationElement[]
|
|
}
|
|
|
|
interface ProductEntry {
|
|
id: string
|
|
// ...
|
|
}
|