import type { ArticleMeta } from '@/types/content' function normalize(value: string): string { return value.normalize('NFKC').toLowerCase().trim() } /** All whitespace-separated terms must match metadata; article body is not searched. */ export function searchArticles(articles: ArticleMeta[], query: string): ArticleMeta[] { const terms = normalize(query).split(/\s+/).filter(Boolean) return articles.filter(article => { const text = normalize([article.title, article.description, article.series ?? '', ...article.tags].join(' ')) return terms.every(term => text.includes(term)) }) }