Skip to content

Commit 964080a

Browse files
committed
added banner
1 parent c4b4e2a commit 964080a

File tree

11 files changed

+265
-156
lines changed

11 files changed

+265
-156
lines changed

frontend/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
99
<link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&display=swap" rel="stylesheet">
1010
<link href="https://fonts.googleapis.com/css2?family=Bai+Jamjuree:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;1,200;1,300;1,400;1,500;1,600;1,700&family=Bebas+Neue&display=swap" rel="stylesheet">
11-
11+
<link href="https://fonts.googleapis.com/css2?family=League+Spartan:[email protected]&display=swap" rel="stylesheet">
1212

1313
<title>LuminAI</title>
1414
</head>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// src/components/ApplicationBanner.jsx
2+
import './styles.scss';
3+
// src/components/ApplicationBanner.jsx
4+
import { useEffect } from 'react';
5+
import { useBanner } from '@/context/BannerContext';
6+
7+
const ApplicationBanner = () => {
8+
const { setBannerVisible } = useBanner();
9+
10+
useEffect(() => {
11+
setBannerVisible(true);
12+
return () => setBannerVisible(false);
13+
}, [setBannerVisible]);
14+
15+
return (
16+
<div className="fixed top-0 left-0 w-full bg-blue-500 text-white text-center p-2 z-100">
17+
<span className="font-bold">Last-minute call for our 2024 summer application!</span>
18+
<button onClick={() => window.location.href='/application-form'}
19+
aria-label="Apply Now"
20+
className="ml-6 inline-flex h-8 animate-shimmer items-center justify-center rounded-md border border-slate-800 bg-[linear-gradient(110deg,#000103,45%,#1e2631,55%,#000103)] bg-[length:200%_100%] px-6 font-medium text-slate-200 transition-colors focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 focus:ring-offset-slate-50 hover:bg-[linear-gradient(90deg, #6366f1, #a855f7)]" >
21+
Apply Now
22+
</button>
23+
</div>
24+
);
25+
};
26+
27+
export default ApplicationBanner;
28+
29+
30+
<button className="p-[3px] relative">
31+
<div className="ml-6 inline-flex h-8 px-6 justify-center rounded-lg absolute inset-0 bg-gradient-to-r from-indigo-500 to-purple-500">
32+
<div onClick={() => window.location.href='/application-form'}
33+
className="px-8 py-2 rounded-[6px] relative group transition duration-200 hover:bg-transparent animate-shimmer items-center border border-slate-800 bg-[linear-gradient(110deg,#000103,45%,#1e2631,55%,#000103)] bg-[length:200%_100%] font-medium text-slate-400 focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 focus:ring-offset-slate-50">
34+
Apply Now
35+
</div>
36+
</div>
37+
</button>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
@tailwind base;
2+
@tailwind components;
3+
@tailwind utilities;
4+
5+
6+
.gradient-border:hover {
7+
border-image: linear-gradient(to right, #6366f1, #a855f7) 1;
8+
border-width: 3px;
9+
border-style: solid;
10+
}
11+
12+
.custom-bg-gradient {
13+
background: linear-gradient(110deg, #000103 45%, #1e2631 55%, #000103);
14+
}

frontend/src/components/ContactUs.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ const ContactSection = () => {
3535
</svg>
3636
</a>
3737
<div className="absolute bottom-0 left-0 right-0 h-0.5 bg-white group-hover:bg-transparent transition-all duration-300"></div>
38+
39+
{/* <div className="absolute bottom-0 left-0 right-0 h-0.5 bg-white group-hover:bg-transparent transition-all duration-300"></div> This is the white line that appears on the top of the page */}
3840
</div>
3941
);
4042
};

frontend/src/components/Header/Header.tsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@ import "../../styles/App.scss";
22
import "./Header.scss";
33
import getMode from "../../utils/getMode";
44
import { Link } from "@tanstack/react-router";
5+
import { useBanner } from "@/context/BannerContext";
56

67
const Header = () => {
78
const mode = getMode();
8-
const headerClass = ` p-4 ${mode === "dark" ? "header-dark text-white" : "header-light text-black"} hidden`;
9+
const { isBannerVisible } = useBanner();
10+
11+
//TODO: remove this and change to dark:text-white, etc.
12+
const headerClass = ` p-4 ${isBannerVisible ? 'mt-16' : ''} hidden `;
913
const navClass = `mt-2 ${mode === "dark" ? "header-text-dark text-white" : "header-text-light text-black"}`; // add fonts
1014

1115
return (
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// src/context/BannerContext.tsx
2+
import React, { createContext, useState, useContext, ReactNode } from 'react';
3+
4+
interface BannerContextType {
5+
isBannerVisible: boolean;
6+
setBannerVisible: (visible: boolean) => void;
7+
}
8+
9+
const BannerContext = createContext<BannerContextType | undefined>(undefined);
10+
11+
export const BannerProvider = ({ children }: { children: ReactNode }) => {
12+
const [isBannerVisible, setBannerVisible] = useState(false);
13+
14+
return (
15+
<BannerContext.Provider value={{ isBannerVisible, setBannerVisible }}>
16+
{children}
17+
</BannerContext.Provider>
18+
);
19+
};
20+
21+
export const useBanner = () => {
22+
const context = useContext(BannerContext);
23+
if (!context) {
24+
throw new Error('useBanner must be used within a BannerProvider');
25+
}
26+
return context;
27+
};

frontend/src/main.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import './styles/App.scss';
77
import { HelmetProvider } from 'react-helmet-async';
88
import { AuthContextProvider } from './context/AuthContext';
99
import { ChakraProvider } from '@chakra-ui/react';
10+
import { BannerProvider } from './context/BannerContext';
1011

1112
const router = createRouter({
1213
routeTree,
@@ -21,7 +22,9 @@ if (!rootElement?.innerHTML) {
2122
<HelmetProvider>
2223
<ChakraProvider>
2324
<AuthContextProvider>
24-
<RouterProvider router={router} />
25+
<BannerProvider>
26+
<RouterProvider router={router} />
27+
</BannerProvider>
2528
</AuthContextProvider>
2629
</ChakraProvider>
2730
</HelmetProvider>

0 commit comments

Comments
 (0)