Skip to content

Commit dd693ee

Browse files
committed
Merge branch 'main' of https://github.com/webimpactuw/mesh
2 parents 7ca8397 + 9835a66 commit dd693ee

29 files changed

+2498
-1642
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,8 @@ yarn-error.log*
3535
# typescript
3636
*.tsbuildinfo
3737
next-env.d.ts
38+
39+
# testing
40+
app/testEvents/page.js
41+
app/testEvents/layout.js
42+
app/testEvents/components/EventsTest.js

app/about/page.js

Lines changed: 78 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,35 @@
11
'use client'
2-
import { dataset } from "@/sanity/env";
32
import localFont from "next/font/local"
43
import Slider from "react-slick";
54
import "../globals.css";
65
import "slick-carousel/slick/slick.css";
76
import "slick-carousel/slick/slick-theme.css";
8-
import { useState } from 'react'
9-
7+
import { useState, useEffect } from 'react'
8+
import { client } from "@/sanity/lib/client";
9+
import { urlForImage } from "@/sanity/lib/image";
1010

1111
const fabulous = localFont({
1212
src: '../static-fonts/fabulous.otf',
1313
display: 'swap',
1414
})
1515

16-
export default function about() {
16+
async function getMembers() {
17+
18+
const query = `*[_type == "members"] {
19+
name,
20+
title,
21+
class,
22+
major,
23+
image,
24+
}`
25+
26+
const members = await client.fetch(query)
27+
return members;
28+
}
29+
30+
function BoardMembersBlock() {
31+
const [members, setMembers] = useState([]);
32+
1733
const settings = {
1834
dots: true,
1935
infinite: true,
@@ -23,6 +39,48 @@ export default function about() {
2339
prevArrow: <SamplePrevArrow />
2440
}
2541

42+
useEffect(() => {
43+
async function fetchMembers() {
44+
const fetchedMembers = await getMembers();
45+
setMembers(fetchedMembers);
46+
}
47+
48+
fetchMembers();
49+
}, []);
50+
51+
const allMembers = [...members];
52+
53+
return (
54+
<Slider {...settings}>
55+
{allMembers.map((d) => (
56+
<div className = "mt-2 sm:mt-8 flex">
57+
58+
{/* Headshot */}
59+
<div className = "mt-1 justify-end flex headshot">
60+
<div className="w-1 h-20 sm:h-44 sm:w-2 bg-[#43B697]"></div>
61+
<div className="w-1 h-20 sm:h-44 sm:w-2 bg-[#282828]"></div>
62+
{/* Image */}
63+
<img src={urlForImage(d.image)} alt="" className="h-20 w-20 sm:h-44 sm:w-44 border border-white"/>
64+
</div>
65+
66+
{/* Board Member Information */}
67+
<div className = "flex member-info text-white">
68+
<div className = "sm:mt-5 flex flex-col items-center">
69+
<h1 className="sm:text-xl md:text-2xl">{d.name}</h1>
70+
<div className="w-auto sm:h-3 bg-[#282828]"></div>
71+
<h1 className="text-base sm:text-xl font-light">{d.title}</h1>
72+
<h1 className="text-base sm:text-xl font-light">{d.class}</h1>
73+
<h1 className="text-base sm:text-xl font-light">{d.major}</h1>
74+
<div className="w-auto h-8 sm:h-20 bg-[#282828]"></div>
75+
</div>
76+
</div>
77+
</div>
78+
))}
79+
</Slider>
80+
);
81+
}
82+
83+
export default function about() {
2684
const [selected, setSelected] = useState(null)
2785

2886
const toggle = (i) => {
@@ -46,30 +104,27 @@ export default function about() {
46104
{/* IMAGES */}
47105
{/* Left 1/3 image layout */}
48106
<div className="w-2/5 bg-black-200">
49-
<div className="flex-col">
107+
<div className="grid grid-cols-1 sm:grid-cols-2 items-center">
50108

51-
{/* Left half images */}
52-
<div className="w-1/2">
53-
{/* Full-size image */}
54-
<img className="h-auto w-full" src="/about images/About1.jpeg" alt="Image 1" />
55-
</div>
109+
{/* Full size image */}
110+
<img className="w-3/4 h-auto sm:w-full ml-2 mt-8" src="/about images/About1.jpeg" alt="Image 1" />
56111

57-
{/* Right half images */}
58-
<div className="w-1/2 flex flex-col">
59-
<div className="bg-black-200 p-8"></div>
112+
<div className="flex-col">
113+
<div className="bg-black-200"></div>
60114
{/* First half-size image */}
61-
<img className="h-auto w-3/4 mb-4 mx-5" src="/about images/About2.jpeg" alt="Image 2" />
115+
<div className="bg-black-200 mb-4 sm:h-20"></div>
116+
<img className="h-auto w-3/4 ml-2 mb-4 sm:mx-5" src="/about images/About2.jpeg" alt="Image 2" />
62117

63118
{/* Second half-size image */}
64-
<img className="h-auto w-full mx-5" src="/about images/About3.jpeg" alt="Image 3" />
119+
<img className="w-3/4 h-auto ml-2 sm:w-full sm:mx-5" src="/about images/About3.jpeg" alt="Image 3" />
65120
</div>
66121

67122
</div>
68123
</div>
69124

70125
{/* WHO ARE WE - TEXT CONTENT */}
71-
<div className="flex justify-end sm:pr-8 w-2/3">
72-
<div className="w-5/6 sm:w-4/5">
126+
<div className="flex justify-center pr-5 sm:pr-8 w-2/3">
127+
<div className="sm:w-4/5">
73128
<div className="bg-black-200 p-4 mt-5 sm:mt-20">
74129
{/* Green line */}
75130
<div className="w-1/2 h-2 bg-[#43B697]"></div>
@@ -84,7 +139,7 @@ export default function about() {
84139
</div>
85140
</div>
86141
</div>
87-
<div className="h-8 sm: h-16"></div>
142+
<div className="h-8 sm:h-16"></div>
88143

89144
{/* BOARD MEMBERS SLIDER */}
90145
<div className = "latest-events">
@@ -94,37 +149,12 @@ export default function about() {
94149

95150
<div className="w-3/4 m-auto">
96151
<div>
97-
<Slider {...settings}>
98-
{members.map((d) => (
99-
<div className = "mt-2 sm:mt-8 flex">
100-
101-
{/* Headshot */}
102-
<div className = "mt-1 justify-end flex headshot">
103-
<div className="w-1 h-20 sm:h-44 sm:w-2 bg-[#43B697]"></div>
104-
<div className="w-1 h-20 sm:h-44 sm:w-2 bg-[#282828]"></div>
105-
{/* Image */}
106-
<img src={d.img} alt="" className="h-20 w-20 sm:h-44 sm:w-44 border border-white"/>
107-
</div>
108-
109-
{/* Board Member Information */}
110-
<div className = "flex member-info text-white">
111-
<div className = "sm:mt-5 flex flex-col items-center">
112-
<h1 className="sm:text-xl md:text-2xl">{d.name}</h1>
113-
<div className="w-auto sm:h-3 bg-[#282828]"></div>
114-
<h1 className="text-base sm:text-xl font-light">{d.title}</h1>
115-
<h1 className="text-base sm:text-xl font-light">{d.class}</h1>
116-
<h1 className="text-base sm:text-xl font-light">{d.major}</h1>
117-
<div className="w-auto h-8 sm:h-20 bg-[#282828]"></div>
118-
</div>
119-
</div>
120-
</div>
121-
))}
122-
</Slider>
152+
<BoardMembersBlock />
123153
</div>
124154
</div>
125155

126156
</div>
127-
<div className="h-8 sm: h-16"></div>
157+
<div className="h-8 sm:h-16"></div>
128158

129159
{/* FAQS section */}
130160
<div className={fabulous.className}>
@@ -152,51 +182,11 @@ export default function about() {
152182
</div>
153183
<div className="h-10"></div>
154184
</div>
155-
/*
156-
<div className="flex">
157-
<div className = "flex left-wrapper">
158-
<div className = "accordian">
159-
160-
{left_questions.map((item, i) => (
161-
<div className="item">
162-
<div className = "title" onClick={() => toggle(i)}>
163-
<h2>{item.question}</h2>
164-
<span>{selected === i ? '-' : '+'}</span>
165-
</div>
166-
167-
<div className = {selected === i ? 'content-show font-light' : 'content'}>
168-
{item.answer}
169-
</div>
170-
</div>
171-
))}
172-
173-
</div>
174-
</div>
175-
176-
<div className = "flex right-wrapper">
177-
<div className = "accordian">
178-
179-
{right_questions.map((item, i) => (
180-
<div className="item">
181-
<div className = "title" onClick={() => toggle(i)}>
182-
<h2>{item.question}</h2>
183-
<span>{selected === i ? '-' : '+'}</span>
184-
</div>
185-
186-
<div className = {selected === i ? 'content-show font-light' : 'content'}>
187-
{item.answer}
188-
</div>
189-
</div>
190-
))}
191-
192-
</div>
193-
</div>
194-
*/
195185
);
196186
}
197187

198188
{/* BOARD MEMBERS AND HEADSHOTS */}
199-
const members = [
189+
const membersmap = [
200190
{
201191
name: 'Amy (she/they)',
202192
title: 'President',
@@ -262,30 +252,6 @@ const questions = [
262252
}
263253
];
264254

265-
{/* LEFT COLUMN QUESTIONS - NOT USED */}
266-
const left_questions = [
267-
{
268-
question: 'Does Mesh have office hours?',
269-
answer: 'Yes. Come to MESH Office Hours every Friday 5-7PM in the MILL!',
270-
},
271-
{
272-
question: 'How competitive is it to get into Mesh?',
273-
answer: 'Answer to Question 3.',
274-
},
275-
];
276-
277-
{/* RIGHT COLUMN QUESTIONS - NOT USED */}
278-
const right_questions = [
279-
{
280-
question: 'When’s the quarterly meeting?',
281-
answer: 'Answer to Question 2.',
282-
},
283-
{
284-
question: 'Where can I find the application form?',
285-
answer: 'Answer to Question 4.',
286-
}
287-
];
288-
289255
{/* CUSTOM ARROWS */}
290256
function SampleNextArrow(props) {
291257
const { className, style, onClick } = props;
@@ -308,3 +274,5 @@ function SamplePrevArrow(props) {
308274
/>
309275
);
310276
}
277+
278+

app/archive/page.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ function ArchiveBlock({sortBy}) {
4545
});
4646
return (
4747
<ul className="grid grid-cols-1 lg:grid-cols-3 lg:gap-4 items-center">
48-
{archives.map((archive) => (
49-
<div className="flex flex-col items-center">
48+
{sortedArchives.map((archive) => (
49+
<div key={archive._id} className="flex flex-col items-center">
5050
<div className="flex items-center h-80 w-80 ">
5151
<img src= {urlForImage(archive.image)} className="border-2 h-full w-full object-cover" alt={archive.alt} />
5252
</div>
@@ -74,7 +74,7 @@ export default function ArchivePage() {
7474
<h1 className={fabulous.className}>ARCHIVE</h1>
7575
</header>
7676
<div className="text-center mb-10 text-white">
77-
<p1>View photo albums and program booklets from past MESH events</p1>
77+
<p>View photo albums and program booklets from past MESH events</p>
7878
</div>
7979
<div className="flex flex-row-reverse mr-10 mb-10">
8080
<button onClick={handleSortToggle} class="bg-[#43B697] rounded-lg w-40 p-1 text-xl">

app/events/.layout.js.swp

12 KB
Binary file not shown.

app/events/components/BasicModal.js

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
/* eslint-disable @next/next/no-img-element */
2+
"use client";
3+
4+
import * as React from 'react';
5+
import Box from '@mui/material/Box';
6+
import Button from '@mui/material/Button';
7+
import Typography from '@mui/material/Typography';
8+
import Modal from '@mui/material/Modal';
9+
import LearnButton from './LearnButton';
10+
import { Jost } from 'next/font/google';
11+
12+
13+
// couldnt figure out the file pathToString, copied this into the events folder
14+
import localFont from "next/font/local"
15+
import { urlForImage } from '@/sanity/lib/image';
16+
17+
const fabulous = localFont({
18+
src: '/static-fonts/fabulous.otf',
19+
display: 'swap',
20+
})
21+
22+
const jost = Jost({
23+
subsets: ['latin'],
24+
display: 'swap',
25+
weight: ['300', '400', '600'],
26+
})
27+
28+
const style = {
29+
position: 'absolute',
30+
top: '50%',
31+
left: '50%',
32+
transform: 'translate(-50%, -50%)',
33+
width: 400,
34+
bgcolor: '#373737',
35+
border: '2px solid #000',
36+
boxShadow: 24,
37+
p: 4,
38+
height: 600,
39+
};
40+
41+
export default function BasicModal({title, date, time, location, description, imageUrl}) {
42+
const [open, setOpen] = React.useState(false);
43+
const handleOpen = () => setOpen(true);
44+
const handleClose = () => setOpen(false);
45+
46+
return (
47+
<div>
48+
{/* <Button onClick={handleOpen}>Open modal</Button> */}
49+
{/* <LearnButton onClick={handleOpen} /> */}
50+
51+
<div class="flex flex-row m-auto justify-center">
52+
<div class="flex flex-row m-auto justify-center">
53+
<button onClick={handleOpen} class="text-[#FFFFFF] font-sans text-lg font-light">Learn More </button>
54+
<img src="/arrowup.png" alt="arrow" class="h-10"/>
55+
</div>
56+
</div>
57+
58+
59+
<Modal
60+
open={open}
61+
onClose={handleClose}
62+
aria-labelledby="modal-modal-title"
63+
aria-describedby="modal-modal-description"
64+
>
65+
<Box sx={style} >
66+
<div className={fabulous.className}>
67+
<Typography id="modal-modal-title" variant="h6" component="h2" class="text-center text-white text-2xl">
68+
{title}
69+
</Typography>
70+
</div>
71+
<div class="w-90 overflow-hidden h-56 text-white pb-2">
72+
<img src={urlForImage(imageUrl)} alt={title}/>
73+
</div>
74+
75+
<div className={jost.className}>
76+
<div id="time" class="text-white flex flex-row gap-x-4 py-4 text-lg font-light ">
77+
<img src="/clock_.png" alt='clock' />
78+
<p>{date}, {time}</p>
79+
80+
</div>
81+
<div id="location" class="text-white flex flex-row gap-x-4 py-4 text-xl font-light">
82+
<img src="/location.png" alt='clock' class="ml-1"/>
83+
<p>{location}</p>
84+
85+
</div>
86+
87+
<div className={jost.className}>
88+
<Typography class="pt-4 font-extralight text-white text-lg" id="modal-modal-description" sx={{ mt: 2 }}>
89+
{description}
90+
</Typography>
91+
</div>
92+
</div>
93+
94+
</Box>
95+
</Modal>
96+
</div>
97+
);
98+
}

0 commit comments

Comments
 (0)