+ );
+ },
+ CodeHeader,
+});
diff --git a/examples/mem0-demo/components/assistant-ui/memory-indicator.tsx b/examples/mem0-demo/components/assistant-ui/memory-indicator.tsx
new file mode 100644
index 00000000..05c744e9
--- /dev/null
+++ b/examples/mem0-demo/components/assistant-ui/memory-indicator.tsx
@@ -0,0 +1,106 @@
+"use client";
+
+import * as React from "react";
+import { Book } from "lucide-react";
+
+import { Badge } from "@/components/ui/badge";
+import {
+ Popover,
+ PopoverContent,
+ PopoverTrigger,
+} from "@/components/ui/popover";
+import { ScrollArea } from "../ui/scroll-area";
+
+export type Memory = {
+ event: "ADD" | "UPDATE" | "DELETE" | "GET";
+ id: string;
+ memory: string;
+ score: number;
+};
+
+interface MemoryIndicatorProps {
+ memories: Memory[];
+}
+
+export default function MemoryIndicator({ memories }: MemoryIndicatorProps) {
+ const [isOpen, setIsOpen] = React.useState(false);
+
+ // Determine the memory state
+ const hasAccessed = memories.some((memory) => memory.event === "GET");
+ const hasUpdated = memories.some((memory) => memory.event !== "GET");
+
+ let statusText = "";
+ let variant: "default" | "secondary" | "outline" = "default";
+
+ if (hasAccessed && hasUpdated) {
+ statusText = "Memory accessed and updated";
+ variant = "default";
+ } else if (hasAccessed) {
+ statusText = "Memory accessed";
+ variant = "secondary";
+ } else if (hasUpdated) {
+ statusText = "Memory updated";
+ variant = "default";
+ }
+
+ if (!statusText) return null;
+
+ return (
+
+
+ A personalized AI chat app powered by Mem0 that remembers your preferences, facts, and memories. +
++ How can I help you today? +
+
+
{processChildren(children)}
+ ), + span: ({ children, ...props }: React.HTMLAttributes
+ {processChildren(children)}
+
+ );
+ }
+ } satisfies Components;
+
+ return (
+