diff --git a/templates/calendar/index.html b/templates/calendar/index.html index 09b9e39..323f649 100755 --- a/templates/calendar/index.html +++ b/templates/calendar/index.html @@ -549,6 +549,110 @@ font-size: var(--font-size-xl); } } + + /* ===== WIDOK KART ===== */ + .cards-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: var(--spacing-md); + } + + .card-banner { + background: linear-gradient(135deg, #1e3050 0%, #2E4872 100%); + border-radius: var(--radius-lg); + padding: var(--spacing-md); + color: white; + display: flex; + flex-direction: column; + gap: var(--spacing-sm); + box-shadow: var(--shadow-md); + position: relative; + overflow: hidden; + text-decoration: none; + transition: var(--transition); + } + + .card-banner:hover { + transform: translateY(-2px); + box-shadow: 0 10px 30px rgba(46, 72, 114, 0.25); + filter: brightness(1.05); + } + + .card-banner::before { + content: ''; + position: absolute; + top: -50%; + right: -10%; + width: 200px; + height: 200px; + background: rgba(255,255,255,0.06); + border-radius: 50%; + } + + .card-banner.external { + background: linear-gradient(135deg, #334155 0%, #475569 100%); + } + + .card-banner-title { + font-size: var(--font-size-base); + font-weight: 700; + line-height: 1.3; + } + + .card-banner-meta { + font-size: var(--font-size-xs); + opacity: 0.9; + display: flex; + flex-wrap: wrap; + gap: var(--spacing-sm); + } + + .card-banner-bottom { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--spacing-sm); + margin-top: auto; + } + + .card-banner-attendees { + display: flex; + align-items: center; + gap: var(--spacing-xs); + background: rgba(255,255,255,0.15); + padding: var(--spacing-xs) var(--spacing-sm); + border-radius: var(--radius); + font-weight: 600; + font-size: var(--font-size-xs); + } + + .card-banner .btn-card { + background: white; + color: #2E4872; + border: none; + padding: var(--spacing-xs) var(--spacing-md); + font-weight: 600; + font-size: var(--font-size-sm); + border-radius: var(--radius-btn); + text-decoration: none; + cursor: pointer; + transition: var(--transition); + } + + .card-banner .btn-card:hover { + background: #EDF0F5; + } + + .card-banner .btn-card-registered { + background: #166534; + color: white; + } + + @media (max-width: 768px) { + .cards-grid { + grid-template-columns: 1fr; + } + } {% endblock %} @@ -625,6 +729,9 @@ Lista + + Karty + Kalendarz @@ -713,6 +820,60 @@ Zewnętrzne +{% elif view_mode == 'cards' %} + + +
+

Nadchodzące wydarzenia

+ + {% if upcoming_events %} +
+ {% for event in upcoming_events[:8] %} + +
+ {{ event.title }} → + {% if event.is_external and event.external_source %} + 🌐 {{ event.external_source }} + {% endif %} +
+
+ 📆 {{ event.event_date.strftime('%d.%m.%Y') }} ({{ ['Pon', 'Wt', 'Śr', 'Czw', 'Pt', 'Sob', 'Nd'][event.event_date.weekday()] }}) + {% if event.time_start %} + 🕕 {{ event.time_start.strftime('%H:%M') }} + {% endif %} + {% if event.location %} + 📍 {{ event.location[:30] }}{% if event.location|length > 30 %}...{% endif %} + {% endif %} +
+
+
+ 👥 Zapisanych: {{ event.total_attendee_count }} {% if event.total_attendee_count == 1 %}osoba{% elif event.total_attendee_count in [2,3,4] %}osoby{% else %}osób{% endif %} +
+
+ {% set is_attending = event.attendees|selectattr('user_id','equalto',current_user.id)|list %} + {% if is_attending %} + ✓ Zapisany/a + {% else %} + Zapisz się → + {% endif %} +
+
+
+ {% endfor %} +
+ + {% if upcoming_events|length > 8 %} +
+ Zobacz wszystkie ({{ upcoming_events|length }}) → +
+ {% endif %} + {% else %} +
+

Brak nadchodzących wydarzeń

+
+ {% endif %} +
+ {% else %}