From 9782423942c73f9ea351d2a3d958e6bd4746a5be Mon Sep 17 00:00:00 2001 From: techpixel <68567672+techpixel@users.noreply.github.com> Date: Wed, 21 Jan 2026 16:18:53 -0500 Subject: [PATCH] feat: website json v2 + website updates --- astro/sample.json | 280 +++++------ astro/src/components/pages/Satellite.tsx | 477 ++++++++++--------- astro/src/components/primitives/MapEmbed.tsx | 11 +- astro/src/lib/satellite.ts | 336 +++++++++---- 4 files changed, 653 insertions(+), 451 deletions(-) diff --git a/astro/sample.json b/astro/sample.json index 7c56851..5914399 100644 --- a/astro/sample.json +++ b/astro/sample.json @@ -1,140 +1,150 @@ { - "hero": { - "title": "CAMPFIRE", - "city": "Shelburne", - "subtitle": "Game jam for high schoolers in 200+ cities", - "date": "Feb 28 - Mar 1, 2026", - "emailPlaceholder": "you@hackclub.com", - "ctaPrimary": "RSVP!", - "ctaSecondary": "Find a Campfire near you", - "ctaSecondaryPrefix": "Not in Shelburne? ", - "ctaSecondarySuffix": ".", - "videoLabel": "watch the video" - }, - "nav": { - "howToOrganize": "How to organize", - "schedule": "Schedule", - "gamesMade": "Games made", - "faq": "FAQ" - }, - "steps": { - "step1": "Find a team of ", - "step1Highlight": "CO-ORGANIZERS", - "step1Suffix": " to help you organize your hackathon", - "step2": "Find a ", - "step2Highlight": "VENUE", - "step2Suffix": " to host your hackathon", - "step3": "Find ", - "step3Highlight1": "SPONSORS", - "step3Middle": " to buy merch and prizes, and make your event ", - "step3Highlight2": "SPECIAL!", - "step4": "Buy supplies, order food, learn ", - "step4Highlight1": " GAME DEV", - "step4Middle": ", and teach ", - "step4Highlight2": "WORKSHOPS", - "guideButton": "RSVP NOW" - }, - "letter": { - "greeting": "Dear hacker,", - "paragraph1": "You can make a change: inspire someone to build a game for the first time, help someone fall in love with computers, run an incredible game jam that you can invite all your friends to.", - "paragraph2": "This February, what if you organized a game jam in your city?", - "paragraph3": "Hack Club will provide guides, funding, merch, and 1-on-1 mentorship. Our goal? Run 200 game jams in 200 cities worldwide. All on the same day. All run by high schoolers like us.", - "paragraph4": "To kick off 2026, we're so excited to invite you to Campfire. In just a couple months, you will learn how to raise money for your event, buy food and drinks for your attendees, and make your own video games with your friends!", - "paragraph5": "Let's go on an adventure together.", - "closing": "With love,", - "signature": "The Campfire Team" - }, - "schedule": { - "title": "SCHEDULE", - "days": [ - { - "date": "Feb 28th", - "items": [ - { "time": "7:45 AM", "activity": "Doors open" }, - { "time": "8:00-8:45 AM", "activity": "Icebreakers" }, - { "time": "9:00-9:45 AM", "activity": "Opening Ceremony" }, - { "time": "10:15 AM-12:15 PM", "activity": "Godot Workshop" }, - { "time": "12:45-1:45 PM", "activity": "Lunch" }, - { "time": "2:00-3:00 PM", "activity": "Ren'py Workshop" }, - { "time": "3:00-3:30 PM", "activity": "Hackathon Hosting 101 With Hack Canada" }, - { "time": "4:00-4:15 PM", "activity": "Typing Contest" }, - { "time": "6:00-7:00 PM", "activity": "Project Pitch and Dinner" }, - { "time": "6:45-7:30 PM", "activity": "Just Dance" }, - { "time": "7:35-7:45 PM", "activity": "Semi-Closing" } - ] - } - ] - }, - "sponsors": { - "title": "Our sponsors", - "cards": [ - { - "sponsor": "Hack Club", - "logo": "https://assets.hackclub.com/flag-standalone-wtransparent.svg", - "link": "https://hackclub.com" - } - ] - }, - "signatures": false, - "faq": { - "title": "FAQ", - "participant": { - "title": "Participant", - "questions": [ - { - "question": "What is a game jam?", - "answer": "A game jam is an event where you build a game from scratch in a short time period! It's all about creativity, teamwork, and having fun while learning new skills." - }, - { - "question": "Am I eligible?", - "answer": "If you're a high schooler (or younger), you're eligible! No prior experience required - just bring your enthusiasm and willingness to learn." - }, - { - "question": "But I've never hacked before!", - "answer": "Perfect! Game jams are designed for beginners. You'll have workshops, mentors, and teammates to help you every step of the way." - }, - { - "question": "All this, for free?", - "answer": "Yes! Everything is completely free - venue, food, swag, workshops, and prizes. Hack Club covers all costs so you can focus on creating." - }, - { - "question": "What do I need to bring?", - "answer": "Just bring yourself, a laptop, charger, and any personal items you need. We'll provide food, drinks, and everything else!" - } - ], - "buttonText": "Check out the parent guide" + "version": 2, + "localization": { + "hero": { + "campfire": "CAMPFIRE", + "subtitle": "Game jam for high schoolers in 200+ cities", + "hostedAt": "Hosted @ {venue}", + "emailPlaceholder": "you@hackclub.com", + "ctaPrimary": "SIGN UP!", + "ctaSecondary": "flagship event", + "ctaSecondaryPrefix": "Looking for our ", + "ctaSecondarySuffix": "?", + "videoLabel": "watch the video", + "mapLabel": "find another event near you" }, - "organizer": { - "title": "Organizer", - "questions": [ - { - "question": "Can I organize a Campfire in my city?", - "answer": "Absolutely! We're always looking for passionate organizers. If you're ready to bring the magic of game development to your community, we'd love to help." - }, - { - "question": "What are the steps to organizing?", - "answer": "First, apply through our organizer form. Then we'll guide you through venue booking, team building, workshop planning, and day-of coordination." - }, - { - "question": "Do we get funding?", - "answer": "Yes! Hack Club provides funding for venue, food, swag, and other event costs. We want to remove financial barriers for amazing events." - }, - { - "question": "Do we get volunteer hours?", - "answer": "Many schools accept organizing hours as community service. Check with your school's requirements - we can provide documentation." - }, - { - "question": "Can I join an organizing team?", - "answer": "Of course! Many cities have organizing teams. Reach out to organizers in your area or apply to join an existing team." - } - ], - "buttonText": "Apply to be an organizer" + "nav": { + "steps": "Steps", + "schedule": "Schedule", + "games-made": "Games Made", + "faq": "FAQ" + }, + "schedule": { + "title": "SCHEDULE" + }, + "sponsors": { + "title": "Our sponsors" + }, + "signatures": { + "title": "Signatures" + }, + "steps": { + "step1": "Sign up for a **Campfire** near you", + "step2": "Grab **friends** (or make new friends!) and __form a__ **team of 2-3**", + "step3": "Learn from **workshops**, enjoy __free food and merch!__", + "step4": "**Build** your game & **publish** it on itch.io!", + "guideButton": "READ MORE" + }, + "letter": { + "greeting": "Dear Hackers, Musicians, and Artists,", + "paragraph1": "Welcome to Hack Club's newest adventure. This winter we invite you to join us for Campfire, the world's biggest Game Jam happening simultaneously in 200 cities.", + "paragraph2": "Hack Club wants you to make a game this winter.", + "paragraph3": "Don't consider yourself a game dev? No problem - we have tons of online and in-person workshops for you to make your first game!", + "paragraph4": "This winter, we invite you to learn something new, make something you're really proud of, meet new friends, and go on an incredible adventure together.", + "closing": "With love,", + "signature": "The Campfire Team" + }, + "footer": { + "tagline": "made with love by Hack Club & Open Sauce", + "copyright": "© 2026 Hack Club. 501(c)(3) nonprofit (EIN: 81-2908499)", + "description": "Hack Club is a 501(c)(3) nonprofit and network of 60k+ technical high schoolers. We believe you learn best by building so we're creating community and providing grants so you can make awesome projects. In the past few years, we've partnered with GitHub to run ", + "closing": "At Hack Club, students aren't just learning, they're shipping.", + "links": [ + { "text": "Hack Club", "href": "https://hackclub.com/" }, + { "text": "Slack", "href": "https://hackclub.com/slack" }, + { "text": "Clubs", "href": "https://hackclub.com/clubs" }, + { "text": "Code of Conduct", "href": "https://hackclub.com/conduct/" } + ] } }, - "footer": { - "tagline": "made with love by Hack Club & Open Sauce", - "copyright": "© 2026 Hack Club. 501(c)(3) nonprofit (EIN: 81-2908499)", - "description": "Hack Club is a 501(c)(3) nonprofit and network of 60k+ technical high schoolers. We believe you learn best by building so we're creating community and providing grants so you can make awesome projects. In the past few years, we've partnered with GitHub to run ", - "closing": "At Hack Club, students aren't just learning, they're shipping." + "event": { + "city": "Shelburne", + "date": "Feb 28 - Mar 1, 2026", + "venue": "Hack Club HQ", + "schedule": { + "days": [ + { + "date": "Feb 28th", + "items": [ + { "time": "7:45 AM", "activity": "Doors open" }, + { "time": "8:00-8:45 AM", "activity": "Icebreakers" }, + { "time": "9:00-9:45 AM", "activity": "Opening Ceremony" }, + { "time": "10:15 AM-12:15 PM", "activity": "Godot Workshop" }, + { "time": "12:45-1:45 PM", "activity": "Lunch" }, + { "time": "2:00-3:00 PM", "activity": "Ren'py Workshop" }, + { "time": "3:00-3:30 PM", "activity": "Hackathon Hosting 101 With Hack Canada" }, + { "time": "4:00-4:15 PM", "activity": "Typing Contest" }, + { "time": "6:00-7:00 PM", "activity": "Project Pitch and Dinner" }, + { "time": "6:45-7:30 PM", "activity": "Just Dance" }, + { "time": "7:35-7:45 PM", "activity": "Semi-Closing" } + ] + } + ] + }, + "sponsors": { + "cards": [ + { + "sponsor": "Hack Club", + "logo": "https://assets.hackclub.com/flag-standalone-wtransparent.svg", + "link": "https://hackclub.com" + } + ] + }, + "signatures": false, + "faq": { + "title": "FAQ", + "participant": { + "title": "Participant", + "questions": [ + { + "question": "What is a game jam?", + "answer": "A game jam is an event where you build a game from scratch in a short time period! It's all about creativity, teamwork, and having fun while learning new skills." + }, + { + "question": "Am I eligible?", + "answer": "If you're a high schooler (or younger), you're eligible! No prior experience required - just bring your enthusiasm and willingness to learn." + }, + { + "question": "But I've never hacked before!", + "answer": "Perfect! Game jams are designed for beginners. You'll have workshops, mentors, and teammates to help you every step of the way." + }, + { + "question": "All this, for free?", + "answer": "Yes! Everything is completely free - venue, food, swag, workshops, and prizes. Hack Club covers all costs so you can focus on creating." + }, + { + "question": "What do I need to bring?", + "answer": "Just bring yourself, a laptop, charger, and any personal items you need. We'll provide food, drinks, and everything else!" + } + ], + "buttonText": "Check out the parent guide" + }, + "organizer": { + "title": "Organizer", + "questions": [ + { + "question": "Can I organize a Campfire in my city?", + "answer": "Absolutely! We're always looking for passionate organizers. If you're ready to bring the magic of game development to your community, we'd love to help." + }, + { + "question": "What are the steps to organizing?", + "answer": "First, apply through our organizer form. Then we'll guide you through venue booking, team building, workshop planning, and day-of coordination." + }, + { + "question": "Do we get funding?", + "answer": "Yes! Hack Club provides funding for venue, food, swag, and other event costs. We want to remove financial barriers for amazing events." + }, + { + "question": "Do we get volunteer hours?", + "answer": "Many schools accept organizing hours as community service. Check with your school's requirements - we can provide documentation." + }, + { + "question": "Can I join an organizing team?", + "answer": "Of course! Many cities have organizing teams. Reach out to organizers in your area or apply to join an existing team." + } + ], + "buttonText": "Apply to be an organizer" + } + } } -} \ No newline at end of file +} diff --git a/astro/src/components/pages/Satellite.tsx b/astro/src/components/pages/Satellite.tsx index 5667ee9..fd6fde2 100644 --- a/astro/src/components/pages/Satellite.tsx +++ b/astro/src/components/pages/Satellite.tsx @@ -3,162 +3,192 @@ import FaqButton from '../primitives/FaqButton.js'; import Step from '../primitives/Step.js'; import GameCard from '../primitives/GameCard.js'; import NavbarLink from '../primitives/NavbarLink.tsx'; -import VideoEmbed from '../primitives/MapEmbed.tsx'; +import MapEmbed from '../primitives/MapEmbed.tsx'; import { useEffect, useRef, useState } from 'react'; import clsx from 'clsx'; import type { SatelliteContent } from '../../lib/satellite.ts'; +function FormattedText({ text }: { text: string }) { + const parts = text.split(/(\*\*[^*]+\*\*|__[^_]+__)/g); + return ( + <> + {parts.map((part, i) => { + if (part.startsWith('**') && part.endsWith('**')) { + return {part.slice(2, -2)}; + } + if (part.startsWith('__') && part.endsWith('__')) { + return {part.slice(2, -2)}; + } + return part; + })} + + ); +} + const FORM_URL_ORGANIZER_APPLICATION = "https://forms.hackclub.com/t/8L51MzWyrHus"; const FORM_URL_RSVP = "https://forms.hackclub.com/t/a3QSt8MuvHus"; +const FORM_URL_SIGN_UP = "https://forms.hackclub.com/campfire-signup"; const CONTENT = { - hero: { - title: "CAMPFIRE", - city: "Shelburne", - subtitle: "Game jam for high schoolers in 200+ cities", - date: "Feb 28 - Mar 1, 2026", - emailPlaceholder: "you@hackclub.com", - ctaPrimary: "RSVP!", - ctaSecondary: "Find a Campfire near you", - ctaSecondaryPrefix: "Not in Shelburne? ", - ctaSecondarySuffix: ".", - videoLabel: "watch the video" - }, - nav: { - howToOrganize: "How to organize", - schedule: "Schedule", - gamesMade: "Games made", - faq: "FAQ" - }, - steps: { - step1: "Find a team of ", - step1Highlight: "CO-ORGANIZERS", - step2: "Find a ", - step2Highlight: "VENUE", - step2Suffix: " to host your hackathon", - step3: "Find ", - step3Highlight1: "SPONSORS", - step3Middle: " to buy merch and prizes, and make your event ", - step3Highlight2: "SPECIAL!", - step4: "Buy supplies, order food, learn ", - step4Highlight1: " GAME DEV", - step4Middle: ", and teach ", - step4Highlight2: "WORKSHOPS", - guideButton: "RSVP NOW" - }, - letter: { - greeting: "Dear hacker,", - paragraph1: "You can make a change: inspire someone to build a game for the first time, help someone fall in love with computers, run an incredible game jam that you can invite all your friends to.", - paragraph2: "This February, what if you organized a game jam in your city?", - paragraph3: "Hack Club will provide guides, funding, merch, and 1-on-1 mentorship. Our goal? Run 200 game jams in 200 cities worldwide. All on the same day. All run by high schoolers like us.", - paragraph4: "To kick off 2026, we're so excited to invite you to Campfire. In just a couple months, you will learn how to raise money for your event, buy food and drinks for your attendees, and make your own video games with your friends!", - paragraph5: "Let's go on an adventure together.", - closing: "With love,", - signature: "The Campfire Team" - }, - schedule: { - title: "SCHEDULE", - days: [ - { - date: "Feb 28th", - items: [ - { time: "7:45 AM", activity: "Doors open" }, - { time: "8:00-8:45 AM", activity: "Icebreakers" }, - { time: "9:00-9:45 AM", activity: "Opening Ceremony" }, - { time: "10:15 AM-12:15 PM", activity: "Godot Workshop" }, - { time: "12:45-1:45 PM", activity: "Lunch" }, - { time: "2:00-3:00 PM", activity: "Ren'py Workshop" }, - { time: "3:00-3:30 PM", activity: "Hackathon Hosting 101 With Hack Canada" }, - { time: "4:00-4:15 PM", activity: "Typing Contest" }, - { time: "6:00-7:00 PM", activity: "Project Pitch and Dinner" }, - { time: "6:45-7:30 PM", activity: "Just Dance" }, - { time: "7:35-7:45 PM", activity: "Semi-Closing" }, - ] - } - ] - }, - sponsors: { - title: "Our sponsors", - cards: [ - { - sponsor: "Hack Club", - logo: "https://assets.hackclub.com/flag-standalone-wtransparent.svg", - link: "https://hackclub.com" - } - ] - }, - signatures: false as any, - // signatures: { - // title: "Campfire Shelburne is possible by...", - // img: "https://assets.hackclub.com/flag-standalone-wtransparent.svg" - // }, - faq: { - title: "FAQ", - participant: { - title: "Participant", - questions: [ - { - question: "What is a game jam?", - answer: "A game jam is an event where you build a game from scratch in a short time period! It's all about creativity, teamwork, and having fun while learning new skills." - }, - { - question: "Am I eligible?", - answer: "If you're a high schooler (or younger), you're eligible! No prior experience required - just bring your enthusiasm and willingness to learn." - }, - { - question: "But I've never hacked before!", - answer: "Perfect! Game jams are designed for beginners. You'll have workshops, mentors, and teammates to help you every step of the way." - }, - { - question: "All this, for free?", - answer: "Yes! Everything is completely free - venue, food, swag, workshops, and prizes. Hack Club covers all costs so you can focus on creating." - }, - { - question: "What do I need to bring?", - answer: "Just bring yourself, a laptop, charger, and any personal items you need. We'll provide food, drinks, and everything else!" - } - ], - buttonText: "Check out the parent guide" + "version": 2, + localization: { + hero: { + campfire: "CAMPFIRE", + subtitle: "Game jam for high schoolers in 200+ cities", + hostedAt: "Hosted @ {venue}", + emailPlaceholder: "you@hackclub.com", + ctaPrimary: "SIGN UP!", + ctaSecondary: "flagship event", + ctaSecondaryPrefix: "Looking for our ", + ctaSecondarySuffix: "?", + videoLabel: "watch the video", + mapLabel: "find another event near you" }, - organizer: { - title: "Organizer", - questions: [ - { - question: "Can I organize a Campfire in my city?", - answer: "Absolutely! We're always looking for passionate organizers. If you're ready to bring the magic of game development to your community, we'd love to help." - }, - { - question: "What are the steps to organizing?", - answer: "First, apply through our organizer form. Then we'll guide you through venue booking, team building, workshop planning, and day-of coordination." - }, - { - question: "Do we get funding?", - answer: "Yes! Hack Club provides funding for venue, food, swag, and other event costs. We want to remove financial barriers for amazing events." - }, - { - question: "Do we get volunteer hours?", - answer: "Many schools accept organizing hours as community service. Check with your school's requirements - we can provide documentation." - }, - { - question: "Can I join an organizing team?", - answer: "Of course! Many cities have organizing teams. Reach out to organizers in your area or apply to join an existing team." - } - ], - buttonText: "Apply to be an organizer" + nav: { + 'steps': "Steps", + 'schedule': "Schedule", + 'games-made': "Games Made", + 'faq': "FAQ" + }, + schedule: { + title: "SCHEDULE", + }, + sponsors: { + title: "Our sponsors", + }, + signatures: { + title: "Signatures", + }, + steps: { + step1: "Sign up for a **Campfire** near you", + step2: "Grab **friends** (or make new friends!) and __form a__ **team of 2-3**", + step3: "Learn from **workshops**, enjoy __free food and merch!__", + step4: "**Build** your game & **publish** it on itch.io!", + guideButton: "READ MORE" + }, + letter: { + greeting: "Dear Hackers, Musicians, and Artists,", + paragraph1: "Welcome to Hack Club's newest adventure. This winter we invite you to join us for Campfire, the world's biggest Game Jam happening simultaneously in 200 cities.", + paragraph2: "Hack Club wants you to make a game this winter.", + paragraph3: "Don't consider yourself a game dev? No problem - we have tons of online and in-person workshops for you to make your first game!", + paragraph4: "This winter, we invite you to learn something new, make something you're really proud of, meet new friends, and go on an incredible adventure together.", + closing: "With love,", + signature: "The Campfire Team" + }, + footer: { + tagline: "made with love by Hack Club & Open Sauce", + copyright: "© 2026 Hack Club. 501(c)(3) nonprofit (EIN: 81-2908499)", + description: "Hack Club is a 501(c)(3) nonprofit and network of 60k+ technical high schoolers. We believe you learn best by building so we're creating community and providing grants so you can make awesome projects. In the past few years, we've partnered with GitHub to run ", + closing: "At Hack Club, students aren't just learning, they're shipping.", + links: [ + { text: "Hack Club", href: "https://hackclub.com/" }, + { text: "Slack", href: "https://hackclub.com/slack" }, + { text: "Clubs", href: "https://hackclub.com/clubs" }, + { text: "Code of Conduct", href: "https://hackclub.com/conduct/" } + ] } }, - footer: { - tagline: "made with love by Hack Club & Open Sauce", - copyright: "© 2026 Hack Club. 501(c)(3) nonprofit (EIN: 81-2908499)", - description: "Hack Club is a 501(c)(3) nonprofit and network of 60k+ technical high schoolers. We believe you learn best by building so we're creating community and providing grants so you can make awesome projects. In the past few years, we've partnered with GitHub to run ", - closing: "At Hack Club, students aren't just learning, they're shipping." + event: { + city: "Shelburne", + date: "Feb 28 - Mar 1, 2026", + venue: "Hack Club HQ", + schedule: { + days: [ + { + date: "Feb 28th", + items: [ + { time: "7:45 AM", activity: "Doors open" }, + { time: "8:00-8:45 AM", activity: "Icebreakers" }, + { time: "9:00-9:45 AM", activity: "Opening Ceremony" }, + { time: "10:15 AM-12:15 PM", activity: "Godot Workshop" }, + { time: "12:45-1:45 PM", activity: "Lunch" }, + { time: "2:00-3:00 PM", activity: "Ren'py Workshop" }, + { time: "3:00-3:30 PM", activity: "Hackathon Hosting 101 With Hack Canada" }, + { time: "4:00-4:15 PM", activity: "Typing Contest" }, + { time: "6:00-7:00 PM", activity: "Project Pitch and Dinner" }, + { time: "6:45-7:30 PM", activity: "Just Dance" }, + { time: "7:35-7:45 PM", activity: "Semi-Closing" }, + ] + } + ] + }, + sponsors: { + cards: [ + { + sponsor: "Hack Club", + logo: "https://assets.hackclub.com/flag-standalone-wtransparent.svg", + link: "https://hackclub.com" + } + ] + }, + signatures: false as any, + // signatures: { + // title: "Campfire Shelburne is possible by...", + // img: "https://assets.hackclub.com/flag-standalone-wtransparent.svg" + // }, + faq: { + title: "FAQ", + participant: { + title: "Participant", + questions: [ + { + question: "What is a game jam?", + answer: "A game jam is an event where you build a game from scratch in a short time period! It's all about creativity, teamwork, and having fun while learning new skills." + }, + { + question: "Am I eligible?", + answer: "If you're a high schooler (or younger), you're eligible! No prior experience required - just bring your enthusiasm and willingness to learn." + }, + { + question: "But I've never hacked before!", + answer: "Perfect! Game jams are designed for beginners. You'll have workshops, mentors, and teammates to help you every step of the way." + }, + { + question: "All this, for free?", + answer: "Yes! Everything is completely free - venue, food, swag, workshops, and prizes. Hack Club covers all costs so you can focus on creating." + }, + { + question: "What do I need to bring?", + answer: "Just bring yourself, a laptop, charger, and any personal items you need. We'll provide food, drinks, and everything else!" + } + ], + buttonText: "Check out the parent guide" + }, + organizer: { + title: "Organizer", + questions: [ + { + question: "Can I organize a Campfire in my city?", + answer: "Absolutely! We're always looking for passionate organizers. If you're ready to bring the magic of game development to your community, we'd love to help." + }, + { + question: "What are the steps to organizing?", + answer: "First, apply through our organizer form. Then we'll guide you through venue booking, team building, workshop planning, and day-of coordination." + }, + { + question: "Do we get funding?", + answer: "Yes! Hack Club provides funding for venue, food, swag, and other event costs. We want to remove financial barriers for amazing events." + }, + { + question: "Do we get volunteer hours?", + answer: "Many schools accept organizing hours as community service. Check with your school's requirements - we can provide documentation." + }, + { + question: "Can I join an organizing team?", + answer: "Of course! Many cities have organizing teams. Reach out to organizers in your area or apply to join an existing team." + } + ], + buttonText: "Apply to be an organizer" + } + }, } -}; +} function App({slug, content}: {slug: string | undefined, content: SatelliteContent}) { const [email, setEmail] = useState(""); const [scrollY, setScrollY] = useState(document.body.scrollTop); const [isLargeScreen, setIsLargeScreen] = useState(window.innerWidth >= 1280); + const [isMapOpen, setIsMapOpen] = useState(false); const emailRef = useRef(null); useEffect(() => { @@ -203,12 +233,17 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte
@@ -245,14 +280,6 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte />
-
- -
-
@@ -287,7 +314,7 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte textShadow: "5px 8px 0px rgba(0,0,0,0.25)" }} > - {content.hero.title} + {content.localization.hero.campfire}

- {content.hero.city.toUpperCase()} + {content.event.city.toUpperCase()}

@@ -306,7 +333,15 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte textShadow: "0px 4px 4px rgba(0,0,0,0.25)" }} > - {content.hero.subtitle} + {content.localization.hero.subtitle} +

