import React, { useState } from 'react' import { Search } from 'lucide-react' import { useContent } from '../hooks/useContent' import SEOHead from '../components/SEOHead' import { decodeHtml } from '../utils/decodeHtml' import './Articles.css' export default function Articles() { const [searchQuery, setSearchQuery] = useState('') const { items: posts } = useContent('posts', { pageSize: 100 }) const filteredPosts = posts?.filter(post => { if (!searchQuery) return true const query = searchQuery.toLowerCase() return ( (post.title && post.title.toLowerCase().includes(query)) || (post.excerpt && post.excerpt.toLowerCase().includes(query)) || (post.searchText && post.searchText.toLowerCase().includes(query)) ) }) return (

Meine Artikel

Gedanken, Analysen und Erfahrungen rund um Software Engineering, Führung und Technologie.

setSearchQuery(e.target.value)} style={{ width: '100%', padding: '16px 80px 16px 48px', borderRadius: '12px', border: '1px solid rgba(255,255,255,0.1)', background: 'var(--glass-bg)', color: 'var(--text-primary)', fontSize: '1rem', outline: 'none' }} />
{filteredPosts?.length || 0} / {posts?.length || 0}
{filteredPosts?.map((post) => (
{post.image && (
{post.title}
)}
{post.date && ( {new Date(post.date).toLocaleDateString('de-DE', { year: 'numeric', month: 'long', day: 'numeric' })} )}

{decodeHtml(post.title)}

{decodeHtml(post.excerpt || (post.searchText ? post.searchText.substring(0, 150) + '...' : ''))}

Weiterlesen → {post.url && post.url.includes('/podcast') && ( Zum Podcast → )}
))} {(!filteredPosts || filteredPosts.length === 0) && (

Keine Artikel für diese Suche gefunden.

)}
) }