diff --git a/src/App.jsx b/src/App.jsx
index c902699..4428228 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -3,6 +3,8 @@ import { useState } from 'react'
import initialEmails from './data/emails'
import './styles/App.css'
+import Emails from './components/Emails'
+import EmailDetails from './components/EmailDetails'
const getReadEmails = emails => emails.filter(email => !email.read)
@@ -12,6 +14,8 @@ function App() {
const [emails, setEmails] = useState(initialEmails)
const [hideRead, setHideRead] = useState(false)
const [currentTab, setCurrentTab] = useState('inbox')
+ const [selectedEmail, setSelectedEmail] = useState(null);
+ const [searchTerm, setSearchTerm] = useState("")
const unreadEmails = emails.filter(email => !email.read)
const starredEmails = emails.filter(email => email.starred)
@@ -41,6 +45,12 @@ function App() {
if (currentTab === 'starred')
filteredEmails = getStarredEmails(filteredEmails)
+ if (searchTerm != "") {
+ filteredEmails = filteredEmails.filter(e =>
+ e.title.toLowerCase().startsWith(searchTerm.toLowerCase())
+ );
+ }
+
return (
@@ -56,7 +66,15 @@ function App() {
-
+ {
+ setSearchTerm(e.target.value);
+ }}
+ />
-
+ {selectedEmail ? (
+ setSelectedEmail(null)}/>
+ ) : (
+
+ )}
)
diff --git a/src/components/Email.jsx b/src/components/Email.jsx
new file mode 100644
index 0000000..5f3410a
--- /dev/null
+++ b/src/components/Email.jsx
@@ -0,0 +1,32 @@
+
+
+function Email({email, toggleRead, toggleStar, onSelectEmail}) {
+
+ return (
+ onSelectEmail(email)}
+ >
+ e.stopPropagation()}>
+ toggleRead(email)}
+ />
+
+ e.stopPropagation()}>
+ toggleStar(email)}
+ />
+
+ {email.sender}
+ {email.title}
+
+ );
+}
+
+export default Email;
\ No newline at end of file
diff --git a/src/components/EmailDetails.jsx b/src/components/EmailDetails.jsx
new file mode 100644
index 0000000..038815a
--- /dev/null
+++ b/src/components/EmailDetails.jsx
@@ -0,0 +1,18 @@
+
+function EmailDetails({ email, onBack }) {
+ return (
+
+
+
+
+
{email.title}
+
From: {email.sender}
+
+
+
+
Contents of the email
+
+ );
+}
+
+export default EmailDetails;
diff --git a/src/components/Emails.jsx b/src/components/Emails.jsx
new file mode 100644
index 0000000..6ebe8e6
--- /dev/null
+++ b/src/components/Emails.jsx
@@ -0,0 +1,15 @@
+
+import Email from './Email'
+
+function Emails({filteredEmails, toggleRead, toggleStar, onSelectEmail}) {
+
+ return (
+
+ {filteredEmails.map((email, index) => (
+
+ ))}
+
+ );
+}
+
+export default Emails;
\ No newline at end of file
diff --git a/src/styles/App.css b/src/styles/App.css
index da375b1..329bb88 100644
--- a/src/styles/App.css
+++ b/src/styles/App.css
@@ -144,3 +144,7 @@
.email .star-checkbox:checked::before {
background-image: url(https://www.gstatic.com/images/icons/material/system/2x/star_googyellow500_20dp.png);
}
+
+.email-details {
+ padding: 10px;
+}