Skip to content

Instantly share code, notes, and snippets.

@ryanditjia
Created September 26, 2025 10:41
Show Gist options
  • Save ryanditjia/351a93d7d558c25114cac0038feeb799 to your computer and use it in GitHub Desktop.
Save ryanditjia/351a93d7d558c25114cac0038feeb799 to your computer and use it in GitHub Desktop.
Storyblok generated types
// This file was generated by the storyblok CLI.
// DO NOT MODIFY THIS FILE BY HAND.
import type { ISbStoryData } from '@storyblok/js';
import type { StoryblokAsset, StoryblokRichtext, StoryblokMultilink, StoryblokMultiasset } from '../storyblok.d.ts';
export interface About {
title: StoryblokRichtext;
richText?: StoryblokRichtext;
teamTitle: string;
teamEntries: TeamEntry[];
runes: StoryblokMultiasset;
component: "about";
_uid: string;
}
export interface Blog {
title?: string;
blogEntries: BlogEntry[];
component: "blog";
_uid: string;
}
export interface BlogEntry {
category: string;
description: string;
media: StoryblokAsset;
link: string;
component: "blogEntry";
_uid: string;
}
export interface Config {
theatre?: StoryblokAsset;
component: "config";
_uid: string;
}
export interface EyebrowAndText {
eyebrow: string;
richText?: StoryblokRichtext;
component: "eyebrowAndText";
_uid: string;
}
export interface EyebrowTitleTextCta {
eyebrow?: string;
title: StoryblokRichtext;
cta: Link[];
richText?: StoryblokRichtext;
component: "eyebrowTitleTextCta";
_uid: string;
}
export interface Faq {
title?: string;
faqFirstColumn: FaqEntry[];
faqSecondColumn: FaqEntry[];
mobileRunes: StoryblokMultiasset;
component: "faq";
_uid: string;
}
export interface FaqEntry {
question: string;
answer: StoryblokRichtext;
component: "faqEntry";
_uid: string;
}
export interface Footer {
subtitle: string;
verticalMarquee: string;
image: StoryblokAsset;
links: Link[];
component: "Footer";
_uid: string;
}
export interface GameEntry {
media: StoryblokAsset;
title: string;
body: string;
ctaText: string;
overview: GameOverlay[];
component: "gameEntry";
_uid: string;
}
export interface GameOverlay {
medias?: StoryblokMultiasset;
overview: EyebrowTitleTextCta[];
codeSnippet?: string;
component: "gameOverlay";
_uid: string;
}
export interface GlobalFooter {
footer: ISbStoryData<Footer> | string;
component: "globalFooter";
_uid: string;
}
export interface GlobalHeader {
header: ISbStoryData<Header> | string;
component: "globalHeader";
_uid: string;
}
export interface Header {
links: Link[];
cta: Link[];
component: "Header";
_uid: string;
}
export interface Home {
body: (HomeInner | GlobalHeader | GlobalFooter | Intro | Mission | Seo)[];
component: "home";
_uid: string;
}
export interface HomeInner {
manifestoHero: ManifestoHero[];
manifestoTextSwitchback: ManifestoTextSwitchback[];
manifestoImageAndTextSwitchback: ManifestoImageAndTextSwitchback[];
manifestoBottom: ManifestoBottom[];
about: About[];
investors: Investors[];
blog: Blog[];
faq: Faq[];
component: "homeInner";
_uid: string;
}
export interface Intro {
description?: StoryblokRichtext;
Eyebrow?: string;
textWithSvgMobile: string;
textWithSvg: string;
component: "Intro";
_uid: string;
}
export interface Investors {
title: string;
runes: StoryblokMultiasset;
logosFirstColumn: StoryblokMultiasset;
logosSecondColumn: StoryblokMultiasset;
component: "investors";
_uid: string;
}
export interface Link {
text: string;
url: string;
component: "link";
_uid: string;
}
export interface Link {
LinkText?: string;
Link?: Exclude<StoryblokMultilink, {linktype?: "email"} | {linktype?: "asset"}>;
component: "Link";
_uid: string;
}
export interface ManifestoBottom {
title?: string;
media?: StoryblokAsset;
body: EyebrowTitleTextCta[];
textAndRune: TextAndRune[];
component: "manifestoBottom";
_uid: string;
}
export interface ManifestoHero {
title: string;
subtitle: string;
component: "manifestoHero";
_uid: string;
}
export interface ManifestoImageAndTextSwitchback {
title?: StoryblokRichtext;
switchbacks: EyebrowAndText[];
medias: StoryblokMultiasset;
component: "manifestoImageAndTextSwitchback ";
_uid: string;
}
export interface ManifestoTextSwitchback {
textWithSvg: string;
textWithSvgMobile: string;
switchbacks: EyebrowAndText[];
media: StoryblokAsset;
component: "manifestoTextSwitchback";
_uid: string;
}
export interface Mission {
hero: MissionHero[];
technology: MissionTechnology[];
benefits: MissionBenefits[];
games: MissionGame[];
component: "mission";
_uid: string;
}
export interface MissionBenefits {
subNavTitle: string;
cta?: Link[];
title: string;
titleAndText: TitleAndTextLimited[];
mobileRune: StoryblokAsset;
component: "missionBenefits";
_uid: string;
}
export interface MissionGame {
subNavTitle: string;
title: string;
gameEntries: GameEntry[];
component: "missionGame";
_uid: string;
}
export interface MissionHero {
title: StoryblokRichtext;
component: "missionHero";
_uid: string;
}
export interface MissionTechnology {
subNavTitle: string;
cta?: Link[];
title: string;
titleAndText?: TitleAndTextLimited[];
mobileRune: StoryblokAsset;
component: "missionTechnology";
_uid: string;
}
export interface Page {
body?: (
| About
| Blog
| BlogEntry
| Config
| EyebrowAndText
| EyebrowTitleTextCta
| Faq
| FaqEntry
| Footer
| GameEntry
| GameOverlay
| GlobalFooter
| GlobalHeader
| Header
| Home
| HomeInner
| Intro
| Investors
| Link
| Link
| ManifestoBottom
| ManifestoHero
| ManifestoImageAndTextSwitchback
| ManifestoTextSwitchback
| Mission
| MissionBenefits
| MissionGame
| MissionHero
| MissionTechnology
| Page
| Seo
| TeamEntry
| Text
| TextAndRune
| TitleAndTextLimited
)[];
component: "page";
_uid: string;
}
export interface Seo {
title: string;
description: string;
image: StoryblokAsset;
keywords?: Text[];
component: "seo";
_uid: string;
}
export interface TeamEntry {
name: string;
position: string;
media: StoryblokAsset;
socialMedia: Link[];
component: "teamEntry";
_uid: string;
}
export interface Text {
text: string;
component: "text";
_uid: string;
}
export interface TextAndRune {
rune: StoryblokAsset;
firstText: string;
secondText: StoryblokRichtext;
component: "textAndRune";
_uid: string;
}
export interface TitleAndTextLimited {
title: string;
text: string;
component: "titleAndTextLimited";
_uid: string;
}
// This file was generated by the Storyblok CLI.
// DO NOT MODIFY THIS FILE BY HAND.
import type { ISbStoryData } from '@storyblok/js';
type StoryblokPropertyType = 'asset' | 'multiasset' | 'multilink' | 'table' | 'richtext';
interface StoryblokAsset {
alt: string | null;
copyright: string | null;
fieldtype: 'asset';
id: number;
filename: string | null;
name: string;
title: string | null;
focus: string | null;
meta_data: Record<string, any>;
source: string | null;
is_external_url: boolean;
is_private: boolean;
src: string;
updated_at: string;
width: number | null;
height: number | null;
aspect_ratio: number | null;
public_id: string | null;
content_type: string;
}
interface StoryblokMultiasset extends Array<StoryblokAsset> {
}
interface StoryblokMultilink {
fieldtype: 'multilink';
id: string;
url: string;
cached_url: string;
target?: '_blank' | '_self';
anchor?: string;
rel?: string;
title?: string;
prep?: string;
linktype: 'story' | 'url' | 'email' | 'asset';
story?: {
name: string;
created_at: string;
published_at: string;
id: number;
uuid: string;
content: Record<string, any>;
slug: string;
full_slug: string;
sort_by_date?: string;
position?: number;
tag_list?: string[];
is_startpage?: boolean;
parent_id?: number | null;
meta_data?: Record<string, any> | null;
group_id?: string;
first_published_at?: string;
release_id?: number | null;
lang?: string;
path?: string | null;
alternates?: any[];
default_full_slug?: string | null;
translated_slugs?: any[] | null;
};
email?: string;
}
interface StoryblokTable {
fieldtype: 'table';
thead: Array<{
_uid: string;
value: string;
component: '_table_head';
_editable?: string;
}>;
tbody: Array<{
_uid: string;
component: '_table_row';
_editable?: string;
body: Array<{
_uid: string;
value: string;
component: '_table_col';
_editable?: string;
}>;
}>;
}
interface StoryblokRichtext {
type: string;
content?: StoryblokRichtext[];
marks?: StoryblokRichtext[];
attrs?: Record<string, any>;
text?: string;
}
export type { StoryblokAsset, StoryblokMultiasset, StoryblokMultilink, StoryblokPropertyType, StoryblokRichtext, StoryblokTable };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment