From c9cee504e873ef077f50637ad078abb0264822e5 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Fri, 30 Jan 2026 00:23:46 -0600 Subject: [PATCH] feat: add wiki-link autocomplete in editor (closes #63) --- .../src/components/knowledge/EntryEditor.tsx | 29 +- .../components/knowledge/LinkAutocomplete.tsx | 384 +++++++++++++++ .../knowledge/__tests__/EntryEditor.test.tsx | 142 ++++++ .../__tests__/LinkAutocomplete.test.tsx | 454 ++++++++++++++++++ 4 files changed, 999 insertions(+), 10 deletions(-) create mode 100644 apps/web/src/components/knowledge/LinkAutocomplete.tsx create mode 100644 apps/web/src/components/knowledge/__tests__/EntryEditor.test.tsx create mode 100644 apps/web/src/components/knowledge/__tests__/LinkAutocomplete.test.tsx diff --git a/apps/web/src/components/knowledge/EntryEditor.tsx b/apps/web/src/components/knowledge/EntryEditor.tsx index cebf16e..e221e3c 100644 --- a/apps/web/src/components/knowledge/EntryEditor.tsx +++ b/apps/web/src/components/knowledge/EntryEditor.tsx @@ -1,6 +1,7 @@ "use client"; -import React, { useState } from "react"; +import React, { useState, useRef } from "react"; +import { LinkAutocomplete } from "./LinkAutocomplete"; interface EntryEditorProps { content: string; @@ -8,13 +9,14 @@ interface EntryEditorProps { } /** - * EntryEditor - Markdown editor with live preview + * EntryEditor - Markdown editor with live preview and link autocomplete */ export function EntryEditor({ content, onChange }: EntryEditorProps) { const [showPreview, setShowPreview] = useState(false); + const textareaRef = useRef(null); return ( -
+
) : ( -