Published on {formatDate2(date)}
diff --git a/app/changelog/page.tsx b/app/changelog/page.tsx
index 397a039..0caacf0 100644
--- a/app/changelog/page.tsx
+++ b/app/changelog/page.tsx
@@ -2,42 +2,23 @@ import { Suspense } from "react";
import { getChangelogEntries } from "@/lib/changelog";
import { VersionEntry } from "@/components/changelog/version-entry";
import { VersionToc } from "@/components/changelog/version-toc";
-import { getMetadata } from "@/app/layout";
-import docuConfig from "@/docu.json";
import { FloatingVersionToc } from "@/components/changelog/floating-version";
-export const metadata = getMetadata({
- title: "Changelog",
- description: "Latest updates and improvements to DocuBook",
- image: "release-note.png",
-});
-
export default async function ChangelogPage() {
const entries = await getChangelogEntries();
- const { meta } = docuConfig;
- return (
-
-
-
-
Changelog
-
- Latest updates and improvements to {meta.title}
-
-
-
-
-
-
}>
+ return (
+
+
}>
({ version, date }))}
/>
-
+
-
-
+
+
{entries.map((entry, index) => (
-
-
{/* Floating TOC for smaller screens */}
{entries.length > 0 && (
{
+ const insertAtCursor = (textArea: HTMLTextAreaElement, text: string) => {
const start = textArea.selectionStart;
const end = textArea.selectionEnd;
const before = markdown.substring(0, start);
const after = markdown.substring(end);
- // Menambahkan satu baris kosong sebelum dan sesudah komponen
- const newText = `${before}${text}\n${after}`;
+ const needsLeadingNewline = before && !before.endsWith('\n\n') ? '\n\n' : '';
+ const needsTrailingNewline = after && !after.startsWith('\n\n') ? '\n\n' : '';
+
+ const newText = `${before}${needsLeadingNewline}${text}${needsTrailingNewline}${after}`;
setMarkdown(newText);
requestAnimationFrame(() => {
- textArea.focus();
- const newPosition = start + text.length + 1;
- textArea.setSelectionRange(newPosition, newPosition);
+ textArea.focus();
+ const newPosition = before.length + needsLeadingNewline.length + text.length + 1;
+ textArea.setSelectionRange(newPosition, newPosition);
});
- };
-
+ };
if (isMobile) {
return ;
diff --git a/components/changelog/floating-version.tsx b/components/changelog/floating-version.tsx
index e2eb109..4175564 100644
--- a/components/changelog/floating-version.tsx
+++ b/components/changelog/floating-version.tsx
@@ -51,7 +51,7 @@ export function FloatingVersionToc({ versions }: FloatingVersionTocProps) {
};
return (
-
+