✨ feat: enhance accessibility with skip to main content button and improve navigation handling
🔧 fix: update navigation href resolution to include localized paths 🆕 feat: add new FeatureIcon component for feature boxes 🎨 style: improve styling for prose elements in richtext blocks 🛠️ refactor: streamline medialib image loading and caching logic 📦 chore: update mock data handling to support new medialib entries 🔄 chore: synchronize i18n initialization and locale management 📝 docs: update video tour descriptions to reflect recent changes
This commit is contained in:
Vendored
+30
-27
@@ -50,18 +50,39 @@ interface FileField {
|
||||
size: number
|
||||
}
|
||||
|
||||
type LocalizedText = {
|
||||
[lang: string]: string | undefined
|
||||
}
|
||||
|
||||
interface MedialibEntry {
|
||||
id?: string
|
||||
_id?: string
|
||||
file?: {
|
||||
src?: string
|
||||
type?: string
|
||||
}
|
||||
alt?: string
|
||||
title?: string
|
||||
alt?: string | LocalizedText
|
||||
description?: string
|
||||
[key: string]: unknown
|
||||
}
|
||||
|
||||
interface LookupContainer<T> {
|
||||
_lookup?: Record<string, T | null>
|
||||
}
|
||||
|
||||
interface ContentHeroImage extends LookupContainer<MedialibEntry> {
|
||||
image?: string
|
||||
}
|
||||
|
||||
interface ContentFeatureBoxEntry {
|
||||
icon?: "lightning" | "palette" | "database" | "globe" | "monitor" | "flask"
|
||||
title?: string
|
||||
text?: string
|
||||
}
|
||||
|
||||
/** Pagebuilder: Content Block Entry */
|
||||
interface ContentBlockEntry {
|
||||
interface ContentBlockEntry extends LookupContainer<MedialibEntry> {
|
||||
hide?: boolean
|
||||
headline?: string
|
||||
headlineH1?: boolean
|
||||
@@ -69,10 +90,6 @@ interface ContentBlockEntry {
|
||||
tagline?: string
|
||||
anchorId?: string
|
||||
containerWidth?: "" | "wide" | "full"
|
||||
background?: {
|
||||
color?: string
|
||||
image?: string
|
||||
}
|
||||
padding?: {
|
||||
top?: string
|
||||
bottom?: string
|
||||
@@ -83,41 +100,25 @@ interface ContentBlockEntry {
|
||||
buttonLink?: string
|
||||
buttonTarget?: string
|
||||
}
|
||||
heroImage?: {
|
||||
image?: string
|
||||
/** External image URL (e.g. Unsplash) — used when no medialib ID is available */
|
||||
externalUrl?: string
|
||||
}
|
||||
heroImage?: ContentHeroImage
|
||||
featureBoxes?: ContentFeatureBoxEntry[]
|
||||
// richtext fields
|
||||
text?: string
|
||||
imagePosition?: "none" | "left" | "right"
|
||||
imageRounded?: string
|
||||
image?: string
|
||||
/** External image URL for richtext/generic blocks (e.g. Unsplash) */
|
||||
externalImageUrl?: 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
|
||||
_lookup?: Record<string, MedialibEntry | MedialibEntry[] | null>
|
||||
active?: boolean
|
||||
publication?: {
|
||||
from?: string | Date
|
||||
@@ -129,13 +130,12 @@ interface ContentEntry {
|
||||
name?: string
|
||||
path?: string
|
||||
alternativePaths?: { path?: string }[]
|
||||
thumbnail?: string
|
||||
teaserText?: string
|
||||
blocks?: ContentBlockEntry[]
|
||||
meta?: {
|
||||
title?: string
|
||||
description?: string
|
||||
keywords?: string
|
||||
keywords?: string[]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,6 +146,9 @@ interface NavigationElement {
|
||||
page?: string
|
||||
hash?: string
|
||||
externalUrl?: string
|
||||
_lookup?: {
|
||||
page?: ContentEntry | null
|
||||
}
|
||||
}
|
||||
|
||||
/** Navigation entry from the CMS */
|
||||
|
||||
Reference in New Issue
Block a user