+

+ {content.localization.hero.hostedAt.replace('{venue}', content.event.venue)}

- {content.hero.date} + {content.event.date}

@@ -335,20 +370,19 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte onChange={e => setEmail(e.target.value)} type="email" className="text-[#854d16] text-2xl md:text-4xl font-bold truncate bg-transparent border-none outline-none flex-1 cursor-text font-ember-and-fire" - placeholder={content.hero.emailPlaceholder} - defaultValue={content.hero.emailPlaceholder} + placeholder={content.localization.hero.emailPlaceholder} /> - @@ -356,17 +390,17 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte
- {content.hero.ctaSecondaryPrefix} openWithEmail(FORM_URL_RSVP)} > - {content.hero.ctaSecondary} - {content.hero.ctaSecondarySuffix} + {content.localization.hero.ctaSecondary} + {content.localization.hero.ctaSecondarySuffix}
- + setIsMapOpen(true)} label={content.localization.hero.mapLabel}/> @@ -383,8 +417,8 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte
-
- +
+ setIsMapOpen(true)} label={content.localization.hero.mapLabel}/>
@@ -433,7 +467,7 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte imageSrc="/compressed/ui/step-signup.jpeg" imageAlt="Step 1" > - {content.steps.step1}

{content.steps.step1Highlight} + - {content.steps.step2}{content.steps.step2Highlight}{content.steps.step2Suffix} + - {content.steps.step3}{content.steps.step3Highlight1}{content.steps.step3Middle}{content.steps.step3Highlight2} + - {content.steps.step4}{content.steps.step4Highlight1}{content.steps.step4Middle}{content.steps.step4Highlight2} + - -
- -
@@ -489,20 +508,18 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte
-

