lib/changelog-types.ts
Rama main · réplica de lectura del repositorio original.
import type { Locale } from "@/i18n/config";
export type ChangelogIllustrationName =
| "shield" | "board" | "assistant" | "pages" | "connections" | "activity" | "desktop"
| "smart-fill" | "smart-assign" | "microphone" | "relations" | "pull-request"
| "tabs" | "triage" | "providers" | "performance" | "merge" | "deadline";
export type ChangelogIllustration =
| { kind: "code"; name: ChangelogIllustrationName }
| { kind: "icon"; name: ChangelogIllustrationName }
| { kind: "image"; url: string; width: number; height: number };
export interface FeatureCopy {
title: string;
summary: string;
details: string[];
}
export interface ChangelogFeature {
id: string;
illustration: ChangelogIllustration;
copy: Record<Locale, FeatureCopy>;
}
export interface ChangelogDraft {
version: string;
layout: "compact" | "bento";
copy: Record<Locale, { title: string; summary: string }>;
features: ChangelogFeature[];
evidence: { commits: string[]; issues: string[] };
}
export interface ChangelogRelease extends ChangelogDraft {
publishedAt: string;
sha: string;
deploymentId: number;
}
export type ChangelogIndexEntry = Pick<ChangelogRelease,
"version" | "layout" | "copy" | "publishedAt" | "sha" | "deploymentId"> & { featureIds: string[] };
export interface ChangelogFeatureSummary {
id: string;
title: string;
illustration: ChangelogIllustration;
details: string[];
}
export interface ChangelogReleaseSummary {
version: string;
publishedAt: string;
layout: "compact" | "bento";
title: string;
summary: string;
features: ChangelogFeatureSummary[];
}
export interface ChangelogPageContent {
releases: ChangelogReleaseSummary[];
next: string | null;
}
export interface ChangelogFeatureDetail extends ChangelogFeatureSummary {
version: string;
}
export interface ChangelogLabels {
more: string;
loading: string;
error: string;
retry: string;
details: string;
}