From e174048052326587fcd4462ee47bc40ed1e47231 Mon Sep 17 00:00:00 2001 From: Padreug Date: Thu, 4 Jun 2026 22:41:35 +0200 Subject: [PATCH] feat(activities): tailor Hosting tab + host detail view for operators MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hosting feed (ActivitiesPage when onlyHosting): - Hide the date picker strip + calendar shortcut and the entire Filters/temporal-pills row; an operator managing their roster doesn't need calendar navigation or temporal narrowing. - Keep the search bar — finding a specific event in a long roster still matters. - Render compact cards via a new `compact` prop on ActivityList + ActivityCard: no hero image, single-line title, no summary, no bookmark, no "Yours" badge (every card is the operator's own), tighter p-3 padding, single-column flex layout. Host detail view (ActivityDetailPage when ownedLnbitsEvent): - Drop the top-bar Scan and Edit buttons. Edit moves into the title row as a prominent filled-primary icon button right of the title; Scan moves into the tickets section. - Render a full-width "Scan tickets" CTA in place of Buy ticket, and hoist it outside the ticketInfo gate so it appears even on hosted events that were published without AIO ticket tags. - Hide BookmarkButton and RSVPButton for the host (favoriting / RSVPing your own event are noise affordances). Detail-page badge row: "Yours" leads the row in the highlighted secondary variant; category and tags drop to outline so the ownership signal stands out. --- src/modules/events/components/EventCard.vue | 49 +++++---- src/modules/events/components/EventList.vue | 13 ++- src/modules/events/views/EventDetailPage.vue | 102 +++++++++++-------- src/modules/events/views/EventsPage.vue | 16 ++- 4 files changed, 111 insertions(+), 69 deletions(-) diff --git a/src/modules/events/components/EventCard.vue b/src/modules/events/components/EventCard.vue index 26ec0cf..f214996 100644 --- a/src/modules/events/components/EventCard.vue +++ b/src/modules/events/components/EventCard.vue @@ -12,6 +12,10 @@ import type { Event } from '../types/event' const props = defineProps<{ event: Event + /** Render a compact row: no hero image, no summary, single-line + * title, tighter padding. Used by the Hosting view where the + * host already knows what their events look like. */ + compact?: boolean }>() const emit = defineEmits<{ @@ -65,12 +69,12 @@ const isPast = computed(() => { class="overflow-hidden cursor-pointer hover:shadow-lg transition-shadow duration-200 flex flex-col" @click="emit('click', event)" > - -
+ +
{
- - -
+ + +
{{ categoryLabel }} {{ priceDisplay }} - + Yours @@ -167,26 +174,34 @@ const isPast = computed(() => {
- +
-

+

{{ event.title }}

- +

{{ event.summary }}

-
+
diff --git a/src/modules/events/components/EventList.vue b/src/modules/events/components/EventList.vue index 8a8ab65..827b651 100644 --- a/src/modules/events/components/EventList.vue +++ b/src/modules/events/components/EventList.vue @@ -7,6 +7,10 @@ import type { Event } from '../types/event' defineProps<{ events: Event[] isLoading?: boolean + /** Render compact rows instead of full-image cards. Used by the + * Hosting view so an operator can scan their roster of events + * without the visual weight of hero images they already recognize. */ + compact?: boolean }>() const emit = defineEmits<{ @@ -47,12 +51,17 @@ const { t } = useI18n()

- -
+ +
diff --git a/src/modules/events/views/EventDetailPage.vue b/src/modules/events/views/EventDetailPage.vue index 8fedfeb..cf24c80 100644 --- a/src/modules/events/views/EventDetailPage.vue +++ b/src/modules/events/views/EventDetailPage.vue @@ -170,36 +170,14 @@ function goToMyTickets() {