-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit b220953
Showing
23 changed files
with
629 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
import React, { useState } from "react"; | ||
import Expenses from "./components/Expenses/Expenses"; | ||
import NewExpense from "./components/NewExpense/NewExpense"; | ||
|
||
const DUMMY_EXPENSES = [ | ||
{ | ||
id: "e1", | ||
title: "Toilet Paper", | ||
amount: 94.12, | ||
date: new Date(2020, 7, 14), | ||
}, | ||
{ id: "e2", title: "New TV", amount: 799.49, date: new Date(2021, 2, 12) }, | ||
{ | ||
id: "e3", | ||
title: "Car Insurance", | ||
amount: 294.67, | ||
date: new Date(2021, 2, 28), | ||
}, | ||
{ | ||
id: "e4", | ||
title: "New Desk (Wooden)", | ||
amount: 450, | ||
date: new Date(2021, 5, 12), | ||
}, | ||
]; | ||
|
||
function App() { | ||
const [expenses, setExpenses] = useState(DUMMY_EXPENSES); | ||
|
||
const addExpenseHandler = (expense) => { | ||
// setExpenses([expense, ...expense]); | ||
setExpenses((prevExpenses) => { | ||
return [expense, ...prevExpenses]; | ||
}); | ||
}; | ||
return ( | ||
<div> | ||
<NewExpense onAddExpense={addExpenseHandler}></NewExpense> | ||
<Expenses items={expenses}></Expenses> | ||
</div> | ||
); | ||
} | ||
|
||
export default App; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
.chart { | ||
padding: 1rem; | ||
border-radius: 12px; | ||
background-color: #f8dfff; | ||
text-align: center; | ||
display: flex; | ||
justify-content: space-around; | ||
height: 10rem; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
import React from "react"; | ||
import "./Chart.css"; | ||
import ChartBar from "./ChartBar"; | ||
|
||
const Chart = (props) => { | ||
return ( | ||
<div className="chart"> | ||
{props.dataPoints.map((dataPoint) => ( | ||
<ChartBar | ||
key={dataPoint.label} | ||
value={dataPoint.value} | ||
maxValue={null} | ||
label={dataPoint.label} | ||
/> | ||
))} | ||
</div> | ||
); | ||
}; | ||
|
||
export default Chart; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
.chart-bar { | ||
height: 100%; | ||
display: flex; | ||
flex-direction: column; | ||
align-items: center; | ||
} | ||
|
||
.chart-bar__inner { | ||
height: 100%; | ||
width: 100%; | ||
border: 1px solid #313131; | ||
border-radius: 12px; | ||
background-color: #c3b4f3; | ||
overflow: hidden; | ||
display: flex; | ||
flex-direction: column; | ||
justify-content: flex-end; | ||
} | ||
|
||
.chart-bar__fill { | ||
background-color: #4826b9; | ||
width: 100%; | ||
transition: all 0.3s ease-out; | ||
} | ||
|
||
.chart-bar__label { | ||
font-weight: bold; | ||
font-size: 0.5rem; | ||
text-align: center; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
// import React from 'react'; | ||
import "./ChartBar.css"; | ||
const ChartBar = () => {}; | ||
|
||
export default ChartBar; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
.expense-date { | ||
display: flex; | ||
flex-direction: column; | ||
width: 5.5rem; | ||
height: 5.5rem; | ||
border: 1px solid #ececec; | ||
background-color: #2a2a2a; | ||
color: white; | ||
border-radius: 12px; | ||
align-items: center; | ||
justify-content: center; | ||
} | ||
|
||
.expense-date__month { | ||
font-size: 0.75rem; | ||
font-weight: bold; | ||
} | ||
|
||
.expense-date__year { | ||
font-size: 0.75rem; | ||
} | ||
|
||
.expense-date__day { | ||
font-size: 1.5rem; | ||
font-weight: bold; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
import "./ExpenseDate.css"; | ||
|
||
function ExpenseDate(props) { | ||
const month = props.date.toLocaleString("en-US", { month: "long" }); | ||
const day = props.date.toLocaleString("en-US", { day: "2-digit" }); | ||
const year = props.date.getFullYear(); | ||
|
||
return ( | ||
<div className="expense-date"> | ||
<div className="expense-date__month">{month}</div> | ||
<div className="expense-date__year">{year}</div> | ||
<div className="expense-date__day">{day}</div> | ||
</div> | ||
); | ||
} | ||
|
||
export default ExpenseDate; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
.expenses-filter { | ||
color: white; | ||
padding: 0 1rem; | ||
} | ||
|
||
.expenses-filter__control { | ||
display: flex; | ||
width: 100%; | ||
align-items: center; | ||
justify-content: space-between; | ||
margin: 1rem 0; | ||
} | ||
|
||
.expenses-filter label { | ||
font-weight: bold; | ||
margin-bottom: 0.5rem; | ||
} | ||
|
||
.expenses-filter select { | ||
font: inherit; | ||
padding: 0.5rem 3rem; | ||
font-weight: bold; | ||
border-radius: 6px; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
import React from "react"; | ||
|
||
import "./ExpenseFilter.css"; | ||
|
||
const ExpensesFilter = (props) => { | ||
const dropdownChangeHandler = (event) => { | ||
props.onChangeFilter(event.target.value); | ||
}; | ||
|
||
return ( | ||
<div className="expenses-filter"> | ||
<div className="expenses-filter__control"> | ||
<label>Filter by year</label> | ||
<select value={props.selected} onChange={dropdownChangeHandler}> | ||
<option value="2022">2022</option> | ||
<option value="2021">2021</option> | ||
<option value="2020">2020</option> | ||
<option value="2019">2019</option> | ||
</select> | ||
</div> | ||
</div> | ||
); | ||
}; | ||
|
||
export default ExpensesFilter; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
.expense-item { | ||
display: flex; | ||
justify-content: space-between; | ||
align-items: center; | ||
|
||
padding: 0.5rem; | ||
margin: 1rem 0; | ||
|
||
background-color: #4b4b4b; | ||
} | ||
|
||
.expense-item__description { | ||
display: flex; | ||
flex-direction: column; | ||
gap: 1rem; | ||
align-items: flex-end; | ||
flex-flow: column-reverse; | ||
justify-content: flex-start; | ||
flex: 1; | ||
} | ||
|
||
.expense-item h2 { | ||
color: #3a3a3a; | ||
font-size: 1rem; | ||
flex: 1; | ||
margin: 0 1rem; | ||
color: white; | ||
} | ||
|
||
.expense-item__price { | ||
font-size: 1rem; | ||
font-weight: bold; | ||
color: white; | ||
background-color: #40005d; | ||
border: 1px solid white; | ||
padding: 0.5rem; | ||
border-radius: 12px; | ||
} | ||
|
||
@media (min-width: 580px) { | ||
.expense-item__description { | ||
flex-direction: row; | ||
align-items: center; | ||
justify-content: flex-start; | ||
flex: 1; | ||
} | ||
|
||
.expense-item__description h2 { | ||
font-size: 1.25rem; | ||
} | ||
|
||
.expense-item__price { | ||
font-size: 1.25rem; | ||
padding: 0.5rem 1.5rem; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import React from "react"; | ||
|
||
import "./ExpenseItem.css"; | ||
import ExpenseDate from "./ExpenseDate"; | ||
import Card from "../UI/Card"; | ||
|
||
function ExpenseItem(props) { | ||
// const [title, setTitle] = useState(props.title); | ||
|
||
// const clickHandler = () => { | ||
// setTitle("updated"); | ||
// console.log(title); | ||
// }; | ||
|
||
return ( | ||
<li> | ||
<Card className="expense-item"> | ||
<ExpenseDate date={props.date} /> | ||
<div className="expense-item__description"> | ||
<h2>{props.title}</h2> | ||
<div className="expense-item__price">₹{props.amount}</div> | ||
</div> | ||
{/* <button onClick={clickHandler}>Change Title</button> */} | ||
</Card> | ||
</li> | ||
); | ||
} | ||
|
||
export default ExpenseItem; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
.expenses { | ||
padding: 1rem; | ||
background-color: rgb(31, 31, 31); | ||
margin: 2rem auto; | ||
width: 50rem; | ||
max-width: 95%; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
import React, { useState } from "react"; | ||
import ExpenseFilter from "./ExpenseFilter"; | ||
import "./Expenses.css"; | ||
import Card from "../UI/Card"; | ||
import ExpensesList from "./ExpensesList"; | ||
|
||
function Expenses(props) { | ||
const [filteredYear, setFilteredYear] = useState("2020"); | ||
|
||
const filterChangeSelector = (selectedYear) => { | ||
setFilteredYear(selectedYear); | ||
}; | ||
|
||
const filteredExpenses = props.items.filter((expense) => { | ||
return expense.date.getFullYear().toString() === filteredYear; | ||
}); | ||
|
||
return ( | ||
<Card className="expenses"> | ||
<ExpenseFilter | ||
selected={filteredYear} | ||
onChangeFilter={filterChangeSelector} | ||
/> | ||
{/* {filteredExpenses.length === 0 ? ( | ||
<p>No Expenses Found!</p> | ||
) : ( | ||
filteredExpenses.map((expense) => ( | ||
<ExpenseItem | ||
key={expense.id} | ||
title={expense.title} | ||
amount={expense.amount} | ||
date={expense.date} | ||
/> | ||
)) | ||
)} */} | ||
|
||
{/* {expensesContent} */} | ||
<ExpensesList items={filteredExpenses} /> | ||
{/* <ExpenseItem | ||
title={props.items[0].title} | ||
amount={props.items[0].amount} | ||
date={props.items[0].date} | ||
/> | ||
<ExpenseItem | ||
title={props.items[1].title} | ||
amount={props.items[1].amount} | ||
date={props.items[1].date} | ||
/> | ||
<ExpenseItem | ||
title={props.items[2].title} | ||
amount={props.items[2].amount} | ||
date={props.items[2].date} | ||
/> | ||
<ExpenseItem | ||
title={props.items[3].title} | ||
amount={props.items[3].amount} | ||
date={props.items[3].date} | ||
/> */} | ||
</Card> | ||
); | ||
} | ||
|
||
export default Expenses; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
.expenses-list { | ||
list-style: none; | ||
padding: 0; | ||
} | ||
|
||
.expenses-list__fallback { | ||
color: white; | ||
text-align: center; | ||
} |
Oops, something went wrong.