From 9fc25f3072919e4b61f7f3697ed28270f6dd2775 Mon Sep 17 00:00:00 2001 From: Antoine Phan Date: Sun, 11 Jan 2026 21:41:19 -0500 Subject: [PATCH] Re-componentize EventBlock, some misc change, update UX entirely. --- src/app.css | 20 +- .../EBComponents/EventActionButtons.svelte | 69 ++++ .../event/EBComponents/EventBadges.svelte | 28 ++ .../EBComponents/EventDescription.svelte | 51 +++ .../EBComponents/EventImageHeader.svelte | 35 ++ .../event/EBComponents/EventInfoGrid.svelte | 28 ++ src/components/event/EventBlock.svelte | 338 +++++------------- src/components/event/EventTabsContent.svelte | 4 + src/routes/events/+page.svelte | 2 +- vite.config.js | 1 - 10 files changed, 328 insertions(+), 248 deletions(-) create mode 100644 src/components/event/EBComponents/EventActionButtons.svelte create mode 100644 src/components/event/EBComponents/EventBadges.svelte create mode 100644 src/components/event/EBComponents/EventDescription.svelte create mode 100644 src/components/event/EBComponents/EventImageHeader.svelte create mode 100644 src/components/event/EBComponents/EventInfoGrid.svelte diff --git a/src/app.css b/src/app.css index 6359b7c..3a7e7f6 100644 --- a/src/app.css +++ b/src/app.css @@ -27,6 +27,22 @@ /* Black variants for UI elements */ --color-ecsess-black: #1f1f1f; --color-ecsess-black-hover: #161917; + + --animate-wiggle: wiggle 1s ease-in-out; + @keyframes wiggle { + 0% { + transform: rotateY(0); + } + 33% { + transform: rotateY(5deg); + } + 66% { + transform: rotateY(-5deg); + } + 100% { + transform: rotateY(0); + } + } } * { @@ -113,7 +129,7 @@ h2 { ol, ul { - @apply my-2 list-outside list-disc ps-[1.625rem]; + @apply my-2 list-outside list-disc ps-6.5; } li { @@ -145,7 +161,7 @@ h2 { } dd { - @apply mt-2 ps-[1.625rem]; + @apply mt-2 ps-6.5; } hr { diff --git a/src/components/event/EBComponents/EventActionButtons.svelte b/src/components/event/EBComponents/EventActionButtons.svelte new file mode 100644 index 0000000..fcd3fe2 --- /dev/null +++ b/src/components/event/EBComponents/EventActionButtons.svelte @@ -0,0 +1,69 @@ + + +
+
+ {#if registrationLink} + + + Register + + {:else} +
+ + Drop In +
+ {/if} + + + + {#if paymentLink} + + + Pay + + {:else} +
+ Free! +
+ {/if} +
+
\ No newline at end of file diff --git a/src/components/event/EBComponents/EventBadges.svelte b/src/components/event/EBComponents/EventBadges.svelte new file mode 100644 index 0000000..8dfd96f --- /dev/null +++ b/src/components/event/EBComponents/EventBadges.svelte @@ -0,0 +1,28 @@ + + +
+ {#if isPastEvent} + + Past Event + + {:else} + + Upcoming + + {/if} + + {#if eventCategory && eventCategory.length > 0} +
+ {#each eventCategory as category} + + {category} + + {/each} +
+ {/if} +
\ No newline at end of file diff --git a/src/components/event/EBComponents/EventDescription.svelte b/src/components/event/EBComponents/EventDescription.svelte new file mode 100644 index 0000000..30699dd --- /dev/null +++ b/src/components/event/EBComponents/EventDescription.svelte @@ -0,0 +1,51 @@ + + +
+

{eventTitle}

+
+ +
+
+ {#if eventDescription} + + {:else} +

No description available for this event.

+ {/if} +
+
+ +{#if generalLink} +
+ {#each generalLink.slice(0, 4) as link} + + + {link.title} + + {/each} +
+{/if} + +
+

Click to flip back

+
\ No newline at end of file diff --git a/src/components/event/EBComponents/EventImageHeader.svelte b/src/components/event/EBComponents/EventImageHeader.svelte new file mode 100644 index 0000000..c89d6f8 --- /dev/null +++ b/src/components/event/EBComponents/EventImageHeader.svelte @@ -0,0 +1,35 @@ + + +
+ {imageAlt} +
+
+

{eventTitle}

+
+
\ No newline at end of file diff --git a/src/components/event/EBComponents/EventInfoGrid.svelte b/src/components/event/EBComponents/EventInfoGrid.svelte new file mode 100644 index 0000000..2433f4b --- /dev/null +++ b/src/components/event/EBComponents/EventInfoGrid.svelte @@ -0,0 +1,28 @@ + + +
+
+
+ +
+
+

{date}

+
+
+ +
+
+ +
+
+

{location ?? 'TBA'}

+
+
+
\ No newline at end of file diff --git a/src/components/event/EventBlock.svelte b/src/components/event/EventBlock.svelte index 1846393..99ebd0c 100644 --- a/src/components/event/EventBlock.svelte +++ b/src/components/event/EventBlock.svelte @@ -1,13 +1,11 @@ -
- -
- - +
+
+
- -
- -
- {#if thumbnail} - {eventTitle} - {:else if eventCategory?.[0] === 'social'} - Social Event - {:else if eventCategory?.[0] === 'technical'} - Technical Event - {:else if eventCategory?.[0] === 'professional'} - Professional Event - {:else if eventCategory?.[0] === 'academic'} - Academic Event - {:else} - ECSESS Event - {/if} - -
- -
-

- {eventTitle} -

+ + + + + + {#if !isPastEvent} +
+
-
- -
- {#if isPastEvent} - - Past Event - - {:else} - - Upcoming - - {/if} + {/if} - {#if eventCategory && eventCategory.length > 0} -
- {#each eventCategory as category} - - {category} - - {/each} -
- {/if} -
- - -
-
-
- -
-
-

{date}

-
-
- -
-
- -
-
-

- {location ?? 'TBA'} -

-
-
-
-
- - {#if !isPastEvent} -
- -
- {#if registrationLink} - - - Register - - {:else} -
- - Drop In -
- {/if} - - {#if paymentLink} - - - Pay - - {:else} -
- Free! -
- {/if} -
-
- {/if} -
-

Click to view more

+

Click to view more

+
- -
- -
-

- {eventTitle} -

-
-
- -
- {#if eventDescription} - - {:else} -

No description available for this event.

- {/if} -
-
- - - -
- {#if generalLink} - {#each generalLink as link} - - - {link.title} - - {/each} - {/if} -
+
+ \ No newline at end of file diff --git a/src/components/event/EventTabsContent.svelte b/src/components/event/EventTabsContent.svelte index d61a835..ea55cad 100644 --- a/src/components/event/EventTabsContent.svelte +++ b/src/components/event/EventTabsContent.svelte @@ -83,6 +83,10 @@ for (const link of e.links ?? []) { if (type == EventLinkKind.GENERAL && link.kind === EventLinkKind.GENERAL && link.url !== '') { generalLinks.push(link); + // Limit general links to 4 + if (generalLinks.length >= 4) { + break; + } } else if (link.kind === type && link.url !== '') { return [link]; } diff --git a/src/routes/events/+page.svelte b/src/routes/events/+page.svelte index 8161c9b..5d5d541 100644 --- a/src/routes/events/+page.svelte +++ b/src/routes/events/+page.svelte @@ -7,7 +7,7 @@ let { data } = $props(); - let events: EventPost[] = data.events ?? []; + let events = $derived(data.events ?? []); let group = $state(EventCategory.ALL_EVENTS); let categories: { value: EventCategory; label: string }[] = [ { value: EventCategory.ALL_EVENTS, label: 'All Events' }, diff --git a/vite.config.js b/vite.config.js index c3668d4..da9143d 100644 --- a/vite.config.js +++ b/vite.config.js @@ -10,7 +10,6 @@ export default defineConfig({ include: [ '@portabletext/svelte', '@lucide/svelte', - '@skeletonlabs/skeleton-svelte', '@sanity/client' ], // Force pre-bundle these dependencies