@@ -6,6 +6,7 @@ import {
6 generateRealtimeDate,
6 generateRealtimeDate,
7 formatDate,
7 formatDate,
8 formatTime,
8 formatTime,
9} from "../lib/lib";
10} from "../lib/lib";
11export default function EventPreview({ event, className, big }) {
12export default function EventPreview({ event, className, big }) {
@@ -13,12 +14,13 @@ export default function EventPreview({ event, className, big }) {
13 const grayText = event?.dark ? "text-midWhite" : "text-wall-400";
14 const grayText = event?.dark ? "text-midWhite" : "text-wall-400";
14 const blackText = event?.dark ? "text-white" : "text-wall-600";
15 const blackText = event?.dark ? "text-white" : "text-wall-600";
16− const starts = generateDisplayDate(event.date);
17+ const starts = generateDisplayDate(event.date, event.timezone);
17− const ends = generateDisplayDate(event.ends);
18+ const ends = generateDisplayDate(event.ends, event.timezone);
20+ const inFuture = generateRealtimeDate(starts) > DateTime.now();
19− const hasEnded = generateRealtimeDate(event.ends) > DateTime.now();
20 const happeningNow =
22 const happeningNow =
21− generateRealtimeDate(event.date) > DateTime.now() && !hasEnded;
23+ generateRealtimeDate(event.date) > DateTime.now() && !inFuture;
24 <div className={`cursor-pointer aspect-w-5 aspect-h-4 ${className}`}>
26 <div className={`cursor-pointer aspect-w-5 aspect-h-4 ${className}`}>
@@ -43,46 +45,51 @@ export default function EventPreview({ event, className, big }) {
43 {typeof event.ends !== "undefined"
45 {typeof event.ends !== "undefined"
44 ? ` to ${formatTime(ends)}`
46 ? ` to ${formatTime(ends)}`
48+ {" " + formatTimeZone(starts)}
49− <div className="absolute p-4 left-0 bottom-0 w-full">
52+ <div className="absolute p-6 left-0 bottom-0 w-full pr-32">
50 <ShowOrHide condition={event.hosts}>
53 <ShowOrHide condition={event.hosts}>
51− <p className={`type-sub-bold ${blackText}`}>
54+ <p className={blackText + " type-sub"}>
52− {event.hosts
55+ <b>{"Hosted by "}</b>
53− ? event.hosts.length > 1
57+ {event.hosts?.map((host, index) => {
54− ? "Hosts"
58+ return (
56− : null}
60+ key={`${host.name}-${host.patp}`}
61+ nameClassNames={blackText}
62+ patpClassNames={blackText}
58 </ShowOrHide>
70 </ShowOrHide>
59− <ShowOrHide condition={event.hosts}>
61− {event.hosts?.map((host, index) => (
62− <Person person={host} />
66 <ShowOrHide condition={event.guests}>
71 <ShowOrHide condition={event.guests}>
67− <p className={`type-sub-bold pt-2 ${blackText}`}>
72+ <p className={blackText + " type-sub"}>
68− {event.guests
74+ {event.guests?.length > 1 ? "With guests " : "With guest "}
69− ? event.guests.length > 1
75+ </b>
70− ? "With guests"
76+ <ReadableList>
71− : "With guest"
77+ {event.guests?.map((guest, index) => (
79+ key={`${guest.name}-${guest.patp}`}
80+ nameClassNames={blackText}
81+ patpClassNames={blackText}
74 </ShowOrHide>
88 </ShowOrHide>
75− <ShowOrHide condition={event.guests}>
77− {event.guests?.map((guest, index) => (
78− <Person person={guest} />
84− {hasEnded && event.registration_url ? (
91+ {inFuture && event.registration_url ? (
85− <div className="absolute right-0 bottom-0 p-4">
92+ <div className="absolute right-0 bottom-0 p-6">
87 className="button-sm bg-green-400 text-white"
94 className="button-sm bg-green-400 text-white"
88 href={event.registration_url}
95 href={event.registration_url}
@@ -93,7 +100,7 @@ export default function EventPreview({ event, className, big }) {
95 ) : event.youtube ? (
102 ) : event.youtube ? (
96− <div className="absolute right-0 bottom-0 p-4">
103+ <div className="absolute right-0 bottom-0 p-6">
98 className="button-sm bg-wall-600 text-white"
105 className="button-sm bg-wall-600 text-white"
99 href={`https://www.youtube.com/watch?v=${event.youtube}`}
106 href={`https://www.youtube.com/watch?v=${event.youtube}`}