Enable users to see all their saved events on the home screen, sorted by date with upcoming events first. Key capabilities: - EventCard with title, relative time display, and organizer/attendee role badge - Sortable EventList with past-event visual distinction (faded style) - Empty state when no events are stored - Swipe-to-delete gesture with confirmation dialog - Floating action button for quick event creation - Rename router param :token → :eventToken across all views - useRelativeTime composable (Intl.RelativeTimeFormat) - useEventStorage: add validation, removeEvent(), reactive versioning - Full E2E and unit test coverage for all new components Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
32 lines
634 B
Vue
32 lines
634 B
Vue
<template>
|
|
<div class="empty-state">
|
|
<p class="empty-state__message">No events yet.<br />Create your first one!</p>
|
|
<RouterLink to="/create" class="btn-primary empty-state__cta">+ Create Event</RouterLink>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { RouterLink } from 'vue-router'
|
|
</script>
|
|
|
|
<style scoped>
|
|
.empty-state {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: var(--spacing-lg);
|
|
}
|
|
|
|
.empty-state__message {
|
|
font-size: 1rem;
|
|
font-weight: 400;
|
|
color: var(--color-text-on-gradient);
|
|
opacity: 0.9;
|
|
text-align: center;
|
|
}
|
|
|
|
.empty-state__cta {
|
|
max-width: 280px;
|
|
}
|
|
</style>
|