"use client"; import { useState, useRef, useEffect, useCallback } from "react"; import { Send, Map as MapIcon, Database, Sparkles, BarChart3, Brain } from "lucide-react"; import { cn } from "@/lib/utils"; import dynamic from "next/dynamic"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; // Dynamic import for chart renderer to avoid SSR issues const ChartRenderer = dynamic( () => import("./charts/ChartRenderer"), { ssr: false, loading: () =>
} ); // ============================================================================ // ============================================================================ // Types // ============================================================================ import type { MapLayer } from "./MapViewer"; interface ChartData { type: 'bar' | 'line' | 'pie' | 'donut'; title?: string; data: Array<{ [key: string]: any }>; xKey?: string; yKey?: string; lines?: Array<{ key: string; color?: string; name?: string }>; } interface Message { role: "user" | "assistant"; content: string; sql?: string; citations?: string[]; intent?: string; chart?: ChartData; rawData?: Array
)
}}
>
{m.content}
| {key} | ))}
|---|
| {typeof val === 'object' ? JSON.stringify(val) : String(val)} | ))}
GeoQuery can query datasets and visualize results as maps and charts.
Use '/' to reference layers.