diff --git a/components/Archive.tsx b/components/Archive.tsx
new file mode 100644
index 00000000..ae8d149a
--- /dev/null
+++ b/components/Archive.tsx
@@ -0,0 +1,9 @@
+import archive from "./archive.svg";
+import styled from "styled-components";
+const ArchiveComponent = styled.img`
+ width: 13px;
+ height: 13px;
+`;
+export const Archive = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/At.tsx b/components/At.tsx
new file mode 100644
index 00000000..c963df58
--- /dev/null
+++ b/components/At.tsx
@@ -0,0 +1,9 @@
+import at from "./at.svg";
+import styled from "styled-components";
+const AtComponent = styled.img`
+ width: 13px;
+ height: 13px;
+`;
+export const At = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/Calendar.tsx b/components/Calendar.tsx
new file mode 100644
index 00000000..0ad6f5b8
--- /dev/null
+++ b/components/Calendar.tsx
@@ -0,0 +1,9 @@
+import calendar from "./calendar.svg";
+import styled from "styled-components";
+const CalendarComponent = styled.img`
+ width: 13px;
+ height: 13px;
+`;
+export const Calendar = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/Compose.tsx b/components/Compose.tsx
new file mode 100644
index 00000000..fc7d1b7b
--- /dev/null
+++ b/components/Compose.tsx
@@ -0,0 +1,9 @@
+import compose from "./compose.svg";
+import styled from "styled-components";
+const ComposeComponent = styled.img`
+ width: 14px;
+ height: 14px;
+`;
+export const Compose = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/Contacts.tsx b/components/Contacts.tsx
new file mode 100644
index 00000000..ffa6651f
--- /dev/null
+++ b/components/Contacts.tsx
@@ -0,0 +1,9 @@
+import contacts from "./contacts.svg";
+import styled from "styled-components";
+const ContactsComponent = styled.img`
+ width: 13px;
+ height: 13px;
+`;
+export const Contacts = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/Draft.tsx b/components/Draft.tsx
new file mode 100644
index 00000000..984e2638
--- /dev/null
+++ b/components/Draft.tsx
@@ -0,0 +1,9 @@
+import draft from "./draft.svg";
+import styled from "styled-components";
+const DraftComponent = styled.img`
+ width: 11px;
+ height: 13px;
+`;
+export const Draft = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/Header.tsx b/components/Header.tsx
new file mode 100644
index 00000000..93c34fe0
--- /dev/null
+++ b/components/Header.tsx
@@ -0,0 +1,28 @@
+import styled from "styled-components";
+const Mail = styled.p`
+ color: rgba(255, 255, 255, 0.28);
+ font-size: 13px;
+ font-weight: 500;
+ line-height: 16.9px;
+`;
+const HeaderComponent = styled.div`
+ display: flex;
+ align-items: center;
+ height: fit-content;
+ padding: 8px 20px;
+ border-radius: 4px;
+ width: 239px;
+`;
+export const Header = ({
+ override,
+ headerText,
+}: {
+ override?: React.CSSProperties;
+ headerText: string;
+}) => {
+ return (
+
+ {headerText}
+
+ );
+};
diff --git a/components/Import.tsx b/components/Import.tsx
new file mode 100644
index 00000000..d2c57d5d
--- /dev/null
+++ b/components/Import.tsx
@@ -0,0 +1,17 @@
+import import from "./import.svg";
+import styled from "styled-components";
+const ImportComponent = styled.img`
+ width: 13px;
+ height: 12px;
+`;
+
+
+export const Import = ({
+ override
+}: {
+ override?: React.CSSProperties;
+}) => {
+
+
+ return ;
+};
\ No newline at end of file
diff --git a/components/InboxIcon.tsx b/components/InboxIcon.tsx
new file mode 100644
index 00000000..66bdd0fc
--- /dev/null
+++ b/components/InboxIcon.tsx
@@ -0,0 +1,9 @@
+import inboxIcon from "./inboxIcon.svg";
+import styled from "styled-components";
+const InboxIconComponent = styled.img`
+ width: 16px;
+ height: 16px;
+`;
+export const InboxIcon = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/Invite.tsx b/components/Invite.tsx
new file mode 100644
index 00000000..af499f33
--- /dev/null
+++ b/components/Invite.tsx
@@ -0,0 +1,9 @@
+import invite from "./invite.svg";
+import styled from "styled-components";
+const InviteComponent = styled.img`
+ width: 13px;
+ height: 12px;
+`;
+export const Invite = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/Search.tsx b/components/Search.tsx
new file mode 100644
index 00000000..46712471
--- /dev/null
+++ b/components/Search.tsx
@@ -0,0 +1,9 @@
+import search from "./search.svg";
+import styled from "styled-components";
+const SearchComponent = styled.img`
+ width: 14px;
+ height: 14px;
+`;
+export const Search = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/Send.tsx b/components/Send.tsx
new file mode 100644
index 00000000..998e2306
--- /dev/null
+++ b/components/Send.tsx
@@ -0,0 +1,9 @@
+import send from "./send.svg";
+import styled from "styled-components";
+const SendComponent = styled.img`
+ width: 13px;
+ height: 13px;
+`;
+export const Send = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/SendFeedback.tsx b/components/SendFeedback.tsx
new file mode 100644
index 00000000..b51bba4d
--- /dev/null
+++ b/components/SendFeedback.tsx
@@ -0,0 +1,13 @@
+import sendFeedback from "./sendFeedback.svg";
+import styled from "styled-components";
+const SendFeedbackComponent = styled.img`
+ width: 13px;
+ height: 13px;
+`;
+export const SendFeedback = ({
+ override,
+}: {
+ override?: React.CSSProperties;
+}) => {
+ return ;
+};
diff --git a/components/Settings.tsx b/components/Settings.tsx
new file mode 100644
index 00000000..aca95623
--- /dev/null
+++ b/components/Settings.tsx
@@ -0,0 +1,9 @@
+import settings from "./settings.svg";
+import styled from "styled-components";
+const SettingsComponent = styled.img`
+ width: 13px;
+ height: 13px;
+`;
+export const Settings = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/Sidebar.tsx b/components/Sidebar.tsx
new file mode 100644
index 00000000..3e2200d9
--- /dev/null
+++ b/components/Sidebar.tsx
@@ -0,0 +1,251 @@
+import mailIcon from "./mailIcon.png";
+import { SidebarTab } from "./SidebarTab";
+import { Compose } from "./Compose";
+import { Search } from "./Search";
+import { Settings } from "./Settings";
+import { Header } from "./Header";
+import { InboxIcon } from "./InboxIcon";
+import { Send } from "./Send";
+import { Calendar } from "./Calendar";
+import { Draft } from "./Draft";
+import { Import } from "./Import";
+import { Spam } from "./Spam";
+import { Archive } from "./Archive";
+import { Trash } from "./Trash";
+import { At } from "./At";
+import { Contacts } from "./Contacts";
+import { Invite } from "./Invite";
+import { SendFeedback } from "./SendFeedback";
+import styled from "styled-components";
+
+const Image = styled.img`
+ position: absolute;
+ inset: 0;
+ height: 100%;
+ width: 100%;
+`;
+
+const MailIcon = styled.div`
+ overflow: hidden;
+ border-radius: 10px;
+ position: relative;
+ width: 38px;
+ height: 38px;
+`;
+
+const SkiffMail = styled.p`
+ color: rgb(255, 255, 255);
+ font-size: 15px;
+ font-weight: 300;
+ line-height: 19.5px;
+`;
+
+const AryamanSWorkspace = styled.p`
+ color: rgba(255, 255, 255, 0.54);
+ font-size: 13px;
+ font-weight: 300;
+ line-height: 16.9px;
+`;
+
+const Text = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ height: fit-content;
+ width: fit-content;
+`;
+
+const Workspace = styled.div`
+ display: flex;
+ align-items: flex-start;
+ gap: 12px;
+ height: fit-content;
+ padding: 10px;
+ width: 100%;
+`;
+
+const OverallOptions = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ height: fit-content;
+ padding: 0px 0px 13px;
+ width: 100%;
+ border-style: solid;
+ border-color: rgba(255, 255, 255, 0.04);
+ border-bottom-width: 1px;
+`;
+
+const MailTabs = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 2px;
+ height: fit-content;
+ padding: 0px 0px 12px;
+ width: 239px;
+`;
+
+const MailOptions = styled.div`
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ padding: 0px 0px 140px;
+ width: 100%;
+ height: 598px;
+`;
+
+const ShareOptions = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ height: fit-content;
+ width: 100%;
+`;
+
+const SidebarComponent = styled.div`
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: flex-start;
+ padding: 0px 1px 0px 0px;
+ width: 100%;
+ height: 902px;
+ border-style: solid;
+ border-color: rgba(255, 255, 255, 0.04);
+ border-right-width: 1px;
+ background: linear-gradient(
+ rgba(255, 255, 255, 0.1),
+ rgba(255, 255, 255, 0.1)
+ ),
+ linear-gradient(rgb(0, 0, 0), rgb(0, 0, 0));
+ font-family: Roboto;
+`;
+
+export const Sidebar = ({ override }: { override?: React.CSSProperties }) => {
+ const sidebarTabProps = [
+ {
+ status: "Highlighted",
+ icon: ,
+ label: "Compose",
+ },
+ {
+ status: "Inactive",
+ icon: ,
+ label: "Search",
+ },
+ {
+ status: "Inactive",
+ icon: ,
+ label: "Settings",
+ },
+ ];
+ const sidebarTabProps1 = [
+ {
+ status: "Selected",
+ icon: ,
+ label: "Inbox",
+ override: {
+ height: "fit-content",
+ width: "239px",
+ },
+ },
+ {
+ status: "Inactive",
+ icon: ,
+ label: "Sent",
+ },
+ {
+ status: "Inactive",
+ icon: ,
+ label: "Send later",
+ },
+ {
+ status: "Inactive",
+ icon: ,
+ label: "Drafts",
+ },
+ {
+ status: "Inactive",
+ icon: ,
+ label: "Imports",
+ },
+ {
+ status: "Inactive",
+ icon: ,
+ label: "Spam",
+ },
+ {
+ status: "Inactive",
+ icon: ,
+ label: "Archive",
+ },
+ {
+ status: "Inactive",
+ icon: ,
+ label: "Trash",
+ },
+ ];
+ const sidebarTabProps2 = [
+ {
+ status: "Inactive",
+ icon: ,
+ label: "Contacts",
+ },
+ {
+ status: "Inactive",
+ icon: ,
+ label: "Invite",
+ },
+ {
+ status: "Inactive",
+ icon: ,
+ label: "Send feedback",
+ },
+ ];
+ return (
+
+
+
+ {sidebarTabProps.map((props, i) => (
+
+ ))}
+
+
+
+ {sidebarTabProps2.map((props, i) => (
+
+ ))}
+
+
+ );
+};
+
+const AryamansWorkspace = () => (
+
+
+
+
+
+ Skiff Mail
+ aryaman's workspace
+
+
+);
+
+const MailOptions = ({ sidebarTabProps1 }: any) => (
+
+
+
+ {sidebarTabProps1.map((props, i) => (
+
+ ))}
+
+
+ } label="aryaman@skiff.com" />
+
+
+
+);
diff --git a/components/SidebarTab.tsx b/components/SidebarTab.tsx
new file mode 100644
index 00000000..d15ac8ec
--- /dev/null
+++ b/components/SidebarTab.tsx
@@ -0,0 +1,99 @@
+import { InboxIcon } from "./InboxIcon";
+import styled from "styled-components";
+
+const Inbox = styled.p`
+ font-size: 15px;
+ font-weight: 300;
+ line-height: 19.5px;
+`;
+
+const Content = styled.div`
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 2px 5px 2px 9px;
+ border-radius: 6px;
+ width: 100%;
+ height: 32px;
+`;
+
+const SidebarTabComponent = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ height: fit-content;
+ padding: 0px 6px;
+ width: 239px;
+`;
+
+export const SidebarTab = ({
+ override,
+ status,
+ icon,
+ label,
+}: {
+ override?: React.CSSProperties;
+ status: string;
+ icon: React.ReactNode;
+ label: string;
+}) => {
+ const inboxStatus = {
+ Selected: {
+ color: "rgb(255, 255, 255)",
+ },
+ Inactive: {
+ color: "rgb(149, 149, 149)",
+ },
+ Highlighted: {
+ color: "rgb(255, 255, 255)",
+ },
+ }[status];
+ const contentStatus = {
+ Selected: {
+ backgroundColor: "rgb(41, 41, 41)",
+ },
+ Inactive: {
+ backgroundColor: "rgb(25, 25, 25)",
+ },
+ Highlighted: {
+ borderStyle: "solid",
+ borderColor: "rgb(51, 51, 51)",
+ borderWidth: "1px",
+ backgroundColor: "rgb(41, 41, 41)",
+ },
+ }[status];
+ const sidebarTabStatus = {
+ Selected: {
+ justifyContent: "center",
+ },
+ Inactive: {
+ justifyContent: "flex-start",
+ },
+ Highlighted: {
+ justifyContent: "flex-start",
+ },
+ }[status];
+ return (
+
+
+ {icon}
+
+ {label}
+
+
+
+ );
+};
diff --git a/components/Spam.tsx b/components/Spam.tsx
new file mode 100644
index 00000000..a14b4f60
--- /dev/null
+++ b/components/Spam.tsx
@@ -0,0 +1,9 @@
+import spam from "./spam.svg";
+import styled from "styled-components";
+const SpamComponent = styled.img`
+ width: 13px;
+ height: 13px;
+`;
+export const Spam = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/Trash.tsx b/components/Trash.tsx
new file mode 100644
index 00000000..10161e87
--- /dev/null
+++ b/components/Trash.tsx
@@ -0,0 +1,9 @@
+import trash from "./trash.svg";
+import styled from "styled-components";
+const TrashComponent = styled.img`
+ width: 11px;
+ height: 13px;
+`;
+export const Trash = ({ override }: { override?: React.CSSProperties }) => {
+ return ;
+};
diff --git a/components/archive.svg b/components/archive.svg
new file mode 100644
index 00000000..d6e4dc9b
--- /dev/null
+++ b/components/archive.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/at.svg b/components/at.svg
new file mode 100644
index 00000000..91fedd12
--- /dev/null
+++ b/components/at.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/calendar.svg b/components/calendar.svg
new file mode 100644
index 00000000..679ad376
--- /dev/null
+++ b/components/calendar.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/compose.svg b/components/compose.svg
new file mode 100644
index 00000000..a1e2cad3
--- /dev/null
+++ b/components/compose.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/contacts.svg b/components/contacts.svg
new file mode 100644
index 00000000..275961f3
--- /dev/null
+++ b/components/contacts.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/draft.svg b/components/draft.svg
new file mode 100644
index 00000000..d7c04260
--- /dev/null
+++ b/components/draft.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/import.svg b/components/import.svg
new file mode 100644
index 00000000..a93bc104
--- /dev/null
+++ b/components/import.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/inboxIcon.svg b/components/inboxIcon.svg
new file mode 100644
index 00000000..2d7680b5
--- /dev/null
+++ b/components/inboxIcon.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/invite.svg b/components/invite.svg
new file mode 100644
index 00000000..789421fc
--- /dev/null
+++ b/components/invite.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/mailIcon.png b/components/mailIcon.png
new file mode 100644
index 00000000..7b464b36
Binary files /dev/null and b/components/mailIcon.png differ
diff --git a/components/search.svg b/components/search.svg
new file mode 100644
index 00000000..1d06aa91
--- /dev/null
+++ b/components/search.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/send.svg b/components/send.svg
new file mode 100644
index 00000000..9ddbe459
--- /dev/null
+++ b/components/send.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/sendFeedback.svg b/components/sendFeedback.svg
new file mode 100644
index 00000000..de0a83ca
--- /dev/null
+++ b/components/sendFeedback.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/settings.svg b/components/settings.svg
new file mode 100644
index 00000000..6fc7b4d2
--- /dev/null
+++ b/components/settings.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/spam.svg b/components/spam.svg
new file mode 100644
index 00000000..329bac38
--- /dev/null
+++ b/components/spam.svg
@@ -0,0 +1,3 @@
+
diff --git a/components/trash.svg b/components/trash.svg
new file mode 100644
index 00000000..5c2501c3
--- /dev/null
+++ b/components/trash.svg
@@ -0,0 +1,3 @@
+