diff --git a/src/App.tsx b/src/App.tsx index e450d61..2569b78 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,8 +1,10 @@ +import { Home } from "./components/home/Home"; import { Tabs } from "./components/tabs/Tabs"; function App() { return (
+
); diff --git a/src/assets/icons/book.svg b/src/assets/icons/book.svg new file mode 100644 index 0000000..45cd3ba --- /dev/null +++ b/src/assets/icons/book.svg @@ -0,0 +1 @@ +ionicons-v5-h \ No newline at end of file diff --git a/src/assets/icons/grid.svg b/src/assets/icons/grid.svg new file mode 100644 index 0000000..388d912 --- /dev/null +++ b/src/assets/icons/grid.svg @@ -0,0 +1 @@ +ionicons-v5-i \ No newline at end of file diff --git a/src/assets/icons/home.svg b/src/assets/icons/home.svg new file mode 100644 index 0000000..2643529 --- /dev/null +++ b/src/assets/icons/home.svg @@ -0,0 +1 @@ +ionicons-v5-i \ No newline at end of file diff --git a/src/assets/icons/more.svg b/src/assets/icons/more.svg new file mode 100644 index 0000000..90c050b --- /dev/null +++ b/src/assets/icons/more.svg @@ -0,0 +1 @@ +ionicons-v5-f \ No newline at end of file diff --git a/src/assets/icons/stats.svg b/src/assets/icons/stats.svg new file mode 100644 index 0000000..0756828 --- /dev/null +++ b/src/assets/icons/stats.svg @@ -0,0 +1 @@ +ionicons-v5-q \ No newline at end of file diff --git a/src/assets/styles/common.scss b/src/assets/styles/common.scss new file mode 100644 index 0000000..2a7fe61 --- /dev/null +++ b/src/assets/styles/common.scss @@ -0,0 +1,6 @@ +.page { + width: 100vw; + height: 100vh; + background-color: var(--creamy-white); + overflow: auto; +} \ No newline at end of file diff --git a/src/components/home/Home.module.scss b/src/components/home/Home.module.scss new file mode 100644 index 0000000..d52d3d2 --- /dev/null +++ b/src/components/home/Home.module.scss @@ -0,0 +1 @@ +@import '../../assets/styles/common.scss'; \ No newline at end of file diff --git a/src/components/home/Home.tsx b/src/components/home/Home.tsx new file mode 100644 index 0000000..2a4e2cd --- /dev/null +++ b/src/components/home/Home.tsx @@ -0,0 +1,6 @@ +import React from "react"; +import styles from './Home.module.scss'; + +export const Home: React.FC = () => { + return
+} \ No newline at end of file diff --git a/src/components/tabs/Tabs.module.scss b/src/components/tabs/Tabs.module.scss index e69de29..e8be98d 100644 --- a/src/components/tabs/Tabs.module.scss +++ b/src/components/tabs/Tabs.module.scss @@ -0,0 +1,72 @@ +$tab-width: 95vw; + +.tabs { + position: fixed; + bottom: 10px; + width: $tab-width; + left: calc((100vw - #{$tab-width}) / 2); + display: flex; + background-color: white; + border-radius: 1.5rem; + box-shadow: 0px 0px 10px -5px var(--grey); + height: 5rem; + align-items: center; + justify-content: center; + + button { + width: calc(#{$tab-width} / 5); + border: none; + background-color: transparent; + position: relative; + + &::before { + content: ''; + position: absolute; + left: calc(50% - 2.5px); + bottom: -2px; + width: 5px; + height: 5px; + border-radius: 50%; + background-color: var(--teal); + opacity: 0; + transition: opacity 0.3s; + } + + svg { + width: 1.8rem; + height: 1.8rem; + stroke: var(--grey); + transition: transform 0.3s; + } + + &.active { + &::before { + opacity: 1; + } + + svg { + stroke: var(--teal); + transform: translateY(-2px); + } + } + } + + .utility { + width: calc(#{$tab-width} / 5); + + button { + box-shadow: 0px 0px 10px -2px var(--grey); + width: 5rem; + height: 5rem; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto; + + svg { + fill: var(--red); + } + } + } +} \ No newline at end of file diff --git a/src/components/tabs/Tabs.tsx b/src/components/tabs/Tabs.tsx index 2c6d4b6..beece8c 100644 --- a/src/components/tabs/Tabs.tsx +++ b/src/components/tabs/Tabs.tsx @@ -1,6 +1,29 @@ import React from "react"; import styles from './Tabs.module.scss'; +import { ReactComponent as HomeIcon } from '../../assets/icons/home.svg'; +import { ReactComponent as GridIcon } from '../../assets/icons/grid.svg'; +import { ReactComponent as BookIcon } from '../../assets/icons/book.svg'; +import { ReactComponent as StatsIcon } from '../../assets/icons/stats.svg'; +import { ReactComponent as MoreIcon } from '../../assets/icons/more.svg'; export const Tabs: React.FC = () => { - return

Tabs

+ return
+ + +
+ +
+ + +
} \ No newline at end of file diff --git a/src/index.css b/src/index.css index 6f3b81d..07c1180 100644 --- a/src/index.css +++ b/src/index.css @@ -13,6 +13,9 @@ --orange: #f1be83; --red: #d47077; --blue: #668fe1; + --teal: #4e9096; --black: #11253d; --grey: #586471; + --creamy-white: #fef8ec; + font-size: 62.5%; } \ No newline at end of file