Skip to content

Commit

Permalink
Merge pull request #3 from asusoda/Footer-Luan
Browse files Browse the repository at this point in the history
Fixing Footer Components
  • Loading branch information
LuaanNguyen authored Jun 30, 2024
2 parents 09a4336 + 2fa8d32 commit f4bea7b
Show file tree
Hide file tree
Showing 10 changed files with 236 additions and 139 deletions.
10 changes: 5 additions & 5 deletions src/App.jsx
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
import PropTypes from "prop-types"; // Import PropTypes
import PropTypes from "prop-types";
import Footer from "./components/Footer";
import Navbar from "./components/Navbar";
import "./styles/index.css";
import Home from "./pages/Home";

function App({ children }) {
function App() {
return (
<>
<Navbar />
<main className="home">{children}</main>
{/* Edit Home at /pages/Home.jsx */}
<Home />
<Footer />
</>
);
}

// Define prop types for App component
App.propTypes = {
children: PropTypes.node.isRequired,
};
Expand Down
11 changes: 11 additions & 0 deletions src/components/AllRightsReserved.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
export default function AllRightsReserved() {
return (
<div className="text-center items-center py-5">
<p className="text-sm text-soda-gray">
© {new Date().getFullYear()} Software Developers Association at ASU.
<br />
All rights reserved.
</p>
</div>
);
}
98 changes: 61 additions & 37 deletions src/components/Footer.jsx
Original file line number Diff line number Diff line change
@@ -1,47 +1,71 @@
function Footer() {
import AllRightsReserved from "../components/AllRightsReserved.jsx";
import HorizontalLine from "../components/HorizontalLine.jsx";
import SocialMediaLinks from "./SocialMediaLinks.jsx";

export default function Footer() {
return (
<footer className=" w-full border-t-1">
<hr className="border-gray-500 opacity-100"></hr>
<div className="grid grid-cols-3 max-md:grid-cols-2 gap-10 px-20 py-10 max-md:gap-5 max-md:px-10 max-md:py-5">
<div className="text-soda-red text-center max-md:col-span-2 max-md:p-5">
SoDA - Software Developer Association at ASU
</div>
<div className="grid grid-rows-3">
<a href="#">
<p className="text-soda-white">Organization</p>
</a>
<a href="#">
<p className="text-soda-gray">Get Involved</p>
</a>
<a href="#">
<p className="text-soda-gray">Projects</p>
</a>
<a href="#">
<p className="text-soda-gray">Documentation</p>
</a>
</div>
<footer>
<HorizontalLine />
<section className="footer-container">
<section className="col-span-2 max-md:col-span-2 max-md:p-2">
<div className="flex flex-col max-md:flex-row justify-between h-full">
<div className="flex gap-3 items-center max-sm:flex-row max-sm:items-center max-sm:hidden">
<img src="/logo/soda-logo-white.png" className="w-8" />
<span className="text-soda-white font-semibold">Thesoda.io</span>
</div>
<SocialMediaLinks />
</div>
</section>

<div className="grid grid-rows-3">
<a href="#">
<p className="text-slate-white">Resources</p>
</a>
<section className="grid grid-rows-3 gap-2">
<a href="#">
<p className="text-soda-gray">Constitution</p>
<p className="text-soda-white text-[18px]">Organization</p>
</a>
{organization.map((el, i) => (
<a href={el.source} key={i}>
<p className="text-soda-gray text-[18px]">{el.name}</p>
</a>
))}
</section>

<section className="grid grid-rows-3 gap-1">
<a href="#">
<p className="text-soda-gray">Privacy & Policy</p>
<p className="text-soda-white text-[18px]">Resources</p>
</a>
</div>
</div>
<div className=" text-center items-center py-5">
<p className="text-sm text-soda-gray">
© {new Date().getFullYear()} Software Developers Association at ASU.
<br />
All rights reserved.
</p>
</div>
{resources.map((el, i) => (
<a href={el.source} key={i}>
<p className="text-soda-gray text-[18px]">{el.name}</p>
</a>
))}
</section>
</section>
<AllRightsReserved />
</footer>
);
}

export default Footer;
const organization = [
{
name: "Get Involved",
source: "/",
},
{
name: "Projects",
source: "/",
},
{
name: "Documentations",
source: "/",
},
];

const resources = [
{
name: "Constitution",
source: "/",
},
{
name: "Privacy & Policy",
source: "/",
},
];
5 changes: 5 additions & 0 deletions src/components/HorizontalLine.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
function HorizontalLine() {
return <hr className="border-gray-500 opacity-100"></hr>;
}

export default HorizontalLine;
109 changes: 54 additions & 55 deletions src/components/Info/InfoCards.css
Original file line number Diff line number Diff line change
@@ -1,27 +1,29 @@
@import url('../../styles/fonts.css');
@import url("../../styles/fonts.css");

:root {
--soda-red-900: oklch(55% 0.2 12);
--soda-red-775: oklch(55% 0.2 12);
--soda-red-675: oklch(55% 0.2 12);
--soda-red-550: oklch(55% 0.2 12);
--soda-red-450: oklch(55% 0.2 12);
--soda-red-325: oklch(55% 0.2 12);
--soda-red-225: oklch(55% 0.2 12);
--soda-red-100: oklch(55% 0.2 12);
--soda-red-900: oklch(55% 0.2 12);
--soda-red-775: oklch(55% 0.2 12);
--soda-red-675: oklch(55% 0.2 12);
--soda-red-550: oklch(55% 0.2 12);
--soda-red-450: oklch(55% 0.2 12);
--soda-red-325: oklch(55% 0.2 12);
--soda-red-225: oklch(55% 0.2 12);
--soda-red-100: oklch(55% 0.2 12);
}

.infocards {
display: flex;
flex-direction: column;
display: flex;
flex-direction: column;
margin-top: 5vh;
margin-bottom: 5vh;
}

.infocards #title {
font-family: 'Apfel-Fett';
font-size: 2em;
text-align: center;
padding: 7vw;
padding-bottom: 0vw;
font-family: "Apfel-Fett";
font-size: 2em;
text-align: center;
padding: 7vw;
padding-bottom: 0vw;
}

/*
Expand All @@ -41,67 +43,64 @@
}
*/


/*Card styling*/

.rounded-card {
border-radius: 15px;
overflow: hidden;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Optional: Add a subtle shadow for better appearance */
background-color: white;
color: black;
font-family: 'Apfel-Regular';
border-radius: 15px;
overflow: hidden;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Optional: Add a subtle shadow for better appearance */
background-color: white;
color: black;
font-family: "Apfel-Regular";
}

.card-content {
padding: 16px;
}
padding: 16px;
}

