diff --git a/apps/website/components/ai/ask-dialog.tsx b/apps/website/components/ai/ask-dialog.tsx index 705ff5af..b55946d6 100644 --- a/apps/website/components/ai/ask-dialog.tsx +++ b/apps/website/components/ai/ask-dialog.tsx @@ -9,6 +9,7 @@ import { useRef, useState, } from "react"; +import { track } from "@vercel/analytics"; import { Loader2, X } from "lucide-react"; import { cn } from "@/lib/cn"; import Link from "fumadocs-core/link"; @@ -118,12 +119,18 @@ function AskAIInput({ onEscape?: () => void; showEscButton?: boolean; }) { - const { status, sendMessage } = useChatContext(); + const { status, sendMessage, messages } = useChatContext(); const [input, setInput] = useState(""); const inputRef = useRef(null); const isLoading = status === "streaming" || status === "submitted"; const onStart = () => { if (input.trim()) { + track("ai_question_submitted", { + question: input.trim(), + location: "Ask AI Dialog", + not_first_message: messages.length > 0, + }); + void sendMessage({ text: input }); setInput(""); } diff --git a/apps/website/components/animated-link.tsx b/apps/website/components/animated-link.tsx index 7b06665e..78a1718f 100644 --- a/apps/website/components/animated-link.tsx +++ b/apps/website/components/animated-link.tsx @@ -4,16 +4,22 @@ import Link from "next/link"; import { cn } from "@/lib/cn"; import { usePathname } from "next/navigation"; import { forwardRef } from "react"; +import { track } from "@vercel/analytics"; interface AnimatedLinkProps extends React.AnchorHTMLAttributes { href: string; children: React.ReactNode; className?: string; + trackIntent?: string; + trackLocation?: string; } export const AnimatedLink = forwardRef( - ({ href, children, className = "", ...props }, ref) => { + ( + { trackIntent, trackLocation, href, children, className = "", ...props }, + ref + ) => { const pathname = usePathname(); // caveats const isActive = @@ -21,12 +27,23 @@ export const AnimatedLink = forwardRef( (href === "/docs" && pathname.startsWith("/docs")) || (href === "/blog" && pathname.startsWith("/blog")); + const handleClick = (event: React.MouseEvent) => { + track("link clicked", { + location: trackLocation || pathname || "unknown", + intent: trackIntent || "navigation", + href: href, + }); + + props.onClick?.(event); + }; + return ( {children}
{ /> */}
- -