diff --git a/package.json b/package.json
index 120fc85..6327f03 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,9 @@
"@testing-library/user-event": "^13.5.0",
"react": "^18.0.0",
"react-dom": "^18.0.0",
+ "react-router-dom": "^6.3.0",
"react-scripts": "5.0.1",
+ "styled-components": "^5.3.5",
"web-vitals": "^2.1.4"
},
"scripts": {
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..04ffce0
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/index.html b/public/index.html
index aa069f2..5b58cf0 100644
--- a/public/index.html
+++ b/public/index.html
@@ -24,7 +24,7 @@
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
-
React App
+ Telegram to Notion Bot
diff --git a/src/App.js b/src/App.js
deleted file mode 100644
index d7991e6..0000000
--- a/src/App.js
+++ /dev/null
@@ -1,8 +0,0 @@
-function App() {
- return (
- <>
- >
- );
-}
-
-export default App;
\ No newline at end of file
diff --git a/src/App.jsx b/src/App.jsx
new file mode 100644
index 0000000..197e417
--- /dev/null
+++ b/src/App.jsx
@@ -0,0 +1,27 @@
+import {
+ BrowserRouter as Router,
+ Routes,
+ Route,
+ Link
+} from "react-router-dom";
+
+import Header from './components/Header/Header'
+
+import Auth from './Pages/Auth'
+import Index from './Pages/Index/Index'
+
+function App() {
+ return (
+ <>
+
+
+
+ } />
+ } />
+
+
+ >
+ );
+}
+
+export default App;
\ No newline at end of file
diff --git a/src/Pages/Auth.jsx b/src/Pages/Auth.jsx
new file mode 100644
index 0000000..a6059a2
--- /dev/null
+++ b/src/Pages/Auth.jsx
@@ -0,0 +1,9 @@
+function Auth() {
+
+ return (
+
+
+ )
+}
+
+export default Auth
\ No newline at end of file
diff --git a/src/Pages/Index/Index.jsx b/src/Pages/Index/Index.jsx
new file mode 100644
index 0000000..eb74c82
--- /dev/null
+++ b/src/Pages/Index/Index.jsx
@@ -0,0 +1,112 @@
+import background from './background.svg'
+import styled from "styled-components"
+
+function Index() {
+
+ const IndexStyles = styled.div`
+
+ height: calc(100vh - 15vh - 1px); //Minus header height and 1 pixel for prevent scrollbar
+ width: 100%;
+
+ display: flex;
+ flex-direction: column;
+
+ aspect-ratio: 960/300;
+
+ background-image: url(${background});
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: cover;
+
+ .title-list {
+
+ color: #000;
+
+ li {
+
+ display: flex;
+ align-items: flex-end;
+
+ margin-bottom: 1vh;
+
+ a {
+
+ width: fit-content;
+ color: #000;
+ text-decoration: none;
+
+ &:hover h2 {
+ text-decoration: underline!important;
+ }
+ }
+
+ h2 {
+ display: inline-block;
+ margin: 0;
+ font-size: 25pt;
+ }
+
+ span {
+ display: inline-block;
+
+ color: #999;
+
+ margin-left: 1vw;
+ margin-top: 5px;
+
+ align-self: center;
+ }
+ }
+ }
+
+ .link-to-bot {
+
+ width: fit-content;
+
+ color: #fff;
+ background-color: #4797ff;
+
+ border-radius: 5px;
+
+ margin-top: 6vh;
+ margin-left: 1vw;
+ padding: 3vh 6vw;
+
+ font-size: 20pt;
+ font-weight: bold;
+ text-decoration: none;
+
+ transition: 0.4s ease-in-out;
+
+ &:hover {
+ background-color: #0088cc;
+ transition: 0.4s ease-in-out;
+ }
+ }
+ `
+
+ const listData = [
+ {text: "Free"},
+ {text: "Open Source", link: "https://github.com/FranP-code/Telegram-to-Notion-Bot"},
+ {text: "Unlimited"},
+ {text: "Forever", secondaryText: "(while I can afford it)"}
+ ]
+
+ return (
+
+
+
+
+ )
+}
+
+export default Index
\ No newline at end of file
diff --git a/src/Pages/Index/background.svg b/src/Pages/Index/background.svg
new file mode 100644
index 0000000..89d7bdd
--- /dev/null
+++ b/src/Pages/Index/background.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/Pages/Index/icon (rounded borders).png b/src/Pages/Index/icon (rounded borders).png
new file mode 100644
index 0000000..da6f91a
Binary files /dev/null and b/src/Pages/Index/icon (rounded borders).png differ
diff --git a/src/components/Header/Header.jsx b/src/components/Header/Header.jsx
new file mode 100644
index 0000000..6f871b7
--- /dev/null
+++ b/src/components/Header/Header.jsx
@@ -0,0 +1,58 @@
+import icon from './icon.png'
+import styled from 'styled-components'
+
+function Header() {
+
+ const HeaderStyles = styled.header`
+
+ height: 15vh;
+
+ display: flex;
+ align-items: center;
+
+ padding: 0px 2vw;
+
+ border-bottom: 1px solid #eee;
+
+ .logotype {
+ display: flex;
+ align-items: center;
+
+ img {
+ width: 80px;
+ height: 80px;
+
+ margin-right: 1vw;
+
+ &:hover {
+ animation: rotate-image 0.5s cubic-bezier(1.000, 0.000, 0.000, 1.000) both;
+ }
+ }
+
+ @keyframes rotate-image {
+ 0% {
+ transform: rotate(0deg)
+ }
+
+ 100% {
+ transform: rotate(360deg)
+ }
+ }
+ }
+
+ `
+
+ return (
+
+
+

+
Telegram to Notion Bot
+
+
+
+
+
+ )
+}
+
+export default Header
\ No newline at end of file
diff --git a/src/components/Header/icon.png b/src/components/Header/icon.png
new file mode 100644
index 0000000..5b4cc61
Binary files /dev/null and b/src/components/Header/icon.png differ
diff --git a/src/index.js b/src/index.js
index 5d4fdcf..0eb610a 100644
--- a/src/index.js
+++ b/src/index.js
@@ -3,6 +3,8 @@ import ReactDOM from 'react-dom/client';
import App from './App';
import reportWebVitals from './reportWebVitals';
+import './styles.css'
+
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
diff --git a/src/styles.css b/src/styles.css
new file mode 100644
index 0000000..b5d68ad
--- /dev/null
+++ b/src/styles.css
@@ -0,0 +1,20 @@
+html, body {
+ margin: 0;
+ padding: 0;
+}
+
+body {
+ @import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;700;900&display=swap");
+ font-family: "Inter", sans-serif;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ margin: 0;
+}
+
+img {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/src/styles.css.map b/src/styles.css.map
new file mode 100644
index 0000000..85a73d9
--- /dev/null
+++ b/src/styles.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["styles.scss","styles.css"],"names":[],"mappings":"AAAA;EACI,SAAA;EACA,UAAA;ACCJ;;ADEA;EACY,+FAAA;EACR,gCAAA;ACCJ;;ADEA;EACI,SAAA;ACCJ;;ADEA;EACI,yBAAA;KAAA,sBAAA;MAAA,qBAAA;UAAA,iBAAA;ACCJ","file":"styles.css"}
\ No newline at end of file
diff --git a/src/styles.scss b/src/styles.scss
new file mode 100644
index 0000000..54a049f
--- /dev/null
+++ b/src/styles.scss
@@ -0,0 +1,17 @@
+html, body {
+ margin: 0;
+ padding: 0;
+}
+
+body {
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;700;900&display=swap');
+ font-family: 'Inter', sans-serif;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ margin: 0;
+}
+
+img {
+ user-select: none;
+}
\ No newline at end of file