/** * EntryPreviewModal — full KnowledgeEntry detail view. * * Works with domain entity (KnowledgeEntry), not raw Qdrant payloads. * * (c) 2026 TWWIM UG. All rights reserved. (www.twwim.com) */ import { ExternalLink, Tag, DollarSign, Package, Clock } from 'lucide-react'; import { Modal } from '@/components/shared'; import { KnowledgeEntry, KnowledgeEntryType } from '@/domain/entities/KnowledgeEntry'; interface EntryPreviewModalProps { entry: KnowledgeEntry; onClose: () => void; } const TYPE_COLORS: Record = { PRODUCT: { bg: 'bg-blue-100', text: 'text-blue-800' }, PAGE: { bg: 'bg-green-100', text: 'text-green-800' }, DOCUMENT: { bg: 'bg-purple-100', text: 'text-purple-800' }, FAQ: { bg: 'bg-amber-100', text: 'text-amber-800' }, CUSTOM: { bg: 'bg-gray-100', text: 'text-gray-800' }, }; const SOURCE_COLORS: Record = { WORDPRESS: { bg: 'bg-indigo-100', text: 'text-indigo-800' }, SHOPIFY: { bg: 'bg-green-100', text: 'text-green-800' }, MANUAL: { bg: 'bg-gray-100', text: 'text-gray-700' }, UPLOAD: { bg: 'bg-cyan-100', text: 'text-cyan-800' }, SCOUT: { bg: 'bg-orange-100', text: 'text-orange-800' }, }; function Badge({ label, colors }: { label: string; colors: { bg: string; text: string } }) { return ( {label} ); } export function EntryPreviewModal({ entry, onClose }: EntryPreviewModalProps) { return ( Close } >
{/* Badges */}
{entry.type && } {entry.source && } {entry.status && ( {entry.status} )}
{/* Page metadata */} {entry.isPage && entry.sectionPath && (
Section
{entry.sectionPath}
)} {/* Product metadata */} {entry.isProduct && (
{entry.priceMin !== null && (
Price
{entry.priceFormatted}
)} {entry.variantCount > 0 && (
Variants
{entry.variantCount}
)} {entry.categories.length > 0 && (
Categories
{entry.categories.join(', ')}
)}
)} {/* Image */} {entry.imageUrl && (
{entry.title}
)} {/* URL */} {entry.url && ( {entry.url} )} {/* Full text */} {entry.text && (

Embedded content

              {entry.text}
            
)} {/* Point ID */}
Qdrant ID: {entry.id}
); }