_includes/resources/commonModels.ts (50 lines of code) (raw):
import { Type } from "@sinclair/typebox";
export const ThumbnailField = Type.Object({
thumbnail: Type.String({ description: "Path to thumbnail image." }),
});
export const IconField = Type.Object({
accent: Type.Optional(Type.String()),
icon: Type.Optional(Type.String()),
logo: Type.Optional(Type.String()),
topicType: Type.Optional(Type.String()),
});
export const VideoBottomField = Type.Object({
videoBottom: Type.Optional(
Type.Boolean({
description:
"True if video should be rendered at the bottom; false otherwise",
}),
),
});
export const VideoVerticalField = Type.Object({
videoVertical: Type.Optional(
Type.Boolean({
description:
"True if video is vertical and should be displayed in a two-column layout",
}),
),
});
export const VideoField = Type.Object({
video: Type.Optional(
Type.Union([
Type.String({
description: "YouTube URL to the video",
}),
Type.Object(
{
url: Type.String({ description: "YouTube URL to the video" }),
start: Type.Number({
description: "start time for the video",
}),
end: Type.Number({
description: "end time for the video",
}),
},
{ description: "Animated GIF to show in this tip" },
),
]),
),
});
export const LabelField = Type.Object({
label: Type.Optional(Type.String({ description: "Label of this resource" })), // Can be inferred from parentDir
});