From a12ed8dd6a8081452c46faf0fbd021048c1d2bc9 Mon Sep 17 00:00:00 2001 From: Padreug Date: Thu, 4 Jun 2026 22:46:41 +0200 Subject: [PATCH] feat(activities): refine activity card for pending/rejected + compact MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Wash out pending/rejected events with opacity-50 + grayscale on a wrapper div so the operator sees at a glance the event isn't live, not just the small badge. - Pull the status badge OUT of the wash-out wrapper and absolute- position it on Card root (bottom-2 left-2, z-10) so it stays in full color above the dim card. Both pending and rejected use the destructive token — the label text differentiates the two states. Bottom-left so it doesn't collide with the category chip on full cards or the thumbnail on compact ones. - Compact rows in the Hosting view now show a small left-aligned thumbnail (w-20 h-20, self-center, ml-3, rounded-md) when the event carries an image — host can still recognize each event at a glance without paying the visual weight of a full hero. - Card root becomes `relative overflow-hidden`; the wrapper div owns the conditional flex-row (compact) / flex-col (default) layout and the opacity/grayscale toggling. --- .../activities/components/ActivityCard.vue | 83 ++++++++++++------- .../activities/components/ActivityList.vue | 6 +- 2 files changed, 57 insertions(+), 32 deletions(-) diff --git a/src/modules/activities/components/ActivityCard.vue b/src/modules/activities/components/ActivityCard.vue index 5eb919c..6247635 100644 --- a/src/modules/activities/components/ActivityCard.vue +++ b/src/modules/activities/components/ActivityCard.vue @@ -62,19 +62,46 @@ const isPast = computed(() => { if (!end || isNaN(end.getTime())) return false return end.getTime() < Date.now() }) + +// Pending / rejected events get a washed-out look so the user +// sees at a glance the event isn't live, not just the small badge. +const isNonApproved = computed( + () => !!props.activity.lnbitsStatus && props.activity.lnbitsStatus !== 'approved', +) diff --git a/src/modules/activities/components/ActivityList.vue b/src/modules/activities/components/ActivityList.vue index 1e59110..36e7177 100644 --- a/src/modules/activities/components/ActivityList.vue +++ b/src/modules/activities/components/ActivityList.vue @@ -52,10 +52,12 @@ const { t } = useI18n() + tight rows; default mode is the responsive card grid. The + compact gap is bumped a notch so the status badge spilling + past the card's bottom edge has room to sit between cards. -->