+ {error} +
+ )} + + ++ "Mem0 allowed us to unlock true personalized tutoring for + every student, and it took us just a weekend to integrate." +
+Michael Tong
+CTO, RevisionDojo
+Trusted by 100k+ Developers
++ {stat.label} +
+{stat.value}
+{value}...
+ ),
+ },
+ {
+ key: "created_at" as keyof ApiKey,
+ label: "Created",
+ width: 120,
+ render: (value: string) => format(new Date(value), "MMM d, yyyy"),
+ },
+ {
+ key: "last_used_at" as keyof ApiKey,
+ label: "Last Used",
+ width: 120,
+ render: (value: string | null) =>
+ value ? format(new Date(value), "MMM d, yyyy") : "Never",
+ },
+ {
+ key: "id" as keyof ApiKey,
+ label: "",
+ width: 40,
+ render: (_: string, row: ApiKey) => (
+
+ ),
+ },
+ ];
+
+ return (
+ {cat}
+ {[1, 2, 3].map((i) => ( + + ))} ++ {user?.name} +
++ {user?.email} +
++ Loading effective server configuration... +
+ )} ++ Need another provider? Install its Python package, rebuild the image, + and extend the bundled list. See the{" "} + + setup guide + + . +
+ + {isAdmin && ( + + )} + +
+ {`{
+ "memories": [
+ {
+ "id": "mem_abc123",
+ "content": "User prefers dark mode",
+ "user_id": "user_1",
+ "created_at": "2026-04-10T12:00:00Z"
+ }
+ ],
+ "total": 1247
+}`}
+
+
+ {`curl -X POST ${apiUrl}/memories \\
+ -H "X-API-Key: " \\
+ -H "Content-Type: application/json" \\
+ -d '{"messages": [{"role": "user", "content": "I like hiking"}], "user_id": "alice"}'`}
+
+
+ REST API reference
+
+ {selectedMemory.memory}
++ {selectedMemory.id} +
+{selectedMemory.user_id}
+{selectedMemory.agent_id}
++ {new Date(selectedMemory.created_at).toLocaleString()} +
++ Recent request logs from your self-hosted instance. +
+ {lastUpdated && ( ++ Last updated{" "} + {formatDistanceToNow(new Date(lastUpdated), { addSuffix: true })} +
+ )} ++ {card.label} +
+{card.value}
++ {STEPS[step]} +
+ ++ Checking server configuration... +
+ )} +{error}
+ )} + + {step === 0 && ( + + )} + + {step === 1 && ( + + )} + + {step === 2 && !apiKey && ( + + )} + + {step === 2 && apiKey && ( + + )} + + {step === 3 && ( ++ We'll generate custom instructions that tell the memory + extractor which facts to prioritize for your use case. +
+{text}
++ {title} +
+ {description && ( ++ {description} +
+ )} + {children} ++ {description} +
++ This feature is available in Mem0 Cloud and Enterprise. +
+{message}
+ + {ctaLabel} + + {dismissible && ( + + )} +|
+
+
+
+
+
+ {!isLastColumn && (
+
+ )}
+ |
+ );
+ }
+
+ const Icon = column.icon;
+ const relevantClasses = column.className
+ ? column.className
+ .split(" ")
+ .filter(
+ (c) =>
+ c.startsWith("w-") ||
+ c.startsWith("min-w-") ||
+ c.startsWith("max-w-") ||
+ c.startsWith("text-center") ||
+ c.startsWith("text-left") ||
+ c.startsWith("text-right"),
+ )
+ .join(" ")
+ : "";
+
+ const baseHeaderClass = classes.tableHeaderCell;
+ const alignClass =
+ column.align === "center"
+ ? "text-center"
+ : column.align === "right"
+ ? "text-right"
+ : "";
+ const mergedRelevantClasses =
+ `${relevantClasses} ${alignClass}`.trim();
+ const hasCustomAlignment =
+ mergedRelevantClasses.includes("text-center") ||
+ mergedRelevantClasses.includes("text-right");
+ const headerClassName = hasCustomAlignment
+ ? `${baseHeaderClass.replace("text-left", "")} ${mergedRelevantClasses}`.trim()
+ : mergedRelevantClasses
+ ? `${baseHeaderClass} ${mergedRelevantClasses}`.trim()
+ : baseHeaderClass;
+ const headerCellClassName = `${headerClassName} min-w-0`;
+
+ const flexAlignment = mergedRelevantClasses.includes(
+ "text-center",
+ )
+ ? "justify-center"
+ : mergedRelevantClasses.includes("text-right")
+ ? "justify-end"
+ : "";
+
+ return (
+
+
+
+
+ {Icon &&
+ {!isLastColumn && (
+
+ )}
+ |
+ );
+ })}
+
|---|---|
|
+
+ {column.render
+ ? column.render(value, row)
+ : String(value)}
+
+ |
+ );
+ })}
+
+ {body} +
+ ); +}); +FormMessage.displayName = "FormMessage"; + +export { + useFormField, + Form, + FormItem, + FormLabel, + FormControl, + FormDescription, + FormMessage, + FormField, +}; diff --git a/server/dashboard/src/components/ui/hover-card.tsx b/server/dashboard/src/components/ui/hover-card.tsx new file mode 100644 index 000000000..9e8c62d31 --- /dev/null +++ b/server/dashboard/src/components/ui/hover-card.tsx @@ -0,0 +1,29 @@ +"use client"; + +import * as React from "react"; +import * as HoverCardPrimitive from "@radix-ui/react-hover-card"; + +import { cn } from "@/lib/utils"; + +const HoverCard = HoverCardPrimitive.Root; + +const HoverCardTrigger = HoverCardPrimitive.Trigger; + +const HoverCardContent = React.forwardRef< + React.ElementRef