From d5475774bb7341a9dba3bb2124832d95fb00bc9a Mon Sep 17 00:00:00 2001
From: Marc Taylor <marc@taylorit.com>
Date: Wed, 17 Apr 2024 11:02:31 +0200
Subject: [PATCH] created project structure

---
 theme-costume-app/src/About.js                |  14 ++
 theme-costume-app/src/App.js                  |  46 +++--
 theme-costume-app/src/Home.js                 |  31 ++++
 theme-costume-app/src/assets/Halloween.jpg    | Bin 0 -> 8199 bytes
 theme-costume-app/src/components/Carousel.js  | 126 ++++++++++++++
 .../src/components/MyComponent.js             |  29 ++++
 .../src/components/ResponsiveAppBar.js        | 162 ++++++++++++++++++
 theme-costume-app/src/index.js                |   6 +-
 theme-costume-app/src/theme.js                |  19 ++
 9 files changed, 414 insertions(+), 19 deletions(-)
 create mode 100644 theme-costume-app/src/About.js
 create mode 100644 theme-costume-app/src/Home.js
 create mode 100644 theme-costume-app/src/assets/Halloween.jpg
 create mode 100644 theme-costume-app/src/components/Carousel.js
 create mode 100644 theme-costume-app/src/components/MyComponent.js
 create mode 100644 theme-costume-app/src/components/ResponsiveAppBar.js
 create mode 100644 theme-costume-app/src/theme.js

diff --git a/theme-costume-app/src/About.js b/theme-costume-app/src/About.js
new file mode 100644
index 0000000..84f18b2
--- /dev/null
+++ b/theme-costume-app/src/About.js
@@ -0,0 +1,14 @@
+import React from 'react';
+import MyComponent from './components/MyComponent';
+
+const About = () => {
+  return (
+    <div>
+      <h2>About Page</h2>
+      <p>Learn more about our company.</p>
+      <MyComponent />
+    </div>
+  );
+};
+
+export default About;
diff --git a/theme-costume-app/src/App.js b/theme-costume-app/src/App.js
index 3784575..f3a1ba1 100644
--- a/theme-costume-app/src/App.js
+++ b/theme-costume-app/src/App.js
@@ -1,24 +1,34 @@
-import logo from './logo.svg';
-import './App.css';
+import React from 'react';
+import { BrowserRouter as Router, Route, Routes, Link } from 'react-router-dom';
+import Home from './Home';
+import About from './About';
+import ResponsiveAppBar from './components/ResponsiveAppBar';
 
 function App() {
   return (
-    <div className="App">
-      <header className="App-header">
-        <img src={logo} className="App-logo" alt="logo" />
-        <p>
-          Edit <code>src/App.js</code> and save to reload.
-        </p>
-        <a
-          className="App-link"
-          href="https://reactjs.org"
-          target="_blank"
-          rel="noopener noreferrer"
-        >
-          Learn React
-        </a>
-      </header>
-    </div>
+    <Router>
+      <div className="App">
+        <ResponsiveAppBar />
+        <h1>Welcome to My React App</h1>
+        <nav>
+          <ul>
+            <li>
+              <Link to="/">Home</Link>
+            </li>
+            <li>
+              <Link to="/about">About</Link>
+            </li>
+          </ul>
+        </nav>
+          {/* Route for Home page */}
+        <Routes>
+          <Route exact path="/" Component={Home} />
+
+          {/* Route for About page */}
+          <Route path="/about" Component={About} />
+        </Routes>  
+      </div>
+    </Router>
   );
 }
 
diff --git a/theme-costume-app/src/Home.js b/theme-costume-app/src/Home.js
new file mode 100644
index 0000000..b1b2a66
--- /dev/null
+++ b/theme-costume-app/src/Home.js
@@ -0,0 +1,31 @@
+import React from 'react';
+import Carousel from './components/Carousel';
+import halloweenImg from './assets/Halloween.jpg'
+import footballImg from './assets/Halloween.jpg'
+import collegeImg from './assets/Halloween.jpg'
+const themeCategoryImg = [
+  {
+    name: 'Halloween',
+    source: halloweenImg,
+  },
+  {
+    name: 'Football',
+    source: footballImg, 
+  },
+  {
+    name: 'College',
+    source: collegeImg,
+  }
+]
+
+const Home = () => {
+  return (
+    <div>
+      <Carousel showingItems={1} items={themeCategoryImg}/>
+      <h2>Home Page</h2>
+      <p>Welcome to the Home page!</p>
+    </div>
+  );
+};
+
+export default Home;
diff --git a/theme-costume-app/src/assets/Halloween.jpg b/theme-costume-app/src/assets/Halloween.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b25c2da47a23954aa754cb83520296f9f68d52b7
GIT binary patch
literal 8199
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
YJ8aV0@=<~Dy276cFI9HRT>O6%0HTT*#sB~S

