diff --git a/src/lib/components/HighlightedText.svelte b/src/lib/components/HighlightedText.svelte
new file mode 100644
index 0000000..9e0c316
--- /dev/null
+++ b/src/lib/components/HighlightedText.svelte
@@ -0,0 +1,61 @@
+
+
+
+ {#each parts as part, index (index)}
+ {#if part.isMatch}
+ {part.text}
+ {:else}
+ {part.text}
+ {/if}
+ {/each}
+
diff --git a/src/lib/components/Terminal.svelte b/src/lib/components/Terminal.svelte
index d8467ee..2ebf51a 100644
--- a/src/lib/components/Terminal.svelte
+++ b/src/lib/components/Terminal.svelte
@@ -3,6 +3,7 @@
import { afterUpdate } from "svelte";
import ConversationTabs from "./ConversationTabs.svelte";
import Markdown from "./Markdown.svelte";
+ import HighlightedText from "./HighlightedText.svelte";
import { searchState, searchQuery } from "$lib/stores/search";
let terminalElement: HTMLDivElement;
@@ -71,13 +72,6 @@
});
}
- function highlightText(text: string, query: string): string {
- if (!query) return text;
- const escapedQuery = query.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
- const regex = new RegExp(`(${escapedQuery})`, "gi");
- return text.replace(regex, '$1');
- }
-
$: {
if (currentSearchQuery && lines.length > 0) {
const escapedQuery = currentSearchQuery.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -134,10 +128,7 @@
{#if line.type === "assistant"}
{:else}
-
- {@html highlightText(line.content, currentSearchQuery)}
+
{/if}
{/each}