Skip to content

Commit

Permalink
Created updated landing page for F!rosh Week 2T4
Browse files Browse the repository at this point in the history
  • Loading branch information
ashleyleal committed Jun 3, 2024
1 parent 2c2925a commit 3b2b4da
Show file tree
Hide file tree
Showing 7 changed files with 426 additions and 138 deletions.
18 changes: 13 additions & 5 deletions client/src/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ import { SnackbarProvider } from './util/SnackbarProvider';
import { getScuntSettings } from './state/scuntSettings/saga';
import { getUserInfo } from './state/user/saga';

import { LandingPage } from './pages/Initial/LandingPage';

const readyForFrosh = false;

export default function App() {
const dispatch = useDispatch();
useEffect(() => {
Expand All @@ -24,11 +28,15 @@ export default function App() {

return (
<DarkModeProvider>
<SnackbarProvider>
<BrowserRouter>
<TransitionRoutes />
</BrowserRouter>
</SnackbarProvider>
{readyForFrosh ? (
<SnackbarProvider>
<BrowserRouter>
<TransitionRoutes />
</BrowserRouter>
</SnackbarProvider>
) : (
<LandingPage />
)}
</DarkModeProvider>
);
}
Expand Down
2 changes: 2 additions & 0 deletions client/src/assets/social/instagram-brands-dark-purple.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
57 changes: 57 additions & 0 deletions client/src/pages/Initial/AshLanding/AshLanding.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import React from 'react';
import PropTypes from 'prop-types';
import './AshLanding.scss';
import InstagramIcon from '../../../assets/social/instagram-brands-dark-purple.svg';

const InstagramButton = ({ link, text }) => {
return (
<a href={link} target="_blank" rel="noreferrer" className="no-link-style">
<div className="button">
<img src={InstagramIcon} alt="Instagram Icon" className="button-icon" />
<span className="button-text">{text}</span>
</div>
</a>
);
};

InstagramButton.propTypes = {
link: PropTypes.string.isRequired,
text: PropTypes.string.isRequired,
};

const AshLanding = () => {
return (
<>
<div className="initial-page">
<div className="container">
<div className="title">
<h1 className="title-text">COMING SOON!</h1>
<hr className="line"></hr>
<p className="subtitle">
Hey F!rosh! Our website is currently under construction. Check back soon!
</p>
</div>

<div className="info">
<div className="button-container">
<InstagramButton
link="https://www.instagram.com/froshweek/"
text="Follow @froshweek for updates"
/>
<InstagramButton
link="https://www.instagram.com/froshnomore/"
text="Follow @froshnomore to get involved"
/>
</div>
</div>

<div className="footer">
<h2 className="footer-text">Made with 💜 by the F!rosh Week 2T4 Tech Team</h2>
</div>
</div>
</div>
</>
);
};

export { AshLanding };
205 changes: 205 additions & 0 deletions client/src/pages/Initial/AshLanding/AshLanding.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
.initial-page {
width: 100vw;
height: 100vh;

overflow-y: hidden;
overflow-x: hidden;

background: linear-gradient(
180deg,
var(--purple) 0%,
var(--light-purple) 50%,
var(--purple-shades-dark) 100%
);

color: var(--white);
padding: 20px;
}

/* TITLE SECTION */
.title {
display: flex;
flex-direction: column;

justify-content: center;
align-items: center;
margin: 0 auto;

text-align: center;
padding-top: 20%;
}
.title-text {
font-size: 64px;
font-style: bold;
letter-spacing: 0.1em;
margin-bottom: 24px;
text-shadow: 0px 7px 10px rgba(0, 0, 0, 0.25);
}
hr.line {
top: 10px;
width: 851px;
height: 0px;
border: 2px solid var(--yellow);
border-radius: 100px;
margin-bottom: 24px;
}
.subtitle {
font-size: 20px;
letter-spacing: 0.05em;
}

/* LINKS SECTION */
.info {
display: flex;
justify-content: space-between;
align-items: center;
margin: 100px 0;
max-width: 851px;
margin: 0 auto;
padding-top: 70px;
}
.button-container {
display: grid;
grid-template-columns: 1fr;
gap: 20px;
margin: 0 auto;
max-width: 851px;

@media (min-width: 900px) {
grid-template-columns: 1fr 1fr;
}
}
.button {
display: flex;
justify-content: center;
align-items: center;
width: 420px;
margin: 0 auto;
padding: 10px 20px;
border-radius: 100px;
background: var(--white);
font-size: 18px;
font-weight: bold;
letter-spacing: 0.05em;
text-align: center;
cursor: pointer;
transition: 0.3s;
box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
}
.button:hover {
background: var(--yellow);
color: var(--purple-shades-dark);
transition: 0.3s;
}
.button-icon {
width: 30px;
height: 30px;
}
.button-text {
color: var(--purple-shades-dark);
margin-left: 7px;
}

/* FOOTER */
.footer {
position: absolute;
bottom: 10px;
right: 0;
left: 0;
justify-content: center;
align-items: center;
color: var(--purple-shades-muted);
}
.footer-text {
text-align: center;
font-size: 20px;
font-style: normal;
letter-spacing: 0.1em;
}

a:hover,
a:visited,
a:link,
a:active {
text-decoration: none !important;
}

/***************** MOBILE VIEW *******************/

@media screen and (max-width: 428px) {
/* CSS for screens that are 428 pixels or less
i.e. the largest screen width is an iphone 13 pro max thing
*/

.title {
display: flex;
flex-direction: column;

justify-content: center;
align-items: center;

max-width: 274px;
margin: 0 auto;

text-align: center;
padding-top: 60%;
}
.title-text {
font-style: bold;
font-size: 20px;
letter-spacing: 0.1em;

text-align: center;
text-shadow: 0px 7px 10px rgba(0, 0, 0, 0.25);

margin-bottom: 10px;
}
hr.line {
width: 274px;
border: 1px solid var(--yellow);
border-radius: 100px;
margin-bottom: 10px;
}
.subtitle {
font-size: 12px;
max-width: 274px;
letter-spacing: 0.03em;
}

.info {
display: flex;
justify-content: space-between;
align-items: center;
margin: 100px 0;

max-width: 274px;
margin: 0 auto;

padding-top: 10%;
}

.info-text {
font-size: 12px;
max-width: 274px;
letter-spacing: 0.03em;
padding-top: 0;
padding-left: 10%;
text-align: left;
display: inline-block;
}

.button-container {
grid-template-columns: 1fr;
}

.footer-text {
font-size: 8px;
letter-spacing: 0.1em;
}
}
a:hover,
a:visited,
a:link,
a:active {
text-decoration: none !important;
}
64 changes: 37 additions & 27 deletions client/src/pages/Initial/LandingPage.jsx
Original file line number Diff line number Diff line change
@@ -1,56 +1,66 @@
import React, { useEffect, useState } from 'react';

// F!rosh 2T3 Landing Pages
import { TanuLanding } from './TanuLanding/TanuLanding';
import { UzmaLanding } from './UzmaLanding/UzmaLanding';
import { NatLanding } from './NatLanding/NatLanding';
import { SherryLanding } from './SherryLanding/SherryLanding';
import { AshLanding } from './AshLanding/AshLanding';

// F!rosh 2T4 Landing Pages

const landingPages = [
{
key: 0,
component: <TanuLanding />,
},
{
key: 1,
component: <UzmaLanding />,
},
{
key: 2,
component: <NatLanding />,
},
{
key: 3,
component: <SherryLanding />,
component: <AshLanding />,
},
// {
// key: 1,
// component: <TanuLanding />,
// },
// {
// key: 2,
// component: <UzmaLanding />,
// },
// {
// key: 3,
// component: <NatLanding />,
// },
// {
// key: 4,
// component: <SherryLanding />,
// },
];

function randomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}

export const LandingPage = () => {
const [pageIndex, setPageIndex] = useState(null);
// const [pageIndex, setPageIndex] = useState(null);

useEffect(() => {
let randIdx = randomNumber(0, landingPages.length - 1);
const localIdx = window.localStorage.getItem('landing_page_idx');
// useEffect(() => {
// let randIdx = randomNumber(0, landingPages.length - 1);
// const localIdx = window.localStorage.getItem('landing_page_idx');

if (localIdx !== null) {
while (randIdx === JSON.parse(localIdx)) {
randIdx = randomNumber(0, landingPages.length - 1);
}
}
window.localStorage.setItem('landing_page_idx', JSON.stringify(randIdx));
// if (localIdx !== null) {
// while (randIdx === JSON.parse(localIdx)) {
// randIdx = randomNumber(0, landingPages.length - 1);
// }
// }
// window.localStorage.setItem('landing_page_idx', JSON.stringify(randIdx));

setPageIndex(JSON.parse(randIdx));
}, []);
// setPageIndex(JSON.parse(randIdx));
// }, []);

return (
<>
{landingPages.map((item) => {
{/* {landingPages.map((item) => {
if (item.key == pageIndex) {
return <div key={item.key}>{item.component}</div>;
}
})}
})} */}
<AshLanding />
</>
);
};
Loading

0 comments on commit 3b2b4da

Please sign in to comment.