/* Hallmark · pre-emit critique: P5 H5 E5 S5 R5 V5 */ /* Hallmark · redesign: HomePage · studied-DNA: https://inihaus.de · macrostructure: Newsstand Feed */ import React, { useState } from 'react'; import { Search, Calendar, MapPin, Clock, ArrowRight, Plus, EyeOff, CheckCircle2, Edit3, ShieldAlert } from 'lucide-react'; export default function HomePage({ events, user, onSelectEvent, onOpenCreateEvent, onToggleEventActive, onEditEvent, branding }) { const [searchQuery, setSearchQuery] = useState(''); const [filterMode, setFilterMode] = useState('all'); const nowStr = new Date().toISOString().split('T')[0]; const filteredEvents = events.filter((evt) => { const matchesSearch = evt.title.toLowerCase().includes(searchQuery.toLowerCase()) || (evt.description && evt.description.toLowerCase().includes(searchQuery.toLowerCase())) || (evt.location && evt.location.toLowerCase().includes(searchQuery.toLowerCase())); if (!matchesSearch) return false; if (filterMode === 'upcoming') return evt.end_date >= nowStr; return true; }); const primaryColor = branding?.primary_color || 'var(--brand-primary)'; const showCommunityBox = branding?.show_community_info_box ?? true; const showSupportBox = branding?.show_support_box ?? true; const hasSidebar = showCommunityBox || showSupportBox; const isUserAdmin = user && (user.is_admin_user || user.is_staff || user.is_superuser); return (
{/* Hero Banner Masthead */}
{branding?.app_name || "SCHICHT- & EVENTPORTAL"} {branding?.custom_banner_text && ( 📢 {branding.custom_banner_text} )}

Veranstaltungen & Schichtkoordination

Hier findest du aktuelle Termine, Arbeitsgruppen, Bar- & Tresendienste und Schichtpläne der Initiative.

{/* Search & Filter Bar */}
setSearchQuery(e.target.value)} placeholder="Veranstaltung, Ort oder Suchbegriff..." className="w-full pl-10 pr-16 py-2 rounded-sm bg-subtle border border-grid text-main text-xs font-mono focus:outline-none focus:border-muted" /> {searchQuery && ( )}
{/* Main Content Stream & Sidebar Widget */}
{/* Events Grid Stream */}

Termine & Schichten

{user && ( )}
{filteredEvents.length === 0 ? (
{searchQuery ? `[ Keinen Eintrag für "${searchQuery}" gefunden ]` : '[ Keine Veranstaltungen vorhanden ]'}
) : (
{filteredEvents.map((evt) => { const taskAreaCount = evt.task_areas?.length || 0; const totalShifts = evt.task_areas?.reduce((acc, ta) => acc + (ta.shifts?.length || 0), 0) || 0; const isCoManager = user && evt.co_managers && evt.co_managers.some(cm => (typeof cm === 'object' ? cm.id === user.id : cm === user.id)); const isCreator = user && (evt.created_by === user.id || evt.created_by?.id === user.id || isCoManager); const canManage = isUserAdmin || isCreator; return (
{new Date(evt.start_date).toLocaleDateString('de-DE')} {evt.is_active === false ? ( [ DEAKTIVIERT ] ) : evt.location ? ( {evt.location} ) : null}

{evt.title}

{evt.description && (

{evt.description}

)}
{taskAreaCount} Bereiche / {totalShifts} Schichten
{canManage && onEditEvent && ( )} {canManage && onToggleEventActive && ( )}
); })}
)}
{/* Sidebar Info & Community Links Widget */} {hasSidebar && (
{showCommunityBox && (

{branding?.community_info_title || "📌 Verein & Infos"}

{branding?.community_info_text || "Initiative e.V. Hausverein\nOffene Angebote, DIY-Kultur & engagierte Schichten."}
)} {showSupportBox && (

{branding?.support_box_title || "❤️ Unterstützen"}

{branding?.support_box_text || "Hilf mit als Helfer*in an der Bar, beim Essen kochen oder beim Auf- & Abbau."}

)}
)}
); }