"use client" import * as React from "react" import { type SourceDocumentUIPart, type SourceUrlUIPart } from "ai" import { cn } from "cn" import { Badge } from "@/registry/bases/radix/ui/badge" import { IconPlaceholder } from "@/app/(app)/create/components/icon-placeholder" type SourcePart = SourceDocumentUIPart | SourceUrlUIPart function getHostname(url: string) { try { return new URL(url).hostname.replace(/^www\./, "") } catch { return url } } export function PartSource({ part, className, }: { part: SourcePart } & Omit, "part">) { if (part.type === "source-url") { return ( {part.title ?? part.url} {getHostname(part.url)} URL ) } if (part.type === "source-document") { return (
{part.title ?? part.filename ?? "Document source"} {[part.filename, part.mediaType].filter(Boolean).join(" / ")} Source ID: {part.sourceId} Document
) } return null }