From dcdfb4ac6a8803ddfd4571efe809902aea6fb23b Mon Sep 17 00:00:00 2001 From: Minh Vo Date: Fri, 26 Dec 2025 17:28:32 -0500 Subject: [PATCH] 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;