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 @@ + + +