Skip to content

Commit

Permalink
Layout Components Settings
Browse files Browse the repository at this point in the history
  • Loading branch information
suochantsao committed Oct 11, 2021
1 parent 02d9f05 commit 80ed579
Show file tree
Hide file tree
Showing 10 changed files with 132 additions and 9 deletions.
7 changes: 3 additions & 4 deletions src/App.js
Expand Up @@ -6,12 +6,11 @@ import NewMeetupPage from "./pages/NewMeetup";
import FavoritesPage from "./pages/Favorites";

// Components
import MainNavigation from "./components/layout/MainNavigation";
import Layout from "./components/layout/Layout";

function App() {
return (
<div>
<MainNavigation />
<Layout>
<Switch>
<Route path="/" exact>
<AllMeetupsPage />
Expand All @@ -23,7 +22,7 @@ function App() {
<FavoritesPage />
</Route>
</Switch>
</div>
</Layout>
);
}

Expand Down
13 changes: 13 additions & 0 deletions src/components/layout/Layout.js
@@ -0,0 +1,13 @@
import MainNavigation from "./MainNavigation";
import classes from "./Layout.module.css";

function Layout(props) {
return (
<div>
<MainNavigation />
<main className={classes.main}>{props.children}</main>
</div>
);
}

export default Layout;
5 changes: 5 additions & 0 deletions src/components/layout/Layout.module.css
@@ -0,0 +1,5 @@
.main {
margin: 3rem auto;
width: 90%;
max-width: 40rem;
}
24 changes: 24 additions & 0 deletions src/components/meetups/MeetupItem.js
@@ -0,0 +1,24 @@
import Card from "../ui/Card";
import classes from "./MeetupItem.module.css";

function MeetupItem(props) {
return (
<li className={classes.item}>
<Card>
<div className={classes.image}>
<img src={props.image} alt={props.title} />
</div>
<div className={classes.content}>
<h3>{props.title}</h3>
<address>{props.address}</address>
<p>{props.description}</p>
</div>
<div className={classes.actions}>
<button>To Favorites</button>
</div>
</Card>
</li>
);
}

export default MeetupItem;
46 changes: 46 additions & 0 deletions src/components/meetups/MeetupItem.module.css
@@ -0,0 +1,46 @@
.item {
margin: 1rem 0;
}

.image {
width: 100%;
height: 20rem;
overflow: hidden;
border-top-right-radius: 6px;
border-top-left-radius: 6px;
}

.image img {
width: 100%;
object-fit: cover;
}

.content {
text-align: center;
padding: 1rem;
}

.content h3 {
font-size: 1.25rem;
color: #2c292b;
}

.actions {
padding: 1.5rem;
text-align: center;
}

.actions button {
font: inherit;
cursor: pointer;
color: #77002e;
border: 1px solid #77002e;
background-color: transparent;
padding: 0.5rem 1.5rem;
border-radius: 4px;
}

.actions button:hover,
.actions button:active {
background-color: #ffe2ed;
}
21 changes: 21 additions & 0 deletions src/components/meetups/MeetupList.js
@@ -0,0 +1,21 @@
import MeetupItem from "./MeetupItem";
import classes from "./MeetupList.module.css";

function MeetupList(props) {
return (
<ul className={classes.list}>
{props.meetups.map((meetup) => (
<MeetupItem
key={meetup.id}
id={meetup.id}
image={meetup.image}
title={meetup.title}
address={meetup.address}
description={meetup.description}
/>
))}
</ul>
);
}

export default MeetupList;
5 changes: 5 additions & 0 deletions src/components/meetups/MeetupList.module.css
@@ -0,0 +1,5 @@
.list {
list-style: none;
margin: 0;
padding: 0;
}
7 changes: 7 additions & 0 deletions src/components/ui/Card.js
@@ -0,0 +1,7 @@
import classes from "./Card.module.css";

function Card(props) {
return <div className={classes.card}>{props.children}</div>;
}

export default Card;
5 changes: 5 additions & 0 deletions src/components/ui/Card.module.css
@@ -0,0 +1,5 @@
.card {
background-color: white;
border-radius: 6px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}
8 changes: 3 additions & 5 deletions src/pages/AllMeetups.js
@@ -1,3 +1,5 @@
import MeetupList from "../components/meetups/MeetupList";

const DUMMY_DATA = [
{
id: "m1",
Expand All @@ -23,11 +25,7 @@ function AllMeetupsPage() {
return (
<section>
<h1>All Meetups</h1>
<ul>
{DUMMY_DATA.map((meetup) => {
return <li key={meetup.id}>{meetup.title}</li>;
})}
</ul>
<MeetupList meetups={DUMMY_DATA} />
</section>
);
}
Expand Down

0 comments on commit 80ed579

Please sign in to comment.