{content.letter.greeting}

-

{content.letter.paragraph1}

+

{content.localization.letter.greeting}

+

{content.localization.letter.paragraph1}

-

{content.letter.paragraph2}

+

{content.localization.letter.paragraph2}

-

{content.letter.paragraph3}

+

{content.localization.letter.paragraph3}

-

{content.letter.paragraph4}

- -

{content.letter.paragraph5}

+

{content.localization.letter.paragraph4}

- {content.letter.closing}
- {content.letter.signature} + {content.localization.letter.closing}
+ {content.localization.letter.signature}

@@ -542,11 +559,11 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte

- {content.schedule.title} + {content.localization.schedule.title}

- {content.schedule.days.map((day, dayIndex) => ( + {content.event.schedule.days.map((day, dayIndex) => (

{day.date} @@ -586,12 +603,12 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte textShadow: "0px 4px 4px rgba(0,0,0,0.25)" }} > - {content.sponsors.title} + {content.localization.sponsors.title}

@@ -700,15 +717,15 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte textShadow: "0px 4px 4px rgba(0,0,0,0.25)" }} > - {content.faq.organizer.title} + {content.event.faq.organizer.title}

- {content.faq.organizer.questions.map((q, i) => ( + {content.event.faq.organizer.questions.map((q, i) => ( {q.answer} ))} - +
@@ -729,32 +746,54 @@ function App({slug, content}: {slug: string | undefined, content: SatelliteConte textShadow: "0px 4px 4px rgba(0,0,0,0.25)" }} > - {content.footer.tagline} + {content.localization.footer.tagline}

- Hack Club - Slack - Clubs - Code of Conduct + {content.localization.footer.links.map((link, index) => ( + {link.text} + ))}

- {content.footer.copyright} + {content.localization.footer.copyright}

- {content.footer.description}Summer of Making, hosted the world's longest hackathon on land, and ran Canada's largest high school hackathon. + {content.localization.footer.description}Summer of Making, hosted the world's longest hackathon on land, and ran Canada's largest high school hackathon.

- {content.footer.closing} + {content.localization.footer.closing}

+ + {isMapOpen && ( +
setIsMapOpen(false)} + > +
e.stopPropagation()} + > + +