"use client"; import ReactMarkdown from "react-markdown"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, } from "@kandev/ui/dialog"; import { ScrollArea } from "@kandev/ui/scroll-area"; import { Badge } from "@kandev/ui/badge"; import { Separator } from "@kandev/ui/separator"; import { IconExternalLink } from "@tabler/icons-react"; import { remarkPlugins, markdownComponents } from "@/components/shared/markdown-components"; import { getReleaseUrl } from "@/lib/release-notes"; import type { ChangelogEntry } from "@/lib/changelog"; type ReleaseNotesDialogProps = { open: boolean; onOpenChange: (open: boolean) => void; entries: ChangelogEntry[]; latestVersion: string; }; function buildDescription(entries: ChangelogEntry[]): string { if (entries.length === 1) { return entries[0].date ? `Released on ${entries[0].date}` : "Latest release notes"; } return `${entries.length} new releases`; } export function ReleaseNotesDialog({ open, onOpenChange, entries, latestVersion, }: ReleaseNotesDialogProps) { const releaseUrl = getReleaseUrl(latestVersion); return ( What's New v{latestVersion} {buildDescription(entries)}
{entries.map((entry, index) => (
{entries.length > 1 && (
v{entry.version} {entry.date && ( {entry.date} )}
)}
{entry.notes}
{index < entries.length - 1 && }
))}
View full release on GitHub
); }