From b4bb7dec0cc9cd79666d71bbe6105c8c0d241077 Mon Sep 17 00:00:00 2001 From: Minh Vo Date: Mon, 22 Dec 2025 19:52:46 -0500 Subject: [PATCH 01/14] remove skeleton ui --- bun.lock | 1 + src/components/event/EventBlock.svelte | 2 +- src/components/event/EventTabsContent.svelte | 20 +++++------ src/components/event/EventTabsTrigger.svelte | 23 ++++++------ src/lib/schemas.ts | 3 ++ src/routes/events/+page.svelte | 38 +++++++++++--------- 6 files changed, 45 insertions(+), 42 deletions(-) diff --git a/bun.lock b/bun.lock index 59f8f07..463ce6f 100644 --- a/bun.lock +++ b/bun.lock @@ -1,5 +1,6 @@ { "lockfileVersion": 1, + "configVersion": 0, "workspaces": { "": { "name": "ecsess-website", diff --git a/src/components/event/EventBlock.svelte b/src/components/event/EventBlock.svelte index 077d428..3548c1a 100644 --- a/src/components/event/EventBlock.svelte +++ b/src/components/event/EventBlock.svelte @@ -1,5 +1,5 @@ - +
{#if upcomingEvents.length > 0} @@ -139,4 +135,4 @@
{/if}
-
+ diff --git a/src/components/event/EventTabsTrigger.svelte b/src/components/event/EventTabsTrigger.svelte index 6fc8ad9..0e815d7 100644 --- a/src/components/event/EventTabsTrigger.svelte +++ b/src/components/event/EventTabsTrigger.svelte @@ -1,15 +1,14 @@ - - {#snippet element(attributes)} - - {/snippet} - +
+ +
diff --git a/src/lib/schemas.ts b/src/lib/schemas.ts index 47a2e64..2e3dffe 100644 --- a/src/lib/schemas.ts +++ b/src/lib/schemas.ts @@ -13,6 +13,9 @@ export type EventPost = { paylink: string; // event payment link (e.g., Zeffy) }; +export type Category = 'allEvents' | 'academic' | 'professional' | 'social' | 'technical'; + + export type FAQ = { question: string; answer: string; diff --git a/src/routes/events/+page.svelte b/src/routes/events/+page.svelte index 28a0dd8..7b1f87a 100644 --- a/src/routes/events/+page.svelte +++ b/src/routes/events/+page.svelte @@ -1,6 +1,5 @@

Events

- (group = e.value)} composite={true}> - - All Events - Academic - Professional - Social - Technical - +
+
    + {#each categories as category} + {category.label} + {/each} +
- - - - - - + +
From b70337e949240a767483b78c8c27da357f406ba1 Mon Sep 17 00:00:00 2001 From: Minh Vo Date: Tue, 23 Dec 2025 22:54:40 -0500 Subject: [PATCH 02/14] create flip card to separate description from event image --- src/app.css | 41 +++ src/components/event/EventBlock.svelte | 360 ++++++++++++++----------- 2 files changed, 242 insertions(+), 159 deletions(-) diff --git a/src/app.css b/src/app.css index d1dd4f3..627bef5 100644 --- a/src/app.css +++ b/src/app.css @@ -204,3 +204,44 @@ h2 { @apply mt-3 text-sm leading-5; } } + +.flip-box { + height: 100%; + width: 100%; + perspective: 1000px; /* Remove this if you don't want the 3D effect */ + } + + .flip-box-inner { + display: grid; + width: 100%; + height: 100%; + text-align: center; + transition: transform 0.8s; + transform-style: preserve-3d; + } + + + .flip-box-front,.flip-box-back { + grid-area: 1/1; + width: 100%; + -webkit-backface-visibility: hidden; /* Safari */ + backface-visibility: hidden; + } + .flip-box-front { + z-index: 2; + transform: rotateY(0deg); + } + + .flip-box-front { + z-index: 2; + transform: rotateY(0deg); + } + + .flip-box-back { + transform: rotateY(180deg); + } + + .show-back { + transform: rotateY(180deg); + } + diff --git a/src/components/event/EventBlock.svelte b/src/components/event/EventBlock.svelte index 3548c1a..c6c7a44 100644 --- a/src/components/event/EventBlock.svelte +++ b/src/components/event/EventBlock.svelte @@ -1,5 +1,4 @@ +
- -
- {#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} - - -
- - -
- {#if isPastEvent} - - Past Event - + class=" + flip-box + group bg-ecsess-950 shadow-ecsess-950/50 relative flex flex-col overflow-hidden rounded-2xl shadow-lg transition-all duration-300 hover:-translate-y-3 hover:shadow-2xl" + > + +
+ +
+ +
+ {#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} - - Upcoming - + ECSESS Event {/if} - {#if eventCategory && eventCategory.length > 0} -
- {#each eventCategory as category} - - {category} - - {/each} -
- {/if} -
- - -
-

- {eventTitle} -

-
-
- - -
- - {#if eventDescription} -
- + +
- {/if} + +
+ {#if isPastEvent} + + Past Event + + {:else} + + Upcoming + + {/if} - -
-
-
- -
-
-

{date}

-
+ {#if eventCategory && eventCategory.length > 0} +
+ {#each eventCategory as category} + + {category} + + {/each} +
+ {/if}
-
-
- + +
+

+ {eventTitle} +

+
+ +
+
+
+ +
+
+

{date}

+
-
-

- {location ?? 'TBA'} -

+ +
+
+ +
+
+

+ {location ?? 'TBA'} +

+
-
- - - {#if !isPastEvent} -
- +
+ View Details + +
+
+ +
+ +
+

+ {eventTitle} +

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

No description available for this event.

+ {/if} - -
- {#if registrationLink} - - - Register - - {:else} -
- - Drop In -
- {/if} - - {#if paymentLink} - - - Pay - - {:else} -
- Free! -
- {/if}
- {/if} +
+ + {#if !isPastEvent} +
+ + + + +
+ {#if registrationLink} + + + Register + + {:else} +
+ + Drop In +
+ {/if} + + {#if paymentLink} + + + Pay + + {:else} +
+ Free! +
+ {/if} +
+
+ {/if} +
+
+ +
+ +
+
From 157bdec9ea011472f885755f76050842c55f5f71 Mon Sep 17 00:00:00 2001 From: Antoine Phan Date: Thu, 25 Dec 2025 22:18:51 -0500 Subject: [PATCH 03/14] Update links type for events --- src/lib/schemas.ts | 9 ++++++--- src/routes/events/+page.server.ts | 23 +++++++++++++---------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/lib/schemas.ts b/src/lib/schemas.ts index 2e3dffe..311e675 100644 --- a/src/lib/schemas.ts +++ b/src/lib/schemas.ts @@ -1,5 +1,6 @@ import type { InputValue } from '@portabletext/svelte'; + export type EventPost = { id: string; name: string; @@ -8,14 +9,16 @@ export type EventPost = { time: string; location: string; thumbnail: string; - reglink: string; category: string; - paylink: string; // event payment link (e.g., Zeffy) + links: [{ + title: string, + kind: string, // payment, registration, general (enum `kind`) + url: string + }], }; export type Category = 'allEvents' | 'academic' | 'professional' | 'social' | 'technical'; - export type FAQ = { question: string; answer: string; diff --git a/src/routes/events/+page.server.ts b/src/routes/events/+page.server.ts index 603e2d6..6cf92fb 100644 --- a/src/routes/events/+page.server.ts +++ b/src/routes/events/+page.server.ts @@ -7,21 +7,24 @@ const eventQuery = `*[_type == "events"]{ date, location, description, - reglink, - paylink, + "links": links[]{ + "kind": kind, + "title": title, + "url": url + }, "thumbnail": thumbnail.asset->url+"?h=800&fm=webp", "lastUpdated": _updatedAt, }`; export const load = async ({ url }) => { - let listOfEvents: EventPost[] = await getFromCMS(eventQuery); + let listOfEvents: EventPost[] = await getFromCMS(eventQuery); - let sortedEvents = listOfEvents.sort( - (a, b) => new Date(b.date).getTime() - new Date(a.date).getTime() - ); + let sortedEvents = listOfEvents.sort( + (a, b) => new Date(b.date).getTime() - new Date(a.date).getTime() + ); - return { - events: sortedEvents, - canonical: url.href - }; + return { + events: sortedEvents, + canonical: url.href + }; }; From dcdfb4ac6a8803ddfd4571efe809902aea6fb23b Mon Sep 17 00:00:00 2001 From: Minh Vo Date: Fri, 26 Dec 2025 17:28:32 -0500 Subject: [PATCH 04/14] update the event flip card + add remodel scrollbar --- src/app.css | 102 ++++++++---- src/components/event/EventBlock.svelte | 162 +++++++++++-------- src/components/event/EventTabsContent.svelte | 25 ++- src/lib/schemas.ts | 13 +- 4 files changed, 188 insertions(+), 114 deletions(-) diff --git a/src/app.css b/src/app.css index 627bef5..ed81920 100644 --- a/src/app.css +++ b/src/app.css @@ -206,42 +206,78 @@ h2 { } .flip-box { - height: 100%; - width: 100%; - perspective: 1000px; /* Remove this if you don't want the 3D effect */ - } + height: 100%; + width: 100%; + perspective: 1000px; /* Remove this if you don't want the 3D effect */; +} - .flip-box-inner { - display: grid; - width: 100%; - height: 100%; - text-align: center; - transition: transform 0.8s; - transform-style: preserve-3d; - } +.flip-box-inner { + display: grid; + width: 100%; + height: 100%; + text-align: center; + transition: transform 0.8s; + transform-style: preserve-3d; +} - - .flip-box-front,.flip-box-back { - grid-area: 1/1; - width: 100%; - -webkit-backface-visibility: hidden; /* Safari */ - backface-visibility: hidden; - } - .flip-box-front { - z-index: 2; - transform: rotateY(0deg); - } +@keyframes rotate-and-back { + 0% { transform: rotateY(0); } + 50% { transform: rotateY(15deg); } + 100% { transform: rotateY(0); } +} - .flip-box-front { - z-index: 2; - transform: rotateY(0deg); - } +.flip-box:hover .flip-box-front{ + animation: rotate-and-back 0.3s ease-in-out; +} - .flip-box-back { - transform: rotateY(180deg); - } +.flip-box-front,.flip-box-back { + grid-area: 1/1; + width: 100%; + -webkit-backface-visibility: hidden; /* Safari */ + backface-visibility: hidden; +} +.flip-box-front { + z-index: 2; + transform: rotateY(0deg); + transform-style: preserve-3d; +} - .show-back { - transform: rotateY(180deg); - } +.flip-box-back { + transform: rotateY(180deg); +} + +.show-back { + transform: rotateY(180deg); +} + +/* Scrollbar Styles */ +*::-webkit-scrollbar { + height: 3px; + width: 2px; +} +*::-webkit-scrollbar-track { + border-radius: 3px; + background-color: var(--color-ecsess-50); +} + +*::-webkit-scrollbar-track:hover { + background-color: var(--color-ecsess-200); +} + +*::-webkit-scrollbar-track:active { + background-color: var(--color-ecsess-200); +} + +*::-webkit-scrollbar-thumb { + border-radius: 5px; + background-color: var(--color-ecsess-800); +} + +*::-webkit-scrollbar-thumb:hover { + background-color: var(--color-ecsess-500); +} + +*::-webkit-scrollbar-thumb:active { + background-color: var(--color-ecsess-500); +} diff --git a/src/components/event/EventBlock.svelte b/src/components/event/EventBlock.svelte index c6c7a44..1415f41 100644 --- a/src/components/event/EventBlock.svelte +++ b/src/components/event/EventBlock.svelte @@ -1,5 +1,5 @@
@@ -90,8 +103,9 @@ location={e.location} eventDescription={e.description} thumbnail={e.thumbnail} - registrationLink={e.reglink} - paymentLink={e.paylink} + registrationLink={getPaymentLink(e, 'registration')} + paymentLink={getPaymentLink(e, 'payment')} + generalLink={getPaymentLink(e, 'general')} eventCategory={e.category} isPastEvent={false} /> @@ -115,8 +129,9 @@ location={e.location} eventDescription={e.description} thumbnail={e.thumbnail} - registrationLink={e.reglink} - paymentLink={e.paylink} + registrationLink={getPaymentLink(e, 'registration')} + paymentLink={getPaymentLink(e, 'payment')} + generalLink={getPaymentLink(e, 'general')} eventCategory={e.category} isPastEvent={true} /> diff --git a/src/lib/schemas.ts b/src/lib/schemas.ts index 311e675..c8e8bfc 100644 --- a/src/lib/schemas.ts +++ b/src/lib/schemas.ts @@ -10,15 +10,18 @@ export type EventPost = { location: string; thumbnail: string; category: string; - links: [{ - title: string, - kind: string, // payment, registration, general (enum `kind`) - url: string - }], + links: LinkType[]; }; export type Category = 'allEvents' | 'academic' | 'professional' | 'social' | 'technical'; +export type LinkType = { + title: string; + kind: EventLinkKind; + url: string; +}; +export type EventLinkKind = 'payment' | 'registration' | 'general'; + export type FAQ = { question: string; answer: string; From bbc4e373a36993a7c16517e97b05d45556b0eeda Mon Sep 17 00:00:00 2001 From: Minh Vo Date: Fri, 26 Dec 2025 19:14:16 -0500 Subject: [PATCH 05/14] update event tab and edit event card --- src/app.css | 19 ++++++++++--------- src/components/event/EventBlock.svelte | 6 ++++-- src/components/event/EventTabsTrigger.svelte | 4 ++-- src/routes/events/+page.svelte | 2 +- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/app.css b/src/app.css index ed81920..9f34fa1 100644 --- a/src/app.css +++ b/src/app.css @@ -230,7 +230,8 @@ h2 { animation: rotate-and-back 0.3s ease-in-out; } -.flip-box-front,.flip-box-back { +.flip-box-front, +.flip-box-back { grid-area: 1/1; width: 100%; -webkit-backface-visibility: hidden; /* Safari */ @@ -252,32 +253,32 @@ h2 { /* Scrollbar Styles */ *::-webkit-scrollbar { - height: 3px; - width: 2px; + height: 4px; + width: 4px; } *::-webkit-scrollbar-track { border-radius: 3px; - background-color: var(--color-ecsess-50); + background-color: var(--color-ecsess-700); } *::-webkit-scrollbar-track:hover { - background-color: var(--color-ecsess-200); + background-color: var(--color-ecsess-900); } *::-webkit-scrollbar-track:active { - background-color: var(--color-ecsess-200); + background-color: var(--color-ecsess-900); } *::-webkit-scrollbar-thumb { border-radius: 5px; - background-color: var(--color-ecsess-800); + background-color: var(--color-ecsess-100); } *::-webkit-scrollbar-thumb:hover { - background-color: var(--color-ecsess-500); + background-color: var(--color-ecsess-300); } *::-webkit-scrollbar-thumb:active { - background-color: var(--color-ecsess-500); + background-color: var(--color-ecsess-300); } diff --git a/src/components/event/EventBlock.svelte b/src/components/event/EventBlock.svelte index 1415f41..9af1c24 100644 --- a/src/components/event/EventBlock.svelte +++ b/src/components/event/EventBlock.svelte @@ -66,7 +66,8 @@
-
+ +