import { useEffect, useState } from "react"; import { Bot, Globe, User as UserIcon } from "lucide-react"; import { api } from "../lib/api.ts"; import type { SharedChat } from "../lib/types.ts"; import { Avatar, LOGO_URL, Logo } from "./ui.tsx"; import { Markdown } from "./Markdown.tsx"; export function SharePage({ publicId }: { publicId: string }) { const [chat, setChat] = useState(null); const [error, setError] = useState(""); useEffect(() => { api.publicShare(publicId) .then(setChat) .catch((err) => setError(err instanceof Error ? err.message : "Not found")); }, [publicId]); return (

{chat?.title ?? "Shared chat"}

{chat && (

by {chat.authorName} · {new Date(chat.sharedAt).toLocaleDateString()} {chat.model && <> · {chat.model.split(":").pop()}}

)}
Open KisAssistant
{error &&

{error}

} {!chat && !error &&

Loading shared chat…

} {chat?.messages.map((m, i) => (
{m.role === "user" ? : } {m.role === "user" ? chat.authorName : "KisAssistant"}
{m.role === "user" ? (
{m.content}
) : (
)}
))}
); }