diff --git a/frontend/package.json b/frontend/package.json
index 2224d5a..390a1d5 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -10,8 +10,10 @@
"preview": "vite preview"
},
"dependencies": {
+ "@react-icons/all-files": "^4.1.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
+ "react-icons": "^5.2.1",
"react-router-dom": "^6.24.0",
"react-swipeable": "^7.0.1",
"swiper": "^11.1.4"
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml
index cd16f48..cee963e 100644
--- a/frontend/pnpm-lock.yaml
+++ b/frontend/pnpm-lock.yaml
@@ -8,12 +8,18 @@ importers:
.:
dependencies:
+ '@react-icons/all-files':
+ specifier: ^4.1.0
+ version: 4.1.0(react@18.3.1)
react:
specifier: ^18.3.1
version: 18.3.1
react-dom:
specifier: ^18.3.1
version: 18.3.1(react@18.3.1)
+ react-icons:
+ specifier: ^5.2.1
+ version: 5.2.1(react@18.3.1)
react-router-dom:
specifier: ^6.24.0
version: 6.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -286,6 +292,11 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
+ '@react-icons/all-files@4.1.0':
+ resolution: {integrity: sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==}
+ peerDependencies:
+ react: '*'
+
'@remix-run/router@1.17.0':
resolution: {integrity: sha512-2D6XaHEVvkCn682XBnipbJjgZUU7xjLtA4dGJRBVUKpEaDYOZMENZoZjAOSb7qirxt5RupjzZxz4fK2FO+EFPw==}
engines: {node: '>=14.0.0'}
@@ -1391,6 +1402,11 @@ packages:
peerDependencies:
react: ^18.3.1
+ react-icons@5.2.1:
+ resolution: {integrity: sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==}
+ peerDependencies:
+ react: '*'
+
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@@ -1857,6 +1873,10 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
+ '@react-icons/all-files@4.1.0(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
+
'@remix-run/router@1.17.0': {}
'@rollup/rollup-android-arm-eabi@4.18.0':
@@ -3065,6 +3085,10 @@ snapshots:
react: 18.3.1
scheduler: 0.23.2
+ react-icons@5.2.1(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+
react-is@16.13.1: {}
react-router-dom@6.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
diff --git a/frontend/src/App.css b/frontend/src/App.css
index 8000d6b..e69de29 100644
--- a/frontend/src/App.css
+++ b/frontend/src/App.css
@@ -1,50 +0,0 @@
-/* index.css */
-
-html, body {
- margin: 0;
- padding: 0;
- height: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
-.swipeable-cards-container {
- height: 100vh;
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
-.swipeable-card {
- width: 300px;
- height: 400px;
- margin: 10px;
- background-color: #f2f2f2;
- display: flex;
- justify-content: center;
- align-items: center;
- font-size: 1.5em;
- border-radius: 10px;
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
- transition: transform 0.6s ease;
- transform-style: preserve-3d;
-}
-
-.swipeable-card.flipped {
- transform: rotateY(180deg);
-}
-
-.swipeable-card:active {
- transform: scale(0.95);
-}
-
-.swipeable-card-content {
- backface-visibility: hidden;
-}
-
-.swipeable-card-back {
- position: absolute;
- transform: rotateY(180deg);
- backface-visibility: hidden;
-}
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 72ced54..b8df678 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -1,23 +1,13 @@
import React from 'react';
-import {Link, Route, Routes} from 'react-router-dom';
-import Home from './pages/Home';
-import About from './pages/About';
-import './App.css'
+import './App.css';
+import TopMenu from './components/TopMenu';
+import Menu from './components/Menu';
function App() {
return (
<>
-
Top
-
-
- }/>
- }/>
-
+
+
>
)
}
diff --git a/frontend/src/components/Menu.css b/frontend/src/components/Menu.css
new file mode 100644
index 0000000..15d473b
--- /dev/null
+++ b/frontend/src/components/Menu.css
@@ -0,0 +1,23 @@
+/* Menu.css */
+
+.menu {
+ position: fixed;
+ bottom: 0;
+ width: 100%;
+ background-color: #333;
+ display: flex;
+ justify-content: space-around;
+ padding: 22px 0;
+}
+
+.menu-button {
+ color: white;
+ background-color: transparent;
+ border: none;
+ font-size: 1em;
+ cursor: pointer;
+}
+
+.menu-button:hover {
+ color: #aaa;
+}
diff --git a/frontend/src/components/Menu.tsx b/frontend/src/components/Menu.tsx
new file mode 100644
index 0000000..ededbd2
--- /dev/null
+++ b/frontend/src/components/Menu.tsx
@@ -0,0 +1,24 @@
+import React from 'react';
+import {Link, Route, Routes} from 'react-router-dom';
+import Home from '../pages/Home';
+import About from '../pages/About';
+import { IoIosHome } from "react-icons/io";
+import './Menu.css';
+
+function Menu() {
+ return (
+ <>
+
+
+
+
+
+ }/>
+ }/>
+
+
+ >
+ );
+}
+
+export default Menu;
\ No newline at end of file
diff --git a/frontend/src/components/SwipeableCard.css b/frontend/src/components/SwipeableCard.css
new file mode 100644
index 0000000..1606308
--- /dev/null
+++ b/frontend/src/components/SwipeableCard.css
@@ -0,0 +1,32 @@
+.swipeable-card {
+ width: 300px;
+ height: 400px;
+ margin: 10px;
+ background-color: #f2f2f2;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 1.5em;
+ border-radius: 10px;
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
+ transition: transform 0.6s ease;
+ transform-style: preserve-3d;
+}
+
+.swipeable-card.flipped {
+ transform: rotateY(180deg);
+}
+
+.swipeable-card:active {
+ transform: scale(0.95);
+}
+
+.swipeable-card-content {
+ backface-visibility: hidden;
+}
+
+.swipeable-card-back {
+ position: absolute;
+ transform: rotateY(180deg);
+ backface-visibility: hidden;
+}
\ No newline at end of file
diff --git a/frontend/src/components/SwipeableCard.tsx b/frontend/src/components/SwipeableCard.tsx
index c34335a..11664a4 100644
--- a/frontend/src/components/SwipeableCard.tsx
+++ b/frontend/src/components/SwipeableCard.tsx
@@ -1,5 +1,6 @@
import React, { useState } from 'react';
import { useSwipeable } from 'react-swipeable';
+import './SwipeableCard.css'
interface SwipeableCardProps {
content: string;
diff --git a/frontend/src/components/TopMenu.css b/frontend/src/components/TopMenu.css
new file mode 100644
index 0000000..85ee7c6
--- /dev/null
+++ b/frontend/src/components/TopMenu.css
@@ -0,0 +1,24 @@
+/* TopMenu.css */
+
+.top-menu {
+ position: fixed;
+ top: 0;
+ width: 100%;
+ background-color: #333;
+ display: flex;
+ justify-content: space-around;
+ padding: 10px 0;
+ z-index: 1000; /* Ensures the menu stays on top */
+}
+
+.menu-button {
+ color: white;
+ background-color: transparent;
+ border: none;
+ font-size: 1em;
+ cursor: pointer;
+}
+
+.menu-button:hover {
+ color: #aaa;
+}
diff --git a/frontend/src/components/TopMenu.tsx b/frontend/src/components/TopMenu.tsx
new file mode 100644
index 0000000..d3e3afa
--- /dev/null
+++ b/frontend/src/components/TopMenu.tsx
@@ -0,0 +1,15 @@
+import React from 'react';
+import './TopMenu.css';
+import {IoIosSettings} from "react-icons/io";
+
+function TopMenu() {
+ return (
+
+
+
+ );
+}
+
+export default TopMenu;
diff --git a/frontend/src/pages/Home.css b/frontend/src/pages/Home.css
new file mode 100644
index 0000000..ef72bb2
--- /dev/null
+++ b/frontend/src/pages/Home.css
@@ -0,0 +1,8 @@
+.swipeable-cards-container {
+ height: 100vh;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+
diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx
index 711ae73..fe22af0 100644
--- a/frontend/src/pages/Home.tsx
+++ b/frontend/src/pages/Home.tsx
@@ -1,14 +1,7 @@
import React, {useState} from 'react';
-// Import Swiper styles
-import "swiper/css";
-import "swiper/css/effect-coverflow";
-import 'swiper/css/navigation';
-import 'swiper/css/pagination';
import SwipeableCard from "../components/SwipeableCard.tsx";
-
-// Initialize Swiper modules
-// SwiperCore.use([Navigation, Pagination]);
+import './Home.css'
function Home() {
const [cards] = useState([