.card-header {
color: black;
padding-bottom: 8px;
font-weight: bold;
font-size:1.2em;
color: black;
padding-bottom: 8px;
font-weight: bold;
font-size: 1.2em;
}

.card-description {
color: black;
padding-bottom: 8px;
font-size:0.8em;
color: black;
padding-bottom: 8px;
font-size: 0.8em;
}


#cards {
display: flex;
flex-wrap: wrap;
gap: 20px;
justify-content: center;
display: flex;
flex-wrap: wrap;
gap: 20px;
justify-content: center;
}

.Card {
width: 300px;
width: 300px;
}


/* Card button */
.card-button{
background-color: var(--soda-red-550);
color: white;
border: none; /* Remove default border */
border-radius: 25px;
padding: 10px 20px;
font-size: 16px;
cursor: pointer; /* Change cursor to pointer on hover */
display: flex;
align-items: center;
transition: background-color 0.6s ease; /* Add transition for smooth background color change */
.card-button {
background-color: var(--soda-red-550);
color: white;
border: none; /* Remove default border */
border-radius: 25px;
padding: 10px 20px;
font-size: 16px;
cursor: pointer; /* Change cursor to pointer on hover */
display: flex;
align-items: center;
transition: background-color 0.6s ease; /* Add transition for smooth background color change */
}

.card-button::after {
content: '→'; /* Unicode character for right arrow */
margin-left: 10px;
content: "→"; /* Unicode character for right arrow */
margin-left: 10px;
}

.card-button:hover {
background-color: darkred; /* Change background color on hover */
}
background-color: darkred; /* Change background color on hover */
}
62 changes: 29 additions & 33 deletions src/components/Info/InfoCards.jsx
Original file line number Diff line number Diff line change
@@ -1,38 +1,34 @@
import React, { Component } from 'react';
import content from './InfoList';
import {Card, Button, Divider} from 'semantic-ui-react';
import './InfoCards.css'
import { Component } from "react";
import content from "./InfoList";
import { Card, Button, Divider } from "semantic-ui-react";
import "./InfoCards.css";

class InfoCards extends Component {
render() {
return (
<div className="infocards">
<Divider horizontal id="title">Info</Divider><br/>

<div id="cards">
{content.map(({title, content, button}) =>
<Card key={title} className="Card rounded-card">
<Card.Content className="card-content">
<Card.Header className="card-header">{title}</Card.Header>
<Card.Description className="card-description">{content}</Card.Description>
<br/>
<Button
className="card-button"

>
{button} </Button>
</Card.Content>
</Card>
)}
</div>
</div>
);
}
render() {
return (
<div className="infocards">
<Divider horizontal id="title">
Info
</Divider>
<br />

<div id="cards">
{content.map(({ title, content, button }) => (
<Card key={title} className="Card rounded-card">
<Card.Content className="card-content">
<Card.Header className="card-header">{title}</Card.Header>
<Card.Description className="card-description">
{content}
</Card.Description>
<br />
<Button className="card-button">{button} </Button>
</Card.Content>
</Card>
))}
</div>
</div>
);
}
}

export default InfoCards;





Loading

0 comments on commit f4bea7b

Please sign in to comment.