Skip to content

Commit

Permalink
Completed Footer (#118)
Browse files Browse the repository at this point in the history
* Completed Footer

* updated snapshot

Co-authored-by: allan <[email protected]>
  • Loading branch information
Yusuf-Software and AllanSaleh authored Nov 15, 2022
1 parent 4b41ade commit 55d2d1b
Show file tree
Hide file tree
Showing 9 changed files with 664 additions and 47 deletions.
50 changes: 50 additions & 0 deletions public/logo-white.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion src/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import RoadMaps from "./components/Roadmaps/RoadMaps";
import Navbar from "./components/Navbar/Navbar"
import CombiningFilterComponents from "./components/CombiningComponents/CombiningFilterComponents";
import Filter from './components/filter/Filter';
import Footer from "./components/Footer/Footer";

const data = [
{
Expand Down Expand Up @@ -125,7 +126,7 @@ function App() {
<WyChooseUs />
<Experience />
<Education />

<Footer />
</div>
);
}
Expand Down
148 changes: 148 additions & 0 deletions src/components/Footer/Footer.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
import FooterCol from "./FooterCol";

function Footer() {
return (
<footer aria-label="Site Footer" className="bg-dark-gray">
<div className="flex flex-row justify-between mx-auto max-w-6xl pt-7 pb-[4.75rem] small:py-7 medium:py-7 small:px-6 large:px-8 small:flex-col small:items-center medium:flex-col medium:items-center">
<div className="w-auto">
<img
src="/logo-white.svg"
alt="Jobie"
className="h-[3.7rem] small:mx-auto medium:mx-auto"
/>
<p className="mt-4 max-w-[25rem] text-sm small:text-base text-white text-justify small:text-center py-7 small:max-w-[33rem]">
Jobie is a platform that can help you set up your career we give
services from finding out the right path to advance your career
through a roadmap or a right position from the top companies
</p>
</div>

<div className="grid grid-cols-3 pr-[3.2rem] max-w-[40rem] gap-[5.2rem] small:gap-10 text-sm small:text-base text-left small:text-center leading-[0rem] small:leading-3 small:grid-cols-1 small:pr-0 medium:pr-0 medium:grid-cols-2 large:col-span-2 large:grid-cols-3 py-11">
<FooterCol
title="Navigate"
links={[
{ title: "Home", path: "/" },
{ title: "About Us", path: "/About_Us" },
{ title: "Roadmap", path: "/Roadmap" },
{ title: "Jobs", path: "/Jobs" },
{ title: "Contact Us", path: "/Contact_Us" },
]}
/>
<FooterCol
title="Jobs"
links={[
{ title: "Web Developer", path: "/Web" },
{ title: "Graphic Design", path: "/Graphic" },
{ title: "Translator", path: "/Translator" },
{ title: "Backend Developer", path: "/Backend" },
{ title: "UI/UX Designer", path: "/UI_UX" },
]}
/>
<FooterCol
title="Services"
links={[
{ title: "Build Your Resume", path: "/Resume" },
{ title: "List Your Jobs", path: "/List_Your_Jobs" },
{ title: "Search Jobs", path: "/Search_Jobs" },
{ title: "Hire Professionals", path: "/Hire" },
{ title: "Rate An Employer", path: "/Rate_Employer" },
]}
/>
</div>
</div>

<div className="bg-secondary h-fit">
<div className="flex items-center justify-between medium:justify-center medium:gap-16 flex-row small:flex-col small:gap-4 text-white max-w-6xl mx-auto px-2 py-[0.8rem] small:py-4 small:px-6 large:px-8 opacity-60">
<div className="flex items-center flex-row gap-3">
<a
className="hover:opacity-75"
href="https://www.google.com/"
target="_blank"
rel="noreferrer"
>
<span className="sr-only"> Facebook </span>

<svg
className="h-9 w-9 small:w-8"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path
fillRule="evenodd"
d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z"
clipRule="evenodd"
/>
</svg>
</a>

<a
className="hover:opacity-75"
href="https://www.google.com/"
target="_blank"
rel="noreferrer"
>
<span className="sr-only"> Instagram </span>

<svg
className="h-9 w-9 small:w-8"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path
fillRule="evenodd"
d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z"
clipRule="evenodd"
/>
</svg>
</a>

<a
className="hover:opacity-75"
href="https://www.google.com/"
target="_blank"
rel="noreferrer"
>
<span className="sr-only"> Twitter </span>

<svg
className="h-9 w-9 small:w-8"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84" />
</svg>
</a>

<a
className="hover:opacity-75"
href="https://www.google.com/"
target="_blank"
rel="noreferrer"
>
<span className="sr-only"> GitHub </span>

<svg
className="h-9 w-9 small:w-8"
fill="currentColor"
viewBox="0 0 24 24"
aria-hidden="true"
>
<path
fillRule="evenodd"
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
clipRule="evenodd"
/>
</svg>
</a>
</div>
<div className="text-md text-white">&copy; 2022 JOBIE</div>
</div>
</div>
</footer>
);
}

export default Footer;
16 changes: 16 additions & 0 deletions src/components/Footer/Footer.test.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import renderer from "react-test-renderer";
import { MemoryRouter } from "react-router-dom";
import Footer from "./Footer";

describe("Footer Component", () => {
it("Render Footer Correctly", () => {
const tree = renderer
.create(
<MemoryRouter>
<Footer />
</MemoryRouter>
)
.toJSON();
expect(tree).toMatchSnapshot();
});
});
33 changes: 33 additions & 0 deletions src/components/Footer/FooterCol.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { Link } from "react-router-dom";

const FooterCol = ({ title, links }) => {
return (
<div>
<p className="font-medium text-white opacity-30">{title}</p>
<nav
aria-label="Footer Nav"
className="mt-3 flex flex-col space-y-1 text-sm small:text-base text-white"
>
{links.map((item, index) => {
const key = index + 1;
return (
<Link key={key} className="hover:opacity-75" to={item.path}>
{item.title}
</Link>
);
})}

{/* {links.map((item, index) => (
<div>
<Link to={item.path}>{item.title}</Link>
</div>
)
} */}
{/* </nav> */}
</nav>
</div>
);
};

export default FooterCol;
22 changes: 22 additions & 0 deletions src/components/Footer/FooterCol.test.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import renderer from "react-test-renderer";
import { MemoryRouter } from "react-router-dom";
import FooterCol from "./FooterCol";

describe("Footer Component", () => {
it("Footer Column when there are multiple items", () => {
const domTree = renderer
.create(
<MemoryRouter>
<FooterCol
title="Title"
links={[
{ title: "Home", path: "/" },
{ title: "About Us", path: "/About_Us" },
]}
/>
</MemoryRouter>
)
.toJSON();
expect(domTree).toMatchSnapshot();
});
});
Loading

0 comments on commit 55d2d1b

Please sign in to comment.