tweak upcoming design, use bgpig on event pages
This commit is contained in:
@ -5,6 +5,7 @@ import { Blocks } from "@/components/blocks/Blocks";
|
|||||||
import Image from "@/components/general/Image";
|
import Image from "@/components/general/Image";
|
||||||
import { EventHeader } from "@/components/events/EventHeader";
|
import { EventHeader } from "@/components/events/EventHeader";
|
||||||
import { DateList } from "@/components/events/DateList";
|
import { DateList } from "@/components/events/DateList";
|
||||||
|
import { BgPig } from "@/components/general/BgPig";
|
||||||
|
|
||||||
export async function generateStaticParams() {
|
export async function generateStaticParams() {
|
||||||
const allEventSlugsQuery = graphql(`
|
const allEventSlugsQuery = graphql(`
|
||||||
@ -37,7 +38,6 @@ export default async function Page({ params }: { params: { slug: string } }) {
|
|||||||
}
|
}
|
||||||
`);
|
`);
|
||||||
|
|
||||||
|
|
||||||
const { data, error } = await getClient().query(eventBySlugQuery, {
|
const { data, error } = await getClient().query(eventBySlugQuery, {
|
||||||
slug: params.slug,
|
slug: params.slug,
|
||||||
});
|
});
|
||||||
@ -45,12 +45,15 @@ export default async function Page({ params }: { params: { slug: string } }) {
|
|||||||
const event = (data?.event ?? {}) as EventFragment;
|
const event = (data?.event ?? {}) as EventFragment;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main className="site-main" id="main">
|
<>
|
||||||
<EventHeader event={event} />
|
<main className="site-main" id="main">
|
||||||
<section className="page-content">
|
<EventHeader event={event} />
|
||||||
<DateList />
|
<section className="page-content">
|
||||||
<Blocks blocks={event.body} />
|
<DateList />
|
||||||
</section>
|
<Blocks blocks={event.body} />
|
||||||
</main>
|
</section>
|
||||||
|
</main>
|
||||||
|
<BgPig type="dance" color="white" />
|
||||||
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import { Pig } from "../general/Pig";
|
|||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
|
||||||
export const EventHeader = ({ event }: { event: EventFragment }) => {
|
export const EventHeader = ({ event }: { event: EventFragment }) => {
|
||||||
const featuredImage: any = event.featuredImage
|
const featuredImage: any = event.featuredImage;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.eventHeader}>
|
<div className={styles.eventHeader}>
|
||||||
@ -72,9 +72,6 @@ export const EventHeader = ({ event }: { event: EventFragment }) => {
|
|||||||
sizes="100vw"
|
sizes="100vw"
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<div className={styles.pig}>
|
|
||||||
<Pig type="student" />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -6,7 +6,12 @@ import Link from "next/link";
|
|||||||
export const UpcomingEvents = ({ events }: { events: EventFragment[] }) => {
|
export const UpcomingEvents = ({ events }: { events: EventFragment[] }) => {
|
||||||
return (
|
return (
|
||||||
<section className={styles.upcomingWrapper}>
|
<section className={styles.upcomingWrapper}>
|
||||||
<h2 className="suphead">Denne uka på Chateau Neuf</h2>
|
<h2 className="circlehead">
|
||||||
|
<span className="circle"></span>
|
||||||
|
<span className="circle"></span>
|
||||||
|
<span className="circle"></span>
|
||||||
|
Denne uka på Chateau Neuf
|
||||||
|
</h2>
|
||||||
<ul className={styles.eventList}>
|
<ul className={styles.eventList}>
|
||||||
{events.slice(0, 5).map((event) => (
|
{events.slice(0, 5).map((event) => (
|
||||||
<EventItem key={event.id} event={event} mode="list" size="medium" />
|
<EventItem key={event.id} event={event} mode="list" size="medium" />
|
||||||
|
@ -24,16 +24,4 @@
|
|||||||
.details {
|
.details {
|
||||||
font-family: var(--font-serif);
|
font-family: var(--font-serif);
|
||||||
font-size: var(--font-size-lead);
|
font-size: var(--font-size-lead);
|
||||||
}
|
|
||||||
|
|
||||||
.pig {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
right: -2.5rem;
|
|
||||||
transform: translateY(50%);
|
|
||||||
color: var(--color-white);
|
|
||||||
|
|
||||||
>div {
|
|
||||||
width: 30vw;
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -7,7 +7,7 @@
|
|||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
margin-bottom: 1rem;
|
margin-bottom: .5rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ import { useInView } from "react-intersection-observer";
|
|||||||
|
|
||||||
export const BgPig = ({
|
export const BgPig = ({
|
||||||
type,
|
type,
|
||||||
|
color,
|
||||||
}: {
|
}: {
|
||||||
type:
|
type:
|
||||||
| "logo"
|
| "logo"
|
||||||
@ -28,11 +29,16 @@ export const BgPig = ({
|
|||||||
| "key"
|
| "key"
|
||||||
| "chill"
|
| "chill"
|
||||||
| "peek";
|
| "peek";
|
||||||
|
color: "neufPink" | "white" | "goldenBeige";
|
||||||
}) => {
|
}) => {
|
||||||
const { ref: observer, inView: IsInView } = useInView({ triggerOnce: false });
|
const { ref: observer, inView: IsInView } = useInView({ triggerOnce: false });
|
||||||
return (
|
return (
|
||||||
<div className={styles.bgPigWrapper}>
|
<div className={styles.bgPigWrapper}>
|
||||||
<div className={`${styles.pig} ${styles.bgPig}`} data-inview={IsInView}>
|
<div
|
||||||
|
className={`${styles.pig} ${styles.bgPig}`}
|
||||||
|
style={{ "--color-pig": color }}
|
||||||
|
data-inview={IsInView}
|
||||||
|
>
|
||||||
{type === "logo" && <LogoPig />}
|
{type === "logo" && <LogoPig />}
|
||||||
{type === "music" && <MusicPig />}
|
{type === "music" && <MusicPig />}
|
||||||
{type === "drink" && <DrinkPig />}
|
{type === "drink" && <DrinkPig />}
|
||||||
|
@ -7,13 +7,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bgPigWrapper {
|
||||||
|
--color-pig: var(--color-neufPink);
|
||||||
|
}
|
||||||
|
|
||||||
.bgPig {
|
.bgPig {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
transform: translate(1vw, 20%);
|
transform: translate(1vw, 20%);
|
||||||
z-index: 600;
|
z-index: 1;
|
||||||
--color-pig: var(--color-neufPink);
|
|
||||||
transition: opacity .6s ease;
|
transition: opacity .6s ease;
|
||||||
|
|
||||||
&[data-inview=true] {
|
&[data-inview=true] {
|
||||||
@ -23,6 +26,5 @@
|
|||||||
|
|
||||||
.observer {
|
.observer {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: -5rem;
|
|
||||||
right: 0;
|
right: 0;
|
||||||
}
|
}
|
@ -91,6 +91,28 @@ h6 {
|
|||||||
letter-spacing: .05em;
|
letter-spacing: .05em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.circlehead {
|
||||||
|
font-size: var(--font-size-caption);
|
||||||
|
font-weight: 700;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: .05em;
|
||||||
|
|
||||||
|
.circle {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
width: 1rem;
|
||||||
|
height: 1rem;
|
||||||
|
margin-bottom: .16rem;
|
||||||
|
margin-right: .5rem;
|
||||||
|
border-radius: 1rem;
|
||||||
|
background: var(--color-goldenOrange);
|
||||||
|
|
||||||
|
&:last-of-type {
|
||||||
|
margin-right: .75rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.breadcrumb {
|
.breadcrumb {
|
||||||
display: block;
|
display: block;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
@ -110,7 +132,7 @@ button,
|
|||||||
border: none;
|
border: none;
|
||||||
padding: .5rem 1rem;
|
padding: .5rem 1rem;
|
||||||
margin: 0 0 .5rem;
|
margin: 0 0 .5rem;
|
||||||
font-family: inherit;
|
font-family: var(--font-main);
|
||||||
font-size: var(--font-size-body);
|
font-size: var(--font-size-body);
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
Reference in New Issue
Block a user