diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 24c12f0..d02cf92 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -16,6 +16,7 @@ "axios": "^1.7.2", "eslint-config-next": "13.4.19", "framer-motion": "^11.2.13", + "lucide-react": "^0.511.0", "next": "13.4.12", "next-emoji-rain": "^1.0.2", "postcss": "8.4.29", @@ -3378,6 +3379,14 @@ "node": ">=10" } }, + "node_modules/lucide-react": { + "version": "0.511.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.511.0.tgz", + "integrity": "sha512-VK5a2ydJ7xm8GvBeKLS9mu1pVK6ucef9780JVUjw6bAjJL/QXnd4Y0p7SPeOUMC27YhzNCZvm5d/QX0Tp3rc0w==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index a697947..4a04cd5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -21,6 +21,7 @@ "axios": "^1.7.2", "eslint-config-next": "13.4.19", "framer-motion": "^11.2.13", + "lucide-react": "^0.511.0", "next": "13.4.12", "next-emoji-rain": "^1.0.2", "postcss": "8.4.29", diff --git a/frontend/public/assets/the_trade_desk_logo.svg b/frontend/public/assets/the_trade_desk_logo.svg new file mode 100644 index 0000000..25545c1 --- /dev/null +++ b/frontend/public/assets/the_trade_desk_logo.svg @@ -0,0 +1,33 @@ + + TTD_BIG + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/public/data/sponsorInfos.ts b/frontend/public/data/sponsorInfos.ts index 79c6fca..a8f136f 100644 --- a/frontend/public/data/sponsorInfos.ts +++ b/frontend/public/data/sponsorInfos.ts @@ -1,4 +1,5 @@ export type sponsorInfo = { + name: string; href: string; svg: string; alt: string; @@ -7,6 +8,15 @@ export type sponsorInfo = { export const diamondLinks: sponsorInfo[] = [ { + name: 'Atlassian', + href: 'https://www.atlassian.com/', + svg: '/assets/atlassian_logo.svg', + alt: 'Atlassian logo', + description: + 'Atlassian Corporation is an Australian-American software company that develops products for software developers, and project managers among other groups.' + }, + { + name: 'Jane Street', href: 'https://www.janestreet.com/', svg: '/assets/janestreet_logo.svg', alt: 'Jane Street logo', @@ -14,6 +24,7 @@ export const diamondLinks: sponsorInfo[] = [ 'Jane Street is a research-driven trading firm where curious people work together on deep problems.' }, { + name: 'Tiktok', href: 'https://careers.tiktok.com/', svg: '/assets/tiktok_logo.svg', alt: 'Tiktok logo', @@ -23,21 +34,16 @@ export const diamondLinks: sponsorInfo[] = [ ]; export const goldLinks: sponsorInfo[] = [ - { - href: 'https://www.atlassian.com/', - svg: '/assets/atlassian_logo.svg', - alt: 'Atlassian logo', - description: - 'Atlassian Corporation is an Australian-American software company that develops products for software developers, and project managers among other groups.' - }, - { - href: 'https://www.citadel.com/', - svg: '/assets/citadel_logo.svg', - alt: 'Citadel logo', - description: - "We are an alternative investment manager working on behalf of the world's preeminent institutions. Discover our work, teams, careers and more." - }, - { + // { + // name: 'Citadel', + // href: 'https://www.citadel.com/', + // svg: '/assets/citadel_logo.svg', + // alt: 'Citadel logo', + // description: + // "We are an alternative investment manager working on behalf of the world's preeminent institutions. Discover our work, teams, careers and more." + // }, + { + name: 'IMC', href: 'https://www.imc.com/ap/', svg: '/assets/imc_logo.svg', alt: 'IMC logo', @@ -45,6 +51,15 @@ export const goldLinks: sponsorInfo[] = [ 'For three decades IMC has provided liquidity to the financial markets globally. Specialised in algorithmic trading and advanced technology, we set the pace for the evolution of market making.' }, { + name: 'Zurich', + href: 'https://www.zurich.com.au/', + svg: '/assets/zurich_logo.svg', + alt: 'Zurich logo', + description: + "Zurich is one of the world's most experienced insurers whose strategy focuses on providing the right general insurance and life insurance solutions for its clients." + }, + { + name: 'Neara', href: 'https://neara.com/', svg: '/assets/neara_logo.svg', alt: 'Neara logo', @@ -52,50 +67,34 @@ export const goldLinks: sponsorInfo[] = [ 'Neara electric utility software is a physics-enabled platform that builds 3D interactive models of critical infrastructure networks and assets.' }, { + name: 'TheTradeDesk', + href: 'https://www.thetradedesk.com/', + svg: '/assets/the_trade_desk_logo.svg', + alt: 'TheTradeDesk logo', + description: + 'The Trade Desk is a global advertising technology company that empowers buyers with a platform to purchase digital advertising across various channels.' + }, + { + name: 'SafetyCulture', href: 'https://safetyculture.com/', svg: '/assets/safetyculture_logo.svg', alt: 'SafetyCulture logo', description: 'Get to the root cause of workplace trends with total visibility across your organization. Use data from completed inspections, reported incidents, sensors, and asset history to keep workers safe, and prevent things from happening in the first place.' }, - { - href: 'https://www.zurich.com.au/', - svg: '/assets/zurich_logo.svg', - alt: 'Zurich logo', - description: - "Zurich is one of the world's most experienced insurers whose strategy focuses on providing the right general insurance and life insurance solutions for its clients." - } ]; export const silverLinks: sponsorInfo[] = [ { - href: 'https://appian.com/', - svg: '/assets/appian_logo.svg', - alt: 'Appian logo', - description: - 'Appian Corporation is an American cloud computing and enterprise software company headquartered in McLean, Virginia, part of the Dulles Technology Corridor. The company sells a platform as a service for building enterprise software applications.' - }, - { - href: 'https://www.flowtraders.com/', - svg: '/assets/flowtraders_logo.svg', - alt: 'FlowTraders logo', - description: - 'Flow Traders is a proprietary trading firm. A market maker, it provides liquidity in the securities market by using high frequency and quantitative trading strategies.' - }, - { - href: 'https://www.jds.net.au/', - svg: '/assets/jds_logo.svg', - alt: 'jds logo', - description: "JDS Australia delivers specialist services in a set of technologies and capabilities that ensure critical IT systems work.", - }, - { - href: 'https://www.macquarie.com.au/', - svg: '/assets/macquarie_logo.svg', - alt: 'Macquarie logo', + name: 'Quantium', + href: 'https://quantium.com/', + svg: '/assets/quantium_logo.svg', + alt: 'Quantium logo', description: - 'Macquarie Bank offers transaction accounts, home loans, credit cards, online banking, business banking and more.' + "We combine the best of human and artificial intelligence to power possibilities for individuals, organisations and society. Through the application of world leading, advanced analytics solutions, we help our clients solve their most complex problems." }, { + name: 'Optiver', href: 'https://optiver.com/', svg: '/assets/optiver_logo.svg', alt: 'Optiver logo', @@ -103,40 +102,54 @@ export const silverLinks: sponsorInfo[] = [ 'Optiver is a global market maker. As one of the oldest market making firms in the world, Optiver has been improving financial markets since 1986.' }, { - href: 'https://quantium.com/', - svg: '/assets/quantium_logo.svg', - alt: 'Quantium logo', + name: 'Macquarie', + href: 'https://www.macquarie.com.au/', + svg: '/assets/macquarie_logo.svg', + alt: 'Macquarie logo', description: - "We combine the best of human and artificial intelligence to power possibilities for individuals, organisations and society. Through the application of world leading, advanced analytics solutions, we help our clients solve their most complex problems." + 'Macquarie Bank offers transaction accounts, home loans, credit cards, online banking, business banking and more.' }, { - href: 'https://quickli.com.au/', - svg: '/assets/quickli_logo.svg', - alt: 'Quickli logo', + name: 'Sig Susquehanna', + href: 'https://sig.com/', + svg: '/assets/susquehanna_logo.svg', + alt: 'Susquehanna logo', description: - 'Bringing 30+ lender calcs into one, easy-to-use interface delivering accurate results and relevant policy insights for even the most complex scenarios.' + 'Discover Susquehanna, a global quantitative trading firm built on a rigorous, analytical foundation in financial markets.' }, { - href: 'https://www.revolutionise.com.au/', - svg: '/assets/revsport_logo.svg', - alt: 'revolutioniseSport logo', + name: 'Freelancer', + href: 'https://www.freelancer.com/', + svg: '/assets/freelancer_logo.svg', + alt: 'Freelancer logo', description: - 'revolutioniseSPORT is an online management platform for sports of all shapes and sizes.' + 'Freelancer is a global crowdsourcing marketplace connecting employers and freelancers to collaborate on a wide range of projects.' }, { - href: 'https://www.recordpoint.com/', - svg: '/assets/recordpoint_logo.svg', - alt: 'RecordPoint logo', - description: 'Manage all your data and records in one central place – without moving them.' - }, - { - href: 'https://sig.com/', - svg: '/assets/susquehanna_logo.svg', - alt: 'Susquehanna logo', + name: 'FlowTraders', + href: 'https://www.flowtraders.com/', + svg: '/assets/flowtraders_logo.svg', + alt: 'FlowTraders logo', description: - 'Discover Susquehanna, a global quantitative trading firm built on a rigorous, analytical foundation in financial markets.' + 'Flow Traders is a proprietary trading firm. A market maker, it provides liquidity in the securities market by using high frequency and quantitative trading strategies.' }, - { + // { + // href: 'https://quickli.com.au/', + // svg: '/assets/quickli_logo.svg', + // alt: 'Quickli logo', + // description: + // 'Bringing 30+ lender calcs into one, easy-to-use interface delivering accurate results and relevant policy insights for even the most complex scenarios.' + // }, + // { + // name: 'Finma', + // href: 'https://www.finma.au/', + // svg: '/assets/finma_logo.svg', + // alt: 'Finma logo', + // description: + // 'Finma is an Australian fintech company that provides digital solutions for financial planning, helping users better manage their money and achieve long-term financial goals.' + // }, + { + name: 'Zip', href: 'https://zip.co/au', svg: '/assets/zip_logo.svg', alt: 'Zip logo', @@ -144,10 +157,11 @@ export const silverLinks: sponsorInfo[] = [ "Zip Co Limited is a global 'buy now pay later' financial technology company with operations in Australia, New Zealand and the USA." }, { - href: 'https://www.canva.com/en_au/', - svg: '/assets/canva_logo.svg', - alt: 'Canva logo', + name: 'revolutioniseSport', + href: 'https://www.revolutionise.com.au/', + svg: '/assets/revsport_logo.svg', + alt: 'revolutioniseSport logo', description: - 'Canva is a free-to-use online graphic design tool. Use it to create social media posts, presentations, posters, videos, logos and more.' - } + 'revolutioniseSPORT is an online management platform for sports of all shapes and sizes.' + }, ]; diff --git a/frontend/src/components/Sponsors/SponsorModal.tsx b/frontend/src/components/Sponsors/SponsorModal.tsx index 26d28e1..a28c1b1 100644 --- a/frontend/src/components/Sponsors/SponsorModal.tsx +++ b/frontend/src/components/Sponsors/SponsorModal.tsx @@ -1,40 +1,112 @@ -import { sponsorInfo } from '@/../public/data/sponsorInfos'; +import { X } from "lucide-react" +import { useEffect } from "react" +import type { sponsorInfo } from "@/../public/data/sponsorInfos" -export default function SponsorModal(props: { sponsorInfo: sponsorInfo | null; setFalse: () => void }) { - if (props.sponsorInfo === null) { - return ( -
-

Error no sponsor selected!

-
- ); +export default function SponsorModal({ + sponsorInfo, + setFalse, +}: { + sponsorInfo: sponsorInfo | null + setFalse: () => void +}) { + // Close modal with Escape key + useEffect(() => { + const handleEscKey = (event: KeyboardEvent) => { + if (event.key === "Escape") setFalse() + } + + window.addEventListener("keydown", handleEscKey) + return () => window.removeEventListener("keydown", handleEscKey) + }, [setFalse]) + + if (sponsorInfo === null) { + return null } + return (
{ - props.setFalse(); + className="fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm animate-in fade-in duration-200" + onClick={(e) => { + if (e.target === e.currentTarget) setFalse() }} > -
- - {props.sponsorInfo.alt} - -

{props.sponsorInfo.description}

+
e.stopPropagation()} + > + {/* Close button */} + +
+ {/* Sponsor logo */} +
+ +
+ {sponsorInfo.alt} +
+
+
+ + {/* Sponsor description */} +
+

About {sponsorInfo.name}

+

{sponsorInfo.description}

+
+ + {/* Action buttons */} +
+ + + + + Visit Website + + +
+
- ); -} + ) +} diff --git a/frontend/src/pages/sponsors.tsx b/frontend/src/pages/sponsors.tsx index 01eb342..f42c7dd 100644 --- a/frontend/src/pages/sponsors.tsx +++ b/frontend/src/pages/sponsors.tsx @@ -52,7 +52,7 @@ export default function SponsorsPage() { {diamondLinks.map((item, index) => { return (
handleSponsorClick(item)}> - {item.alt} + {item.alt}
); })} @@ -65,7 +65,7 @@ export default function SponsorsPage() { {goldLinks.map((item, index) => { return (
handleSponsorClick(item)}> - {item.alt} + {item.alt}
); })} @@ -77,7 +77,7 @@ export default function SponsorsPage() { {silverLinks.map((item, index) => { return (
handleSponsorClick(item)}> - {item.alt} + {item.alt}
); })}