diff --git a/src/App.jsx b/src/App.jsx
index c902699..861c284 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -1,123 +1,18 @@
import { useState } from 'react'
-
-import initialEmails from './data/emails'
-
+import Header from './Header'
+import EmailPage from './EmailPage'
import './styles/App.css'
-const getReadEmails = emails => emails.filter(email => !email.read)
-
-const getStarredEmails = emails => emails.filter(email => email.starred)
-
function App() {
- const [emails, setEmails] = useState(initialEmails)
- const [hideRead, setHideRead] = useState(false)
- const [currentTab, setCurrentTab] = useState('inbox')
-
- const unreadEmails = emails.filter(email => !email.read)
- const starredEmails = emails.filter(email => email.starred)
-
- const toggleStar = targetEmail => {
- const updatedEmails = emails =>
- emails.map(email =>
- email.id === targetEmail.id
- ? { ...email, starred: !email.starred }
- : email
- )
- setEmails(updatedEmails)
- }
-
- const toggleRead = targetEmail => {
- const updatedEmails = emails =>
- emails.map(email =>
- email.id === targetEmail.id ? { ...email, read: !email.read } : email
- )
- setEmails(updatedEmails)
- }
-
- let filteredEmails = emails
-
- if (hideRead) filteredEmails = getReadEmails(filteredEmails)
-
- if (currentTab === 'starred')
- filteredEmails = getStarredEmails(filteredEmails)
+ const [searchTerm, setSearchTerm] = useState('')
return (
-
-
-
-
-

-
-
-
-
-
-
-
-
-
-
+
+
)
}
+
export default App
diff --git a/src/EmailItem.jsx b/src/EmailItem.jsx
new file mode 100644
index 0000000..79dbd3a
--- /dev/null
+++ b/src/EmailItem.jsx
@@ -0,0 +1,26 @@
+function EmailItem({ email, toggleRead, toggleStar }) {
+ return (
+
+
+ toggleRead(email)}
+ />
+
+
+ toggleStar(email)}
+ />
+
+ {email.sender}
+ {email.title}
+
+ )
+}
+
+export default EmailItem
diff --git a/src/EmailPage.jsx b/src/EmailPage.jsx
new file mode 100644
index 0000000..f143f01
--- /dev/null
+++ b/src/EmailPage.jsx
@@ -0,0 +1,81 @@
+import { useState } from 'react'
+import initialEmails from './data/emails'
+import Sidebar from './Sidebar'
+import EmailItem from './EmailItem'
+
+const getUnreadEmails = emails => emails.filter(email => !email.read)
+const getStarredEmails = emails => emails.filter(email => email.starred)
+
+function EmailPage({searchTerm}) {
+ const [emails, setEmails] = useState(initialEmails)
+ const [hideRead, setHideRead] = useState(false)
+ const [currentTab, setCurrentTab] = useState('inbox')
+
+ const unreadEmails = getUnreadEmails(emails)
+ const starredEmails = getStarredEmails(emails)
+
+ const toggleStar = targetEmail => {
+ setEmails(prevEmails =>
+ prevEmails.map(email =>
+ email.id === targetEmail.id
+ ? { ...email, starred: !email.starred }
+ : email
+ )
+ )
+ }
+
+ const toggleRead = targetEmail => {
+ setEmails(prevEmails =>
+ prevEmails.map(email =>
+ email.id === targetEmail.id
+ ? { ...email, read: !email.read }
+ : email
+ )
+ )
+ }
+
+ // Filtering logic
+ let filteredEmails = emails
+ if (hideRead) {
+ filteredEmails = getUnreadEmails(filteredEmails)
+ }
+ if (currentTab === 'starred') {
+ filteredEmails = getStarredEmails(filteredEmails)
+ }
+ if (searchTerm) {
+ const searchTermLowerCase = searchTerm.toLowerCase()
+ filteredEmails = filteredEmails.filter(
+ email =>
+ email.title.toLowerCase().includes(searchTermLowerCase) ||
+ email.sender.toLowerCase().includes(searchTermLowerCase)
+ )
+ }
+
+ return (
+ <>
+
+
+
+
+ {filteredEmails.map(email => (
+
+ ))}
+
+
+ >
+ )
+}
+
+export default EmailPage
diff --git a/src/Header.jsx b/src/Header.jsx
new file mode 100644
index 0000000..19fb7cd
--- /dev/null
+++ b/src/Header.jsx
@@ -0,0 +1,26 @@
+function Header({ searchTerm, setSearchTerm }) {
+ return (
+
+ )
+}
+
+export default Header
diff --git a/src/Sidebar.jsx b/src/Sidebar.jsx
new file mode 100644
index 0000000..208beac
--- /dev/null
+++ b/src/Sidebar.jsx
@@ -0,0 +1,34 @@
+function Sidebar({ currentTab, unreadEmails, starredEmails, hideRead, setHideRead }){
+ return (
+
+ )
+}
+
+export default Sidebar
diff --git a/src/main.jsx b/src/main.jsx
index fce89a2..58c5c7b 100644
--- a/src/main.jsx
+++ b/src/main.jsx
@@ -7,4 +7,4 @@ ReactDOM.createRoot(document.getElementById('root')).render(
,
-)
+)
\ No newline at end of file