Skip to content

Commit b793030

Browse files
committed
add meetup layout
1 parent e9e5b7b commit b793030

File tree

9 files changed

+97
-11
lines changed

9 files changed

+97
-11
lines changed

components/layout/MainNavigation.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1-
import classes from './MainNavigation.module.css';
1+
import Link from "next/link";
22

3-
function MainNavigation() {
3+
import classes from "./MainNavigation.module.css";
44

5+
function MainNavigation() {
56
return (
67
<header className={classes.header}>
7-
<div className={classes.logo}>React Meetups</div>
8+
<div className={classes.logo}>Meetups</div>
89
<nav>
910
<ul>
1011
<li>
11-
<Link to='/'>All Meetups</Link>
12+
<Link href="/">All Meetups</Link>
1213
</li>
1314
<li>
14-
<Link to='/new-meetup'>Add New Meetup</Link>
15+
<Link href="/new-meetup">Add New Meetup</Link>
1516
</li>
1617
</ul>
1718
</nav>

components/meetups/MeetupDetail.js

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import classes from "./MeetupDetail.module.css";
2+
3+
function MeetupDetail(props) {
4+
return (
5+
<section className={classes.detail}>
6+
<img src={props.image} alt={props.title} />
7+
<h1>{props.title}</h1>
8+
<address>{props.address}</address>
9+
<p>{props.description}</p>
10+
</section>
11+
);
12+
}
13+
14+
export default MeetupDetail;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.detail {
2+
text-align: center;
3+
}
4+
5+
.detail img {
6+
width: 100%;
7+
}

components/meetups/MeetupItem.js

+10-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1-
import Card from '../ui/Card';
2-
import classes from './MeetupItem.module.css';
1+
import { useRouter } from "next/router";
2+
3+
import Card from "../ui/Card";
4+
import classes from "./MeetupItem.module.css";
35

46
function MeetupItem(props) {
7+
const router = useRouter();
8+
function showDetailsHandler() {
9+
router.push(`/${props.id}`);
10+
}
511
return (
612
<li className={classes.item}>
713
<Card>
@@ -13,7 +19,8 @@ function MeetupItem(props) {
1319
<address>{props.address}</address>
1420
</div>
1521
<div className={classes.actions}>
16-
<button>Show Details</button>
22+
<button onClick={showDetailsHandler}>Show Details</button>
23+
{/* Link would be better */}
1724
</div>
1825
</Card>
1926
</li>

pages/[meetupId]/index.js

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import MeetupDetail from "../../components/meetups/MeetupDetail";
2+
3+
function MeetupDetailsPage() {
4+
return (
5+
<MeetupDetail
6+
title="A First Meetup"
7+
address="85 S. Edgemont Street, Crawfordsville, IN 47933"
8+
description="This is a first meetup!"
9+
image="https://images.unsplash.com/photo-1611095790444-1dfa35e37b52?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=751&q=80"
10+
/>
11+
);
12+
}
13+
14+
export default MeetupDetailsPage;

pages/_app.js

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1-
import '../styles/globals.css'
1+
import Layout from "../components/layout/Layout";
2+
3+
import "../styles/globals.css";
24

35
function MyApp({ Component, pageProps }) {
4-
return <Component {...pageProps} />
6+
return (
7+
<Layout>
8+
<Component {...pageProps} />
9+
</Layout>
10+
);
511
}
612

7-
export default MyApp
13+
export default MyApp;

pages/index.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import MeetupList from "../components/meetups/MeetupList";
2+
3+
const DUMMY_MEETUPS = [
4+
{
5+
id: "m1",
6+
title: "A First Meetup",
7+
image:
8+
"https://images.unsplash.com/photo-1611095790444-1dfa35e37b52?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=751&q=80",
9+
address: "85 S. Edgemont Street, Crawfordsville, IN 47933",
10+
description: "This is a first meetup!",
11+
},
12+
{
13+
id: "m2",
14+
title: "A Second Meetup",
15+
image:
16+
"https://images.unsplash.com/photo-1611095973015-2c65f77541e1?ixid=MXwxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=751&q=80",
17+
address: "7718 Ann Court, Greensburg, PA 15601",
18+
description: "This is a second meetup!",
19+
},
20+
];
21+
22+
function HomePage() {
23+
return <MeetupList meetups={DUMMY_MEETUPS} />;
24+
}
25+
26+
export default HomePage;

pages/new-meetup/index.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import NewMeetupForm from "../../components/meetups/NewMeetupForm";
2+
3+
function NewMeetupPage() {
4+
function addMeetupHandler(enteredMeetupData) {
5+
console.log(enteredMeetupData);
6+
}
7+
return <NewMeetupForm onAddMeetup={addMeetupHandler} />;
8+
}
9+
10+
export default NewMeetupPage;

styles/globals.css

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
body {
88
font-family: 'Open Sans', 'Lato', sans-serif;
9+
margin: 0;
910
}
1011

1112
h1,

0 commit comments

Comments
 (0)