literal 0
HcmV?d00001

diff --git a/theme-costume-app/src/components/Carousel.js b/theme-costume-app/src/components/Carousel.js
new file mode 100644
index 0000000..1d04483
--- /dev/null
+++ b/theme-costume-app/src/components/Carousel.js
@@ -0,0 +1,126 @@
+import React, { useState } from 'react';
+
+const NavigationComponent = ({ goToNextPage, goToPreviousPage, currentPage, totalPages }) => {
+  const renderDots = () => {
+    const dots = [];
+    for (let i = 1; i <= totalPages; i++) {
+      dots.push(
+        <span
+          key={i}
+          style={{
+            fontSize: 20,
+            margin: '0 2px',
+            color: i === currentPage ? 'black' : 'gray',
+          }}
+        >
+          ●
+        </span>
+      );
+    }
+    return dots;
+  };
+
+  return (
+    <div style={{ display: 'flex', justifyContent: 'space-between' }}>
+      <div style={{ display: 'flex', alignItems: 'center', marginRight: 10 }}>{renderDots()}</div>
+      <button onClick={goToPreviousPage}>&lt;</button>
+      <button onClick={goToNextPage}>&gt;</button>
+    </div>
+  );
+};
+
+const MoviesDisplay = ({ setOfMovies }) => {
+  return (
+    <div style={styles.movies}>
+      {setOfMovies.map((movie, index) => (
+        <div key={index} style={styles.movie}>
+          <img src={movie.source} alt={movie.name} style={styles.image} />
+          <p style={styles.movieText}>{movie.name}</p>
+        </div>
+      ))}
+    </div>
+  );
+};
+
+const Carousel = ({ showingItems, items }) => {
+  const [currentPage, setCurrentPage] = useState(1);
+  const TOTAL_PAGES = Math.ceil(items.length / showingItems);
+
+  const previousPage = () => {
+    if (currentPage === 1) {
+      setCurrentPage(TOTAL_PAGES);
+    } else {
+      setCurrentPage(currentPage - 1);
+    }
+  };
+
+  const nextPage = () => {
+    if (currentPage === TOTAL_PAGES) {
+      setCurrentPage(1);
+    } else {
+      setCurrentPage(currentPage + 1);
+    }
+  };
+
+  const groupingMovies = [];
+  for (let i = 0; i < items.length; i += showingItems) {
+    groupingMovies.push(items.slice(i, i + showingItems));
+  }
+
+  return (
+    <div style={styles.container}>
+      <div style={styles.topRow}>
+        <h3>Recently Added</h3>
+        <div style={{ display: 'flex', alignItems: 'center' }}>
+          <NavigationComponent
+            goToPreviousPage={previousPage}
+            goToNextPage={nextPage}
+            totalPages={TOTAL_PAGES}
+            currentPage={currentPage}
+          />
+        </div>
+      </div>
+      <MoviesDisplay setOfMovies={groupingMovies[currentPage - 1]} />
+    </div>
+  );
+};
+
+const styles = {
+  container: {
+    backgroundColor: '#fff',
+    width: '95%',
+  },
+  topRow: {
+    display: 'flex',
+    justifyContent: 'space-between',
+    padding: 8,
+    width: '100%',
+    backgroundColor: 'white',
+    alignItems: 'center',
+  },
+  movies: {
+    display: 'flex',
+    flexDirection: 'row',
+    flexWrap: 'wrap',
+    justifyContent: 'center',
+    width: '100%',
+  },
+  image: {
+    margin: '0 5px',
+    width: '100vw',
+    height: 150,
+    borderRadius: 10,
+  },
+  movie: {
+    flex: '1 0 30%', // Adjust the width based on the number of items per row
+    margin: 10,
+    textAlign: 'center',
+  },
+  movieText: {
+    whiteSpace: 'nowrap',
+    overflow: 'hidden',
+    textOverflow: 'ellipsis',
+  },
+};
+
+export default Carousel;
diff --git a/theme-costume-app/src/components/MyComponent.js b/theme-costume-app/src/components/MyComponent.js
new file mode 100644
index 0000000..613f6ca
--- /dev/null
+++ b/theme-costume-app/src/components/MyComponent.js
@@ -0,0 +1,29 @@
+// MyComponent.js
+import React from 'react';
+import { Button, ThemeProvider } from '@mui/material';
+import theme from '../theme';
+
+const MyComponent = () => {
+  return (
+    <ThemeProvider theme={theme}>
+      <div>
+        <Button
+          variant="contained"
+          color="primary"
+          sx={{
+            color: (theme) => theme.palette.text.primary,
+            backgroundColor: (theme) => theme.palette.primary.main,
+            fontSize: (theme) => `${theme.typography.fontSize}px`,
+            padding: '10px 20px',
+            borderRadius: '4px',
+            cursor: 'pointer',
+          }}
+        >
+          Submit
+        </Button>
+      </div>
+    </ThemeProvider>
+  );
+};
+
+export default MyComponent;
diff --git a/theme-costume-app/src/components/ResponsiveAppBar.js b/theme-costume-app/src/components/ResponsiveAppBar.js
new file mode 100644
index 0000000..8c435ab
--- /dev/null
+++ b/theme-costume-app/src/components/ResponsiveAppBar.js
@@ -0,0 +1,162 @@
+import * as React from 'react';
+import AppBar from '@mui/material/AppBar';
+import Box from '@mui/material/Box';
+import Toolbar from '@mui/material/Toolbar';
+import IconButton from '@mui/material/IconButton';
+import Typography from '@mui/material/Typography';
+import Menu from '@mui/material/Menu';
+import MenuIcon from '@mui/icons-material/Menu';
+import Container from '@mui/material/Container';
+import Avatar from '@mui/material/Avatar';
+import Button from '@mui/material/Button';
+import Tooltip from '@mui/material/Tooltip';
+import MenuItem from '@mui/material/MenuItem';
+import AdbIcon from '@mui/icons-material/Adb';
+
+const pages = ['Products', 'Pricing', 'Blog'];
+const settings = ['Profile', 'Account', 'Dashboard', 'Logout'];
+
+function ResponsiveAppBar() {
+  const [anchorElNav, setAnchorElNav] = React.useState(null);
+  const [anchorElUser, setAnchorElUser] = React.useState(null);
+
+  const handleOpenNavMenu = (event) => {
+    setAnchorElNav(event.currentTarget);
+  };
+  const handleOpenUserMenu = (event) => {
+    setAnchorElUser(event.currentTarget);
+  };
+
+  const handleCloseNavMenu = () => {
+    setAnchorElNav(null);
+  };
+
+  const handleCloseUserMenu = () => {
+    setAnchorElUser(null);
+  };
+
+  return (
+    <AppBar position="static">
+      <Container maxWidth="xl">
+        <Toolbar disableGutters>
+          <AdbIcon sx={{ display: { xs: 'none', md: 'flex' }, mr: 1 }} />
+          <Typography
+            variant="h6"
+            noWrap
+            component="a"
+            href="#app-bar-with-responsive-menu"
+            sx={{
+              mr: 2,
+              display: { xs: 'none', md: 'flex' },
+              fontFamily: 'monospace',
+              fontWeight: 700,
+              letterSpacing: '.3rem',
+              color: 'inherit',
+              textDecoration: 'none',
+            }}
+          >
+            LOGO
+          </Typography>
+
+          <Box sx={{ flexGrow: 1, display: { xs: 'flex', md: 'none' } }}>
+            <IconButton
+              size="large"
+              aria-label="account of current user"
+              aria-controls="menu-appbar"
+              aria-haspopup="true"
+              onClick={handleOpenNavMenu}
+              color="inherit"
+            >
+              <MenuIcon />
+            </IconButton>
+            <Menu
+              id="menu-appbar"
+              anchorEl={anchorElNav}
+              anchorOrigin={{
+                vertical: 'bottom',
+                horizontal: 'left',
+              }}
+              keepMounted
+              transformOrigin={{
+                vertical: 'top',
+                horizontal: 'left',
+              }}
+              open={Boolean(anchorElNav)}
+              onClose={handleCloseNavMenu}
+              sx={{
+                display: { xs: 'block', md: 'none' },
+              }}
+            >
+              {pages.map((page) => (
+                <MenuItem key={page} onClick={handleCloseNavMenu}>
+                  <Typography textAlign="center">{page}</Typography>
+                </MenuItem>
+              ))}
+            </Menu>
+          </Box>
+          <AdbIcon sx={{ display: { xs: 'flex', md: 'none' }, mr: 1 }} />
+          <Typography
+            variant="h5"
+            noWrap
+            component="a"
+            href="#app-bar-with-responsive-menu"
+            sx={{
+              mr: 2,
+              display: { xs: 'flex', md: 'none' },
+              flexGrow: 1,
+              fontFamily: 'monospace',
+              fontWeight: 700,
+              letterSpacing: '.3rem',
+              color: 'inherit',
+              textDecoration: 'none',
+            }}
+          >
+            LOGO
+          </Typography>
+          <Box sx={{ flexGrow: 1, display: { xs: 'none', md: 'flex' } }}>
+            {pages.map((page) => (
+              <Button
+                key={page}
+                onClick={handleCloseNavMenu}
+                sx={{ my: 2, color: 'white', display: 'block' }}
+              >
+                {page}
+              </Button>
+            ))}
+          </Box>
+
+          <Box sx={{ flexGrow: 0 }}>
+            <Tooltip title="Open settings">
+              <IconButton onClick={handleOpenUserMenu} sx={{ p: 0 }}>
+                <Avatar alt="Remy Sharp" src="/static/images/avatar/2.jpg" />
+              </IconButton>
+            </Tooltip>
+            <Menu
+              sx={{ mt: '45px' }}
+              id="menu-appbar"
+              anchorEl={anchorElUser}
+              anchorOrigin={{
+                vertical: 'top',
+                horizontal: 'right',
+              }}
+              keepMounted
+              transformOrigin={{
+                vertical: 'top',
+                horizontal: 'right',
+              }}
+              open={Boolean(anchorElUser)}
+              onClose={handleCloseUserMenu}
+            >
+              {settings.map((setting) => (
+                <MenuItem key={setting} onClick={handleCloseUserMenu}>
+                  <Typography textAlign="center">{setting}</Typography>
+                </MenuItem>
+              ))}
+            </Menu>
+          </Box>
+        </Toolbar>
+      </Container>
+    </AppBar>
+  );
+}
+export default ResponsiveAppBar;
diff --git a/theme-costume-app/src/index.js b/theme-costume-app/src/index.js
index d563c0f..3692082 100644
--- a/theme-costume-app/src/index.js
+++ b/theme-costume-app/src/index.js
@@ -3,11 +3,15 @@ import ReactDOM from 'react-dom/client';
 import './index.css';
 import App from './App';
 import reportWebVitals from './reportWebVitals';
+import { ThemeProvider } from '@mui/material/styles';
+import theme from './theme';
 
 const root = ReactDOM.createRoot(document.getElementById('root'));
 root.render(
   <React.StrictMode>
-    <App />
+    <ThemeProvider theme={theme}>
+      <App />
+    </ThemeProvider>
   </React.StrictMode>
 );
 
diff --git a/theme-costume-app/src/theme.js b/theme-costume-app/src/theme.js
new file mode 100644
index 0000000..52293f6
--- /dev/null
+++ b/theme-costume-app/src/theme.js
@@ -0,0 +1,19 @@
+import { createTheme } from '@mui/material/styles';
+
+// Define your custom theme
+const theme = createTheme({
+  palette: {
+    primary: {
+      main: '#cf32c1',
+      secondary: '#10e858',
+    },
+    secondary: {
+      main: '#f50057',
+    },
+    text: {
+      primary: "#10e858",
+    }
+  },
+});
+
+export default theme;
-- 
GitLab