From 4825b40d79fee207409a63e0ecf8e8ca258dfdba Mon Sep 17 00:00:00 2001 From: bgar324 Date: Fri, 11 Sep 2026 04:02:17 -0700 Subject: [PATCH 1/3] Centralize content and migrate to TypeScript and Tailwind --- .github/workflows/ci.yml | 44 +- .gitignore | 2 + .prettierignore | 9 + README.md | 170 +- docs/refactor-plan.md | 70 + docs/ui-canon.md | 26 + docs/verification/home-tablet.png | Bin 0 -> 406414 bytes docs/verification/refactor-parity.json | 288 ++ docs/verification/resources-desktop.png | Bin 0 -> 331003 bytes docs/verification/team-phone.png | Bin 0 -> 197577 bytes eslint.config.mjs | 30 + index.html | 2 +- jsconfig.json | 6 - licenses/bootstrap.txt | 24 + licenses/to-title-case.txt | 23 + package-lock.json | 2620 ++++++++++++----- package.json | 31 +- playwright.config.ts | 60 + scripts/asset-parity.cjs | 51 + scripts/browser-smoke.spec.ts | 593 ++++ scripts/content-check.mjs | 324 ++ scripts/image-sources.json | 10 +- scripts/images.js | 17 +- scripts/serve-built-site.cjs | 253 ++ scripts/visual-parity.cjs | 203 ++ src/App.jsx | 73 - src/App.scss | 138 - src/App.test.jsx | 74 - src/app/App.test.tsx | 65 + src/app/App.tsx | 57 + src/app/main.tsx | 12 + src/components/About.scss | 97 - src/components/ActionLink.tsx | 22 + src/components/Collapse.tsx | 121 + src/components/Footer.jsx | 74 - src/components/Footer.scss | 104 - src/components/Footer.tsx | 70 + src/components/GetInvolved.jsx | 140 - src/components/GetInvolved.scss | 334 --- src/components/Hero.jsx | 84 - src/components/Hero.scss | 101 - src/components/Home.jsx | 42 - src/components/Home.scss | 8 - src/components/Ignite/Ignite.jsx | 290 -- src/components/Ignite/Ignite.scss | 492 ---- src/components/Leadership.jsx | 41 - src/components/Leadership.scss | 25 - src/components/OutboundLink.tsx | 40 + src/components/PageNotFound.scss | 10 - .../{PageNotFound.jsx => PageNotFound.tsx} | 9 +- src/components/Registration/Eligibility.jsx | 84 - src/components/Registration/Eligibility.scss | 65 - src/components/Registration/FAQ.jsx | 311 -- src/components/Registration/FAQ.scss | 63 - .../Registration/ImportantLinks.jsx | 104 - .../Registration/ImportantLinks.scss | 47 - src/components/Registration/Register.jsx | 46 - src/components/Registration/Register.scss | 26 - .../Registration/RegistrationAlert.jsx | 61 - .../Registration/RegistrationAlert.scss | 47 - .../Registration/RegistrationTop.jsx | 127 - .../Registration/RegistrationTop.scss | 71 - src/components/Registration/Schedule.jsx | 92 - src/components/Registration/Schedule.scss | 56 - src/components/Registration/Waivers.jsx | 85 - src/components/Registration/Waivers.scss | 41 - src/components/Resources/Ceremonies.jsx | 48 - src/components/Resources/Ceremonies.scss | 58 - src/components/Resources/FAQ.jsx | 73 - src/components/Resources/FAQ.scss | 59 - src/components/Resources/Maps.jsx | 34 - src/components/Resources/Maps.scss | 41 - src/components/Resources/Resources.jsx | 88 - src/components/Resources/Resources.scss | 39 - src/components/Resources/Schedule.jsx | 42 - src/components/Resources/Schedule.scss | 54 - src/components/Resources/Waivers.jsx | 60 - src/components/Resources/Waivers.scss | 41 - src/components/Resources/Workshops copy.jsx | 242 -- src/components/Resources/Workshops copy.scss | 32 - src/components/Resources/Workshops.jsx | 421 --- src/components/Resources/Workshops.scss | 43 - src/components/Resources/exploretech2021.jsx | 30 - src/components/Resources/exploretech2021.scss | 29 - src/components/Resources2023/Ceremonies.jsx | 48 - src/components/Resources2023/Ceremonies.scss | 58 - src/components/Resources2023/FAQ.jsx | 73 - src/components/Resources2023/FAQ.scss | 59 - src/components/Resources2023/Maps.jsx | 34 - src/components/Resources2023/Maps.scss | 41 - src/components/Resources2023/Resources.jsx | 94 - src/components/Resources2023/Resources.scss | 39 - src/components/Resources2023/Schedule.jsx | 42 - src/components/Resources2023/Schedule.scss | 54 - src/components/Resources2023/Waivers.jsx | 60 - src/components/Resources2023/Waivers.scss | 41 - .../Resources2023/Workshops copy.jsx | 242 -- .../Resources2023/Workshops copy.scss | 32 - src/components/Resources2023/Workshops.jsx | 355 --- src/components/Resources2023/Workshops.scss | 43 - .../Resources2023/exploretech2021.jsx | 30 - .../Resources2023/exploretech2021.scss | 29 - src/components/Resources2026/Ceremonies.jsx | 48 - src/components/Resources2026/Ceremonies.scss | 58 - src/components/Resources2026/FAQ.jsx | 73 - src/components/Resources2026/FAQ.scss | 59 - src/components/Resources2026/Maps.jsx | 34 - src/components/Resources2026/Maps.scss | 41 - src/components/Resources2026/Resources.scss | 40 - src/components/Resources2026/Schedule.jsx | 42 - src/components/Resources2026/Schedule.scss | 54 - src/components/Resources2026/Waivers.jsx | 60 - src/components/Resources2026/Waivers.scss | 41 - .../Resources2026/Workshops copy.jsx | 242 -- .../Resources2026/Workshops copy.scss | 32 - src/components/Resources2026/Workshops.jsx | 107 - src/components/Resources2026/Workshops.scss | 43 - .../Resources2026/exploretech2021.jsx | 30 - .../Resources2026/exploretech2021.scss | 29 - src/components/Schedule.jsx | 24 - src/components/Speakers.jsx | 58 - src/components/Speakers.scss | 87 - src/components/Sponsors.jsx | 92 - src/components/Sponsors.scss | 118 - src/components/Team/Content.jsx | 36 - src/components/Team/Content.scss | 23 - src/components/Team/Design.jsx | 36 - src/components/Team/Design.scss | 25 - src/components/Team/External.jsx | 36 - src/components/Team/External.scss | 23 - src/components/Team/Leadership.jsx | 41 - src/components/Team/Leadership.scss | 25 - src/components/Team/Operations.jsx | 40 - src/components/Team/Operations.scss | 25 - src/components/Team/Team.jsx | 124 - src/components/Team/Team.scss | 170 -- src/components/common/Alerts.jsx | 69 - src/components/common/Alerts.scss | 40 - src/components/common/Header.jsx | 140 - src/components/common/Header.scss | 62 - src/components/common/Header.tsx | 208 ++ src/components/common/LinkWithArrow.jsx | 35 - src/components/common/LinkWithArrow.scss | 41 - src/components/common/LinkWithArrow.tsx | 18 + src/components/common/People.jsx | 100 - src/components/common/People.scss | 65 - src/components/common/People.tsx | 76 + src/components/common/UnorderedItemList.jsx | 36 - src/components/common/UnorderedItemList.scss | 36 - src/components/common/YoutubeEmbed.scss | 61 - .../{YoutubeEmbed.jsx => YoutubeEmbed.tsx} | 28 +- src/constants/2026schedule.js | 27 - src/constants/2026workshop.js | 124 - src/constants/HomePageSections.js | 22 - src/constants/community-partners.js | 45 - src/constants/content.js | 53 - src/constants/design.js | 37 - src/constants/external.js | 39 - src/constants/faq.js | 68 - src/constants/leadership.js | 102 - src/constants/marketing.js | 11 - src/constants/navigation.js | 80 - src/constants/operations.js | 39 - ...{optimizedImages.js => optimizedImages.ts} | 174 +- src/constants/panelists.js | 39 - src/constants/schedule.js | 27 - src/constants/speakers.js | 54 - src/constants/webdev.js | 59 - src/constants/workshops.js | 408 --- src/content/events/2021.ts | 177 ++ src/content/events/2022.ts | 396 +++ src/content/events/2023.ts | 245 ++ src/content/events/2026.ts | 216 ++ src/content/events/index.ts | 29 + src/content/events/types.ts | 64 + src/content/events/waivers.ts | 21 + src/content/people.ts | 170 ++ src/content/sections.ts | 22 + src/content/speakers.ts | 25 + src/content/teams.ts | 118 + src/content/types.ts | 45 + .../events/EventPage.tsx} | 127 +- src/features/events/Faq.tsx | 90 + src/features/events/Maps.tsx | 37 + src/features/events/Schedule.tsx | 28 + src/features/events/Waivers.tsx | 46 + src/features/events/Workshops.tsx | 97 + src/features/home/Home.tsx | 19 + .../home/components/About.test.tsx} | 66 +- .../home/components/About.tsx} | 176 +- src/features/home/components/Carousel.tsx | 303 ++ src/features/home/components/GetInvolved.tsx | 126 + src/features/home/components/Hero.tsx | 68 + src/features/home/components/Speakers.tsx | 24 + src/features/home/components/Sponsors.tsx | 63 + .../home/content/carousel.ts} | 13 +- .../home/content/sponsors.ts} | 24 +- src/features/ignite/Ignite.tsx | 265 ++ src/features/registration/ImportantLinks.tsx | 62 + .../registration/RegistrationAlert.tsx | 38 + .../registration/RegistrationPage.tsx | 57 + src/features/registration/TwoDaySchedule.tsx | 43 + src/features/team/Team.tsx | 120 + src/index.jsx | 14 - src/styles/app-shell.css | 173 ++ src/{index.scss => styles/base.css} | 6 +- src/styles/controls.css | 778 +++++ src/styles/events.css | 210 ++ src/styles/home.css | 564 ++++ src/styles/ignite.css | 310 ++ src/styles/reset.css | 179 ++ src/styles/shared-ui.css | 136 + src/styles/team.css | 131 + src/styles/theme.css | 32 + src/styles/tokens.css | 17 + src/temp.txt | 1 - src/test-setup.ts | 18 + src/util/GoogleAnalytics.js | 74 - ...lytics.test.js => GoogleAnalytics.test.ts} | 67 +- src/util/GoogleAnalytics.ts | 128 + src/vite-env.d.ts | 4 + tsconfig.json | 18 + vite.config.mjs | 35 +- 223 files changed, 10807 insertions(+), 11460 deletions(-) create mode 100644 .prettierignore create mode 100644 docs/refactor-plan.md create mode 100644 docs/ui-canon.md create mode 100644 docs/verification/home-tablet.png create mode 100644 docs/verification/refactor-parity.json create mode 100644 docs/verification/resources-desktop.png create mode 100644 docs/verification/team-phone.png create mode 100644 eslint.config.mjs delete mode 100644 jsconfig.json create mode 100644 licenses/bootstrap.txt create mode 100644 licenses/to-title-case.txt create mode 100644 playwright.config.ts create mode 100644 scripts/asset-parity.cjs create mode 100644 scripts/browser-smoke.spec.ts create mode 100755 scripts/content-check.mjs create mode 100755 scripts/serve-built-site.cjs create mode 100644 scripts/visual-parity.cjs delete mode 100644 src/App.jsx delete mode 100644 src/App.scss delete mode 100644 src/App.test.jsx create mode 100644 src/app/App.test.tsx create mode 100644 src/app/App.tsx create mode 100644 src/app/main.tsx delete mode 100644 src/components/About.scss create mode 100644 src/components/ActionLink.tsx create mode 100644 src/components/Collapse.tsx delete mode 100644 src/components/Footer.jsx delete mode 100644 src/components/Footer.scss create mode 100644 src/components/Footer.tsx delete mode 100644 src/components/GetInvolved.jsx delete mode 100644 src/components/GetInvolved.scss delete mode 100644 src/components/Hero.jsx delete mode 100644 src/components/Hero.scss delete mode 100644 src/components/Home.jsx delete mode 100644 src/components/Home.scss delete mode 100644 src/components/Ignite/Ignite.jsx delete mode 100644 src/components/Ignite/Ignite.scss delete mode 100644 src/components/Leadership.jsx delete mode 100644 src/components/Leadership.scss create mode 100644 src/components/OutboundLink.tsx delete mode 100644 src/components/PageNotFound.scss rename src/components/{PageNotFound.jsx => PageNotFound.tsx} (70%) delete mode 100644 src/components/Registration/Eligibility.jsx delete mode 100644 src/components/Registration/Eligibility.scss delete mode 100644 src/components/Registration/FAQ.jsx delete mode 100644 src/components/Registration/FAQ.scss delete mode 100644 src/components/Registration/ImportantLinks.jsx delete mode 100644 src/components/Registration/ImportantLinks.scss delete mode 100644 src/components/Registration/Register.jsx delete mode 100644 src/components/Registration/Register.scss delete mode 100644 src/components/Registration/RegistrationAlert.jsx delete mode 100644 src/components/Registration/RegistrationAlert.scss delete mode 100644 src/components/Registration/RegistrationTop.jsx delete mode 100644 src/components/Registration/RegistrationTop.scss delete mode 100644 src/components/Registration/Schedule.jsx delete mode 100644 src/components/Registration/Schedule.scss delete mode 100644 src/components/Registration/Waivers.jsx delete mode 100644 src/components/Registration/Waivers.scss delete mode 100644 src/components/Resources/Ceremonies.jsx delete mode 100644 src/components/Resources/Ceremonies.scss delete mode 100644 src/components/Resources/FAQ.jsx delete mode 100644 src/components/Resources/FAQ.scss delete mode 100644 src/components/Resources/Maps.jsx delete mode 100644 src/components/Resources/Maps.scss delete mode 100644 src/components/Resources/Resources.jsx delete mode 100644 src/components/Resources/Resources.scss delete mode 100644 src/components/Resources/Schedule.jsx delete mode 100644 src/components/Resources/Schedule.scss delete mode 100644 src/components/Resources/Waivers.jsx delete mode 100644 src/components/Resources/Waivers.scss delete mode 100644 src/components/Resources/Workshops copy.jsx delete mode 100644 src/components/Resources/Workshops copy.scss delete mode 100644 src/components/Resources/Workshops.jsx delete mode 100644 src/components/Resources/Workshops.scss delete mode 100644 src/components/Resources/exploretech2021.jsx delete mode 100644 src/components/Resources/exploretech2021.scss delete mode 100644 src/components/Resources2023/Ceremonies.jsx delete mode 100644 src/components/Resources2023/Ceremonies.scss delete mode 100644 src/components/Resources2023/FAQ.jsx delete mode 100644 src/components/Resources2023/FAQ.scss delete mode 100644 src/components/Resources2023/Maps.jsx delete mode 100644 src/components/Resources2023/Maps.scss delete mode 100644 src/components/Resources2023/Resources.jsx delete mode 100644 src/components/Resources2023/Resources.scss delete mode 100644 src/components/Resources2023/Schedule.jsx delete mode 100644 src/components/Resources2023/Schedule.scss delete mode 100644 src/components/Resources2023/Waivers.jsx delete mode 100644 src/components/Resources2023/Waivers.scss delete mode 100644 src/components/Resources2023/Workshops copy.jsx delete mode 100644 src/components/Resources2023/Workshops copy.scss delete mode 100644 src/components/Resources2023/Workshops.jsx delete mode 100644 src/components/Resources2023/Workshops.scss delete mode 100644 src/components/Resources2023/exploretech2021.jsx delete mode 100644 src/components/Resources2023/exploretech2021.scss delete mode 100644 src/components/Resources2026/Ceremonies.jsx delete mode 100644 src/components/Resources2026/Ceremonies.scss delete mode 100644 src/components/Resources2026/FAQ.jsx delete mode 100644 src/components/Resources2026/FAQ.scss delete mode 100644 src/components/Resources2026/Maps.jsx delete mode 100644 src/components/Resources2026/Maps.scss delete mode 100644 src/components/Resources2026/Resources.scss delete mode 100644 src/components/Resources2026/Schedule.jsx delete mode 100644 src/components/Resources2026/Schedule.scss delete mode 100644 src/components/Resources2026/Waivers.jsx delete mode 100644 src/components/Resources2026/Waivers.scss delete mode 100644 src/components/Resources2026/Workshops copy.jsx delete mode 100644 src/components/Resources2026/Workshops copy.scss delete mode 100644 src/components/Resources2026/Workshops.jsx delete mode 100644 src/components/Resources2026/Workshops.scss delete mode 100644 src/components/Resources2026/exploretech2021.jsx delete mode 100644 src/components/Resources2026/exploretech2021.scss delete mode 100644 src/components/Schedule.jsx delete mode 100644 src/components/Speakers.jsx delete mode 100644 src/components/Speakers.scss delete mode 100644 src/components/Sponsors.jsx delete mode 100644 src/components/Sponsors.scss delete mode 100644 src/components/Team/Content.jsx delete mode 100644 src/components/Team/Content.scss delete mode 100644 src/components/Team/Design.jsx delete mode 100644 src/components/Team/Design.scss delete mode 100644 src/components/Team/External.jsx delete mode 100644 src/components/Team/External.scss delete mode 100644 src/components/Team/Leadership.jsx delete mode 100644 src/components/Team/Leadership.scss delete mode 100644 src/components/Team/Operations.jsx delete mode 100644 src/components/Team/Operations.scss delete mode 100644 src/components/Team/Team.jsx delete mode 100644 src/components/Team/Team.scss delete mode 100644 src/components/common/Alerts.jsx delete mode 100644 src/components/common/Alerts.scss delete mode 100644 src/components/common/Header.jsx delete mode 100644 src/components/common/Header.scss create mode 100644 src/components/common/Header.tsx delete mode 100644 src/components/common/LinkWithArrow.jsx delete mode 100644 src/components/common/LinkWithArrow.scss create mode 100644 src/components/common/LinkWithArrow.tsx delete mode 100644 src/components/common/People.jsx delete mode 100644 src/components/common/People.scss create mode 100644 src/components/common/People.tsx delete mode 100644 src/components/common/UnorderedItemList.jsx delete mode 100644 src/components/common/UnorderedItemList.scss delete mode 100644 src/components/common/YoutubeEmbed.scss rename src/components/common/{YoutubeEmbed.jsx => YoutubeEmbed.tsx} (67%) delete mode 100644 src/constants/2026schedule.js delete mode 100644 src/constants/2026workshop.js delete mode 100644 src/constants/HomePageSections.js delete mode 100644 src/constants/community-partners.js delete mode 100644 src/constants/content.js delete mode 100644 src/constants/design.js delete mode 100644 src/constants/external.js delete mode 100644 src/constants/faq.js delete mode 100644 src/constants/leadership.js delete mode 100644 src/constants/marketing.js delete mode 100644 src/constants/navigation.js delete mode 100644 src/constants/operations.js rename src/constants/{optimizedImages.js => optimizedImages.ts} (55%) delete mode 100644 src/constants/panelists.js delete mode 100644 src/constants/schedule.js delete mode 100644 src/constants/speakers.js delete mode 100644 src/constants/webdev.js delete mode 100644 src/constants/workshops.js create mode 100644 src/content/events/2021.ts create mode 100644 src/content/events/2022.ts create mode 100644 src/content/events/2023.ts create mode 100644 src/content/events/2026.ts create mode 100644 src/content/events/index.ts create mode 100644 src/content/events/types.ts create mode 100644 src/content/events/waivers.ts create mode 100644 src/content/people.ts create mode 100644 src/content/sections.ts create mode 100644 src/content/speakers.ts create mode 100644 src/content/teams.ts create mode 100644 src/content/types.ts rename src/{components/Resources2026/Resources.jsx => features/events/EventPage.tsx} (50%) create mode 100644 src/features/events/Faq.tsx create mode 100644 src/features/events/Maps.tsx create mode 100644 src/features/events/Schedule.tsx create mode 100644 src/features/events/Waivers.tsx create mode 100644 src/features/events/Workshops.tsx create mode 100644 src/features/home/Home.tsx rename src/{components/About.test.jsx => features/home/components/About.test.tsx} (53%) rename src/{components/About.jsx => features/home/components/About.tsx} (61%) create mode 100644 src/features/home/components/Carousel.tsx create mode 100644 src/features/home/components/GetInvolved.tsx create mode 100644 src/features/home/components/Hero.tsx create mode 100644 src/features/home/components/Speakers.tsx create mode 100644 src/features/home/components/Sponsors.tsx rename src/{constants/carousel.js => features/home/content/carousel.ts} (53%) rename src/{constants/sponsors.js => features/home/content/sponsors.ts} (65%) create mode 100644 src/features/ignite/Ignite.tsx create mode 100644 src/features/registration/ImportantLinks.tsx create mode 100644 src/features/registration/RegistrationAlert.tsx create mode 100644 src/features/registration/RegistrationPage.tsx create mode 100644 src/features/registration/TwoDaySchedule.tsx create mode 100644 src/features/team/Team.tsx delete mode 100644 src/index.jsx create mode 100644 src/styles/app-shell.css rename src/{index.scss => styles/base.css} (56%) create mode 100644 src/styles/controls.css create mode 100644 src/styles/events.css create mode 100644 src/styles/home.css create mode 100644 src/styles/ignite.css create mode 100644 src/styles/reset.css create mode 100644 src/styles/shared-ui.css create mode 100644 src/styles/team.css create mode 100644 src/styles/theme.css create mode 100644 src/styles/tokens.css delete mode 100644 src/temp.txt create mode 100644 src/test-setup.ts delete mode 100644 src/util/GoogleAnalytics.js rename src/util/{GoogleAnalytics.test.js => GoogleAnalytics.test.ts} (59%) create mode 100644 src/util/GoogleAnalytics.ts create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dfe7793..b3f7420 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,8 +1,8 @@ name: exploretech.la Continuous Integration -# Verifies every pull request targeting master. Runs the same install, test, -# image-manifest check (via prebuild) and production build that deployment uses, -# without any access to deployment secrets. +# Verifies every pull request targeting master. Runs the same install, checks, +# image-manifest check (via prebuild) and production build that deployment +# uses, plus the browser smoke suite, without any access to deployment secrets. on: pull_request: branches: [master] @@ -20,7 +20,7 @@ concurrency: jobs: verify: runs-on: ubuntu-latest - timeout-minutes: 20 + timeout-minutes: 25 steps: - name: Check out the repository @@ -38,6 +38,20 @@ jobs: - name: Install packages run: npm ci + - name: Check types + run: npm run typecheck + + - name: Lint + run: npm run lint + + - name: Check formatting + run: npm run format:check + + # References between people, teams and event content, and the assets + # they point at. Loads the content modules; makes no network requests. + - name: Check content + run: npm run content:check + - name: Run the tests run: npm test @@ -45,3 +59,25 @@ jobs: # verified against scripts/image-sources.json before bundling. - name: Build the site run: npm run build + + # Only Chromium: the smoke suite gates behaviour, not cross-engine + # rendering. Browsers are not in the npm cache, so this is a real + # download on every run. + - name: Install the Chromium test browser + run: npx playwright install --with-deps chromium + + # Serves the build through scripts/serve-built-site.cjs, which reproduces + # GitHub Pages' 404-to-root restoration. + - name: Run the browser smoke suite + run: npm run test:browser + + - name: Upload the browser smoke report + if: failure() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: playwright-report + path: | + playwright-report + test-results + retention-days: 7 + if-no-files-found: ignore diff --git a/.gitignore b/.gitignore index 8b31b89..e5086d2 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ # testing /coverage +/playwright-report +/test-results # production /build diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..6852267 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,9 @@ +node_modules/ +build/ +handoffs/ +playwright-report/ +test-results/ +src/static/ +src/constants/optimizedImages.ts +src/image.png +package-lock.json diff --git a/README.md b/README.md index 0eddf7c..50fe8ec 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # exploretech.la -The React website for [exploretech.la](https://www.exploretech.la/), built with Vite and Dart Sass and hosted on GitHub Pages. +The website for [exploretech.la](https://www.exploretech.la/): a React single-page app written in TypeScript, built with Vite and Tailwind, and hosted on GitHub Pages. ## Development @@ -13,43 +13,85 @@ npm ci npm start ``` -The development server runs at `http://127.0.0.1:3000`. It fails clearly if that port is already occupied. JSX and stylesheet edits update through Vite's development server. +The development server runs at `http://127.0.0.1:3000` and fails clearly if that port is occupied. -React 16.13 uses classic JSX in both application transforms and dependency scanning. The development config removes the plugin's automatic-runtime pre-bundles, which do not exist in that React version. +## Where things live -## Checks and production builds +| Path | Holds | Edit it when | +| --- | --- | --- | +| `src/content/people.ts` | One profile per person: name, portrait, profile link | Someone joins, leaves, or changes their photo or link | +| `src/content/teams.ts` | Ordered team sections and the role each person holds in them | A roster or job title changes | +| `src/content/speakers.ts` | Ordered historical speaking roles referencing the people registry | A past speaker's displayed title or order changes | +| `src/content/events/` | One module per event year, plus `index.ts` listing them | A schedule, workshop, map, waiver or FAQ changes | +| `src/content/sections.ts` | Home page section ids used by header hash links | A home page anchor is added or renamed | +| `src/features/` | Page rendering and feature-specific home or Ignite copy | A page layout or its local copy changes | +| `src/components/` | Shared UI and media only | Something is genuinely used by more than one feature | +| `src/styles/` | `theme.css` entry, tokens, reset, and per-area layers | The design changes | +| `src/constants/optimizedImages.ts` | Generated image map — never edit by hand | Never; run `npm run images` | +| `src/static/` | Original photographs and documents, and generated WebP output | You add a source image or document | +| `scripts/` | Image pipeline, content check, browser smoke, test server, parity tools | Tooling changes | +| `src/app/` | Entry, routes, analytics and scroll effects | A route is added or removed | -```sh -npm test # Run the regression suite once -npm run test:watch # Watch tests while developing -npm run images:check # Check generated image integrity and budgets -npm run build # Check images, then build into build/ -npm run preview # Serve the production build locally +Content is central on purpose: authors change `src/content` without knowing which component renders it, and features read content without owning it. + +Home carousel and sponsor records live in `src/features/home/content/`. Team and speaker identities always live in the shared people registry. + +## Contributor tasks + +### Update a person + +Edit the one entry in `src/content/people.ts`. Every team that lists them picks the change up. + +```ts +"sandra-pan": { + name: "Sandra Pan", + image: images["team/leadership/sandra-pan.jpg"].src, + link: "https://www.linkedin.com/in/sandra-pan-b994802aa", +}, ``` -Tests use Vitest and jsdom. Analytics tests use a dummy ID and make no provider requests. +A person with no portrait simply omits `image`; their card still renders with name and role. + +### Change a roster or a role -The build/test tooling is modernized independently of the UI libraries. React 16, React Router 5, and Bootstrap 4 remain pinned to their previously deployed versions. Dart Sass currently warns about legacy imports and Bootstrap APIs; those warnings remain visible and belong to a subsequent stylesheet/UI-library upgrade. +Edit `src/content/teams.ts`. Each member is a reference plus the title held *in that section*, so the same person can appear in several teams with different titles. Card order follows the array; tab order follows the section order. + +```ts +{ personId: "benjamin-garcia", title: "Web Dev Lead" }, +``` -## Updating images +`personId` is checked against the registry at compile time and again by `npm run content:check`. -Optimized images are checked in. Normal installs, tests, CI, and builds do not need native image-generation tools. +### Change an event -To regenerate images, install `cwebp`, `ffmpeg`, and `ffprobe`. On macOS: +Edit the year module under `src/content/events/` (`2022.ts` is served at `/resources`, `2023.ts` at `/resources2023`, `2026.ts` at `/resources2026`, and `2021.ts` is the registration page at `/register`). Schedules, workshop cards, maps, waivers, FAQ entries and the feedback link are all data there. Archived workshop videos hold a bare YouTube id, never a watch URL, and always render behind the click-to-load facade. + +### Add an event year + +1. Add `src/content/events/.ts` exporting an `EventContent`. +2. Register it in `src/content/events/index.ts`: the module in `EVENTS`, and its path, year and menu label in `EVENT_ROUTES`. + +That is the whole change. The router and the Resources menu are generated from `EVENT_ROUTES`, which is also why the menu label lives there: `/resources` serves the 2022 content under the label "exploretech 2021" it shipped with. + +Old years stay published. They are history, not dead code. + +### Add or replace an image + +Optimized images are checked in, so normal installs, tests, CI and builds need no native tools. Regeneration needs `cwebp`, `ffmpeg` and `ffprobe`: ```sh brew install webp ffmpeg ``` -1. Keep the original image under `src/static/`. -2. Add its path and profile to `scripts/image-sources.json`. Portraits use a square crop up to 320px for the 160px team cards. Content images get responsive widths without enlargement. Use a `focus` override when the default crop cuts a face. -3. Run `npm run images`. It applies EXIF orientation, generates WebP files, and updates the manifest and `src/constants/optimizedImages.js`. -4. Import the generated map rather than an original photograph: +1. Put the original under `src/static/`. +2. Add its path and profile to `scripts/image-sources.json`. Portraits are cropped square up to 320px for the 160px team cards; content images get responsive widths without enlargement. Add a `focus` override when the default crop cuts a face. +3. Run `npm run images`. It applies EXIF orientation, writes the WebP variants, and regenerates the manifest and `src/constants/optimizedImages.ts`. +4. Use the generated map rather than the original file: -```jsx -import images from "constants/optimizedImages"; +```tsx +import images from "../../constants/optimizedImages"; // relative to your module -// Team roster entries retain a plain image URL. +// A roster portrait needs only the URL. const portrait = images["team/leadership/sandra-pan.jpg"].src; // Content images carry responsive sources and intrinsic dimensions. @@ -62,30 +104,78 @@ const portrait = images["team/leadership/sandra-pan.jpg"].src; />; ``` -5. Run `npm run images:check`, then inspect the affected pages at phone and desktop widths. Check faces, transparent logos, and images revealed by scrolling. +5. Run `npm run images:check`, then look at the affected pages at phone and desktop widths: faces, transparent logos, and images revealed by scrolling. + +The check validates source and output hashes, recipe freshness, dimensions, byte budgets, generated-map consistency, and raw raster imports in the configured sources. Keep the originals; they are the regeneration inputs. Use `npm run images -- --only ` for a narrow update, `npm run images -- --force` after changing tools, and `npm run images -- --help` for profile budgets. + +## Checks + +```sh +npm run typecheck # TypeScript, strict, no emit +npm run lint # ESLint +npm run format:check # Prettier (npm run format writes) +npm test # Vitest unit and component regressions +npm run content:check # References between people, teams, events and their assets +npm run images:check # Generated image integrity and budgets +npm run build # Checks images, then builds into build/ +npm run preview # Serve the production build locally +``` + +`npm run content:check` loads the content modules through Vite, so imported images and documents are resolved the way the app resolves them. It reports missing people, duplicate profiles or roles, shared profile links, missing assets, malformed URLs and video ids, and duplicate routes or workshop titles. It makes no network requests: a syntactically valid but dead external link still passes. + +### Browser smoke + +```sh +npx playwright install chromium # once per machine +npm run build +npm run test:browser +``` + +The suite (`scripts/browser-smoke.spec.ts`, configured in `playwright.config.ts`) runs Chromium against the **built** site served by `scripts/serve-built-site.cjs`, which answers unknown paths with `404.html` exactly as GitHub Pages does. Point it at another build with `SMOKE_ROOT=/path/to/build`, or move it off port 4390 with `SMOKE_PORT`. -The check validates source/output hashes, recipe freshness, dimensions, byte budgets, generated-map consistency, and raw raster imports in the configured JavaScript sources. Do not edit generated files by hand. +Every cross-origin request is aborted and recorded, so the suite is offline and reaches no analytics or video vendor. It covers: -Use `npm run images -- --only ` for a narrow update, or `npm run images -- --force` after changing encoder behavior or tools. Run `npm run images -- --help` for profile budgets and crop settings. Original files remain regeneration inputs; PDF and map links are excluded from this pipeline. +- all 13 routes, the `/our_team` alias, its trailing slash, and the not-found page and title; +- deep links surviving the Pages 404-to-root restore with their query and hash intact; +- the phone menu opening, navigating, closing, and still landing on a hash section; +- a repeated same-hash click scrolling back; +- a pushed route starting at the top while Back leaves scrolling to the browser; +- all seven team sections, eager-then-lazy portraits, and cards with no portrait; +- archived videos requesting nothing before activation, keyboard activation, and unchanged geometry after it; +- every shared PDF and map link answering 200; +- the carousel holding the current slide until a slow one loads, and skipping a broken one without locking up. + +Add a case when you fix a bug a user could see; keep it in this one file. + +`npm run visual:parity` captures the screenshot and geometry matrix used to compare a change against a saved baseline build. It is a review tool, not part of CI. + +Use the same browser version for both captures. Serve the saved baseline and candidate builds with `scripts/serve-built-site.cjs` on separate ports, then run: + +```sh +SITE_URL=http://127.0.0.1:4391 OUTPUT_DIR=/tmp/site-before npm run visual:parity +SITE_URL=http://127.0.0.1:4392 OUTPUT_DIR=/tmp/site-after BASELINE_DIR=/tmp/site-before npm run visual:parity +node scripts/asset-parity.cjs /path/to/baseline/build build +``` + +`WIDTHS=390,768,1440` narrows a capture. The default includes every Bootstrap-era breakpoint and its adjacent pixels. Read [the UI canon](docs/ui-canon.md) before changing shared controls or styling. ## CI and deployment -- Pull requests targeting **`master`** run `.github/workflows/ci.yml`: `npm ci`, `npm test`, and `npm run build`, including its image checks. This job has read-only repository access, receives no deployment secrets, and never publishes the site. -- Pushes to **`master`** run `.github/workflows/deploy.yml`: install, test, build, then publish the verified `build/` directory to **`gh-pages`**. The deploy token is available only to the publishing step, not to installation, tests, or build tools. -- Both workflows use the Node version in `.nvmrc`, the committed lockfile, npm caching, and SHA-pinned official checkout/setup actions. -- The existing `DEPLOY_ACCESS_TOKEN` and `GOOGLE_ANALYTICS_TRACKING_ID` repository secret names are unchanged. Only the build-time environment variable is renamed to `VITE_GOOGLE_ANALYTICS_TRACKING_ID`. -- Branch protection and review requirements are unchanged. The PR check is named `verify`; an administrator can make it required in branch protection if desired. +- Pull requests targeting **`master`** run `.github/workflows/ci.yml` as the `verify` job: `npm ci`, typecheck, lint, formatting, content check, tests, `npm run build` including its image checks, then Chromium smoke against that build. On failure it uploads the Playwright traces and screenshots. The job has read-only repository access, receives no deployment secrets, and never publishes the site. +- Pushes to **`master`** run `.github/workflows/deploy.yml`: install, test, build, then publish the verified `build/` directory to **`gh-pages`**. The deploy token is available only to the publishing step. +- Both workflows use the Node version in `.nvmrc`, the committed lockfile, npm caching, and SHA-pinned official actions. +- The `DEPLOY_ACCESS_TOKEN` and `GOOGLE_ANALYTICS_TRACKING_ID` secret names are unchanged; the build-time client variable is `VITE_GOOGLE_ANALYTICS_TRACKING_ID`. +- Branch protection and review requirements are unchanged. An administrator can make `verify` a required check. -`npm run deploy` remains available for an authorized manual release and builds before publishing. Do not run it just to preview changes. +`npm run deploy` remains available for an authorized manual release and builds before publishing. Do not run it to preview changes. ## Runtime and hosting conventions -- Root `index.html` is the Vite entry. It retains the GitHub Pages query-to-route restoration script; `public/404.html` and `public/CNAME` are copied unchanged. -- Public media retain the existing `static/media/..` URLs so shared PDF/map links and cached images survive the bundler migration. JavaScript and CSS filenames may change. -- `components/`, `constants/`, `static/`, and `util/` imports resolve from `src/`; `jsconfig.json` keeps the same editor lookup root. -- `VITE_GOOGLE_ANALYTICS_TRACKING_ID` is optional and is used only in production builds. Vite-prefixed variables are public client configuration, not a place for private credentials. Analytics keeps the existing tracker and connected GA4 behavior, queues early commands, and defers vendor loading until idle, interaction, or its deadline. -- Fonts load from an HTML stylesheet link rather than a nested CSS import, preventing an unstyled startup transition in WebKit. -- Initially visible images stay eager; offscreen content uses lazy loading with reserved dimensions. The carousel waits for selected images and skips failures. Archived videos load only after activation. -- GitHub Pages' cache headers and the hosting configuration are unchanged. Longer immutable caching would require a separate hosting/CDN decision. - -npm install-script decisions are version-scoped in `package.json`. The optional watcher source-build hooks are denied; supported platforms use their prebuilt packages. Review `npm install-scripts ls` before changing these decisions for a dependency update. +- Root `index.html` is the Vite entry and keeps the GitHub Pages query-to-route restoration script; `public/404.html` and `public/CNAME` are copied unchanged. +- Public media keep their `static/media/..` URLs so shared PDF, map and image links survive a rebuild. JavaScript and CSS filenames may change. +- Styling is Tailwind utilities plus the layered stylesheets in `src/styles`, entered from `theme.css`. Tailwind's Preflight is deliberately not imported: the site's geometry depends on the reset it shipped with, which `src/styles/reset.css` carries explicitly. Do not add `@import "tailwindcss"` back. +- Fonts load from a stylesheet link in the HTML rather than a nested CSS import, which prevents an unstyled startup flash in WebKit. +- Initially visible images stay eager; offscreen content is lazy with reserved dimensions. The carousel waits for a selected image and skips failures. Archived videos load only after activation. +- `VITE_GOOGLE_ANALYTICS_TRACKING_ID` is optional and used only in production builds. Vite-prefixed variables are public client configuration, not a place for credentials. Analytics keeps the existing tracker, queues early commands, and defers vendor loading until idle, interaction, or its deadline. +- GitHub Pages' cache headers and hosting configuration are unchanged. Longer immutable caching would need a separate hosting decision. +- npm install-script decisions are version-scoped in `package.json`; the optional watcher source builds are denied and supported platforms use prebuilt packages. Review `npm install-scripts ls` before changing them. diff --git a/docs/refactor-plan.md b/docs/refactor-plan.md new file mode 100644 index 0000000..9f3ddbd --- /dev/null +++ b/docs/refactor-plan.md @@ -0,0 +1,70 @@ +# Contributor refactor plan and acceptance ledger + +## Mission + +Centralize people, role assignments, and annual event content; organize typed feature renderers; replace the old runtime and styling dependencies without redesigning the site. No CMS, backend, database, hosting migration, deployment, merge, branch-protection change, or secret change is included. + +Baseline: `origin/master` at `f435aca007fbaf3bc2726c8239bdd784d56b8d6d`, the independently verified PR #107 merge. Work started on `refactor-contributor-architecture`, not the already-merged modernization branch. The Node/Vite/Vitest modernization was retained. + +## Implementation sequence and decisions + +1. Fetch and verify master, preserve the user-owned image and local handoffs, build an immutable baseline, then capture screenshots and geometry before changing CSS. +2. Establish shared profile/role/event types, content ownership, brand tokens, and the observed breakpoint/reset contract. Parallel feature writers owned disjoint files; integration owned runtime, navigation, analytics, and configuration. +3. Centralize all 35 people in `content/people.ts`. The seven team sections contain 45 contextual assignments; `content/speakers.ts` contains eight historical speaking roles. Names, portraits, links, titles, order, and missing-photo slots remain unchanged. +4. Consolidate annual resources into `content/events/.ts` plus shared renderers. `/resources` deliberately retains its 2022 page content and "exploretech 2021" menu label. Registration remains the distinct 2021 two-day event. `EVENT_ROUTES` drives both routing and navigation; its keys determine valid event years. +5. Upgrade to stable React/DOM 19.3.0, Router 7.18.3, and Tailwind 4.3.3. TypeScript 6.0.3 is the latest stable compatible with typescript-eslint 8.70.0; TypeScript 7 is outside that linter's peer range. No forced peer resolution is used. +6. Replace Bootstrap's generic class API with the small `action`, `site-nav`, `site-menu`, `content-card`, and `resource-list` canon. Layout and dimensions use exact-value Tailwind utilities. Motion and state effects remain explicit CSS. Preflight is excluded. The former Sass cascade's missing tablet rules and width overrides were preserved rather than corrected into a redesign. +7. Remove old JS/JSX, Sass, copied annual components, unused content/dependencies, classic-JSX compatibility configuration, and unused scaffold files. Retain every image-generation input and public document. +8. Extend the existing CI job, add content checks and durable browser smoke, document contributor tasks and the [UI canon](ui-canon.md), then perform independent review and final verification. + +## Acceptance ledger + +| Requirement | State | Evidence | +| --- | --- | --- | +| Latest master and fresh branch | done | Fetch, branch creation, GitHub PR #107 merge verification | +| Baseline screenshots and geometry | done | 210 baseline cells at 14 routes and 15 widths, including breakpoint-adjacent pixels | +| One person profile and contextual assignments | done | `content/people.ts`, `teams.ts`, `speakers.ts`; 35 profiles, 53 total roles; content and browser checks | +| Shared annual data/rendering and archives | done | `content/events`, `features/events`, `features/registration`; preserved route text, image order, links and schedules | +| Feature and content ownership | done | README ownership table and edit-person/roster/event/image instructions | +| Strict TS and compatible stable runtime | done | No application JS/JSX; strict typecheck, lint, cold Vite startup and live JSX HMR without document reload | +| Tailwind cutover and small shared UI canon | done | No Bootstrap/React Bootstrap/Sass dependencies or application imports; semantic selectors, explicit reset/tokens, shared ActionLink/OutboundLink/Collapse | +| Proven dead code removed | done | Unreachable annual copies, inactive components, old constants, all 59 Sass files and unused scaffold removed; original assets retained | +| Shipped image loading and regressions preserved | done | 12 Vitest tests, including the original failed/stale carousel and analytics assertions; browser slow/failing-image cases | +| Public binary URLs and bytes retained | done | `asset-parity.cjs`: all 102 public image/PDF/icon URLs and SHA-256 hashes unchanged; `404.html` and `CNAME` byte-identical | +| CI content checks and browser smoke | done | Existing read-only `verify` extended with types, lint, formatting, content, image/build and 34 Chromium cases; no deployment secrets | +| Contributor documentation | done | README, UI canon, this ledger, committed parity summary and comparison images | +| Clean install/types/lint/format/tests/images/build | done | `npm ci`, all listed checks, production build; npm audit reports zero vulnerabilities at verification time | +| Responsive and interaction parity | done | 210 final geometry/style/content cells; 34 WebKit plus 34 Firefox scenarios; 25 hover/focus/video/carousel states; autoplay, pause/resume, interrupted menu and keyboard probes | +| Analytics semantics retained | done | Dummy-ID build with real retained `analytics.js`: one tracker/script, resolved-only alias pageview, query changes, no hash-only pageview, correct outbound attribution; collection blocked | +| Independent findings resolved | done | Runtime and content/style reviews, followed by targeted approvals after the two fixes below | +| Reviewable pull request without merge/deploy | pending | Open after committing the verified artifact; no authorization to merge or deploy | + +## Demonstrated regressions and fixes + +- Tailwind's `collapse` utility initially hid open FAQ answers. Renaming the component's state classes to `disclosure` and `disclosure-transition` removed the collision without an override or compatibility layer. +- The first navigation implementation wrapped dropdown keyboard selection. The baseline clamps at the first/last item and does not open on ArrowUp. A new browser regression failed against that candidate build and passes after the correction; the ten-step baseline/candidate keyboard sequences now match. +- Independent runtime review found that the Back-navigation test replaced its spy array while the spy retained the old one. The test now clears the array in place and first proves it observed pushed-route scrolling. Targeted re-review approved the fix. +- Independent content review found a registration schedule variant that was accepted by types but not rendered. The unused union and conditional were removed; registration now requires and always renders its two-day tuple. Targeted re-review approved the fix. + +## Verification results and limits + +Machine-readable results: [verification/refactor-parity.json](verification/refactor-parity.json). + +- Final geometry matrix: 210/210 passed. Maximum observed difference is 0.03125 CSS pixels against a 0.05px ceiling. Text, destinations, image order/loading attributes, and the sampled computed styles compare exactly. Implementation class names are recorded but not treated as a visual contract. +- Final PNG comparison: 210 pairs, no dimension changes, 121 byte-identical pairs, 142 with no flagged pixels. The largest flagged fraction is 0.005645%, using pixelmatch threshold 0.1 with antialiasing excluded. Screenshots are not universally pixel-identical. Sampled residual differences are in text rasterization; diff bounds and counts are in the committed summary. +- All 25 measured hover/focus/video/carousel states match. Slide motion has observed intermediate transforms and the same 600ms easing. Autoplay advances, pauses on hover, and resumes on both baseline and candidate. Interrupted menu operations settle correctly; intermediate samples depend on frame scheduling. +- WebKit and Firefox each pass 34 scenarios, including actual Back reading-position restoration. Chromium's durable test separately proves that the app does not override POP scrolling. +- CSS gzip changed from 28.23KB to 8.43KB. Application JS gzip changed from 99.60KB to 112.98KB with the newer runtime. These are build sizes, not field-performance claims. +- Browser viewports are emulated. Playwright WebKit is not native Safari or a physical iPhone. External links are syntax-checked, not all contacted. Analytics testing proves local vendor processing, not production-property ingestion. + +Before is on the left and after is on the right in these representative, unscaled viewport crops: + +- [Phone team comparison](verification/team-phone.png) +- [Tablet home comparison](verification/home-tablet.png) +- [Desktop resources comparison](verification/resources-desktop.png) + +The full local screenshot/JSON set and nonzero pixel-diff images remain under `/tmp/exploretech-refactor-baseline` and `/tmp/exploretech-refactor-candidate`. The README documents rerunning the capture and asset comparisons. Temporary migration and diagnostic scripts are not application dependencies. + +## Protected state + +`src/image.png` remains untracked and unchanged, with SHA-256 `901b37768de40e95b2718c8a350f5761d6d341f02f2e23c9337164ad95f5ae3b`. The local `/handoffs/` exclusion remains effective. Deployment workflow, hosting, secrets, and branch protection are unchanged. diff --git a/docs/ui-canon.md b/docs/ui-canon.md new file mode 100644 index 0000000..8a04c9e --- /dev/null +++ b/docs/ui-canon.md @@ -0,0 +1,26 @@ +# UI canon + +This is a styling-system migration, not a redesign. `src/styles/theme.css` is the only stylesheet entry. It loads Tailwind's theme and utilities, then explicit base and component layers. Preflight is excluded because it changes the site's heading, image, list, and button geometry. + +## Shared controls + +- `ActionLink` renders a native anchor and preserves the existing Space-key behavior of action links. Use `action` with one of the site's five existing color treatments: `action-info`, `action-primary`, `action-warning`, `action-outline`, or `action-inverse`. `action-large` is the existing large size. The definitions live in `styles/controls.css`; do not add another button palette in a feature. +- `OutboundLink` owns outbound analytics, email redaction through the analytics module, and same-window navigation completion. Its props are native anchor props plus `eventLabel`. +- `Collapse` owns the menu and FAQ height transition. `disclosure` and `disclosure-transition` avoid Tailwind's unrelated `collapse` visibility utility. The 350ms CSS transition and the previously shipped 300ms fallback remain distinct on purpose. +- `Header` owns the single navigation layout and dropdown behavior. `site-nav-*` and `site-menu-*` are internal selectors, not another component library. +- `content-card-*` and `resource-list-*` supply the shared static card structure. Features compose native elements rather than passing variant props through wrappers. +- `People` and `YoutubeEmbed` own reserved media geometry and loading behavior. The home carousel owns its slide classes and timing separately. + +## Values and breakpoints + +`styles/tokens.css` owns the brand colors and section spacing. Breakpoints are 576, 768, 992, and 1200px, not Tailwind's defaults. Existing feature queries include 575.98px and an inclusive 768px mobile team rule; those boundaries remain deliberate. + +Layout, sizing, spacing, and typography use Tailwind utilities through `@apply`. Exact existing values use arbitrary utilities where a default would change geometry. Motion, gradients, pseudo-elements, and state-specific effects remain ordinary CSS. Group utilities only when their properties do not override one another. + +The base reset and some control values derive from the former Bootstrap dependency. Their license is retained in `licenses/bootstrap.txt`; Bootstrap itself, its generic class API, React Bootstrap, and Sass are removed. + +## Verify a change + +Run the type, lint, content, image, build, and browser checks listed in the README. Compare phone, tablet, desktop, and both sides of affected breakpoints. A screenshot with motion disabled does not prove an animation: exercise the transition separately, including keyboard focus and interrupted open/close actions. + +The parity tool stores raw geometry, computed styles, content, links, image attributes, and screenshots. Its comparison ignores implementation class names and permits at most 0.05 CSS pixels of geometry rounding. It does not ignore differences in text, destinations, image order, loading policy, or computed style values. diff --git a/docs/verification/home-tablet.png b/docs/verification/home-tablet.png new file mode 100644 index 0000000000000000000000000000000000000000..6f586147893b02f35480428ab3b92972fc4d7333 GIT binary patch literal 406414 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

2zxGPi>9U%`rQ!^+F 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¨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


_Y*#nGae>9g1$(;iu-2vCr(a4QP%!*Jpw0;RC{< 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ҋ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 literal 0 HcmV?d00001 diff --git a/docs/verification/team-phone.png b/docs/verification/team-phone.png new file mode 100644 index 0000000000000000000000000000000000000000..90442fa7e4fbf165474d10903b3e97935fbd4682 GIT binary patch literal 197577 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 DQwMI> literal 0 HcmV?d00001 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..cfc82cb --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,30 @@ +import tseslint from "typescript-eslint"; + +export default tseslint.config( + { + ignores: [ + "build/**", + "node_modules/**", + "handoffs/**", + "playwright-report/**", + "test-results/**", + "src/constants/optimizedImages.ts", + "src/static/**", + ], + }, + ...tseslint.configs.recommended.map((config) => ({ + ...config, + files: ["src/**/*.{ts,tsx}", "scripts/**/*.ts", "playwright.config.ts"], + })), + { + files: ["src/**/*.{ts,tsx}", "scripts/**/*.ts", "playwright.config.ts"], + rules: { + "@typescript-eslint/no-unused-vars": [ + "error", + { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }, + ], + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/ban-ts-comment": "error", + }, + }, +); diff --git a/index.html b/index.html index c1445a9..26e6746 100644 --- a/index.html +++ b/index.html @@ -41,6 +41,6 @@

- + diff --git a/jsconfig.json b/jsconfig.json deleted file mode 100644 index 5875dc5..0000000 --- a/jsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": "src" - }, - "include": ["src"] -} diff --git a/licenses/bootstrap.txt b/licenses/bootstrap.txt new file mode 100644 index 0000000..8ed9495 --- /dev/null +++ b/licenses/bootstrap.txt @@ -0,0 +1,24 @@ +The reset and selected control values in src/styles were derived from Bootstrap 4.5.2 before the dependency was removed. + +The MIT License (MIT) + +Copyright (c) 2011-2020 Twitter, Inc. +Copyright (c) 2011-2020 The Bootstrap Authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/licenses/to-title-case.txt b/licenses/to-title-case.txt new file mode 100644 index 0000000..299d71c --- /dev/null +++ b/licenses/to-title-case.txt @@ -0,0 +1,23 @@ +To Title Case 2.1, adapted in src/util/GoogleAnalytics.ts to preserve the previously shipped analytics label normalization. +Source: https://github.com/gouch/to-title-case + +Copyright 2008-2013 David Gouch +Copyright © 2008–2018 David Gouch + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/package-lock.json b/package-lock.json index a44ebd2..ea0edd2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,24 +8,26 @@ "name": "exploretech-la", "version": "0.1.0", "dependencies": { - "bootstrap": "4.5.2", - "classnames": "2.2.6", - "prop-types": "15.7.2", - "react": "16.13.1", - "react-bootstrap": "1.3.0", - "react-dom": "16.13.1", - "react-ga": "3.1.2", - "react-icons": "3.11.0", - "react-router-dom": "5.2.0" + "react": "19.3.0", + "react-dom": "19.3.0", + "react-icons": "5.7.0", + "react-router-dom": "7.18.3" }, "devDependencies": { + "@playwright/test": "1.63.0", + "@tailwindcss/vite": "4.3.3", + "@types/node": "24.13.4", + "@types/react": "19.3.0", + "@types/react-dom": "19.3.0", "@vitejs/plugin-react": "6.1.1", "autoprefixer": "10.5.6", + "eslint": "10.10.0", "gh-pages": "6.3.0", - "history": "4.10.1", "jsdom": "30.0.1", "prettier": "3.9.6", - "sass": "1.104.0", + "tailwindcss": "4.3.3", + "typescript": "6.0.3", + "typescript-eslint": "8.70.0", "vite": "8.3.0", "vitest": "5.0.0" }, @@ -66,15 +68,6 @@ "node": "^22.13.0 || >=24.0.0" } }, - "node_modules/@babel/runtime": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", - "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@bramus/specificity": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz", @@ -88,6 +81,30 @@ "specificity": "bin/cli.js" } }, + "node_modules/@cacheable/memory": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.2.0.tgz", + "integrity": "sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cacheable/utils": "^2.5.0", + "@keyv/bigmap": "^1.3.1", + "hookified": "^1.15.1", + "keyv": "^5.6.0" + } + }, + "node_modules/@cacheable/utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.5.0.tgz", + "integrity": "sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.5.1", + "keyv": "^5.6.0" + } + }, "node_modules/@csstools/color-helpers": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.1.1.tgz", @@ -228,6 +245,113 @@ "node": ">=20.19.0" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.7.0.tgz", + "integrity": "sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.3.tgz", + "integrity": "sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, "node_modules/@exodus/bytes": { "version": "1.15.1", "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.1.tgz", @@ -246,6 +370,94 @@ } } }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -274,6 +486,30 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@keyv/bigmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz", + "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.4.0", + "hookified": "^1.15.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "keyv": "^5.6.0" + } + }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "dev": true, + "license": "MIT" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -322,48 +558,28 @@ "url": "https://github.com/sponsors/oxc-project" } }, - "node_modules/@parcel/watcher": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz", - "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==", + "node_modules/@playwright/test": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.63.0.tgz", + "integrity": "sha512-oxMK4vllB9RK5NQ2l1pq1IfOf2AvnEuj/vYGDj0H2nMtmtZpKtCwt/l00GEO6xjGfpBNAvjovvYdCm50dRQkpQ==", "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, + "license": "Apache-2.0", "dependencies": { - "detect-libc": "^2.0.3", - "is-glob": "^4.0.3", - "node-addon-api": "^7.0.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">= 10.0.0" + "playwright": "1.63.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "bin": { + "playwright": "cli.js" }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.6.0", - "@parcel/watcher-darwin-arm64": "2.6.0", - "@parcel/watcher-darwin-x64": "2.6.0", - "@parcel/watcher-freebsd-x64": "2.6.0", - "@parcel/watcher-linux-arm-glibc": "2.6.0", - "@parcel/watcher-linux-arm-musl": "2.6.0", - "@parcel/watcher-linux-arm64-glibc": "2.6.0", - "@parcel/watcher-linux-arm64-musl": "2.6.0", - "@parcel/watcher-linux-x64-glibc": "2.6.0", - "@parcel/watcher-linux-x64-musl": "2.6.0", - "@parcel/watcher-win32-arm64": "2.6.0", - "@parcel/watcher-win32-x64": "2.6.0" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz", - "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==", + "engines": { + "node": ">=20" + } + }, + "node_modules/@rolldown/binding-android-arm-eabi": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.8.tgz", + "integrity": "sha512-tN5aztYkKCte4i5SIrrz5yK/HMjEuCqCSCJa418jOV8tZ1cBY3YF2otxB1ktPxzsLA1BeTqwapK0bfjxNvHJVw==", "cpu": [ - "arm64" + "arm" ], "dev": true, "license": "MIT", @@ -372,17 +588,13 @@ "android" ], "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz", - "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.8.tgz", + "integrity": "sha512-dIYTWl9XprMUiQFoc55KUyk/oS8SKYH3zFl0LTR7RT0Xj4hgSVyuJcroH8JUu8RcpF8fTB6E0aOwCkZoYPcDSQ==", "cpu": [ "arm64" ], @@ -390,22 +602,18 @@ "license": "MIT", "optional": true, "os": [ - "darwin" + "android" ], "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz", - "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.8.tgz", + "integrity": "sha512-PCSDQGXD2IyTEFrcgPyBM8jJuGmrbCMuoIOXdbEGVemruKACXoLQJrb+A45Z0L5t1RQkdfJprAYPkikbh7dzdA==", "cpu": [ - "x64" + "arm64" ], "dev": true, "license": "MIT", @@ -414,17 +622,13 @@ "darwin" ], "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz", - "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.8.tgz", + "integrity": "sha512-Uk7lRsGhPFHVX/sAUC6D5H9Ol30dFHd6iquokll2th3LpdJ3F5CzQB+7DHn0Ri2mG+U7k2zXiPHDrwZenXhwSA==", "cpu": [ "x64" ], @@ -432,68 +636,50 @@ "license": "MIT", "optional": true, "os": [ - "freebsd" + "darwin" ], "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz", - "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.8.tgz", + "integrity": "sha512-DjszaTEVogPqA5bYzsEeqDCQxbcp2fexQwKcRspYji2yzR68fCf+e4fx6kBSRDwX5/brZaHw/hWS9+A/+/w9sQ==", "cpu": [ - "arm" + "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ - "linux" + "freebsd" ], "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz", - "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.8.tgz", + "integrity": "sha512-zmwa7FTmdzB6aaEEuuls18H6Ap5JmJPSoPTuXixeJZV6tG40SyLkApQtz1g8ptZtiEKqj9OM0oNLPh1AgvE31Q==", "cpu": [ "arm" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz", - "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.8.tgz", + "integrity": "sha512-KdYQDPHwJVnbFwdTGMgxsI9SqblBlz6STGM+w1We/d5B8OWWidYH0MwkU/uA1wM5fIpO2MkOVxXrNzzuZhw9ew==", "cpu": [ "arm64" ], @@ -507,17 +693,13 @@ "linux" ], "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz", - "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.8.tgz", + "integrity": "sha512-jFJTifHnNPY+yzOoNZQfSIysrVyXzEQPhPnOUjmD1bcQGHH6s7c8cViKWar8YplQImE5N9JRqMCLrM2CdxOrZA==", "cpu": [ "arm64" ], @@ -531,19 +713,15 @@ "linux" ], "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz", - "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==", + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.8.tgz", + "integrity": "sha512-FhiOziBDWPBjbcmRzfLyIJnaP7AVMFXT7YCXPjXxj7wKU3vx24RjrCNN/zjvVa+N2vVoHJwCoUBvsrN/DG3zIA==", "cpu": [ - "x64" + "ppc64" ], "dev": true, "libc": [ @@ -555,17 +733,53 @@ "linux" ], "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.8.tgz", + "integrity": "sha512-WnHfADMzOV2Y55wlx1hzzQnar/wDt/VdvWSD99r18Mz9ylNieIGOkRx3UV21h7m/eJvjySYJkO26VvGNFkwsIQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz", - "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.8.tgz", + "integrity": "sha512-H9tRr5ibfXFVLxbPOseVewewFpl28zcEdjRDt2FTUZU7odxP0gEv1ki4/kGmcGOh78oRwZuuQllGLZ9zTJp84g==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.8.tgz", + "integrity": "sha512-UefiqfM3D6IVNlZ8tSGs9+Ejjud2T+oxO0IHADU45Y+lyEjD2dVFyZHbkfX0LUb5Zugo/oIv1eCO/KVYhgYJYA==", "cpu": [ "x64" ], @@ -579,248 +793,481 @@ "linux" ], "engines": { - "node": ">= 10.0.0" + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.8.tgz", + "integrity": "sha512-637Ke4kWSy6rp9cxQ9gMOXlxPgIw/c1beASV4M//3+9I4uwBVOOl74G+e3zyU3u19U7RkRl/HuewixZ/Z6+Rjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.8.tgz", + "integrity": "sha512-xWBkPOF1Q9k/Gv1nQXnVdLxKu74jXppuOM4Z3mnypVUJJJwLsMl7hNJGRAUJoG8A5MgOI1ACKM+wBFxSJzKy4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.8.tgz", + "integrity": "sha512-uz2ZvfgXbxqNwijjjbxrnvALwpyODDcgc1T1N8N3rf/DXKQmaFwmB4LX4yyjggpwN2obdQLb2rgirX5ffCWYng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tailwindcss/node": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.3.tgz", + "integrity": "sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.24.1", + "jiti": "^2.7.0", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.3.3" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/@tailwindcss/node/node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz", - "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==", + "node_modules/@tailwindcss/node/node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ - "win32" + "darwin" ], "engines": { - "node": ">= 10.0.0" + "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz", - "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==", + "node_modules/@tailwindcss/node/node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ - "win32" + "darwin" ], "engines": { - "node": ">= 10.0.0" + "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher/node_modules/picomatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", - "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", + "node_modules/@tailwindcss/node/node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "license": "MPL-2.0", "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=12" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "license": "MIT", + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/popperjs" + "url": "https://opencollective.com/parcel" } }, - "node_modules/@restart/context": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz", - "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==", - "license": "MIT", - "peerDependencies": { - "react": ">=16.3.2" + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@restart/hooks": { - "version": "0.3.27", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.27.tgz", - "integrity": "sha512-s984xV/EapUIfkjlf8wz9weP2O9TNKR96C68FfMEy2bE69+H4cNv3RD4Mf97lW7Htt7PjZrYTjSC8f3SB9VCXw==", - "license": "MIT", - "dependencies": { - "dequal": "^2.0.2" + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" }, - "peerDependencies": { - "react": ">=16.8.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@rolldown/binding-android-arm-eabi": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.8.tgz", - "integrity": "sha512-tN5aztYkKCte4i5SIrrz5yK/HMjEuCqCSCJa418jOV8tZ1cBY3YF2otxB1ktPxzsLA1BeTqwapK0bfjxNvHJVw==", + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", "cpu": [ - "arm" + "x64" ], "dev": true, - "license": "MIT", + "libc": [ + "glibc" + ], + "license": "MPL-2.0", "optional": true, "os": [ - "android" + "linux" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@rolldown/binding-android-arm64": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.8.tgz", - "integrity": "sha512-dIYTWl9XprMUiQFoc55KUyk/oS8SKYH3zFl0LTR7RT0Xj4hgSVyuJcroH8JUu8RcpF8fTB6E0aOwCkZoYPcDSQ==", + "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", "cpu": [ - "arm64" + "x64" ], "dev": true, - "license": "MIT", + "libc": [ + "musl" + ], + "license": "MPL-2.0", "optional": true, "os": [ - "android" + "linux" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.8.tgz", - "integrity": "sha512-PCSDQGXD2IyTEFrcgPyBM8jJuGmrbCMuoIOXdbEGVemruKACXoLQJrb+A45Z0L5t1RQkdfJprAYPkikbh7dzdA==", + "node_modules/@tailwindcss/node/node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.8.tgz", - "integrity": "sha512-Uk7lRsGhPFHVX/sAUC6D5H9Ol30dFHd6iquokll2th3LpdJ3F5CzQB+7DHn0Ri2mG+U7k2zXiPHDrwZenXhwSA==", + "node_modules/@tailwindcss/node/node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", + "license": "MPL-2.0", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.8.tgz", - "integrity": "sha512-DjszaTEVogPqA5bYzsEeqDCQxbcp2fexQwKcRspYji2yzR68fCf+e4fx6kBSRDwX5/brZaHw/hWS9+A/+/w9sQ==", + "node_modules/@tailwindcss/node/node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.3.tgz", + "integrity": "sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-arm64": "4.3.3", + "@tailwindcss/oxide-darwin-x64": "4.3.3", + "@tailwindcss/oxide-freebsd-x64": "4.3.3", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.3", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.3", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.3", + "@tailwindcss/oxide-linux-x64-musl": "4.3.3", + "@tailwindcss/oxide-wasm32-wasi": "4.3.3", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.3", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.3" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.3.tgz", + "integrity": "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==", "cpu": [ - "x64" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "freebsd" + "android" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 20" } }, - "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.8.tgz", - "integrity": "sha512-zmwa7FTmdzB6aaEEuuls18H6Ap5JmJPSoPTuXixeJZV6tG40SyLkApQtz1g8ptZtiEKqj9OM0oNLPh1AgvE31Q==", + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.3.tgz", + "integrity": "sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==", "cpu": [ - "arm" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 20" } }, - "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.8.tgz", - "integrity": "sha512-KdYQDPHwJVnbFwdTGMgxsI9SqblBlz6STGM+w1We/d5B8OWWidYH0MwkU/uA1wM5fIpO2MkOVxXrNzzuZhw9ew==", + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.3.tgz", + "integrity": "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==", "cpu": [ - "arm64" + "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 20" } }, - "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.8.tgz", - "integrity": "sha512-jFJTifHnNPY+yzOoNZQfSIysrVyXzEQPhPnOUjmD1bcQGHH6s7c8cViKWar8YplQImE5N9JRqMCLrM2CdxOrZA==", + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.3.tgz", + "integrity": "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==", "cpu": [ - "arm64" + "x64" ], "dev": true, - "libc": [ - "musl" + "license": "MIT", + "optional": true, + "os": [ + "freebsd" ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.3.tgz", + "integrity": "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 20" } }, - "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.8.tgz", - "integrity": "sha512-FhiOziBDWPBjbcmRzfLyIJnaP7AVMFXT7YCXPjXxj7wKU3vx24RjrCNN/zjvVa+N2vVoHJwCoUBvsrN/DG3zIA==", + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.3.tgz", + "integrity": "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==", "cpu": [ - "ppc64" + "arm64" ], "dev": true, "libc": [ @@ -831,20 +1278,20 @@ "os": [ "linux" ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.8.tgz", - "integrity": "sha512-WnHfADMzOV2Y55wlx1hzzQnar/wDt/VdvWSD99r18Mz9ylNieIGOkRx3UV21h7m/eJvjySYJkO26VvGNFkwsIQ==", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.3.tgz", + "integrity": "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==", "cpu": [ - "s390x" + "arm64" ], "dev": true, "libc": [ - "glibc" + "musl" ], "license": "MIT", "optional": true, @@ -852,13 +1299,13 @@ "linux" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 20" } }, - "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.8.tgz", - "integrity": "sha512-H9tRr5ibfXFVLxbPOseVewewFpl28zcEdjRDt2FTUZU7odxP0gEv1ki4/kGmcGOh78oRwZuuQllGLZ9zTJp84g==", + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.3.tgz", + "integrity": "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==", "cpu": [ "x64" ], @@ -872,13 +1319,13 @@ "linux" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 20" } }, - "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.8.tgz", - "integrity": "sha512-UefiqfM3D6IVNlZ8tSGs9+Ejjud2T+oxO0IHADU45Y+lyEjD2dVFyZHbkfX0LUb5Zugo/oIv1eCO/KVYhgYJYA==", + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.3.tgz", + "integrity": "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==", "cpu": [ "x64" ], @@ -892,30 +1339,43 @@ "linux" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 20" } }, - "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.8.tgz", - "integrity": "sha512-637Ke4kWSy6rp9cxQ9gMOXlxPgIw/c1beASV4M//3+9I4uwBVOOl74G+e3zyU3u19U7RkRl/HuewixZ/Z6+Rjg==", + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.3.tgz", + "integrity": "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], "cpu": [ - "arm64" + "wasm32" ], "dev": true, "license": "MIT", "optional": true, - "os": [ - "openharmony" - ], + "dependencies": { + "@emnapi/core": "^1.11.1", + "@emnapi/runtime": "^1.11.1", + "@emnapi/wasi-threads": "^1.2.2", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.2", + "tslib": "^2.8.1" + }, "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">=14.0.0" } }, - "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.8.tgz", - "integrity": "sha512-xWBkPOF1Q9k/Gv1nQXnVdLxKu74jXppuOM4Z3mnypVUJJJwLsMl7hNJGRAUJoG8A5MgOI1ACKM+wBFxSJzKy4A==", + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.3.tgz", + "integrity": "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==", "cpu": [ "arm64" ], @@ -926,13 +1386,13 @@ "win32" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 20" } }, - "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.8.tgz", - "integrity": "sha512-uz2ZvfgXbxqNwijjjbxrnvALwpyODDcgc1T1N8N3rf/DXKQmaFwmB4LX4yyjggpwN2obdQLb2rgirX5ffCWYng==", + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.3.tgz", + "integrity": "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==", "cpu": [ "x64" ], @@ -943,15 +1403,23 @@ "win32" ], "engines": { - "node": "^20.19.0 || >=22.12.0" + "node": ">= 20" } }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", - "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "node_modules/@tailwindcss/vite": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.3.tgz", + "integrity": "sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.3.3", + "@tailwindcss/oxide": "4.3.3", + "tailwindcss": "4.3.3" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } }, "node_modules/@types/chai": { "version": "5.2.3", @@ -964,15 +1432,6 @@ "assertion-error": "^2.0.1" } }, - "node_modules/@types/classnames": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.3.0.tgz", - "integrity": "sha512-3GsbOoDYteFShlrBTKzI2Eii4vPg/jAf7LXRIn0WQePKlmhpkV0KoTMuawA7gZJkrbPrZGwv9IEAfIWaOaQK8w==", - "license": "MIT", - "dependencies": { - "classnames": "*" - } - }, "node_modules/@types/deep-eql": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", @@ -980,6 +1439,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", @@ -987,49 +1453,285 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/invariant": { - "version": "2.2.37", - "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.37.tgz", - "integrity": "sha512-IwpIMieE55oGWiXkQPSBY1nw1nFs6bsKXTFskNY8sdS17K24vyEBRQZEwlRS7ZmXCWnJcQtbxWzly+cODWGs2A==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, "license": "MIT" }, - "node_modules/@types/prop-types": { - "version": "15.7.15", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", - "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", - "license": "MIT" + "node_modules/@types/node": { + "version": "24.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.4.tgz", + "integrity": "sha512-YJ7EqCstVTzIr0fMr7qul/977en+pQHrfmuKIo6Zr9i75Be21dr3MovcfvGtyvi2HAUrRerWps5sMO9I7WaxDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } }, "node_modules/@types/react": { - "version": "16.14.70", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.70.tgz", - "integrity": "sha512-DM5Q7rSx9G6QYcVvMgxvEurL5P06OxcDNUXrLxlpBzG4ccUewcBCmsztYbxJBobzO8RIwwmjoaD5OsKqdHDuYQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.3.0.tgz", + "integrity": "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==", + "dev": true, "license": "MIT", "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "^0.16", "csstype": "^3.2.2" } }, - "node_modules/@types/react-transition-group": { - "version": "4.4.12", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", - "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "node_modules/@types/react-dom": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==", + "dev": true, "license": "MIT", "peerDependencies": { - "@types/react": "*" + "@types/react": "^19.3.0" } }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "license": "MIT" + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.70.0.tgz", + "integrity": "sha512-/v8HZt6RlyIZxB3ntehELOcUcfxKPVGWXnQdJuHRmzrqgF8nQypcC/oxGW+Ot4VGKDq81XugPKxx0n5PBtf9PA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.70.0", + "@typescript-eslint/type-utils": "8.70.0", + "@typescript-eslint/utils": "8.70.0", + "@typescript-eslint/visitor-keys": "8.70.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.70.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } }, - "node_modules/@types/warning": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.4.tgz", - "integrity": "sha512-CqN8MnISMwQbLJXO3doBAV4Yw9hx9/Pyr2rZ78+NfaCnhyRA/nKrpyk6E7mKw17ZOaQdLpK9GiUjrqLzBlN3sg==", - "license": "MIT" + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.9.tgz", + "integrity": "sha512-brTTsvFRt5C1gGHtPst/281UjPD5t9fBqbgoMPlVWy11ZLTPfu7HxK4ZYqO9H7o/yC9rSTCI85EaQ4OoY12qYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.70.0.tgz", + "integrity": "sha512-zYvrmj9Yxd63UGaXw+kdt6A0F0s0qveJyuatIM77bYC2DE4pgmg7a50u8LR7PRtXd0x+h+Tl3eXabGm06SWd3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.70.0", + "@typescript-eslint/types": "8.70.0", + "@typescript-eslint/typescript-estree": "8.70.0", + "@typescript-eslint/visitor-keys": "8.70.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.70.0.tgz", + "integrity": "sha512-hFHbTNqhU9G+2eKFXCBVb1tjFT/LceiJ4+HfLO4pTpDI0KHi6iajpcFFkaSQ9gXmCh7n82A0PthaayEdN6mspQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.70.0", + "@typescript-eslint/types": "^8.70.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.70.0.tgz", + "integrity": "sha512-8nP3Kwh5hlgZ4FicGvmznAmJe8UL4sdU8tLukrPaMuQmDuk4Y8xYfzu/aYZW4xT2JCgc7H/TpDI5cGlxcWJSqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.70.0", + "@typescript-eslint/visitor-keys": "8.70.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.70.0.tgz", + "integrity": "sha512-adnkeeNq9Sq1sUf4+FRVc0KdgYghzsgFpZSQVZVvY0LCuUuN0FnQgyGzCJeC4fW1cdXseBAjU2EOqUIjbNcZUw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.70.0.tgz", + "integrity": "sha512-NUMKIhYVaVIVLnRL9CRt+VVcuLgSHUCpXn4/+K8wql+vdInUzvx8BjUO1oJ7cG9shjFJKtF8F8Hh2kCh3/KBVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.70.0", + "@typescript-eslint/typescript-estree": "8.70.0", + "@typescript-eslint/utils": "8.70.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.70.0.tgz", + "integrity": "sha512-asTOIYhDg4zdzOScCyaytrsV3cR6B4ecPQlXw/dJIm7J/MZTtCtfVII9JD8Geh4jTCrK/Xe6cg5UevoleMcoJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.70.0.tgz", + "integrity": "sha512-d9NmHMPEKQ7QCLLm1jI3zmoQBwT5KwFYjXBJ9ymZfKCUU+5rmTRykKAFvH5Qn/ZCds3CEAFS9OC9M/jkl0X2bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.70.0", + "@typescript-eslint/tsconfig-utils": "8.70.0", + "@typescript-eslint/types": "8.70.0", + "@typescript-eslint/visitor-keys": "8.70.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.70.0.tgz", + "integrity": "sha512-oZmtKJz/4fufZ2p3+Cn3ijEojcdfR+1zYDH2xKYrEly0dR/Q/1xUPRCOlKGxod78nWlU2UnDe09GZ3TaknBFGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.70.0", + "@typescript-eslint/types": "8.70.0", + "@typescript-eslint/typescript-estree": "8.70.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.70.0.tgz", + "integrity": "sha512-BoC8PiO4Hkdo0TVJh9Ntxr5MxPDI7/oFsrygN5ADelFSeXG/qgNuucIGA+L5Z6JpPTE/uRfcTWtscjbUaufepQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.70.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, "node_modules/@vitejs/plugin-react": { "version": "6.1.1", @@ -1099,6 +1801,46 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/acorn": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -1163,6 +1905,16 @@ "postcss": "^8.1.0" } }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/baseline-browser-mapping": { "version": "2.11.22", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.22.tgz", @@ -1186,19 +1938,17 @@ "require-from-string": "^2.0.2" } }, - "node_modules/bootstrap": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.2.tgz", - "integrity": "sha512-vlGn0bcySYl/iV+BGA544JkkZP5LB3jsmkeKLFQakCOwCM3AOk7VkldBz4jrzSe+Z0Ezn99NVXa1o45cQY4R6A==", - "deprecated": "This version of Bootstrap is no longer supported. Please upgrade to the latest version.", + "node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "dev": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" + "dependencies": { + "balanced-match": "^4.0.2" }, - "peerDependencies": { - "jquery": "1.9.1 - 3", - "popper.js": "^1.16.1" + "engines": { + "node": "20 || >=22" } }, "node_modules/braces": { @@ -1248,13 +1998,18 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/cacheable": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.5.0.tgz", + "integrity": "sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@cacheable/memory": "^2.2.0", + "@cacheable/utils": "^2.5.0", + "hookified": "^1.15.0", + "keyv": "^5.6.0", + "qified": "^0.10.1" } }, "node_modules/caniuse-lite": { @@ -1288,45 +2043,51 @@ "node": ">=18" } }, - "node_modules/chokidar": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", - "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, "license": "MIT", - "dependencies": { - "readdirp": "^5.0.0" - }, "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18" } }, - "node_modules/classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==", + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, "license": "MIT" }, - "node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">=18" + "node": ">= 8" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true, - "license": "MIT" - }, "node_modules/css-tree": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", @@ -1345,6 +2106,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, "license": "MIT" }, "node_modules/data-urls": { @@ -1376,6 +2138,24 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/decimal.js": { "version": "10.6.0", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", @@ -1383,14 +2163,12 @@ "dev": true, "license": "MIT" }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" }, "node_modules/detect-libc": { "version": "2.1.2", @@ -1415,16 +2193,6 @@ "node": ">=8" } }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, "node_modules/electron-to-chromium": { "version": "1.5.427", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.427.tgz", @@ -1439,6 +2207,20 @@ "dev": true, "license": "MIT" }, + "node_modules/enhanced-resolve": { + "version": "5.24.5", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz", + "integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/entities": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/entities/-/entities-8.1.0.tgz", @@ -1479,6 +2261,242 @@ "node": ">=0.8.0" } }, + "node_modules/eslint": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.10.0.tgz", + "integrity": "sha512-NPXn6r5zl4uET1DAVPaOwzX3rut4c0wcmw3dWJAfOsTM5+TogXo0DDjz8pwm/hL8cyVNpHqeK4JpN0NjnyFFNw==", + "dev": true, + "license": "MIT", + "workspaces": [ + "packages/*" + ], + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.7.0", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.3", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "11.1.5 || >11.1.6 <12", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "minimatch": "^10.2.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -1489,6 +2507,16 @@ "@types/estree": "^1.0.0" } }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/expect-type": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", @@ -1499,6 +2527,13 @@ "node": ">=12.0.0" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", @@ -1516,6 +2551,20 @@ "node": ">=8.6.0" } }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, "node_modules/fastq": { "version": "1.20.3", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz", @@ -1526,6 +2575,16 @@ "reusify": "^1.0.4" } }, + "node_modules/file-entry-cache": { + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.5.tgz", + "integrity": "sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^6.1.23" + } + }, "node_modules/filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", @@ -1599,6 +2658,25 @@ "node": ">=8" } }, + "node_modules/flat-cache": { + "version": "6.1.23", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.23.tgz", + "integrity": "sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cacheable": "^2.5.0", + "flatted": "^3.4.2", + "hookified": "^1.15.0" + } + }, + "node_modules/flatted": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", + "dev": true, + "license": "ISC" + }, "node_modules/fraction.js": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", @@ -1707,28 +2785,25 @@ "dev": true, "license": "ISC" }, - "node_modules/history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "node_modules/hashery": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.5.1.tgz", + "integrity": "sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" + "hookified": "^1.15.0" + }, + "engines": { + "node": ">=20" } }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", - "dependencies": { - "react-is": "^16.7.0" - } + "node_modules/hookified": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz", + "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", + "dev": true, + "license": "MIT" }, "node_modules/html-encoding-sniffer": { "version": "6.0.0", @@ -1753,20 +2828,14 @@ "node": ">= 4" } }, - "node_modules/immutable": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz", - "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "license": "MIT" - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" + "engines": { + "node": ">=0.8.19" } }, "node_modules/is-extglob": { @@ -1809,24 +2878,22 @@ "dev": true, "license": "MIT" }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "license": "MIT" + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" }, - "node_modules/jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "dev": true, "license": "MIT", - "peer": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" + "bin": { + "jiti": "lib/jiti-cli.mjs" + } }, "node_modules/jsdom": { "version": "30.0.1", @@ -1869,17 +2936,55 @@ } } }, - "node_modules/jsonfile": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", "dependencies": { - "universalify": "^2.0.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">= 0.8.0" } }, "node_modules/lightningcss": { @@ -2168,18 +3273,6 @@ "node": ">=8" } }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, "node_modules/lru-cache": { "version": "11.5.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", @@ -2247,21 +3340,29 @@ "node": ">=8.6" } }, - "node_modules/mini-create-react-context": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", - "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "license": "MIT", + "node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@babel/runtime": "^7.12.1", - "tiny-warning": "^1.0.3" + "brace-expansion": "^5.0.8" }, - "peerDependencies": { - "prop-types": "^15.0.0", - "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/nanoid": { "version": "3.3.19", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz", @@ -2281,13 +3382,12 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, - "license": "MIT", - "optional": true + "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.55", @@ -2299,15 +3399,6 @@ "node": ">=18" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/obug": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/obug/-/obug-2.2.1.tgz", @@ -2322,6 +3413,24 @@ "node": ">=12.20.0" } }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -2384,13 +3493,14 @@ "node": ">=8" } }, - "node_modules/path-to-regexp": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", - "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "license": "MIT", - "dependencies": { - "isarray": "0.0.1" + "engines": { + "node": ">=8" } }, "node_modules/path-type": { @@ -2436,16 +3546,33 @@ "node": ">=8" } }, - "node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "license": "MIT", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" + "node_modules/playwright": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.63.0.tgz", + "integrity": "sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.63.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/playwright-core": { + "version": "1.63.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz", + "integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" } }, "node_modules/postcss": { @@ -2484,6 +3611,16 @@ "dev": true, "license": "MIT" }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/prettier": { "version": "3.9.6", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.6.tgz", @@ -2500,30 +3637,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/prop-types-extra": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", - "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", - "license": "MIT", - "dependencies": { - "react-is": "^16.3.2", - "warning": "^4.0.0" - }, - "peerDependencies": { - "react": ">=0.14.0" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -2534,6 +3647,26 @@ "node": ">=6" } }, + "node_modules/qified": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.10.1.tgz", + "integrity": "sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^2.1.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/qified/node_modules/hookified": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-2.2.0.tgz", + "integrity": "sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==", + "dev": true, + "license": "MIT" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -2556,185 +3689,71 @@ "license": "MIT" }, "node_modules/react": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", - "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz", + "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==", "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/react-bootstrap": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.3.0.tgz", - "integrity": "sha512-GYj0c6FO9mx7DaO8Xyz2zs0IcQ6CGCtM3O6/feIoCaG4N8B0+l4eqL7stlMcLpqO4d8NG2PoMO/AbUOD+MO7mg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.4.2", - "@restart/context": "^2.1.4", - "@restart/hooks": "^0.3.21", - "@types/classnames": "^2.2.10", - "@types/invariant": "^2.2.33", - "@types/prop-types": "^15.7.3", - "@types/react": "^16.9.35", - "@types/react-transition-group": "^4.4.0", - "@types/warning": "^3.0.0", - "classnames": "^2.2.6", - "dom-helpers": "^5.1.2", - "invariant": "^2.2.4", - "prop-types": "^15.7.2", - "prop-types-extra": "^1.1.0", - "react-overlays": "^4.1.0", - "react-transition-group": "^4.4.1", - "uncontrollable": "^7.0.0", - "warning": "^4.0.3" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, "node_modules/react-dom": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", - "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz", + "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==", "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" + "scheduler": "^0.28.0" }, "peerDependencies": { - "react": "^16.13.1" - } - }, - "node_modules/react-ga": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/react-ga/-/react-ga-3.1.2.tgz", - "integrity": "sha512-OJrMqaHEHbodm+XsnjA6ISBEHTwvpFrxco65mctzl/v3CASMSLSyUkFqz9yYrPDKGBUfNQzKCjuMJwctjlWBbw==", - "license": "Apache-2.0", - "peerDependencies": { - "prop-types": "^15.6.0", - "react": "^15.6.2 || ^16.0" + "react": "^19.3.0" } }, "node_modules/react-icons": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-3.11.0.tgz", - "integrity": "sha512-JRgiI/vdF6uyBgyZhVyYJUZAop95Sy4XDe/jmT3R/bKliFWpO/uZBwvSjWEdxwzec7SYbEPNPck0Kff2tUGM2Q==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.7.0.tgz", + "integrity": "sha512-LBLy340Rzqy6+/yVhZKT3B/QpP1BZaesGqasf09HPOBzRarcDIFH0WwXlXQfE7q7ipxK4MSiC5DIBWURCny6fw==", "license": "MIT", - "dependencies": { - "camelcase": "^5.0.0" - }, "peerDependencies": { "react": "*" } }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", - "license": "MIT" - }, - "node_modules/react-overlays": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-4.1.1.tgz", - "integrity": "sha512-WtJifh081e6M24KnvTQoNjQEpz7HoLxqt8TwZM7LOYIkYJ8i/Ly1Xi7RVte87ZVnmqQ4PFaFiNHZhSINPSpdBQ==", + "node_modules/react-router": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.3.tgz", + "integrity": "sha512-gyXgtdr5uACJ5b1Q4udzjVV+tb/rlHIMJKuJ0e89R4Kzgz47z/rgP0dIKxktqIEUhDHluGTPJJH/wRha7CyqsA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.12.1", - "@popperjs/core": "^2.5.3", - "@restart/hooks": "^0.3.25", - "@types/warning": "^3.0.0", - "dom-helpers": "^5.2.0", - "prop-types": "^15.7.2", - "uncontrollable": "^7.0.0", - "warning": "^4.0.3" + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" }, - "peerDependencies": { - "react": ">=16.3.0", - "react-dom": ">=16.3.0" - } - }, - "node_modules/react-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", - "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.4.0", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" + "engines": { + "node": ">=20.0.0" }, "peerDependencies": { - "react": ">=15" + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } } }, "node_modules/react-router-dom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", - "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.18.3.tgz", + "integrity": "sha512-ytVbyBBM7vMfRCam25r0WMhSVSom909A8p+8m0/f1w853dz/xfFu6etAT2SEbVoSnI+ZoPRDqIsQXVT89gp7kg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.2.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "peerDependencies": { - "react": ">=15" - } - }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" + "react-router": "7.18.3" }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/readdirp": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", - "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", - "dev": true, - "license": "MIT", "engines": { - "node": ">= 20.19.0" + "node": ">=20.0.0" }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" } }, "node_modules/require-from-string": { @@ -2747,12 +3766,6 @@ "node": ">=0.10.0" } }, - "node_modules/resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", - "license": "MIT" - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -2822,27 +3835,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/sass": { - "version": "1.104.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.104.0.tgz", - "integrity": "sha512-btHMApW2bgolvClhRW8AlQJzgI9lUB3pPSofBQQT+E46GWvf9o0TVQ13SYv5riWZVFyPN+JNz3TKW9XhBlc10w==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^5.0.0", - "immutable": "^5.1.5", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=20.19.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", @@ -2857,14 +3849,10 @@ } }, "node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.28.0.tgz", + "integrity": "sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==", + "license": "MIT" }, "node_modules/semver": { "version": "6.3.1", @@ -2876,6 +3864,35 @@ "semver": "bin/semver.js" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", @@ -2937,17 +3954,26 @@ "dev": true, "license": "MIT" }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "node_modules/tailwindcss": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz", + "integrity": "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==", + "dev": true, "license": "MIT" }, - "node_modules/tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", - "license": "MIT" + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } }, "node_modules/tinybench": { "version": "6.1.4", @@ -3089,19 +4115,68 @@ "node": ">=0.10.0" } }, - "node_modules/uncontrollable": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", - "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.70.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.70.0.tgz", + "integrity": "sha512-P/W5cz70/cQAuKfY3xwQMWWTV7BvJ0mAQmi+9mBcsVPaBUpd6Ohpa+fECv9rBFrQcig86jAiNBFNWUqnTjr4pw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.6.3", - "@types/react": ">=16.9.11", - "invariant": "^2.2.4", - "react-lifecycles-compat": "^3.0.4" + "@typescript-eslint/eslint-plugin": "8.70.0", + "@typescript-eslint/parser": "8.70.0", + "@typescript-eslint/typescript-estree": "8.70.0", + "@typescript-eslint/utils": "8.70.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "react": ">=15.0.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/undici": { @@ -3114,6 +4189,13 @@ "node": ">=22.19.0" } }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -3155,11 +4237,15 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", - "license": "MIT" + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } }, "node_modules/vite": { "version": "8.3.0", @@ -3361,15 +4447,6 @@ "node": ">=18" } }, - "node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, "node_modules/webidl-conversions": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", @@ -3405,6 +4482,22 @@ "node": "^22.14.0 || >=24.0.0" } }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/why-is-node-running": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", @@ -3422,6 +4515,16 @@ "node": ">=8" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/xml-name-validator": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", @@ -3438,6 +4541,19 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true, "license": "MIT" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index 62822ba..f57a708 100644 --- a/package.json +++ b/package.json @@ -7,24 +7,26 @@ "node": ">=24.21.0 <25" }, "dependencies": { - "bootstrap": "4.5.2", - "classnames": "2.2.6", - "prop-types": "15.7.2", - "react": "16.13.1", - "react-bootstrap": "1.3.0", - "react-dom": "16.13.1", - "react-ga": "3.1.2", - "react-icons": "3.11.0", - "react-router-dom": "5.2.0" + "react": "19.3.0", + "react-dom": "19.3.0", + "react-icons": "5.7.0", + "react-router-dom": "7.18.3" }, "devDependencies": { + "@playwright/test": "1.63.0", + "@tailwindcss/vite": "4.3.3", + "@types/node": "24.13.4", + "@types/react": "19.3.0", + "@types/react-dom": "19.3.0", "@vitejs/plugin-react": "6.1.1", "autoprefixer": "10.5.6", + "eslint": "10.10.0", "gh-pages": "6.3.0", - "history": "4.10.1", "jsdom": "30.0.1", "prettier": "3.9.6", - "sass": "1.104.0", + "tailwindcss": "4.3.3", + "typescript": "6.0.3", + "typescript-eslint": "8.70.0", "vite": "8.3.0", "vitest": "5.0.0" }, @@ -32,11 +34,18 @@ "start": "vite --host 127.0.0.1 --port 3000", "images": "node scripts/images.js", "images:check": "node scripts/images.js --check", + "content:check": "node scripts/content-check.mjs", + "typecheck": "tsc --noEmit", + "lint": "eslint .", + "format": "prettier --write src scripts *.json *.mjs *.ts .github/workflows/*.yml", + "format:check": "prettier --check src scripts *.json *.mjs *.ts .github/workflows/*.yml", "prebuild": "npm run images:check", "build": "vite build", "preview": "vite preview --host 127.0.0.1", "test": "vitest run", "test:watch": "vitest", + "test:browser": "playwright test", + "visual:parity": "node scripts/visual-parity.cjs", "predeploy": "npm run build", "deploy": "gh-pages -d build" }, diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..e32e640 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,60 @@ +import { defineConfig, devices } from "@playwright/test"; + +/** + * Browser smoke suite for the production build. + * + * The suite runs against `build/` served by `scripts/serve-built-site.cjs`, + * which reproduces GitHub Pages' 404-to-root restoration. Running it against + * the dev server would prove less: dev serves index.html for every path, so + * deep links and trailing slashes cannot fail there the way they can in + * production. + * + * npm run build && npm run test:browser + * + * Chromium only. This is a behaviour gate for CI, not the cross-engine visual + * matrix, which stays a session tool. + */ +const port = Number(process.env.SMOKE_PORT ?? 4390); +// Normally the freshly built site; pointed at a saved baseline build when +// comparing current behaviour against the pre-refactor deployment. +const root = process.env.SMOKE_ROOT ?? "build"; +const host = "127.0.0.1"; +const baseURL = `http://${host}:${port}`; +const isCI = Boolean(process.env.CI); + +export default defineConfig({ + testDir: "scripts", + testMatch: /browser-smoke\.spec\.ts/, + fullyParallel: true, + forbidOnly: isCI, + retries: isCI ? 1 : 0, + workers: isCI ? 2 : undefined, + timeout: 60_000, + expect: { timeout: 10_000 }, + reporter: isCI ? [["github"], ["list"]] : [["list"]], + use: { + baseURL, + trace: "on-first-retry", + screenshot: "only-on-failure", + video: "off", + // The site is static and offline in this suite; nothing needs a slow net. + actionTimeout: 10_000, + }, + projects: [ + { + name: "chromium", + use: { + ...devices["Desktop Chrome"], + viewport: { width: 1440, height: 900 }, + }, + }, + ], + webServer: { + command: `node scripts/serve-built-site.cjs --root ${root} --port ${port} --host ${host}`, + url: baseURL, + reuseExistingServer: !isCI, + timeout: 30_000, + stdout: "ignore", + stderr: "pipe", + }, +}); diff --git a/scripts/asset-parity.cjs b/scripts/asset-parity.cjs new file mode 100644 index 0000000..3a38b08 --- /dev/null +++ b/scripts/asset-parity.cjs @@ -0,0 +1,51 @@ +// Compare emitted public media, not source filenames or bundler import graphs. +const fs = require("node:fs"); +const path = require("node:path"); +const crypto = require("node:crypto"); +const assert = require("node:assert/strict"); +function mediaFiles(root, directory = "") { + return fs + .readdirSync(path.join(root, directory), { withFileTypes: true }) + .flatMap((entry) => { + const relative = path.posix.join(directory, entry.name); + if (entry.isDirectory()) return mediaFiles(root, relative); + return /\.(?:png|jpe?g|gif|webp|svg|ico|pdf|woff2?|ttf)$/i.test( + entry.name, + ) + ? [relative] + : []; + }); +} +function manifest(root) { + return Object.fromEntries( + mediaFiles(root) + .sort() + .map((name) => [ + name, + crypto + .createHash("sha256") + .update(fs.readFileSync(path.join(root, name))) + .digest("hex"), + ]), + ); +} +const [baseline, candidate = "build"] = process.argv.slice(2); +if (!baseline) + throw new Error( + "Usage: node scripts/asset-parity.cjs [candidate-build-directory]", + ); +const before = manifest(baseline), + after = manifest(candidate); +for (const [url, hash] of Object.entries(before)) + assert.equal(after[url], hash, `Public media changed or disappeared: ${url}`); +for (const file of ["404.html", "CNAME"]) { + assert.ok( + fs + .readFileSync(path.join(baseline, file)) + .equals(fs.readFileSync(path.join(candidate, file))), + `Hosting file changed: ${file}`, + ); +} +console.log( + `Preserved ${Object.keys(before).length} public asset URLs and SHA-256 hashes; ${Object.keys(after).length - Object.keys(before).length} additions`, +); diff --git a/scripts/browser-smoke.spec.ts b/scripts/browser-smoke.spec.ts new file mode 100644 index 0000000..442c5b3 --- /dev/null +++ b/scripts/browser-smoke.spec.ts @@ -0,0 +1,593 @@ +import { + expect, + test, + type Browser, + type Page, + type Route, +} from "@playwright/test"; + +/** + * Durable browser smoke for the built site. + * + * Scope: the behaviour that has broken before and that unit tests cannot see — + * GitHub Pages deep-link restoration, the mobile menu, hash and history + * scrolling, team rendering and lazy portraits, the click-to-load video + * facade, shared document links, and the carousel's slow/failed image paths. + * + * Nothing here talks to a third party. Every request that is not same-origin + * is aborted and recorded, so "no YouTube before activation" and "no analytics + * beacons" are assertions rather than hopes. + */ + +declare global { + interface Window { + /** Arguments of each window.scrollTo call, installed by the history test. */ + __scrolls?: unknown[][]; + } +} + +const TEAM_SECTIONS = [ + { slug: "leadership", heading: "Leadership" }, + { slug: "content", heading: "Content" }, + { slug: "design", heading: "Design" }, + { slug: "operations", heading: "Operations" }, + { slug: "external", heading: "External" }, + { slug: "web-dev", heading: "Web Dev" }, + { slug: "marketing", heading: "Marketing" }, +] as const; + +const ROUTES = [ + // The header also carries a `Home` class on the home page, hence `div`. + { path: "/", marker: "div.Home" }, + { path: "/register", marker: ".Register" }, + { path: "/resources", marker: ".Resources" }, + { path: "/resources2023", marker: ".Resources" }, + { path: "/resources2026", marker: ".Resources" }, + { path: "/ignite", marker: ".Ignite" }, + ...TEAM_SECTIONS.map((section) => ({ + path: `/our_team/${section.slug}`, + marker: ".Team", + })), +] as const; + +// The Google Fonts stylesheet is a deliberate first-party design choice and is +// merely blocked here; tracking and video vendors must never be reached. +const THIRD_PARTY = /google-analytics|googletagmanager|youtube|doubleclick/; + +type Offline = { + /** Every cross-origin URL the page tried to reach, in order. */ + readonly external: string[]; + /** Uncaught page errors. No route is allowed to produce one. */ + readonly pageErrors: string[]; + /** Same-origin URL fragment whose response waits for `hold.release()`. */ + hold: { fragment: string; wait: Promise; release: () => void } | null; + /** Same-origin URL fragment whose request fails, modelling a broken asset. */ + fail: string | null; +}; + +/** + * Cut a page off from the internet and record what it reached for. + * + * The returned object stays live: setting `hold` or `fail` on it shapes + * later requests, which is how the carousel's slow and broken image paths are + * exercised without shipping a test-only hook into the app. + */ +async function goOffline( + page: Page, + baseURL: string | undefined, +): Promise { + const origin = new URL(baseURL ?? "http://127.0.0.1:4390").origin; + const state: Offline = { + external: [], + pageErrors: [], + hold: null, + fail: null, + }; + + page.on("pageerror", (error) => state.pageErrors.push(String(error))); + + await page.route("**/*", async (route: Route) => { + const url = route.request().url(); + if (!url.startsWith(origin)) { + state.external.push(url); + await route.abort(); + return; + } + if (state.fail && url.includes(state.fail)) { + await route.abort("failed"); + return; + } + if (state.hold && url.includes(state.hold.fragment)) { + await state.hold.wait; + } + await route.continue(); + }); + + return state; +} + +function activeTeamNav(page: Page) { + return page.locator(".team-navigation a.active"); +} + +function activeSlideAlt(page: Page) { + return page.locator(".carousel-item.active img").getAttribute("alt"); +} + +test.describe("routes", () => { + for (const route of ROUTES) { + test(`renders ${route.path}`, async ({ page, baseURL }) => { + const offline = await goOffline(page, baseURL); + await page.goto(route.path); + + await expect(page.locator(route.marker)).toBeVisible(); + await expect(page.locator(".PageNotFound")).toHaveCount(0); + await expect(page.locator(".Header")).toBeVisible(); + // Restoration must leave the clean path in the address bar. + await expect(page).toHaveURL( + new RegExp(`${route.path.replace(/\//g, "\\/")}$`), + ); + expect(offline.pageErrors, `uncaught errors on ${route.path}`).toEqual( + [], + ); + expect( + offline.external.filter((url) => THIRD_PARTY.test(url)), + `third-party requests on ${route.path}`, + ).toEqual([]); + }); + } + + test("unknown paths show the not-found page and restore the title", async ({ + page, + baseURL, + }) => { + await goOffline(page, baseURL); + const response = await page.goto("/no-such-page"); + // GitHub Pages answers with its 404 document before the SPA restores. + expect(response?.status()).toBe(404); + await expect(page.locator(".PageNotFound")).toBeVisible(); + await expect(page).toHaveTitle("Page Not Found • exploretech.la"); + + await page.locator(".PageNotFound a").first().click(); + await expect(page.locator("div.Home")).toBeVisible(); + await expect(page).not.toHaveTitle("Page Not Found • exploretech.la"); + }); + + test("/our_team and its trailing slash land on leadership", async ({ + page, + baseURL, + }) => { + await goOffline(page, baseURL); + + await page.goto("/our_team"); + await expect(page).toHaveURL(/\/our_team\/leadership$/); + await expect(activeTeamNav(page)).toHaveText("Leadership"); + + await page.goto("/our_team/"); + await expect(page).toHaveURL(/\/our_team\/leadership$/); + await expect(activeTeamNav(page)).toHaveText("Leadership"); + }); + + test("a deep link keeps its query and hash through the Pages restore", async ({ + page, + baseURL, + }) => { + await goOffline(page, baseURL); + const response = await page.goto("/our_team/design?ref=newsletter#top"); + expect(response?.status()).toBe(404); + + await expect(page.locator(".Team")).toBeVisible(); + await expect(activeTeamNav(page)).toHaveText("Design"); + await expect(page).toHaveURL(/\/our_team\/design\?ref=newsletter#top$/); + }); +}); + +test.describe("team", () => { + for (const section of TEAM_SECTIONS) { + test(`${section.slug} lists people`, async ({ page, baseURL }) => { + await goOffline(page, baseURL); + await page.goto(`/our_team/${section.slug}`); + + await expect( + page.getByRole("heading", { name: "Meet Our Team" }), + ).toBeVisible(); + await expect(activeTeamNav(page)).toHaveCount(1); + await expect( + page.locator(".Team h3", { hasText: section.heading }).first(), + ).toBeVisible(); + + const cards = page.locator(".person"); + const count = await cards.count(); + expect(count, `${section.slug} renders no people`).toBeGreaterThan(0); + + // Every card carries text, including the members with no portrait. + const texts = await cards.evaluateAll((nodes) => + nodes.map((node) => (node.textContent ?? "").trim()), + ); + expect( + texts.filter((text) => text.length === 0), + `blank cards in ${section.slug}`, + ).toEqual([]); + expect(await cards.locator("img").count()).toBeLessThanOrEqual(count); + }); + } + + test("portraits past the fold are lazy", async ({ page, baseURL }) => { + await goOffline(page, baseURL); + await page.goto("/our_team/leadership"); + + const loading = await page + .locator(".person img") + .evaluateAll((images) => + images.map((image) => (image as HTMLImageElement).loading), + ); + expect(loading.length).toBeGreaterThan(2); + // The shared People component keeps the first two eager and defers the rest. + expect(loading.slice(0, 2)).toEqual(["eager", "eager"]); + expect(loading.slice(2).every((value) => value === "lazy")).toBe(true); + }); + + test("a member without a portrait still renders", async ({ + page, + baseURL, + }) => { + await goOffline(page, baseURL); + let cardsWithoutImage = 0; + for (const section of TEAM_SECTIONS) { + await page.goto(`/our_team/${section.slug}`); + await expect(page.locator(".person").first()).toBeVisible(); + cardsWithoutImage += await page.locator(".person:not(:has(img))").count(); + } + // Two roster members deliberately have no photo; their cards must survive. + expect(cardsWithoutImage).toBeGreaterThan(0); + }); +}); + +test.describe("navigation", () => { + test("dropdown arrow keys retain the first and last item boundaries", async ({ + page, + baseURL, + }) => { + await goOffline(page, baseURL); + await page.goto("/"); + const trigger = page.locator("#navbar-home"); + await trigger.focus(); + await trigger.press("ArrowUp"); + await expect(trigger).toHaveAttribute("aria-expanded", "false"); + await expect(trigger).toBeFocused(); + await trigger.press("ArrowDown"); + const links = page.locator(".site-menu-link"); + await expect(links.first()).toBeFocused(); + await page.keyboard.press("ArrowUp"); + await expect(links.first()).toBeFocused(); + for (let index = 0; index < 5; index++) + await page.keyboard.press("ArrowDown"); + await expect(links.last()).toBeFocused(); + await page.keyboard.press("Escape"); + await expect(trigger).toHaveAttribute("aria-expanded", "false"); + await expect(trigger).toBeFocused(); + }); + + test.describe("on a phone", () => { + test.use({ viewport: { width: 390, height: 844 } }); + + test("the menu opens, navigates and closes", async ({ page, baseURL }) => { + await goOffline(page, baseURL); + await page.goto("/"); + + const toggle = page.locator(".site-nav-toggle"); + const collapse = page.locator(".site-nav-panel"); + await expect(toggle).toBeVisible(); + + await toggle.click(); + await expect(collapse).toHaveClass(/show/); + + await collapse.getByRole("link", { name: "Our Team" }).click(); + await expect(page).toHaveURL(/\/our_team\/leadership$/); + await expect(collapse).not.toHaveClass(/show/); + }); + + test("a hash link closes the menu and still reaches its section", async ({ + page, + baseURL, + }) => { + await goOffline(page, baseURL); + await page.goto("/"); + + const collapse = page.locator(".site-nav-panel"); + await page.locator(".site-nav-toggle").click(); + await expect(collapse).toHaveClass(/show/); + + await collapse.locator("#navbar-home").click(); + await collapse.getByRole("link", { name: "About", exact: true }).click(); + + await expect(collapse).not.toHaveClass(/show/); + // The final scroll happens after the menu finishes closing, so the + // section must be at the top once the collapse animation is done. + await expect + .poll(() => + page + .locator("#about") + .evaluate((node) => Math.abs(node.getBoundingClientRect().top)), + ) + .toBeLessThan(80); + }); + }); + + test("repeating the same hash scrolls back to the section", async ({ + page, + baseURL, + }) => { + await goOffline(page, baseURL); + await page.goto("/"); + + const about = page.locator("#about"); + await expect(about).toHaveCount(1); + + const openAbout = async () => { + await page.locator("#navbar-home").click(); + await page.getByRole("link", { name: "About", exact: true }).click(); + }; + + await openAbout(); + await expect(page).toHaveURL(/#about$/); + await expect + .poll(() => + about.evaluate((node) => Math.abs(node.getBoundingClientRect().top)), + ) + .toBeLessThan(80); + + await page.evaluate(() => window.scrollTo(0, 0)); + await expect.poll(() => page.evaluate(() => window.scrollY)).toBe(0); + + // Same hash again: the location does not change, so the app has to scroll + // deliberately rather than rely on the browser. + await openAbout(); + await expect + .poll(() => + about.evaluate((node) => Math.abs(node.getBoundingClientRect().top)), + ) + .toBeLessThan(80); + }); + + test("a new page starts at the top and Back does not", async ({ + page, + baseURL, + }) => { + await goOffline(page, baseURL); + await page.goto("/"); + await expect(page.locator("div.Home")).toBeVisible(); + + // Record the app's own scrolling. The spy survives client navigation + // because these are same-document history moves, and it separates "the + // app scrolled you to the top" from "the browser restored a position", + // which a scroll offset alone cannot. + await page.evaluate(() => { + const scrolls: unknown[][] = []; + window.__scrolls = scrolls; + const original = window.scrollTo.bind(window); + window.scrollTo = (x?: number | ScrollToOptions, y?: number) => { + if (typeof x === "number") { + scrolls.push([x, y ?? 0]); + original(x, y ?? 0); + } else { + scrolls.push([x]); + original(x); + } + }; + }); + await page.evaluate(() => window.scrollTo(0, 1200)); + await expect + .poll(() => page.evaluate(() => Math.round(window.scrollY))) + .toBeGreaterThan(600); + + await page + .locator(".Header") + .getByRole("link", { name: "Our Team" }) + .click(); + await expect(page.locator(".Team")).toBeVisible(); + // A pushed route starts at the top of the new page. + await expect + .poll(() => page.evaluate(() => Math.round(window.scrollY))) + .toBeLessThan(100); + expect(await page.evaluate(() => window.__scrolls)).toContainEqual([0, 0]); + + await page.evaluate(() => { + window.__scrolls?.splice(0); + }); + await page.goBack(); + await expect(page.locator("div.Home")).toBeVisible(); + await page.waitForTimeout(500); + + // Going back must leave scrolling to the browser's restoration. + const scrollsOnBack = await page.evaluate(() => window.__scrolls); + expect(scrollsOnBack, "the app scrolled during a Back navigation").toEqual( + [], + ); + }); +}); + +test.describe("media", () => { + test("archived videos load nothing until activated, and keep their box", async ({ + page, + baseURL, + }) => { + const offline = await goOffline(page, baseURL); + await page.goto("/resources"); + + const facade = page.locator(".video-facade").first(); + await expect(facade).toBeVisible(); + expect( + offline.external.filter((url) => url.includes("youtube")), + "a video requested YouTube before activation", + ).toEqual([]); + await expect(page.locator("iframe")).toHaveCount(0); + + const frame = page.locator(".video-frame").first(); + const before = await frame.boundingBox(); + + // Keyboard activation: the facade is a real button, not a clickable div. + await facade.focus(); + await expect(facade).toBeFocused(); + await page.keyboard.press("Enter"); + + const iframe = page.locator(".video-frame iframe").first(); + await expect(iframe).toHaveCount(1); + await expect(iframe).toHaveAttribute("src", /youtube\.com\/embed\//); + + const after = await frame.boundingBox(); + if (!before || !after) throw new Error("the video frame has no box"); + expect(Math.abs(after.width - before.width)).toBeLessThanOrEqual(1); + expect(Math.abs(after.height - before.height)).toBeLessThanOrEqual(1); + // Activation is the only thing that may reach YouTube, and it is blocked here. + await expect + .poll(() => offline.external.some((url) => url.includes("youtube"))) + .toBe(true); + }); + + test("shared documents and maps resolve", async ({ + page, + baseURL, + request, + }) => { + await goOffline(page, baseURL); + const checked = new Set(); + + for (const path of [ + "/resources", + "/resources2023", + "/resources2026", + "/register", + ]) { + await page.goto(path); + const hrefs = await page + .locator('a[href*="/static/media/"]') + .evaluateAll((links) => + links.map((link) => (link as HTMLAnchorElement).href), + ); + expect(hrefs.length, `no document links on ${path}`).toBeGreaterThan(0); + + for (const href of hrefs) { + if (checked.has(href)) continue; + checked.add(href); + const response = await request.head(href); + expect(response.status(), `${href} on ${path}`).toBe(200); + expect(Number(response.headers()["content-length"])).toBeGreaterThan(0); + } + } + + // The test server must not dress a missing asset up as the SPA shell. + const missing = await request.get( + "/static/media/not-a-real-file.abcdef12.pdf", + ); + expect(missing.status()).toBe(404); + expect(missing.headers()["content-type"]).toContain("text/plain"); + }); +}); + +test.describe("carousel", () => { + type Slide = { readonly alt: string; readonly asset: string }; + + /** + * Read the slide list from a throwaway context. + * + * Slides are responsive, and which srcset candidate the browser picks is + * not known before it requests one, so slides are identified by the shared + * part of their filename rather than by one URL. The throwaway context also + * leaves the real page's HTTP cache empty, which is what lets the held and + * failed requests reach the route handler at all. + */ + async function readSlides( + browser: Browser, + baseURL: string | undefined, + ): Promise { + const context = await browser.newContext({ baseURL }); + try { + const page = await context.newPage(); + await goOffline(page, baseURL); + await page.goto("/"); + await expect(page.locator(".carousel-item.active img")).toBeVisible(); + return await page.locator(".carousel-item img").evaluateAll((images) => + images.map((image) => { + const slide = image as HTMLImageElement; + const file = new URL(slide.src).pathname.split("/").pop() ?? ""; + return { alt: slide.alt, asset: file.split(/-\d+w\./)[0] }; + }), + ); + } finally { + await context.close(); + } + } + + test("a slow slide keeps the current one visible until it loads", async ({ + browser, + baseURL, + }) => { + const slides = await readSlides(browser, baseURL); + expect(slides.length).toBeGreaterThan(2); + + const context = await browser.newContext({ baseURL }); + const page = await context.newPage(); + const offline = await goOffline(page, baseURL); + const { promise, resolve } = Promise.withResolvers(); + offline.hold = { + fragment: slides[2].asset, + wait: promise, + release: resolve, + }; + // `load` would wait for the held image, so settle on the parsed document. + await page.goto("/", { waitUntil: "domcontentloaded" }); + await expect(page.locator(".carousel-item.active img")).toBeVisible(); + + const firstAlt = await activeSlideAlt(page); + expect(firstAlt).toBe(slides[0].alt); + + await page.locator(".carousel-indicators li").nth(2).click(); + // The requested slide has not arrived, so the visible one must not change. + await page.waitForTimeout(1000); + expect(await activeSlideAlt(page)).toBe(firstAlt); + + offline.hold.release(); + await expect + .poll(() => activeSlideAlt(page), { timeout: 10_000 }) + .toBe(slides[2].alt); + expect(offline.pageErrors).toEqual([]); + await context.close(); + }); + + test("a broken slide is skipped and the carousel keeps working", async ({ + browser, + baseURL, + }) => { + const slides = await readSlides(browser, baseURL); + expect(slides.length).toBeGreaterThan(2); + + const context = await browser.newContext({ baseURL }); + const page = await context.newPage(); + const offline = await goOffline(page, baseURL); + offline.fail = slides[1].asset; + await page.goto("/"); + + const firstAlt = await activeSlideAlt(page); + await page.locator(".carousel-indicators li").nth(1).click(); + + // The broken slide is passed over rather than displayed or retried. + await expect + .poll(() => activeSlideAlt(page), { timeout: 5_000 }) + .toBe(slides[2].alt); + const seen: (string | null)[] = []; + for (let sample = 0; sample < 15; sample += 1) { + seen.push(await activeSlideAlt(page)); + await page.waitForTimeout(200); + } + expect(seen, "the broken slide was displayed").not.toContain(slides[1].alt); + + // Selection still works afterwards: the failure did not lock the carousel. + await page.locator(".carousel-indicators li").nth(0).click(); + await expect + .poll(() => activeSlideAlt(page), { timeout: 5_000 }) + .toBe(firstAlt); + expect(offline.pageErrors).toEqual([]); + await context.close(); + }); +}); diff --git a/scripts/content-check.mjs b/scripts/content-check.mjs new file mode 100755 index 0000000..febee12 --- /dev/null +++ b/scripts/content-check.mjs @@ -0,0 +1,324 @@ +#!/usr/bin/env node +/** + * Cross-record integrity check for the authored content in `src/content`. + * + * TypeScript already proves the shape of this data. This checks the things a + * type cannot: that a team assignment names a person who exists, that nobody + * appears twice in one team or twice in the registry, that imported images and + * documents exist on disk, that outbound links are well-formed and unique, and + * that archived videos carry a bare YouTube id. + * + * Remote URLs are checked for syntax only. Nothing here makes a network + * request, so a live-but-dead external link still passes. + * + * node scripts/content-check.mjs + * + * Content modules import optimized images, so Vite loads them exactly the way + * the app does; a broken asset import fails here instead of at build time. + */ + +import fs from "node:fs"; +import path from "node:path"; +import process from "node:process"; +import { fileURLToPath } from "node:url"; + +const repoRoot = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "..", +); +const problems = []; +const report = (where, message) => problems.push(`${where}: ${message}`); + +/** Reject unusable link targets, and prove bundled assets exist. */ +function checkUrl(where, value, { local = false } = {}) { + if (value.trim() === "") return report(where, "URL is empty"); + if (value.startsWith("data:")) return; + if (/^[a-z][a-z0-9+.-]*:/i.test(value)) { + let parsed; + try { + parsed = new URL(value); + } catch { + return report(where, `not a valid URL: ${value}`); + } + if (!["http:", "https:"].includes(parsed.protocol)) { + return report(where, `unsupported URL scheme: ${value}`); + } + if (local) + report( + where, + `expected a bundled asset import, got a remote URL: ${value}`, + ); + return; + } + if (!value.startsWith("/")) { + return report( + where, + `expected an imported asset or absolute URL, got: ${value}`, + ); + } + // Vite serves imported assets from `/src/...` (or `/@fs/`) in the graph + // this checker loads, and from `/static/media/...` in a build. + const clean = value.split(/[?#]/)[0]; + if (!clean.startsWith("/src/") && !clean.startsWith("/@fs/")) return; + const onDisk = clean.startsWith("/@fs/") + ? clean.slice(4) + : path.join(repoRoot, clean); + if (!fs.existsSync(onDisk)) report(where, `asset does not exist: ${value}`); +} + +/** Document links: usable target, visible text, no repeated target in one list. */ +function checkLinks(where, links, options) { + const seen = new Map(); + links.forEach((link, index) => { + const at = `${where}[${index}]`; + if (link.name.trim() === "") + report(at, "name is empty; it is the visible link text"); + checkUrl(`${at}.src`, link.src, options); + if (seen.has(link.src)) + report(at, `same target as ${where}[${seen.get(link.src)}]`); + else seen.set(link.src, index); + }); +} + +function checkPeople(people) { + const byName = new Map(); + const byLink = new Map(); + for (const [id, person] of Object.entries(people)) { + const where = `people["${id}"]`; + if (person.name.trim() === "") report(where, "name is empty"); + const twin = byName.get(person.name); + if (twin) + report( + where, + `duplicate profile: "${person.name}" is also people["${twin}"]`, + ); + else byName.set(person.name, id); + + if (person.image !== undefined) + checkUrl(`${where}.image`, person.image, { local: true }); + if (person.link !== undefined) { + checkUrl(`${where}.link`, person.link); + const shared = byLink.get(person.link); + if (shared) + report( + where, + `profile link duplicates people["${shared}"]: ${person.link}`, + ); + else byLink.set(person.link, id); + } + person.descriptions?.forEach((text, index) => { + if (text.trim() === "") + report(`${where}.descriptions[${index}]`, "is empty"); + }); + } +} + +function checkRoles(members, where, people, referenced) { + const seen = new Set(); + for (const [index, member] of members.entries()) { + const at = `${where}[${index}]`; + if (!Object.hasOwn(people, member.personId)) { + report(at, `personId "${member.personId}" is not in the people registry`); + } else { + referenced.add(member.personId); + if (seen.has(member.personId)) + report(at, `"${member.personId}" is already listed here`); + seen.add(member.personId); + } + if (member.title.trim() === "") + report(at, "title is empty; it is the role on the card"); + } +} + +function checkTeams(teamSections, people, pastSpeakers) { + const referenced = new Set(); + const sectionIds = new Set(); + for (const section of teamSections) { + const where = `teamSections["${section.id}"]`; + if (sectionIds.has(section.id)) report(where, "duplicate section id"); + sectionIds.add(section.id); + if (section.navLabel.trim() === "" || section.heading.trim() === "") { + report(where, "navLabel and heading must be non-empty"); + } + checkRoles(section.members, `${where}.members`, people, referenced); + } + checkRoles(pastSpeakers, "pastSpeakers", people, referenced); + for (const id of Object.keys(people)) { + if (!referenced.has(id)) + report(`people["${id}"]`, "has no team or speaker assignment"); + } +} + +function checkEvent(year, event) { + const where = `EVENTS["${year}"]`; + if (event.year !== year) + report(where, `year field "${event.year}" does not match its key`); + checkUrl(`${where}.programHref`, event.programHref); + checkLinks(`${where}.maps`, event.maps, { local: true }); + if (event.waivers) + checkLinks(`${where}.waivers`, event.waivers, { local: true }); + if (event.wristbandImage) { + checkUrl(`${where}.wristbandImage.src`, event.wristbandImage.src, { + local: true, + }); + } + if (event.feedback.kind === "link") + checkUrl(`${where}.feedback.href`, event.feedback.href); + + const scheduleKeys = new Set(); + for (const entry of event.schedule) { + if (scheduleKeys.has(entry.key)) + report(where, `duplicate schedule key ${entry.key}`); + scheduleKeys.add(entry.key); + if (entry.name.trim() === "" || entry.time.trim() === "") { + report( + `${where}.schedule[${entry.key}]`, + "time and name must be non-empty", + ); + } + } + + const titles = new Set(); + const embedIds = new Set(); + for (const section of event.workshops) { + for (const card of section.cards) { + const at = `${where} "${card.title}"`; + if (card.title.trim() === "") + report(where, "a workshop card has no title"); + else if (titles.has(card.title)) + report(at, "duplicate workshop title in this event"); + titles.add(card.title); + checkLinks(`${at} links`, card.links); + if (card.kind !== "archivedVideo") continue; + if (!/^[A-Za-z0-9_-]{6,}$/.test(card.embedId)) { + report(at, `embedId must be a bare YouTube id, got "${card.embedId}"`); + } else if (embedIds.has(card.embedId)) { + report(at, `embedId "${card.embedId}" is used by another card`); + } + embedIds.add(card.embedId); + } + } + + if (event.faq) { + const keys = new Set(event.faq.items.map((item) => item.key)); + if (keys.size !== event.faq.items.length) + report(`${where}.faq`, "duplicate FAQ keys"); + if ( + event.faq.initialOpenKey !== null && + !keys.has(event.faq.initialOpenKey) + ) { + report( + `${where}.faq.initialOpenKey`, + `${event.faq.initialOpenKey} matches no entry`, + ); + } + for (const item of event.faq.items) { + if (item.question.trim() === "" || item.answer.trim() === "") { + report( + `${where}.faq[${item.key}]`, + "question and answer must be non-empty", + ); + } + } + } +} + +function checkEvents(events, eventRoutes, registration) { + for (const [year, event] of Object.entries(events)) checkEvent(year, event); + + // EVENT_ROUTES drives both the router and the Resources menu, so a repeated + // path or label would silently shadow a published year. + const routes = new Set(); + const labels = new Set(); + const covered = new Set(); + for (const { route, year, navLabel } of eventRoutes) { + if (routes.has(route)) report("EVENT_ROUTES", `duplicate route "${route}"`); + routes.add(route); + if (!route.startsWith("/")) + report("EVENT_ROUTES", `route "${route}" is not an absolute path`); + if (navLabel.trim() === "") + report("EVENT_ROUTES", `"${route}" has no menu label`); + else if (labels.has(navLabel)) + report("EVENT_ROUTES", `duplicate menu label "${navLabel}"`); + labels.add(navLabel); + if (!Object.hasOwn(events, year)) + report("EVENT_ROUTES", `"${route}" names unknown year ${year}`); + covered.add(year); + } + for (const year of Object.keys(events)) { + if (!covered.has(year)) + report(`EVENTS["${year}"]`, "no EVENT_ROUTES entry reaches it"); + } + + if (!registration.alert.to.startsWith("/")) { + report( + "REGISTRATION_2021.alert.to", + `must be an in-app route, got "${registration.alert.to}"`, + ); + } + for (const [field, value] of Object.entries(registration.importantLinks)) { + if (Array.isArray(value)) + checkLinks(`REGISTRATION_2021.importantLinks.${field}`, value); + else if (value?.src) + checkUrl(`REGISTRATION_2021.importantLinks.${field}.src`, value.src); + } + checkLinks("REGISTRATION_2021.waivers.forms", registration.waivers.forms, { + local: true, + }); + // The combined-forms link is an external short URL, not a bundled PDF. + checkUrl( + "REGISTRATION_2021.waivers.allForms.src", + registration.waivers.allForms.src, + ); +} + +async function loadContent() { + const { createServer } = await import("vite"); + // The project config gives the same resolution the app and build use, so a + // module that loads here loads there. + const server = await createServer({ + root: repoRoot, + appType: "custom", + logLevel: "error", + server: { middlewareMode: true, watch: null, hmr: false }, + optimizeDeps: { noDiscovery: true }, + }); + try { + // Sequential: a missing module reports itself instead of being buried + // under the transport errors its siblings then raise. + const { people } = await server.ssrLoadModule("/src/content/people.ts"); + const { teamSections } = await server.ssrLoadModule( + "/src/content/teams.ts", + ); + const { pastSpeakers } = await server.ssrLoadModule( + "/src/content/speakers.ts", + ); + const events = await server.ssrLoadModule("/src/content/events/index.ts"); + return { people, teamSections, pastSpeakers, ...events }; + } finally { + await server.close(); + } +} + +let content; +try { + content = await loadContent(); +} catch (error) { + console.error("Could not load the content modules:"); + console.error(` ${error?.message ?? error}`); + process.exit(1); +} + +checkPeople(content.people); +checkTeams(content.teamSections, content.people, content.pastSpeakers); +checkEvents(content.EVENTS, content.EVENT_ROUTES, content.REGISTRATION_2021); + +if (problems.length > 0) { + console.error(`Content check failed with ${problems.length} problem(s):\n`); + for (const problem of problems) console.error(` ${problem}`); + process.exit(1); +} +console.log( + `Content check passed: ${Object.keys(content.people).length} people, ` + + `${content.teamSections.length} team sections, ${Object.keys(content.EVENTS).length} events.`, +); diff --git a/scripts/image-sources.json b/scripts/image-sources.json index c2e3ad5..8a6c60d 100644 --- a/scripts/image-sources.json +++ b/scripts/image-sources.json @@ -2,7 +2,7 @@ "_comment": [ "Inventory of every raster image actively rendered by the site, plus the", "encoding profile used to produce its optimized WebP variants.", - "Edit this file (never src/static/optimized/** or src/constants/optimizedImages.js)", + "Edit this file (never src/static/optimized/** or src/constants/optimizedImages.ts)", "and re-run `node scripts/images.js`. See `node scripts/images.js --help`.", "Keys are the ORIGINAL path relative to src/static; the originals stay in the", "repository so generation is repeatable." @@ -10,10 +10,10 @@ "sourceRoot": "src/static", "outputRoot": "src/static/optimized", "manifestPath": "src/static/optimized/manifest.json", - "mapPath": "src/constants/optimizedImages.js", + "mapPath": "src/constants/optimizedImages.ts", "profiles": { "portrait": { - "_comment": "People.jsx renders headshots in a fixed 160x160 box; 320px square covers 2x displays. Deliberate square crop, centered unless the source needs a focus override.", + "_comment": "People.tsx renders headshots in a fixed 160x160 box; 320px square covers 2x displays. Deliberate square crop, centered unless the source needs a focus override.", "type": "portrait", "size": 320, "quality": 82, @@ -53,8 +53,8 @@ "Asset families listed in allowUnoptimized are deliberately out of scope:", "vector art stays vector, and maps/PDFs are click-only downloads." ], - "roots": ["src/components", "src/constants"], - "extensions": [".js", ".jsx"], + "roots": ["src"], + "extensions": [".ts", ".tsx"], "allowUnoptimized": [ "svg/", "maps/", diff --git a/scripts/images.js b/scripts/images.js index a95f491..6154e48 100755 --- a/scripts/images.js +++ b/scripts/images.js @@ -3,7 +3,7 @@ * Image pipeline for exploretech.la. * * `node scripts/images.js` regenerate the optimized WebP assets, the - * manifest and src/constants/optimizedImages.js + * manifest and src/constants/optimizedImages.ts * `node scripts/images.js --check` validate the checked-in outputs (no external * tools required -- safe for CI / npm scripts) * `node scripts/images.js --help` usage, including how to install cwebp/ffprobe @@ -49,7 +49,7 @@ Inputs / outputs src/static/optimized/manifest.json generated record of every variant: dimensions, byte size, sha256, source sha256, quality used - src/constants/optimizedImages.js + src/constants/optimizedImages.ts generated explicit map, default export, keyed by the ORIGINAL src/static-relative path: images['team/leadership/sandra-pan.jpg'] @@ -57,7 +57,7 @@ Inputs / outputs { src, width, height, srcSet?, sizes? } Profiles - portrait deliberate square crop then a single <=320x320 variant (People.jsx + portrait deliberate square crop then a single <=320x320 variant (People.tsx renders a fixed 160x160 box, so 320 covers 2x displays). Sources smaller than 320px are never upscaled. content responsive variants at the profile widths (640/1280 by default), @@ -603,8 +603,11 @@ function importIdentifier(outputRelativePath, taken) { } function renderMap(config, manifest) { - // `static` is a bundler resolve alias (see vite.config.mjs / jsconfig.json). - const assetRoot = config.outputRoot.replace(/^src\//, ""); + // Relative imports work in both Vite and editor/type resolution. + const assetRoot = path + .relative(path.dirname(config.mapPath), config.outputRoot) + .split(path.sep) + .join("/"); const paths = new Set(); manifest.entries.forEach((entry) => entry.outputs.forEach((output) => paths.add(output.path)), @@ -623,7 +626,7 @@ function renderMap(config, manifest) { ); lines.push("// Each value spreads straight onto a native :"); lines.push("//"); - lines.push('// import images from "constants/optimizedImages";'); + lines.push('// import images from "../constants/optimizedImages";'); lines.push( '// Sandra Pan', ); @@ -697,7 +700,7 @@ const MAP_LOOKUP = /images\[\s*["'`]([^"'`\n]+)["'`]\s*\]/g; function scanReferences(config, keys, problems) { const scan = config.scan || {}; const roots = scan.roots || []; - const extensions = scan.extensions || [".js", ".jsx"]; + const extensions = scan.extensions || [".ts", ".tsx"]; const allowPrefixes = scan.allowUnoptimized || []; const allowPaths = scan.allowUnoptimizedPaths || []; diff --git a/scripts/serve-built-site.cjs b/scripts/serve-built-site.cjs new file mode 100755 index 0000000..985bfaf --- /dev/null +++ b/scripts/serve-built-site.cjs @@ -0,0 +1,253 @@ +#!/usr/bin/env node +/** + * Static server for the production build that behaves like GitHub Pages. + * + * The deployed site is a single-page app served from the root of the + * `gh-pages` branch. Pages has no SPA rewrite: a deep path such as + * `/our_team/design` is a real 404, and the published `404.html` turns that + * path into `/?/our_team/design` so the restore script in `index.html` can + * hand it back to the router. A plain "serve index.html for everything" + * development server hides that hop, so deep links, trailing slashes and the + * not-found page all look healthier locally than in production. + * + * This server therefore: + * - serves real files from the build directory, + * - answers unknown document paths with `404.html` and a 404 status, + * - answers missing files under the emitted asset prefixes with a plain 404 + * instead of HTML, so a broken image or PDF URL fails loudly, + * - mirrors the `max-age=600` caching Pages was observed to send. + * + * Usage: + * node scripts/serve-built-site.cjs [--root build] [--port 4390] [--host 127.0.0.1] + * + * It prints `Serving at http://:/` once listening, which is + * what the Playwright `webServer` configuration waits for. It can also be + * required: `const { startSiteServer } = require('./serve-built-site.cjs')`. + */ + +const http = require("http"); +const fs = require("fs"); +const path = require("path"); +const zlib = require("zlib"); + +const DEFAULT_ROOT = "build"; +const DEFAULT_PORT = 4390; +const DEFAULT_HOST = "127.0.0.1"; + +// Only the types the built site actually emits, plus the media contributors +// add. Anything else is served as a download rather than guessed. +const CONTENT_TYPES = { + ".html": "text/html; charset=utf-8", + ".js": "text/javascript; charset=utf-8", + ".mjs": "text/javascript; charset=utf-8", + ".css": "text/css; charset=utf-8", + ".json": "application/json; charset=utf-8", + ".map": "application/json; charset=utf-8", + ".txt": "text/plain; charset=utf-8", + ".xml": "application/xml; charset=utf-8", + ".svg": "image/svg+xml", + ".webp": "image/webp", + ".png": "image/png", + ".jpg": "image/jpeg", + ".jpeg": "image/jpeg", + ".gif": "image/gif", + ".ico": "image/x-icon", + ".pdf": "application/pdf", + ".woff": "font/woff", + ".woff2": "font/woff2", + ".ttf": "font/ttf", +}; + +// Paths the bundler owns. A miss here is a broken URL, never a route. +const ASSET_PREFIXES = ["/static/", "/assets/"]; + +const COMPRESSIBLE = /\.(html|css|js|mjs|json|map|svg|txt|xml)$/; + +function contentType(file) { + return ( + CONTENT_TYPES[path.extname(file).toLowerCase()] || + "application/octet-stream" + ); +} + +function isAssetPath(pathname) { + return ASSET_PREFIXES.some((prefix) => pathname.startsWith(prefix)); +} + +function resolveWithin(root, pathname) { + const candidate = path.resolve(root, "." + pathname); + if (candidate !== root && !candidate.startsWith(root + path.sep)) return null; + return candidate; +} + +function readableFile(file) { + try { + return fs.statSync(file).isFile() ? file : null; + } catch { + return null; + } +} + +function createSiteServer(options = {}) { + const root = path.resolve(options.root || DEFAULT_ROOT); + if (!readableFile(path.join(root, "index.html"))) { + throw new Error( + `No index.html in ${root}. Run \`npm run build\` first, or pass --root .`, + ); + } + const notFoundPage = readableFile(path.join(root, "404.html")); + + return http.createServer((req, res) => { + let pathname; + try { + pathname = decodeURIComponent( + new URL(req.url, "http://localhost").pathname, + ); + } catch { + res.writeHead(400, { "Content-Type": "text/plain; charset=utf-8" }); + res.end("Bad request URI"); + return; + } + + try { + const resolved = resolveWithin(root, pathname); + if (!resolved) { + res.writeHead(403, { "Content-Type": "text/plain; charset=utf-8" }); + res.end("Forbidden"); + return; + } + + let status = 200; + // GitHub Pages serves index.html for a directory that contains one. + let file = + readableFile(resolved) || + (pathname.endsWith("/") + ? readableFile(path.join(resolved, "index.html")) + : null); + + if (!file) { + if (isAssetPath(pathname)) { + res.writeHead(404, { "Content-Type": "text/plain; charset=utf-8" }); + res.end(`Missing asset: ${pathname}`); + return; + } + // Unknown document path: Pages returns its 404 page, whose script + // rewrites the path into the `/?/...` query the SPA restores from. + if (!notFoundPage) { + res.writeHead(404, { "Content-Type": "text/plain; charset=utf-8" }); + res.end("Not found"); + return; + } + file = notFoundPage; + status = 404; + } + + const headers = { + "Content-Type": contentType(file), + "Cache-Control": "max-age=600", + }; + + if (req.method === "HEAD") { + headers["Content-Length"] = fs.statSync(file).size; + res.writeHead(status, headers); + res.end(); + return; + } + if (req.method !== "GET") { + res.writeHead(405, { Allow: "GET, HEAD" }); + res.end(); + return; + } + + let body = fs.readFileSync(file); + if ( + COMPRESSIBLE.test(file) && + (req.headers["accept-encoding"] || "").includes("gzip") + ) { + body = zlib.gzipSync(body); + headers["Content-Encoding"] = "gzip"; + headers.Vary = "Accept-Encoding"; + } + headers["Content-Length"] = body.length; + res.writeHead(status, headers); + res.end(body); + } catch (error) { + res.writeHead(500, { "Content-Type": "text/plain; charset=utf-8" }); + res.end(String((error && error.message) || error)); + } + }); +} + +function startSiteServer(options = {}) { + const host = options.host || DEFAULT_HOST; + const port = Number(options.port ?? DEFAULT_PORT); + const server = createSiteServer(options); + return new Promise((resolve, reject) => { + server.once("error", reject); + server.listen(port, host, () => { + server.removeListener("error", reject); + resolve(server); + }); + }); +} + +function parseArgs(argv) { + const options = { + root: process.env.SITE_ROOT || DEFAULT_ROOT, + port: process.env.PORT || DEFAULT_PORT, + host: process.env.HOST || DEFAULT_HOST, + }; + for (let index = 0; index < argv.length; index += 1) { + const arg = argv[index]; + const next = () => { + const value = argv[index + 1]; + if (value === undefined) throw new Error(`${arg} needs a value`); + index += 1; + return value; + }; + if (arg === "--root") options.root = next(); + else if (arg === "--port") options.port = next(); + else if (arg === "--host") options.host = next(); + else if (arg === "--help" || arg === "-h") options.help = true; + else throw new Error(`Unknown argument: ${arg}`); + } + return options; +} + +if (require.main === module) { + let options; + try { + options = parseArgs(process.argv.slice(2)); + } catch (error) { + console.error(error.message); + process.exit(2); + } + if (options.help) { + console.log( + "Usage: node scripts/serve-built-site.cjs [--root build] [--port 4390] [--host 127.0.0.1]", + ); + process.exit(0); + } + startSiteServer(options).then( + (server) => { + const { port } = server.address(); + console.log( + `Serving ${path.resolve(options.root)} at http://${options.host}:${port}/`, + ); + const shutdown = () => server.close(() => process.exit(0)); + process.on("SIGINT", shutdown); + process.on("SIGTERM", shutdown); + }, + (error) => { + console.error(String((error && error.message) || error)); + process.exit(1); + }, + ); +} + +module.exports = { + createSiteServer, + startSiteServer, + DEFAULT_PORT, + DEFAULT_HOST, +}; diff --git a/scripts/visual-parity.cjs b/scripts/visual-parity.cjs new file mode 100644 index 0000000..16ace64 --- /dev/null +++ b/scripts/visual-parity.cjs @@ -0,0 +1,203 @@ +// Capture a built site, or compare it with a baseline from the same browser. +// PLAYWRIGHT_MODULE optionally selects an existing local Playwright installation. +const { chromium, firefox, webkit } = require( + process.env.PLAYWRIGHT_MODULE || "@playwright/test", +); +const fs = require("node:fs/promises"); +const path = require("node:path"); +const assert = require("node:assert/strict"); +const routes = [ + "/", + "/our_team/leadership", + "/our_team/content", + "/our_team/design", + "/our_team/operations", + "/our_team/external", + "/our_team/web-dev", + "/our_team/marketing", + "/ignite", + "/register", + "/resources", + "/resources2023", + "/resources2026", + "/not-found", +]; +const widths = ( + process.env.WIDTHS || + "320,390,575,576,577,767,768,769,991,992,993,1199,1200,1201,1440" +) + .split(",") + .map(Number); +const base = process.env.SITE_URL || "http://127.0.0.1:4391"; +const output = + process.env.OUTPUT_DIR || "/tmp/exploretech-refactor-baseline/visual"; +const engine = process.env.ENGINE || "chromium"; +(async () => { + await fs.mkdir(output, { recursive: true }); + const browser = await { chromium, firefox, webkit }[engine].launch(); + const results = []; + try { + for (const width of widths) + for (const route of routes) { + const context = await browser.newContext({ + viewport: { width, height: 900 }, + reducedMotion: "reduce", + }); + const page = await context.newPage(); + const errors = []; + page.on("pageerror", (error) => errors.push(error.message)); + await context.route("**/*", (request) => { + const url = new URL(request.request().url()); + if ( + url.origin === new URL(base).origin || + ["fonts.googleapis.com", "fonts.gstatic.com"].includes(url.hostname) + ) + return request.continue(); + return request.fulfill({ + status: 200, + contentType: "text/html", + body: "External content intercepted for visual capture", + }); + }); + await page.goto(base + route, { waitUntil: "networkidle" }); + await page.evaluate(() => document.fonts.ready); + await page.addStyleTag({ + content: + "*,*::before,*::after{animation:none!important;transition:none!important;caret-color:transparent!important}html{scroll-behavior:auto!important}", + }); + // Reveal lazy media before recording, then return to the initial viewport. + await page.evaluate(async () => { + for (let y = 0; y < document.body.scrollHeight; y += 700) { + scrollTo(0, y); + await new Promise((r) => setTimeout(r, 20)); + } + scrollTo(0, 0); + await Promise.all( + Array.from(document.images) + .filter((i) => i.loading !== "lazy" || i.complete) + .map((i) => i.decode().catch(() => {})), + ); + }); + const snapshot = await page.evaluate(() => { + const selectors = + ".Header,.Hero,.team-title,.team-navigation,.team-content,.People,.person-image,.Footer,section,h1,h2,h3,h4,p,.card,.content-card,.video-frame,.btn,.action,table"; + const props = [ + "fontFamily", + "fontSize", + "fontWeight", + "lineHeight", + "color", + "backgroundColor", + "paddingTop", + "paddingRight", + "paddingBottom", + "paddingLeft", + "marginTop", + "marginRight", + "marginBottom", + "marginLeft", + "borderRadius", + "objectFit", + "objectPosition", + "display", + "flexDirection", + "flexWrap", + "gap", + "overflowX", + ]; + return { + text: document.body.innerText.replace(/\s+/g, " ").trim(), + title: document.title, + links: Array.from(document.querySelectorAll("a[href]")).map( + (a) => ({ + text: a.textContent.trim(), + href: a.getAttribute("href"), + target: a.target, + }), + ), + images: Array.from(document.images).map((i) => ({ + alt: i.alt, + src: new URL(i.src).pathname, + loading: i.loading, + width: i.width, + height: i.height, + })), + overflow: document.documentElement.scrollWidth > innerWidth, + geometry: Array.from(document.querySelectorAll(selectors)).map( + (e) => { + const r = e.getBoundingClientRect(), + s = getComputedStyle(e); + return { + tag: e.tagName, + class: e.className, + x: r.x, + y: r.y, + width: r.width, + height: r.height, + style: Object.fromEntries(props.map((p) => [p, s[p]])), + }; + }, + ), + }; + }); + const name = `${engine}-${width}-${route.replaceAll("/", "_") || "home"}`; + await page.screenshot({ + path: path.join(output, name + ".png"), + fullPage: true, + animations: "disabled", + }); + await fs.writeFile( + path.join(output, name + ".json"), + JSON.stringify(snapshot, null, 2), + ); + let maxGeometryDelta = 0; + if (process.env.BASELINE_DIR) { + const before = JSON.parse( + await fs.readFile( + path.join(process.env.BASELINE_DIR, name + ".json"), + "utf8", + ), + ); + const comparable = structuredClone(snapshot); + assert.equal( + snapshot.geometry.length, + before.geometry.length, + `Element count changed: ${name}`, + ); + for (let index = 0; index < snapshot.geometry.length; index++) { + // Class names belong to the implementation, not the visual contract. + // Retain them in raw snapshots for diagnosis; compare their rendered effects. + delete comparable.geometry[index].class; + delete before.geometry[index].class; + for (const key of ["x", "y", "width", "height"]) { + const delta = Math.abs( + snapshot.geometry[index][key] - before.geometry[index][key], + ); + maxGeometryDelta = Math.max(maxGeometryDelta, delta); + // Two Chromium layout quanta can differ when React changes text-node boundaries. + // Keep the raw measurements; tolerate less than 1/20th of a CSS pixel only. + assert.ok( + delta <= 0.05, + `${name} geometry[${index}].${key} changed by ${delta}px`, + ); + comparable.geometry[index][key] = before.geometry[index][key]; + } + } + assert.deepEqual(comparable, before, `Parity failed: ${name}`); + } + assert.deepEqual(errors, [], `Application errors: ${name}`); + results.push({ route, width, name, status: "pass", maxGeometryDelta }); + await fs.writeFile( + path.join(output, "results.json"), + JSON.stringify(results, null, 2), + ); + console.log("Captured", name); + await context.close(); + } + } finally { + await browser.close(); + } +})().catch((error) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/src/App.jsx b/src/App.jsx deleted file mode 100644 index 1b16a6b..0000000 --- a/src/App.jsx +++ /dev/null @@ -1,73 +0,0 @@ -import React, { useEffect, useRef } from "react"; -import { - Switch, - Route, - Redirect, - useHistory, - useLocation, -} from "react-router-dom"; - -import GA from "util/GoogleAnalytics"; - -import Header from "components/common/Header"; -import Home from "components/Home"; -import Register from "components/Registration/Register"; -import Resources from "components/Resources/Resources"; -import Resources2023 from "components/Resources2023/Resources"; -import Resources2026 from "components/Resources2026/Resources"; -import Team from "components/Team/Team"; -import PageNotFound from "components/PageNotFound"; -import Ignite from "components/Ignite/Ignite"; - -import "./App.scss"; - -export default function App() { - const { pathname, search, hash, key } = useLocation(); - const history = useHistory(); - const initialNavigation = useRef(true); - - useEffect(() => { - // Redirects can replace history before this render's effect runs. - if ( - history.location.pathname !== pathname || - history.location.search !== search - ) - return; - if (GA.init()) { - GA.trackPageView(pathname + search); - } - }, [pathname, search, history]); - - useEffect(() => { - const initial = initialNavigation.current; - initialNavigation.current = false; - if (!initial && history.action === "POP") return; - if (hash) { - const target = document.getElementById(hash.slice(1)); - if (target) target.scrollIntoView(); - } else { - window.scrollTo(0, 0); - } - }, [pathname, hash, key, history]); - - return ( -
-
- - - - - - - } - /> - - - - -
- ); -} diff --git a/src/App.scss b/src/App.scss deleted file mode 100644 index cb1c652..0000000 --- a/src/App.scss +++ /dev/null @@ -1,138 +0,0 @@ -@import "bootstrap/scss/bootstrap"; - -// See colors in the exploretech.la Design System in Figma -$color-aqua: #98d6d6; -$color-muted-blue: #448494; -$color-navy: #0b546f; -$color-teal: #57ada3; -$color-white: #ffffff; - -$section-width: 1040px; -$section-horizontal-padding-xs: 24px; -$section-horizontal-padding-sm: 40px; -$section-horizontal-padding-md: 52px; -$section-horizontal-padding-lg: 64px; -$section-vertical-padding: 64px; - -@keyframes bobble { - 0% { - transform: translateY(0); - } - - 100% { - transform: translateY(-1rem); - } -} - -.pill-divider { - height: 0.5rem; - width: 4rem; - margin-bottom: 1.5rem; - background: $color-aqua; - border-radius: 0.25rem; -} - -html { - scroll-behavior: smooth; -} - -.App { - section, - .Section { - padding-top: $section-vertical-padding; - padding-bottom: $section-vertical-padding; - padding-left: $section-horizontal-padding-xs; - padding-right: $section-horizontal-padding-xs; - } - - /* Height */ - ::-webkit-scrollbar { - height: 2px; - } - - /* Track */ - ::-webkit-scrollbar-track { - background: #ebebeb; - border-radius: 1px; - } - - /* Handle */ - ::-webkit-scrollbar-thumb { - background: $color-aqua; - border-radius: 1px; - } -} - -@include media-breakpoint-down(xs) { - .App { - overflow-x: hidden; - } -} - -@include media-breakpoint-up(sm) { - .App { - section, - .Section { - padding-left: $section-horizontal-padding-sm; - padding-right: $section-horizontal-padding-sm; - } - - /* Height */ - ::-webkit-scrollbar { - height: 4px; - } - - /* Track */ - ::-webkit-scrollbar-track { - border-radius: 2px; - } - - /* Handle */ - ::-webkit-scrollbar-thumb { - border-radius: 2px; - } - } -} - -@include media-breakpoint-up(md) { - .App { - section, - .Section { - padding-left: $section-horizontal-padding-md; - padding-right: $section-horizontal-padding-md; - } - - ::-webkit-scrollbar { - display: none; - } - } -} - -@include media-breakpoint-up(lg) { - .App { - section, - .Section { - padding-left: $section-horizontal-padding-lg; - padding-right: $section-horizontal-padding-lg; - } - } -} - -// Common Component Styles -@import "components/common/Header.scss"; -@import "components/common/LinkWithArrow.scss"; -@import "components/common/UnorderedItemList.scss"; -@import "components/common/People.scss"; - -// Page Styles -@import "components/Home.scss"; -@import "components/PageNotFound.scss"; -@import "components/Registration/Register.scss"; -@import "components/Ignite/Ignite.scss"; -@import "components/Resources/Resources.scss"; -@import "components/Team/Team.scss"; -@import "components/Team/Leadership.scss"; -@import "components/Team/Content.scss"; -@import "components/Team/Design.scss"; -@import "components/Team/Operations.scss"; -@import "components/Team/External.scss"; diff --git a/src/App.test.jsx b/src/App.test.jsx deleted file mode 100644 index 209c42a..0000000 --- a/src/App.test.jsx +++ /dev/null @@ -1,74 +0,0 @@ -import { vi } from "vitest"; -import React from "react"; -import ReactDOM from "react-dom"; -import { act } from "react-dom/test-utils"; -import { Router } from "react-router-dom"; -import { createMemoryHistory } from "history"; -import App from "./App"; -import GA from "util/GoogleAnalytics"; - -vi.mock("util/GoogleAnalytics", () => ({ - default: { - init: vi.fn(() => true), - trackPageView: vi.fn(), - trackEvent: vi.fn(), - }, -})); - -let container; -let scrollTo; -const originalScrollIntoView = Element.prototype.scrollIntoView; - -beforeEach(() => { - vi.clearAllMocks(); - container = document.createElement("div"); - document.body.appendChild(container); - scrollTo = vi.spyOn(window, "scrollTo").mockImplementation(() => {}); - Element.prototype.scrollIntoView = vi.fn(); -}); - -afterEach(() => { - act(() => { - ReactDOM.unmountComponentAtNode(container); - }); - container.remove(); - scrollTo.mockRestore(); - if (originalScrollIntoView) - Element.prototype.scrollIntoView = originalScrollIntoView; - else delete Element.prototype.scrollIntoView; -}); - -it.each(["/our_team", "/our_team/"])( - "records only the resolved page when entering %s", - (path) => { - const history = createMemoryHistory({ initialEntries: [path] }); - act(() => { - ReactDOM.render( - - - , - container, - ); - }); - expect(history.location.pathname).toBe("/our_team/leadership"); - expect(GA.trackPageView.mock.calls).toEqual([["/our_team/leadership"]]); - }, -); - -it("records a new route with its query but not another view for an anchor", () => { - const history = createMemoryHistory({ initialEntries: ["/ignite"] }); - act(() => { - ReactDOM.render( - - - , - container, - ); - }); - act(() => history.push("/our_team/leadership?source=local")); - act(() => history.push("/our_team/leadership?source=local#leadership")); - expect(GA.trackPageView.mock.calls).toEqual([ - ["/ignite"], - ["/our_team/leadership?source=local"], - ]); -}); diff --git a/src/app/App.test.tsx b/src/app/App.test.tsx new file mode 100644 index 0000000..6b4b706 --- /dev/null +++ b/src/app/App.test.tsx @@ -0,0 +1,65 @@ +import { vi } from "vitest"; +import { act } from "react"; +import { createRoot, type Root } from "react-dom/client"; +import { + createMemoryRouter, + RouterProvider, + type DataRouter, +} from "react-router-dom"; +import App from "./App"; +import GA from "../util/GoogleAnalytics"; + +vi.mock("../util/GoogleAnalytics", () => ({ + default: { + init: vi.fn(() => true), + trackPageView: vi.fn(), + trackEvent: vi.fn(), + trackOutbound: vi.fn(), + }, +})); +let container: HTMLDivElement; +let root: Root; +let router: DataRouter; + +beforeEach(() => { + vi.clearAllMocks(); + container = document.createElement("div"); + document.body.appendChild(container); + root = createRoot(container); + vi.spyOn(window, "scrollTo").mockImplementation(() => {}); +}); +afterEach(async () => { + await act(async () => root.unmount()); + router?.dispose(); + container.remove(); + vi.restoreAllMocks(); +}); +async function renderPath(path: string) { + router = createMemoryRouter([{ path: "*", element: }], { + initialEntries: [path], + }); + await act(async () => root.render()); +} +it.each(["/our_team", "/our_team/"])( + "records only the resolved page when entering %s", + async (path) => { + await renderPath(path); + expect(router.state.location.pathname).toBe("/our_team/leadership"); + expect(vi.mocked(GA.trackPageView).mock.calls).toEqual([ + ["/our_team/leadership"], + ]); + }, +); +it("records a new route with its query but not another view for an anchor", async () => { + await renderPath("/ignite"); + await act(async () => { + await router.navigate("/our_team/leadership?source=local"); + }); + await act(async () => { + await router.navigate("/our_team/leadership?source=local#leadership"); + }); + expect(vi.mocked(GA.trackPageView).mock.calls).toEqual([ + ["/ignite"], + ["/our_team/leadership?source=local"], + ]); +}); diff --git a/src/app/App.tsx b/src/app/App.tsx new file mode 100644 index 0000000..1592707 --- /dev/null +++ b/src/app/App.tsx @@ -0,0 +1,57 @@ +import { useEffect, useRef } from "react"; +import { + Navigate, + Route, + Routes, + useLocation, + useNavigationType, +} from "react-router-dom"; +import GA from "../util/GoogleAnalytics"; +import Header from "../components/common/Header"; +import Home from "../features/home/Home"; +import RegistrationPage from "../features/registration/RegistrationPage"; +import EventPage from "../features/events/EventPage"; +import Team from "../features/team/Team"; +import PageNotFound from "../components/PageNotFound"; +import Ignite from "../features/ignite/Ignite"; + +import { EVENT_ROUTES } from "../content/events"; +export default function App() { + const { pathname, search, hash, key } = useLocation(); + const navigationType = useNavigationType(); + const initialNavigation = useRef(true); + const redirecting = /^\/our_team\/?$/i.test(pathname); + + useEffect(() => { + // Alias routes never represent a displayed page. Track only their destination. + if (!redirecting && GA.init()) GA.trackPageView(pathname + search); + }, [pathname, search, redirecting]); + + useEffect(() => { + const initial = initialNavigation.current; + initialNavigation.current = false; + if (!initial && navigationType === "POP") return; + if (hash) document.getElementById(hash.slice(1))?.scrollIntoView(); + else window.scrollTo(0, 0); + }, [pathname, hash, key, navigationType]); + + return ( +
+
+ + } /> + } /> + {EVENT_ROUTES.map(({ route, year }) => ( + } /> + ))} + } + /> + } /> + } /> + } /> + +
+ ); +} diff --git a/src/app/main.tsx b/src/app/main.tsx new file mode 100644 index 0000000..404d286 --- /dev/null +++ b/src/app/main.tsx @@ -0,0 +1,12 @@ +import { createRoot } from "react-dom/client"; +import { BrowserRouter } from "react-router-dom"; +import App from "./App"; +import "../styles/theme.css"; + +const root = document.getElementById("root"); +if (!root) throw new Error("The application root is missing from index.html"); +createRoot(root).render( + + + , +); diff --git a/src/components/About.scss b/src/components/About.scss deleted file mode 100644 index 97ffe07..0000000 --- a/src/components/About.scss +++ /dev/null @@ -1,97 +0,0 @@ -.About { - .about-content { - display: flex; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - &.about-org { - flex-direction: column-reverse; - } - - &.about-team { - flex-direction: column; - } - - .left-column, - .right-column { - &.text { - padding-top: 32px; - } - } - - .founding-story, - .current-team { - a { - display: flex; - flex-direction: row; - align-items: center; - text-decoration: none; - color: $color-muted-blue; - - &:hover { - .MdKeyboardArrowRight { - fill: white; - background-color: $color-muted-blue; - border: 2px solid $color-muted-blue; - } - } - - p { - margin-bottom: 0; - margin-right: 0.5rem; - } - } - } - - img { - max-width: 100%; - max-height: 100vh; - height: auto; - } - } - - .MdKeyboardArrowRight { - fill: $color-muted-blue; - border: 2px solid #e2e2e2; - border-radius: 50%; - width: 1.5rem; - min-width: 1.5rem; - height: 1.5rem; - transition: all 0.3s ease-in-out; - -webkit-transition: all 0.3s ease-in-out; /** Chrome & Safari **/ - -moz-transition: all 0.3s ease-in-out; /** Firefox **/ - -o-transition: all 0.3s ease-in-out; /** Opera **/ - } -} - -@include media-breakpoint-up(md) { - .About { - .about-content { - justify-content: space-between; - - &:not(:last-child) { - padding-bottom: 64px; - } - - &.about-org, - &.about-team { - flex-direction: row; - } - - .left-column, - .right-column { - width: 46%; - - &.text { - padding-top: 0px; - } - } - } - } -} diff --git a/src/components/ActionLink.tsx b/src/components/ActionLink.tsx new file mode 100644 index 0000000..7d84ecb --- /dev/null +++ b/src/components/ActionLink.tsx @@ -0,0 +1,22 @@ +import type { AnchorHTMLAttributes } from "react"; + +/** + * React Bootstrap rendered `
- - - - - ); - } - - _trackGetInvolvedClick() { - GA.trackEvent({ - category: "Hero", - action: "Click", - label: "Get Involved", - }); - } - - _trackRegisterTodayClick() { - GA.trackEvent({ - category: "Hero", - action: "Click", - label: "Register Today", - }); - } - - _trackLearnMoreClick() { - GA.trackEvent({ - category: "Hero", - action: "Click", - label: "Learn More", - }); - } -} diff --git a/src/components/Hero.scss b/src/components/Hero.scss deleted file mode 100644 index 5d556ff..0000000 --- a/src/components/Hero.scss +++ /dev/null @@ -1,101 +0,0 @@ -.Hero { - height: 450px; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - background-color: $color-aqua; - color: $color-navy; - - .logo-with-icon-group { - width: 20rem; - height: auto; - margin-bottom: 2rem; - padding-left: 24px; - padding-right: 24px; - } - - .hero-content { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - text-align: center; - - .h1-title { - display: none; - } - - .h2-title { - display: block; - } - - .hero-cta { - margin-top: 1rem; - display: flex; - flex-direction: row; - - .btn:not(:last-child) { - margin-right: 1rem; - } - } - } - - .expand-icon { - position: absolute; - bottom: 2rem; - cursor: pointer; - animation: bobble 1s infinite alternate; - } - - p { - margin: 0; - } -} - -@include media-breakpoint-up(sm) { - .Hero { - .logo-with-icon-group { - width: 25rem; - } - - .hero-content { - .h1-title { - display: block; - } - - .h2-title { - display: none; - } - } - } -} - -@include media-breakpoint-up(md) { - .Hero { - flex-direction: row; - - .logo-with-icon-group { - margin-right: 3rem; - margin-bottom: 0; - padding-left: 0; - padding-right: 0; - } - - .hero-content { - justify-content: flex-start; - align-items: flex-start; - text-align: left; - max-width: 400px; - } - } -} - -@include media-breakpoint-up(lg) { - .Hero { - .logo-with-icon-group { - width: 30rem; - margin-right: 4rem; - } - } -} diff --git a/src/components/Home.jsx b/src/components/Home.jsx deleted file mode 100644 index ba87dab..0000000 --- a/src/components/Home.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import React from "react"; -import Hero from './Hero'; -// import Alerts from './common/Alerts' -import About from './About'; -import GetInvolved from './GetInvolved'; -import Speakers from './Speakers'; -import Sponsors from './Sponsors'; -import Footer from './Footer'; -// import RegistrationAlert from './Registration/RegistrationAlert'; - - -function Home() { - return ( -
- - {/* */} - {/* */} - - - - -
-
- ); -} - -Home.displayName = "Home"; -export default Home; \ No newline at end of file diff --git a/src/components/Home.scss b/src/components/Home.scss deleted file mode 100644 index d19b73b..0000000 --- a/src/components/Home.scss +++ /dev/null @@ -1,8 +0,0 @@ -// Home Component Styles -@import "./common/Alerts.scss"; -@import "./Hero.scss"; -@import "./About.scss"; -@import "./GetInvolved.scss"; -@import "./Speakers.scss"; -@import "./Sponsors.scss"; -@import "./Footer.scss"; diff --git a/src/components/Ignite/Ignite.jsx b/src/components/Ignite/Ignite.jsx deleted file mode 100644 index bcdfc33..0000000 --- a/src/components/Ignite/Ignite.jsx +++ /dev/null @@ -1,290 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; -import Button from "react-bootstrap/Button"; -import Footer from "components/Footer"; -import PageNotFound from "components/PageNotFound"; -import images from "constants/optimizedImages"; - -// Workshop cards sit three-up on desktop; the capstone and apply photos are -// single large images inside their own containers. -const WorkshopImageSizes = "(min-width: 992px) 33vw, 100vw"; -const CapstoneImageSizes = "(min-width: 1000px) 900px, 90vw"; -const ApplyImageSizes = "(min-width: 992px) 50vw, 100vw"; - -// Every image on this page is below the header section, so they are all lazy. -const lazyPhoto = (key, sizes) => ({ - ...images[key], - sizes, - loading: "lazy", - decoding: "async", -}); - -const IGNITE_ENABLED = true; // gate - -export default class Ignite extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("Ignite", this.props.className); - - if (!IGNITE_ENABLED) { - return ; - } - - return ( -
-
-
-

Ignite

-
-

- Ignite is a 4-week series of beginner-friendly workshops - offering an in-depth exploration of current trending topics in - technology. It is designed to inspire and encourage high school - students to pursue a career in the STEM/Tech field. -

-
-
- - -
-
-
- -
-
-

Program Structure

-
-
-

Week 1: Foundation

-

- Building core skills and understanding key concepts. -

-
-
-

Week 2: Development

-

- Hands-on learning and practical application. -

-
-
-

Week 3: Integration

-

- Advanced concepts and team collaboration. -

-
-
-

- Week 4: -
- Capstone -

-

- Project development and final presentation. -

-
-
-
-
- -
-
-

2025 Workshops

-
-
-

Introduction to Python

-

- Dive into one of the most versatile and widely used - programming languages. This track will teach you essential - Python concepts and guide you through practical projects, - perfect for beginners. -

-
- Introduction to Python -
-
-
-

Game Development with Roblox

-

- Design and develop an exciting speed run parkour game using - Roblox Studio. From building dynamic levels to scripting game - mechanics with Lua, you'll gain hands-on experience in game - creation. -

-
- Game Development with Roblox -
-
-
-

Web Development

-

- Learn how websites are built using HTML and CSS. Build your - skills throughout the sessions and create your very own custom - website as a capstone project. -

-
- Web Development -
-
-
-
-
- -
-
-

2024 Workshops

-
-
-

Introduction to Python

-

- Dive into one of the most versatile and widely used - programming languages. This track will teach you essential - Python concepts and guide you through practical projects, - perfect for beginners. -

-
- Introduction to Python -
-
-
-

Game Development with Unity

-

- Design and develop an exciting speed run parkour game using - Roblox Studio. From building dynamic levels to scripting game - mechanics with Lua, you'll gain hands-on experience in game - creation. -

-
- Game Development with Unity -
-
-
-

Machine Learning

-

- Learn how websites are built using HTML and CSS. Build your - skills throughout the sessions and create your very own custom - website as a capstone project. -

-
- Machine Learning -
-
-
-
-
- -
-
-

Capstone Project

-

- The program culminates in a capstone project... -

-
- Capstone Project Presentation -
-
-
- -
-
-
-

Apply Now!

-

- Applications for the next IGNITE are open... -

- -
- -
-
- Students Workshop -
-
-
-
- -
-
- ); - } -} diff --git a/src/components/Ignite/Ignite.scss b/src/components/Ignite/Ignite.scss deleted file mode 100644 index 8cd0981..0000000 --- a/src/components/Ignite/Ignite.scss +++ /dev/null @@ -1,492 +0,0 @@ -// Variables for the gradient and layout -$ignite-teal-dark: #2ca6bc; -$ignite-teal-light: #ddf6f8; -$ignite-white: #ffffff; -$ignite-text-dark: #06546e; -$max-content-width: 1140px; - -.Ignite { - width: 100%; - min-height: 100vh; - - .large-wireframe-display { - width: 100%; - - .display-placeholder { - width: 100%; - aspect-ratio: 16 / 9; - background: #333; - color: #aaa; - display: flex; - align-items: center; - justify-content: center; - border-radius: 12px; - font-size: 1.5rem; - border: 2px solid #555; - } - } - - // General Section Layout - .ignite-section { - width: 100%; - padding: 80px 20px; - display: flex; - justify-content: center; - - .content-wrapper { - width: 100%; - max-width: $max-content-width; - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - } - } - - // 1. Header Section Styles - .header-section { - padding-top: 100px; - padding-bottom: 80px; - color: white; - - /* NEW — solid blue background */ - background: $ignite-teal-dark; - - .ignite-title { - font-size: 7rem; - font-weight: 700; - letter-spacing: -2px; - margin-bottom: 42px; - line-height: 1; - } - - .ignite-description { - max-width: 800px; - font-size: 1.25rem; - line-height: 1.5; - margin-bottom: 40px; - font-weight: 400; - color: #d0ecf0; - } - - .header-buttons { - display: flex; - gap: 20px; - - .btn-apply { - background-color: #07556f; - border: none; - padding: 12px 18px; - font-size: 1.1rem; - font-weight: 400; - border-radius: 1rem; - } - - .btn-previous { - border: 2px solid #06546f; - color: #06546f; - padding: 12px 18px; - font-size: 1.1rem; - background: transparent; - border-radius: 1rem; - font-weight: 400; - - &:hover { - background: rgba(255, 255, 255, 0.1); - } - } - } - } - - // 2. Structure Section - .structure-section { - - /* NEW — blue → white gradient */ - background: linear-gradient( - to bottom, - $ignite-teal-dark 0%, - $ignite-teal-light 100% - ); - - .section-header { - font-size: 3.5rem; - font-weight: 700; - margin-bottom: 40px; - color: white; - } - - .program-cards-container { - display: flex; - flex-direction: column; - gap: 20px; - width: 100%; - - @media (min-width: 768px) { - flex-direction: row; - gap: 14px; - } - } - - .program-card { - background: rgba(255, 255, 255, 0.2); - border-radius: 16px; - padding: 20px; - display: flex; - flex-direction: column; - flex: 1; - min-height: 0; - backdrop-filter: blur(10px); - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); - transition: all 0.3s ease; - opacity: 1; - - .card-title { - font-size: 1.5rem; - font-weight: 700; - color: white; - margin-bottom: 10px; - line-height: 1.2; - } - - .card-description { - font-size: 1rem; - color: rgba(255, 255, 255, 0.9); - margin-bottom: 8px; - line-height: 1.5; - display: -webkit-box; - -webkit-line-clamp: 2; - line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; - text-overflow: ellipsis; - min-height: 3em; // Ensures consistent height for 2 lines - } - - .card-image { - width: 100%; - height: 240px; // Fixed height for consistent image size - border-radius: 12px; - overflow: hidden; - margin-top: auto; - background: rgba(0, 0, 0, 0.1); - border: 3px solid white; - flex-shrink: 0; // Prevent image from shrinking - margin-top: 0; // Remove auto margin to bring image closer to text - - img { - width: 100%; - height: 100%; - object-fit: cover; - display: block; - } - } - } - - // Hover effect: highlight hovered card, dull others - .program-cards-container:hover .program-card { - opacity: 0.6; - transform: scale(0.98); - } - - .program-cards-container .program-card:hover { - opacity: 1; - transform: translateY(-8px) scale(1.02); - background: rgba(255, 255, 255, 0.3); - box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25); - z-index: 10; - position: relative; - } - } - - // 3 & 4. Workshop Sections (Light Background Area) - .workshop-section { - - /* NEW — solid light background */ - background: $ignite-teal-light; - - .section-header { - font-size: 3rem; - font-weight: 700; - margin-bottom: 40px; - color: #06546f; - } - - .workshop-cards-container { - display: flex; - flex-direction: column; - gap: 20px; - width: 100%; - - @media (min-width: 768px) { - flex-direction: row; - gap: 14px; - } - } - - .workshop-card { - background: #1cb0c6; - border-radius: 16px; - padding: 20px; - display: flex; - flex-direction: column; - flex: 1; - min-height: 450px; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); - transition: all 0.3s ease; - opacity: 1; - - .card-title { - font-size: 1.5rem; - font-weight: 700; - color: white; - margin-bottom: 10px; - line-height: 1.2; - } - - .card-description { - font-size: 1rem; - color: rgba(255, 255, 255, 0.9); - margin-bottom: 8px; - line-height: 1.5; - } - - .card-image { - width: 100%; - height: 240px; // Fixed height for consistent image size - border-radius: 12px; - overflow: hidden; - margin-top: auto; - background: rgba(0, 0, 0, 0.1); - border: 3px solid white; - flex-shrink: 0; // Prevent image from shrinking - margin-top: 0; // Remove auto margin to bring image closer to text - - img { - width: 100%; - height: 100%; - object-fit: cover; - display: block; - } - } - } - - // Hover effect: highlight hovered card, dull others - .workshop-cards-container:hover .workshop-card { - opacity: 0.6; - transform: scale(0.98); - } - - .workshop-cards-container .workshop-card:hover { - opacity: 1; - transform: translateY(-8px) scale(1.02); - background: #2ca6bc; - box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25); - z-index: 10; - position: relative; - } - } - - // 5. Capstone Section - .capstone-section { - - /* NEW — light grey background */ - background: #f5f5f5; - - .section-header { - font-size: 3rem; - font-weight: 700; - margin-bottom: 10px; - color: #06546f; - } - - .section-subtitle { - color: #6796a5; - margin-bottom: 30px; - } - - .capstone-image-container { - width: 90%; - max-width: 900px; - margin: 0 auto; - border-radius: 16px; - overflow: hidden; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); - - img { - width: 100%; - height: auto; - display: block; - } - } - } - - // 6. Apply Section (Bottom Dark Gradient) - .footer-apply-section { - color: white; - padding-top: 80px; - padding-bottom: 60px; - - /* NEW — gradient from light blue to darker teal */ - background: linear-gradient( - to bottom, - #a8d8e8 0%, - $ignite-teal-dark 100% - ); - - .content-wrapper { - flex-direction: column; - - @media (min-width: 768px) { - flex-direction: row !important; - align-items: flex-start; - justify-content: space-between; - } - } - - .split-layout { - display: flex; - flex-direction: column; - gap: 40px; - align-items: stretch; - } - - .left-text-col { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: flex-start; - text-align: left; - - .align-left { - text-align: left; - font-size: 4rem; - font-weight: 700; - margin-bottom: 15px; - line-height: 1; - color: $ignite-white; - } - - .section-subtitle-small { - font-size: 1.1rem; - margin-top: 15px; - margin-bottom: 30px; - color: white; - } - - .btn-apply-large { - background-color: #07556f; - border: none; - padding: 12px 40px; - font-size: 1.1rem; - font-weight: 400; - border-radius: 8px; - margin-top: 10px; - color: white; - cursor: pointer; - width: 100%; - } - } - - .right-image-col { - width: 100%; - display: flex; - align-items: center; - justify-content: center; - - .apply-image { - width: 100%; - border-radius: 20px; - overflow: hidden; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); - - img { - width: 100%; - height: auto; - display: block; - } - } - } - } - - /* DESKTOP FIX — PURE CSS, ALWAYS APPLIES */ - @media (min-width: 768px) { - .footer-apply-section .left-text-col { - width: 50% !important; - } - - .footer-apply-section .right-image-col { - width: 50% !important; - } - - .footer-apply-section .btn-apply-large { - width: 100% !important; - } - - .Ignite .footer-apply-section .split-layout { - flex-direction: row !important; - gap: 60px; - align-items: stretch; - } - - .Ignite .footer-apply-section .left-text-col { - width: 40% !important; - } - - .Ignite .footer-apply-section .right-image-col { - width: 55% !important; - } - } - - // 7. Gallery Section - .gallery-section { - color: white; - padding-top: 60px; - padding-bottom: 100px; - - /* NEW — solid teal background */ - background: $ignite-teal-dark; - - .section-header { - font-size: 3.5rem; - font-weight: 700; - margin-bottom: 10px; - color: white; - } - - .section-subtitle { - font-size: 1.1rem; - margin-bottom: 50px; - opacity: 0.85; - color: rgba(255, 255, 255, 0.85); - } - - .gallery-grid { - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: 20px; - width: 100%; - - @media (max-width: 768px) { - grid-template-columns: repeat(2, 1fr); - } - - @media (max-width: 480px) { - grid-template-columns: 1fr; - } - - .gallery-item { - border-radius: 12px; - overflow: hidden; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); - aspect-ratio: 4 / 3; - - img { - width: 100%; - height: 100%; - object-fit: cover; - display: block; - } - } - } - } -} diff --git a/src/components/Leadership.jsx b/src/components/Leadership.jsx deleted file mode 100644 index 5ce4489..0000000 --- a/src/components/Leadership.jsx +++ /dev/null @@ -1,41 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import People from "components/common/People"; - -import HomePageSections from "constants/HomePageSections"; -import { Leadership } from "constants/leadership"; - -export default class Speakers extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames( - "Section", - "Leadership", - this.props.className - ); - return ( -
-
-
-

Our Leadership

-
-
- -
-
- ); - } -} diff --git a/src/components/Leadership.scss b/src/components/Leadership.scss deleted file mode 100644 index 0a92709..0000000 --- a/src/components/Leadership.scss +++ /dev/null @@ -1,25 +0,0 @@ -.Leadership { - background-color: #f5f5f5; - - .leadership-container { - max-width: $section-width; - margin: auto; - - .leadership-header { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1rem; - } - } -} - -@include media-breakpoint-up(md) { - .Leadership { - .leadership-container { - .leadership-header { - margin-bottom: 0; - } - } - } -} diff --git a/src/components/OutboundLink.tsx b/src/components/OutboundLink.tsx new file mode 100644 index 0000000..75962ba --- /dev/null +++ b/src/components/OutboundLink.tsx @@ -0,0 +1,40 @@ +import type { ComponentProps } from "react"; +import GA from "../util/GoogleAnalytics"; + +type Props = ComponentProps<"a"> & { eventLabel: string }; + +export default function OutboundLink({ + eventLabel, + target, + href, + onClick, + rel, + ...props +}: Props) { + return ( + { + onClick?.(event); + if (event.defaultPrevented) return; + const sameWindow = + target !== "_blank" && + !event.ctrlKey && + !event.shiftKey && + !event.metaKey && + event.button !== 1; + if (sameWindow && href) { + event.preventDefault(); + GA.trackOutbound(eventLabel, () => { + window.location.href = href; + }); + } else { + GA.trackOutbound(eventLabel, () => {}); + } + }} + /> + ); +} diff --git a/src/components/PageNotFound.scss b/src/components/PageNotFound.scss deleted file mode 100644 index 62b8b20..0000000 --- a/src/components/PageNotFound.scss +++ /dev/null @@ -1,10 +0,0 @@ -.PageNotFound { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - - h3 { - margin-bottom: 2rem; - } -} diff --git a/src/components/PageNotFound.jsx b/src/components/PageNotFound.tsx similarity index 70% rename from src/components/PageNotFound.jsx rename to src/components/PageNotFound.tsx index d19f759..bb14e77 100644 --- a/src/components/PageNotFound.jsx +++ b/src/components/PageNotFound.tsx @@ -1,8 +1,8 @@ -import React, { useEffect } from "react"; +import { useEffect } from "react"; -import LinkWithArrow from "components/common/LinkWithArrow"; +import LinkWithArrow from "./common/LinkWithArrow"; -function PageNotFound() { +export default function PageNotFound() { useEffect(() => { const previousTitle = document.title; document.title = "Page Not Found • exploretech.la"; @@ -21,6 +21,3 @@ function PageNotFound() { ); } - -PageNotFound.displayName = "PageNotFound"; -export default PageNotFound; diff --git a/src/components/Registration/Eligibility.jsx b/src/components/Registration/Eligibility.jsx deleted file mode 100644 index 25111e4..0000000 --- a/src/components/Registration/Eligibility.jsx +++ /dev/null @@ -1,84 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -export default class Eligibility extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames( - "Section", - "Eligibility", - this.props.className - ); - - return ( -
-
-
-

Eligibility

-
-
-
-
-
-

Student Eligibility

-
-
-
    -
  • Must be a current high school student (grades 9-12)
  • -
      -
    • - Public or private high school students are eligible, as - well as homeschooled students -
    • -
    -
  • Must be a Los Angeles County resident
  • -
  • - Must have a computer and reliable internet connection for - the duration of the event -
  • -
  • - Must fill out all required waivers (Liability, Multimedia - Release, and Student Verification) -
  • -
-
-
-
-
-

Teacher/Educator Eligibility

-
-
-
    -
  • - Must be a current high school teacher in Los Angeles County -
  • -
  • - Must have a computer and reliable internet connection for - the duration of the event -
  • -
  • - Must fill out all required waivers (Liability and Multimedia - Release) -
  • -
  • Must submit photo of teacher badge/ID as verification
  • -
-
-
-
-
-
- ); - } -} diff --git a/src/components/Registration/Eligibility.scss b/src/components/Registration/Eligibility.scss deleted file mode 100644 index e7898a0..0000000 --- a/src/components/Registration/Eligibility.scss +++ /dev/null @@ -1,65 +0,0 @@ -.Eligibility { - .eligibility-content { - display: flex; - flex-direction: column; - justify-content: space-between; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - .eligibility-column-container { - flex-direction: column; - justify-content: space-between; - } - - .eligibility-centered-title { - flex-direction: column; - align-items: center; - } - - .left-column, - .right-column { - &.text { - padding-top: 32px; - } - } - - img { - max-width: 100%; - max-height: 100vh; - height: auto; - } - } - - ul { - margin-left: -22px; - } -} - -@include media-breakpoint-up(md) { - .Eligibility { - .eligibility-content { - justify-content: center; - - &:not(:last-child) { - padding-bottom: 64px; - } - - &.eligibility-column-container { - flex-direction: row; - } - - .left-column, - .right-column { - width: 46%; - - &.text { - padding-top: 0px; - } - } - } - } -} diff --git a/src/components/Registration/FAQ.jsx b/src/components/Registration/FAQ.jsx deleted file mode 100644 index ebbb91c..0000000 --- a/src/components/Registration/FAQ.jsx +++ /dev/null @@ -1,311 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import Accordion from "react-bootstrap/Accordion"; -import Card from "react-bootstrap/Card"; - -export default class FAQ extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("Section", "FAQ", this.props.className); - - return ( -
-
-
-

FAQs

-
-

- If your question is not answered below, please reach out to us at - exploretechla@cs.ucla.edu for more information! -

-

Still interested in attending?

-

- If you are still interested in attending, fill out the waivers at - the bottom of the page (under "Waivers") and email them to us at - exploretechla@cs.ucla.edu ASAP so we can get you registered! -

-
- {this._getStudentFAQ()} - {/* {this._getTeacherFAQ()} - {this._getParentFAQ()} */} -
-
- ); - } - - _getStudentFAQ() { - return ( -
-
-

Student FAQs

-
-
- - - - - I'm still interested in attending but registration is closed! - Can I still attend?{" "} - - - - - Yes you can! Just fill out all of the waivers under the - "Waivers" secrtion below and email them to us at - exploretechla@cs.ucla.edu ASAP so we can get you registered! - - - - - - - Is there a registration fee? Are there any associated costs with - the program (ie: need to pay for an account on the virtual - platform?){" "} - - - - - This event is completely free for all attendees! All you will - need is a computer and stable internet to access the event. - - - - - - What prior background is needed? - - - - No experience needed! This event is meant to help you explore - the different fields of CS and tech! - - - - {/* - - What if I can only make part of the event (only one day, missing a few hours, etc)? - - - Let us know in the registration form! - - */} - - - How would virtual format work? (boxes, platform, etc) - - - - The event will be hosted completely online. exploretech.boxes - will be sent to each attendee (while supplies last) as well as - instructions on how to access the virtual platform prior to the - event. Attendees will receive more information once registration - is closed. - - - - - - What is an exploretech.box? - - - - An exploretech.box is a box that will hold all of the - supplemental workshop materials and swag for the event. We will - ship these to our attendees prior to the event. Supplies will be - limited, but not having a box will not prevent you from - attending our event. - - - - {/* - - What happens if I don’t get my box in time? - - - - We plan to ship the boxes well ahead of time so you should have them by event day. - In the case your box does not arrive on time, you will still be able to participate in the event. - - - */} - - - What is the College Buddy Chat? - - - - Each day you will have the opportunity to talk with one to two - UCLA undergraduates about their life at UCLA and in STEM. Feel - free to ask them any questions you may have about going from - high school to college and pursuing a STEM degree! - - - - {/* - - If I'm not an LA County resident, can I still participate? - - - - If you do not reside in LA County and would like to attend the event, you can fill out the registration - form and we will place you on a waitlist. Depending on availability, we may open up the event to non-LA - County residents. However, you would not be eligible to receive an exploretech.box, as we can only ship within LA County. - - - */} - {/* - - When is the deadline to register for the event? - - - - Please see the Registration Deadlines section for more information about deadlines. - - - */} - {/* - - Who can participate/register for the event? - - - - Please see the Eligibility section for more information about who can participate in this event. - - - */} - {/* - - I am homeschooled, can I still attend the event? - - - - Yes you can! Just denote on the registration form that you are homeschooled where it asks for your school name. - - - */} - -
- ); - } - - _getTeacherFAQ() { - return ( -
-
-

Teacher/Educator FAQs

-
-
- - - - This sounds great! How do I sign up my students? - - - - Have each of your students fill out the registration form - separately so that they can attend the event! - - - - - - Can I attend with my student(s)? - - - - Yes you can! Just fill out the registration form for - Educators/Teachers. - - - - - - Can I attend this event even without any of my students? - - - - Of course! We want to offer this event to teachers so you can - bring back some of the activities to teach to your own students. - - - - - - Will I receive supplies for the event? - - - - Unfortunately we can only provide supplies for the students who - attend our event. - - - - -
- ); - } - - _getParentFAQ() { - return ( -
-
-

Parent FAQs

-
-
- - - - Can I attend with my child/children? - - - - Parents will not be able to attend this event with their - children. This is meant to be an experience for the student - only. Teachers are allowed at this event so they can get ideas - for activities for their students. - - - - - - How will my child receive the supplies for the event? - - - - We will be mailing boxes containing any necessary supplies to - each attendee in the days leading up to our event. We have a - limited number of boxes, so please have your child register as - soon as possible. - - - - - - My child is homeschooled. Can they still attend the event? - - - - Of course! Just please make sure you follow all instructions - pertaining to homeschooled students in the registration form. - - - - -
- ); - } -} diff --git a/src/components/Registration/FAQ.scss b/src/components/Registration/FAQ.scss deleted file mode 100644 index 4ebe331..0000000 --- a/src/components/Registration/FAQ.scss +++ /dev/null @@ -1,63 +0,0 @@ -.FAQ { - background-color: white; - - .faq-content { - display: flex; - flex-direction: column; - justify-content: space-between; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - .faq-column-container { - flex-direction: row; - justify-content: space-between; - } - - .faq-centered-title { - flex-direction: column; - align-items: center; - } - - .left-column, - .right-column { - &.text { - padding-top: 32px; - } - } - } - - .faq-student, - .faq-teacher, - .faq-parent { - padding-bottom: 32px; - } -} - -@include media-breakpoint-up(md) { - .FAQ { - .faq-content { - justify-content: center; - - &:not(:last-child) { - padding-bottom: 64px; - } - - &.faq-column-container { - flex-direction: row; - } - - .left-column, - .right-column { - width: 46%; - - &.text { - padding-top: 0px; - } - } - } - } -} diff --git a/src/components/Registration/ImportantLinks.jsx b/src/components/Registration/ImportantLinks.jsx deleted file mode 100644 index 4c0c33f..0000000 --- a/src/components/Registration/ImportantLinks.jsx +++ /dev/null @@ -1,104 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import Button from "react-bootstrap/Button"; - -export default class ImportantLinks extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("ImportantLinks", this.props.className); - - return ( -
-
-

Important Links

-
-

Below are some of the important links you need for the event!

-
-
- -
-
-
- -
-
- -
-
- -
-
-
-

Event Support

-
-

- If you are experiencing any technical difficulties or have any - questions about the event, please first refer to the FAQs below.{" "} -

-

- {" "} - If your question is not answered below, please reach out to us at - exploretechla@cs.ucla.edu for assistance!{" "} -

-
-

Live Event Day Support

-

- For the duration of our event, attendees will be able to join a Zoom - meeting (link below) to ask any questions live to an exploretech.la - 2021 Staff Member. -

-
- -
-
-

- Zoom Meeting Hours: Saturday and Sunday, 9:30AM to 1:30PM -

-
-
- ); - } -} diff --git a/src/components/Registration/ImportantLinks.scss b/src/components/Registration/ImportantLinks.scss deleted file mode 100644 index d8f87c2..0000000 --- a/src/components/Registration/ImportantLinks.scss +++ /dev/null @@ -1,47 +0,0 @@ -.ImportantLinks { - background-color: #f5f5f5; - display: flex; - flex-direction: column; - align-items: center; - margin: auto; - padding-bottom: 32px; - - .links-title { - display: flex; - flex-direction: column; - align-items: center; - } - - .links-text { - display: flex; - flex-direction: column; - align-items: center; - padding-top: 30px; - } - - .buttons { - padding-top: 20px; - display: flex; - flex-direction: column; - align-items: center; - padding-bottom: 20px; - - .button { - padding-top: 10px; - padding-bottom: 10px; - } - } -} - -@include media-breakpoint-up(md) { - .ImportantLinks { - .buttons { - flex-direction: row; - - .button { - padding-left: 10px; - padding-right: 10px; - } - } - } -} diff --git a/src/components/Registration/Register.jsx b/src/components/Registration/Register.jsx deleted file mode 100644 index 88ba5a8..0000000 --- a/src/components/Registration/Register.jsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from "react"; - -import RegistrationAlert from "./RegistrationAlert"; -// import RegistrationTop from './RegistrationTop'; -// import Eligibility from './Eligibility'; -import Waivers from "./Waivers"; -import ImportantLinks from "./ImportantLinks"; -import FAQ from "./FAQ"; -import Footer from "../Footer"; -import Schedule from "./Schedule"; - -import images from "constants/optimizedImages"; - -function Register() { - return ( -
-
- {/* - The banner is the first thing on the page, so it stays eager and - keeps its intrinsic dimensions to reserve the space it needs. - */} - banner -
- -
-

Event Information

-
- {/* */} - - {/* */} - - - -
-
- ); -} - -Register.displayName = "Register"; -export default Register; diff --git a/src/components/Registration/Register.scss b/src/components/Registration/Register.scss deleted file mode 100644 index 4e93959..0000000 --- a/src/components/Registration/Register.scss +++ /dev/null @@ -1,26 +0,0 @@ -// Register Component Styles -@import "components/Registration/RegistrationAlert.scss"; -@import "components/Registration/RegistrationTop.scss"; -@import "components/Registration/Eligibility.scss"; -@import "components/Registration/Waivers.scss"; -@import "components/Registration/ImportantLinks.scss"; -@import "components/Registration/FAQ.scss"; -@import "components/Footer.scss"; -@import "components/Registration/Schedule.scss"; - -.Register { - .registration-title { - display: flex; - flex-direction: column; - align-items: center; - max-width: $section-width; - margin: auto; - padding-top: 32px; - padding-bottom: 32px; - } - - .banner { - width: 100vw; - height: auto; - } -} diff --git a/src/components/Registration/RegistrationAlert.jsx b/src/components/Registration/RegistrationAlert.jsx deleted file mode 100644 index c739bdd..0000000 --- a/src/components/Registration/RegistrationAlert.jsx +++ /dev/null @@ -1,61 +0,0 @@ -import React, { Component } from "react"; -import { Link } from "react-router-dom"; -// import ReactGA from 'react-ga'; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import Button from "react-bootstrap/Button"; -import GA from "util/GoogleAnalytics"; - -export default class RegistrationAlert extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("RegistrationAlert", this.props.className); - - return ( -
-

- Missed our event? Want to rewatch workshops and panels? -

-
-
- Checkout our past workshops and resources from previous - exploretech.la main events on our Resources Page. -
-
-
-
- -
-
-
- ); - } - - _trackResourcesClick() { - GA.trackEvent({ - category: "RegistrationAlert", - action: "Click", - label: "Resources", - }); - } -} diff --git a/src/components/Registration/RegistrationAlert.scss b/src/components/Registration/RegistrationAlert.scss deleted file mode 100644 index 4036523..0000000 --- a/src/components/Registration/RegistrationAlert.scss +++ /dev/null @@ -1,47 +0,0 @@ -.RegistrationAlert { - background-color: $color-muted-blue; - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - - margin: auto; - padding-top: 32px; - padding-bottom: 32px; - - h3, - h5 { - color: white; - padding-right: 10px; - padding-left: 10px; - } - - .buttons { - padding-top: 10px; - display: flex; - flex-direction: column; - align-items: center; - - .button { - padding-top: 10px; - padding-bottom: 10px; - } - } - - .notes { - padding-top: 10px; - } -} - -@include media-breakpoint-up(md) { - .RegistrationAlert { - .buttons { - flex-direction: row; - - .button { - padding-left: 10px; - padding-right: 10px; - } - } - } -} diff --git a/src/components/Registration/RegistrationTop.jsx b/src/components/Registration/RegistrationTop.jsx deleted file mode 100644 index 4880b72..0000000 --- a/src/components/Registration/RegistrationTop.jsx +++ /dev/null @@ -1,127 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import Badge from "react-bootstrap/Badge"; - -export default class RegistrationTop extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames( - "Section", - "RegistrationTop", - this.props.className - ); - - return ( -
-
-
-
-
-

About the Event

-
-
-
-

- exploretech.la is an annual event hosted by UCLA students that - aims to inspire high school students from underserved - communities in the Greater Los Angeles Area to explore - computer science, engineering, and technology. -

-

- With the ongoing pandemic, our team has decided to move - exploretech.la 2021 to a virtual format for the safety of our - attendees, partners, and staff members. -

-
    -
  • - Event Dates: April 10-11, 2021 -
  • -
  • - Time: 10:00AM - 1:30PM PDT -
  • -
  • - Location: Held virtually -
  • -
-

- Our event will include: -

    -
  • Interactive workshops
  • -
  • Panels with industry guests and college students
  • -
  • - Opportunity to chat with current UCLA undergraduates -
  • -
  • - An exploretech.box for all students (while supplies last) -
  • -
-

-
-
-
-
-

Registration Deadlines

-
-
-
-
-

- Early Registration -{" "} - Closed -

-
-

- Deadline: January 24, 2021 at 11:59PM PST -

-

- - *As long as space permits and all eligibility requirements - are met, you will be accepted and guaranteed a box. - -

-
-

- General Registration -{" "} - Closed -

-
-

- Deadline: February 28, 2021 at 11:59PM PST -

-

- NOTE: Keep an eye out for a confirmation email from us - by early March if you are a general registration applicant! -

-
-

- Late Registration -{" "} - By Email Only -

-
-

- - *If you are still interested in attending our event, please - email us at exploretechla@cs.ucla.edu - -

-
-
-
-
-
- ); - } -} diff --git a/src/components/Registration/RegistrationTop.scss b/src/components/Registration/RegistrationTop.scss deleted file mode 100644 index 25b83f7..0000000 --- a/src/components/Registration/RegistrationTop.scss +++ /dev/null @@ -1,71 +0,0 @@ -.RegistrationTop { - .registration-content { - display: flex; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - &.registration-event-info { - flex-direction: column; - align-items: flex-start; - justify-content: space-between; - } - - .registration-title { - padding-bottom: 32px; - } - - .registration-centered-title { - flex-direction: column; - align-items: center; - } - - .left-column, - .right-column { - &.text { - padding-top: 32px; - } - } - - ul { - &.no-style { - list-style-type: none; - margin-left: -40px; - } - - &.no-margin { - margin-left: -24px; - } - } - } -} - -@include media-breakpoint-up(md) { - .RegistrationTop { - .registration-content { - justify-content: center; - - &:not(:last-child) { - padding-bottom: 64px; - } - - &.registration-event-info { - flex-direction: row; - } - - .left-column, - .right-column { - width: 46%; - - &.text { - padding-top: 0px; - } - } - } - } -} diff --git a/src/components/Registration/Schedule.jsx b/src/components/Registration/Schedule.jsx deleted file mode 100644 index b20b1b6..0000000 --- a/src/components/Registration/Schedule.jsx +++ /dev/null @@ -1,92 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -// import { SCHEDULE } from 'constants/schedule'; - -export default class Schedule extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("Section", "Schedule", this.props.className); - - return ( -
-
-
-

Schedule

-
-
-
-
-
-

Day 1 (Saturday, April 10th)

-
-
-
-

-

- 9:30 AM: Virtual Platform Opens -

-

- 10:00 AM: Opening Ceremony -

-

- 10:30 AM: Session 1 -

-

- 11:40 AM: College Buddy Chat -

-

- 12:20 PM: Session 2 -

-

- 1:20 PM: Closing Briefing -

-

-
-
-
-
-

Day 2 (Sunday, April 11th)

-
-
-
-

-

- 9:30 AM: Virtual Platform Opens -

-

- 10:00 AM: Opening Briefing -

-

- 10:10 AM: Session 3 -

-

- 11:20 AM: College Buddy Chat -

-

- 12:00 PM: Session 4 -

-

- 1:00 PM: Closing Ceremony -

-

-
-
-
-
-
- ); - } -} diff --git a/src/components/Registration/Schedule.scss b/src/components/Registration/Schedule.scss deleted file mode 100644 index 52d7763..0000000 --- a/src/components/Registration/Schedule.scss +++ /dev/null @@ -1,56 +0,0 @@ -.Schedule { - background-color: white; - - .schedule-content { - display: flex; - flex-direction: column; - justify-content: space-between; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - &.schedule-column-container { - flex-direction: column; - } - - .schedule-title { - align-items: center; - text-align: center; - } - - .left-column, - .right-column { - &.text { - padding-top: 32px; - } - } - } -} - -@include media-breakpoint-up(md) { - .Schedule { - .schedule-content { - justify-content: space-between; - - &:not(:last-child) { - padding-bottom: 64px; - } - - &.schedule-column-container { - flex-direction: row; - } - - .left-column, - .right-column { - width: 46%; - - &.text { - padding-top: 0px; - } - } - } - } -} diff --git a/src/components/Registration/Waivers.jsx b/src/components/Registration/Waivers.jsx deleted file mode 100644 index 2e69e8c..0000000 --- a/src/components/Registration/Waivers.jsx +++ /dev/null @@ -1,85 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import Button from "react-bootstrap/Button"; - -import LiabilityWaiver from 'static/pdf/exploretech_la_2022_Liability_Waiver.pdf'; -import MultimediaRelease from 'static/pdf/exploretech_la_2022_Multimedia_Release_Form.pdf'; -import StudentVerification from 'static/pdf/exploretech_la_2022_Student_Verification_Form.pdf'; - -export default class Waivers extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("Waivers", this.props.className); - - return ( -
-
-

Waivers

-
-

- Please download and sign the following waivers. They are a required - part of your registration. -

-

- - Note: For high school students, the waivers require a - parent/guardian signature. - -

-
-
-
- -
-
- -
-
- -
-
-
-

- - All forms can also be found here, in both PDF and Google Docs - formats (for easier editing): - -

-

- To edit the Google Docs, please make a copy of the waiver into your - own Drive and fill it out there. Simply save as PDF to upload to the - registration form. -

-
- -
-
-
- ); - } -} diff --git a/src/components/Registration/Waivers.scss b/src/components/Registration/Waivers.scss deleted file mode 100644 index 5933684..0000000 --- a/src/components/Registration/Waivers.scss +++ /dev/null @@ -1,41 +0,0 @@ -.Waivers { - background-color: #f5f5f5; - display: flex; - flex-direction: column; - align-items: center; - margin: auto; - padding-bottom: 32px; - - .waivers-title, - .waivers-text { - display: flex; - flex-direction: column; - align-items: center; - } - - .buttons { - padding-top: 20px; - display: flex; - flex-direction: column; - align-items: center; - padding-bottom: 20px; - - .button { - padding-top: 10px; - padding-bottom: 10px; - } - } -} - -@include media-breakpoint-up(md) { - .Waivers { - .buttons { - flex-direction: row; - - .button { - padding-left: 10px; - padding-right: 10px; - } - } - } -} diff --git a/src/components/Resources/Ceremonies.jsx b/src/components/Resources/Ceremonies.jsx deleted file mode 100644 index 2adeb5a..0000000 --- a/src/components/Resources/Ceremonies.jsx +++ /dev/null @@ -1,48 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import YoutubeEmbed from "components/common/YoutubeEmbed"; - -export default class Ceremonies extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames( - "Section", - "Ceremonies", - this.props.className - ); - - return ( -
-
-
-

Ceremonies

-
-
-
-
-

Opening Ceremony

- -
-
-

Closing Ceremony

- -
-
-
-
- ); - } -} diff --git a/src/components/Resources/Ceremonies.scss b/src/components/Resources/Ceremonies.scss deleted file mode 100644 index 7102ea4..0000000 --- a/src/components/Resources/Ceremonies.scss +++ /dev/null @@ -1,58 +0,0 @@ -@import "components/common/YoutubeEmbed.scss"; - -.Ceremonies { - .ceremonies-content { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - .ceremonies-videos { - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-between; - width: $section-width; - } - - .ceremonies-title { - display: flex; - padding-bottom: 32px; - flex-direction: column; - align-items: center; - } - - .left-column, - .right-column { - flex-direction: column; - } - } -} - -@include media-breakpoint-up(md) { - .Ceremonies { - .ceremonies-content { - justify-content: center; - - &:not(:last-child) { - padding-bottom: 64px; - } - - .ceremonies-videos { - flex-direction: row; - } - - .left-column, - .right-column { - flex-direction: column; - width: 46%; - } - } - } -} diff --git a/src/components/Resources/FAQ.jsx b/src/components/Resources/FAQ.jsx deleted file mode 100644 index ec3f003..0000000 --- a/src/components/Resources/FAQ.jsx +++ /dev/null @@ -1,73 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; - -import Accordion from 'react-bootstrap/Accordion'; -import Card from 'react-bootstrap/Card'; - -import { FAQS } from 'constants/faq'; - -export default class FAQ extends Component { - - static get propTypes() { - return { - className: PropTypes.string, - } - } - - static get defaultProps() { - return { - className: '', - }; - } - - render() { - const classNames = classnames('Section', 'FAQ', this.props.className); - - return ( -
-
- ); - } - - _getStudentFAQ() { - return ( -
-
-

Student FAQs

-
-
- - {FAQS.map(faq => { - return ( - -
{faq.question}
-
- - -
{faq.answer}
- {faq.note && ( -

Note: {faq.note}

- )} -
-
-
- ) - })} -
-
- ); - } -} diff --git a/src/components/Resources/FAQ.scss b/src/components/Resources/FAQ.scss deleted file mode 100644 index dc177e3..0000000 --- a/src/components/Resources/FAQ.scss +++ /dev/null @@ -1,59 +0,0 @@ -.FAQ { - background-color: white; - - .faq-content { - display: flex; - flex-direction: column; - justify-content: space-between; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - .faq-column-container { - flex-direction: row; - justify-content: space-between; - } - - .faq-centered-title { - flex-direction: column; - align-items: center; - } - - .left-column, .right-column { - &.text { - padding-top: 32px; - } - } - } - - .faq-student, .faq-teacher, .faq-parent { - padding-bottom: 32px; - } -} - -@include media-breakpoint-up(md) { - .FAQ { - .faq-content { - justify-content: center; - - &:not(:last-child) { - padding-bottom: 64px; - } - - &.faq-column-container { - flex-direction: row; - } - - .left-column, .right-column { - width: 46%; - - &.text { - padding-top: 0px; - } - } - } - } -} \ No newline at end of file diff --git a/src/components/Resources/Maps.jsx b/src/components/Resources/Maps.jsx deleted file mode 100644 index 7dfd447..0000000 --- a/src/components/Resources/Maps.jsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from 'react'; -import classnames from 'classnames'; -import Button from 'react-bootstrap/Button'; - -export const Maps = (props) => { - const classNames = classnames('Section', 'Maps', props.className); - const { maps } = props - - return ( -
-
-
-

Maps

-
-
-
- Below are links to view all the maps you may need throughout the day! -
-
- {maps.map(map => { - return - // return
- // {map.src} - //
- })} -
-
-
- ); -} - -export default Maps; \ No newline at end of file diff --git a/src/components/Resources/Maps.scss b/src/components/Resources/Maps.scss deleted file mode 100644 index 15edc14..0000000 --- a/src/components/Resources/Maps.scss +++ /dev/null @@ -1,41 +0,0 @@ -.Maps { - background-color: #f5f5f5; - - .maps-content { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - .maps-title { - display: flex; - padding-bottom: 32px; - flex-direction: column; - align-items: center; - } - - .buttons { - padding-top: 20px; - display: grid; - row-gap: 10px; - grid-template-columns: auto; - padding-bottom: 20px; - width: 60vw; - } - } -} - -@include media-breakpoint-up(md) { - .Maps { - .buttons { - flex-direction: row; - - .button { - padding-left: 10px; - padding-right: 10px; - } - } - } -} diff --git a/src/components/Resources/Resources.jsx b/src/components/Resources/Resources.jsx deleted file mode 100644 index e0bc4a2..0000000 --- a/src/components/Resources/Resources.jsx +++ /dev/null @@ -1,88 +0,0 @@ -import React from 'react'; -import Button from 'react-bootstrap/Button'; - -import Workshops from './Workshops'; -import FAQ from 'components/Resources/FAQ'; -import Footer from '../Footer'; -import Maps from 'components/Resources/Maps'; -import Schedule from 'components/Resources/Schedule'; -import Waivers from 'components/Resources/Waivers'; - -import busRoutes from "static/maps/bus_routes.jpg" -import ackerman_union_2F from "static/maps/su_map_ack_2.jpeg" -import ackerman_union_3F from "static/maps/su_map_ack_3.jpeg" -import wristbands from "static/maps/wristband_coordination.png" -import EventProgram from "static/pdf/Event_Program.pdf" - -function Resources() { - const maps = [ - { - src: busRoutes, - name: "Bus Routes", - }, { - src: ackerman_union_2F, - name: "Ackerman Union 2F", - }, { - src: ackerman_union_3F, - name: "Ackerman Union 3F", - }, - ] - - return ( -
-
-

Resources

-
- -
- -
- - -
-

Wristbands

-
-
Make sure you have your wristband on the entire time!
-
-
- All high school students are divided into 3 groups, each will get a different colored wristband. - During each session, 1 group will be at the exhibition hall and the other 2 groups will be at the workshops. - Group 1 (green colored-wristband) will be at the exhibition hall during Session 1, - Group 2 (blue) during Session 2, and Group 3 (red) during Session 3. -
-
- Wristband coordination -
- - - -
-

Wristbands

-
-
-
Thanks for coming to our event! Got feedback? Let us know by filling out this form below!
-
-
-
- -
-
-
-
- ); -} - -Resources.displayName = "Resources"; -export default Resources; diff --git a/src/components/Resources/Resources.scss b/src/components/Resources/Resources.scss deleted file mode 100644 index 7de47fc..0000000 --- a/src/components/Resources/Resources.scss +++ /dev/null @@ -1,39 +0,0 @@ -// Resources Component Styles -@import "components/Footer.scss"; -@import "components/Resources/Ceremonies.scss"; -@import "components/Resources/Workshops.scss"; -@import "components/Resources/Maps.scss"; - -.Resources { - .resources-title { - display: flex; - flex-direction: column; - align-items: center; - max-width: $section-width; - margin: auto; - padding-top: 32px; - padding-bottom: 32px; - } - - .resources-text { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - padding-top: 30px; - } - - .banner { - width: 100vw; - height: auto; - } - - .full-length-button { - padding-top: 20px; - display: grid; - row-gap: 10px; - grid-template-columns: auto; - padding-bottom: 20px; - width: 100%; - } -} diff --git a/src/components/Resources/Schedule.jsx b/src/components/Resources/Schedule.jsx deleted file mode 100644 index c3f1a88..0000000 --- a/src/components/Resources/Schedule.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; - -import { SCHEDULE } from 'constants/schedule'; - -export default class Schedule extends Component { - - static get propTypes() { - return { - className: PropTypes.string, - } - } - - static get defaultProps() { - return { - className: '', - }; - } - - render() { - const classNames = classnames('Section', 'Schedule', this.props.className); - - return ( -
-
-
-

Schedule

-
-
-
-

- {SCHEDULE.map(event => { - return

{event.time} {event.name}

- })} -

-
-
-
- ); - } -} \ No newline at end of file diff --git a/src/components/Resources/Schedule.scss b/src/components/Resources/Schedule.scss deleted file mode 100644 index 9aaac1e..0000000 --- a/src/components/Resources/Schedule.scss +++ /dev/null @@ -1,54 +0,0 @@ -.Schedule { - background-color: white; - - .schedule-content { - display: flex; - flex-direction: column; - justify-content: space-between; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - &.schedule-column-container { - flex-direction: column; - } - - .schedule-title { - align-items: center; - text-align: center; - } - - .left-column, .right-column { - &.text { - padding-top: 32px; - } - } - } -} - -@include media-breakpoint-up(md) { - .Schedule { - .schedule-content { - justify-content: space-between; - - &:not(:last-child) { - padding-bottom: 64px; - } - - &.schedule-column-container { - flex-direction: row; - } - - .left-column, .right-column { - width: 46%; - - &.text { - padding-top: 0px; - } - } - } - } - } \ No newline at end of file diff --git a/src/components/Resources/Waivers.jsx b/src/components/Resources/Waivers.jsx deleted file mode 100644 index 4fc5f48..0000000 --- a/src/components/Resources/Waivers.jsx +++ /dev/null @@ -1,60 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; - -import Button from 'react-bootstrap/Button'; - -import LiabilityWaiver from 'static/pdf/exploretech_la_2022_Liability_Waiver.pdf'; -import MultimediaRelease from 'static/pdf/exploretech_la_2022_Multimedia_Release_Form.pdf'; -import StudentVerification from 'static/pdf/exploretech_la_2022_Student_Verification_Form.pdf'; - -export default class Waivers extends Component { - - static get propTypes() { - return { - className: PropTypes.string, - } - } - - static get defaultProps() { - return { - className: '', - }; - } - - render() { - const classNames = classnames('Waivers', this.props.className); - - return ( -
-
-

Waivers

-
-

- Please download and sign the following waivers. They are a required part of your registration. -

-

- Note: For high school students, the waivers require a parent/guardian signature. -

-
-
-
- -
-
- -
-
- -
-
-
- ); - } -} diff --git a/src/components/Resources/Waivers.scss b/src/components/Resources/Waivers.scss deleted file mode 100644 index 855912e..0000000 --- a/src/components/Resources/Waivers.scss +++ /dev/null @@ -1,41 +0,0 @@ -.Waivers { - background-color: #F5F5F5; - display: flex; - flex-direction: column; - align-items: center; - margin: auto; - padding-bottom: 32px; - - .waivers-title, .waivers-text { - display: flex; - flex-direction: column; - align-items: center; - } - - .buttons { - padding-top: 20px; - display: flex; - flex-direction: column; - align-items: center; - padding-bottom: 20px; - - .button { - padding-top: 10px; - padding-bottom: 10px; - } - } - -} - -@include media-breakpoint-up(md) { - .Waivers { - .buttons { - flex-direction: row; - - .button { - padding-left: 10px; - padding-right: 10px; - } - } - } -} \ No newline at end of file diff --git a/src/components/Resources/Workshops copy.jsx b/src/components/Resources/Workshops copy.jsx deleted file mode 100644 index 45ca9db..0000000 --- a/src/components/Resources/Workshops copy.jsx +++ /dev/null @@ -1,242 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; - -import Card from 'react-bootstrap/Card'; -import CardDeck from 'react-bootstrap/CardDeck'; -import ListGroup from 'react-bootstrap/ListGroup'; -import ListGroupItem from 'react-bootstrap/ListGroupItem'; -import YoutubeEmbed from "components/common/YoutubeEmbed"; - -export default class Workshops extends Component { - - static get propTypes() { - return { - className: PropTypes.string, - } - } - - static get defaultProps() { - return { - className: '', - }; - } - - render() { - const classNames = classnames('Section', 'Workshops', this.props.className); - - return ( -
-
-
-

Workshops

-
-
- {this._getWorkshopCards()} -
-
-
-

Panels

-
-
- {this._getPanelCards()} -
-
- ); - } - - _getWorkshopCards() { - return ( -
- - - - Coding 101 - - - (Session 1 Recording) - - - - Session 2 Recording - Student Guide - Slides - Solutions - - - - - ExploreWeb.la: Web Design & Dev - - - - Slides - Review Sheet - Codepen - - - - - - - Operating Systems - - - - Slides - Linux Emulator - - - - - Draw with Code - - - - Slides - Repl.it Project - - - - - - - Less Quantum More Computing - - - - Slides - Definitions Doc - Google Colab - - - - - Crack the Code with Cryptography - - - - Slides - Escape Room Google Form - Escape Room Questions and Solutions - - - - - - - Escaping Reality with Game Development - - - - Slides - Codepen Activity - - - - - Murder Mystery! - - - - Slides - Worksheet - - - - - - - AI Adventures - - - - Slides - Worksheet - - - - - Digital Design - - - - Slides - Miro Whiteboard - - - - - - - Data Science - - - - Slides - Spreadsheet - - - - - Tech & Society - - - - Slides - - - - - - - Bot Buddy - Hosted by DIY Girls - - - (Session 1 Recording) - - - - Session 2 Recording - Skin Templates - Youtube Tutorial - Slides - Follow Up Instructions - - - -
- ); - } - - _getPanelCards() { - return ( -
- - - - Diverse Careers in Computer Science - - - - Slides - Padlet - Panelist Info and Resources - - - - - Representation in Computer Science - - - - Slides - Padlet - - - -
- ); - } -} diff --git a/src/components/Resources/Workshops copy.scss b/src/components/Resources/Workshops copy.scss deleted file mode 100644 index a0b3782..0000000 --- a/src/components/Resources/Workshops copy.scss +++ /dev/null @@ -1,32 +0,0 @@ -@import 'components/common/YoutubeEmbed.scss'; - -.Workshops { - .workshops-content { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - .workshops-cards { - display: flex; - flex-direction: column; - width: 75vw; - padding-bottom: 50px; - } - - .workshops-title { - display: flex; - padding-bottom: 32px; - flex-direction: column; - align-items: center; - } - - .card-row { - padding-top: 15px; - padding-bottom: 15px; - } - - } -} \ No newline at end of file diff --git a/src/components/Resources/Workshops.jsx b/src/components/Resources/Workshops.jsx deleted file mode 100644 index 04e792e..0000000 --- a/src/components/Resources/Workshops.jsx +++ /dev/null @@ -1,421 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import Card from "react-bootstrap/Card"; -import CardDeck from "react-bootstrap/CardDeck"; -import ListGroup from "react-bootstrap/ListGroup"; -import ListGroupItem from "react-bootstrap/ListGroupItem"; -import YoutubeEmbed from "components/common/YoutubeEmbed"; - -export default class Workshops extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("Section", "Workshops", this.props.className); - - return ( -
-
-
-

Workshops

-
-
- {this._getWorkshopCards()} -
-
-
-

Panels

-
-
- {this._getPanelCards()} -
-
- ); - } - - _getWorkshopCards() { - return ( -
- - - - - Coding 101 - - - (Session 1 Recording) - - - - - Session 2 Recording - - - - - Student Guide - - - - - Slides - - - - - Solutions - - - - - - - - ExploreWeb.la: Web Design & Dev - - - - - - - Slides - - - - - Review Sheet - - - - - Codepen - - - - - - - - - - Operating Systems - - - - - - - Slides - - - - - Linux Emulator - - - - - - - - Draw with Code - - - - - - - Slides - - - - - Repl.it Project - - - - - - - - - - Less Quantum More Computing - - - - - - - Slides - - - - - Definitions Doc - - - - - Google Colab - - - - - - - - Crack the Code with Cryptography - - - - - - - Slides - - - - - Escape Room Google Form - - - - - Escape Room Questions and Solutions - - - - - - - - - - Escaping Reality with Game Development - - - - - - - Slides - - - - - Codepen Activity - - - - - - - - Murder Mystery! - - - - - - - Slides - - - - - Worksheet - - - - - - - - - - AI Adventures - - - - - - - Slides - - - - - Worksheet - - - - - - - - Digital Design - - - - - - - Slides - - - - - Miro Whiteboard - - - - - - - - - - Data Science - - - - - - - Slides - - - - - Spreadsheet - - - - - - - - Tech & Society - - - - - - - Slides - - - - - - - - - - Bot Buddy - - - Hosted by DIY Girls - - - (Session 1 Recording) - - - - - Session 2 Recording - - - - - Skin Templates - - - - - Youtube Tutorial - - - - - Slides - - - - - Follow Up Instructions - - - - - -
- ); - } - - _getPanelCards() { - return ( -
- - - - - Diverse Careers in Computer Science - - - - - - - Slides - - - - - Padlet - - - - - Panelist Info and Resources - - - - - - - - Representation in Computer Science - - - - - - - Slides - - - - - Padlet - - - - - -
- ); - } -} diff --git a/src/components/Resources/Workshops.scss b/src/components/Resources/Workshops.scss deleted file mode 100644 index 225667e..0000000 --- a/src/components/Resources/Workshops.scss +++ /dev/null @@ -1,43 +0,0 @@ -@import "components/common/YoutubeEmbed.scss"; - -.Workshops { - .workshops-content { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - .workshops-cards { - display: flex; - flex-direction: column; - width: 75vw; - padding-bottom: 50px; - } - - .workshops-title { - display: flex; - padding-bottom: 32px; - flex-direction: column; - align-items: center; - } - - .card-row { - padding-top: 15px; - padding-bottom: 15px; - } - - .panelists-container { - max-width: $section-width; - margin: auto; - - .panelists-header { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1rem; - } - } - } -} diff --git a/src/components/Resources/exploretech2021.jsx b/src/components/Resources/exploretech2021.jsx deleted file mode 100644 index 429ccf1..0000000 --- a/src/components/Resources/exploretech2021.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react'; - -import Ceremonies from './Ceremonies'; -import Workshops from './Workshops'; -import Footer from '../Footer'; - -function Resources() { - return ( -
-
-

Resources

-
-
-
- Welcome students! This webpage contains the recordings and resources of all of our - workshops and panels for the exploretech.la 2021 event! For each workshop or panel, - please watch the recording first and check back on this page to access the appropriate - resources for the activity. -
-
- - -
-
-
- ); -} - -Resources.displayName = 'Resources'; -export default Resources; \ No newline at end of file diff --git a/src/components/Resources/exploretech2021.scss b/src/components/Resources/exploretech2021.scss deleted file mode 100644 index 907b4e6..0000000 --- a/src/components/Resources/exploretech2021.scss +++ /dev/null @@ -1,29 +0,0 @@ -// Resources Component Styles -@import 'components/Footer.scss'; -@import 'components/Resources/Ceremonies.scss'; -@import 'components/Resources/Workshops.scss'; - -.Resources { - .resources-title { - display: flex; - flex-direction: column; - align-items: center; - max-width: $section-width; - margin: auto; - padding-top: 32px; - padding-bottom: 32px; - } - - .resources-text { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - padding-top: 30px; - } - - .banner { - width: 100vw; - height: auto; - } -} \ No newline at end of file diff --git a/src/components/Resources2023/Ceremonies.jsx b/src/components/Resources2023/Ceremonies.jsx deleted file mode 100644 index 2adeb5a..0000000 --- a/src/components/Resources2023/Ceremonies.jsx +++ /dev/null @@ -1,48 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import YoutubeEmbed from "components/common/YoutubeEmbed"; - -export default class Ceremonies extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames( - "Section", - "Ceremonies", - this.props.className - ); - - return ( -
-
-
-

Ceremonies

-
-
-
-
-

Opening Ceremony

- -
-
-

Closing Ceremony

- -
-
-
-
- ); - } -} diff --git a/src/components/Resources2023/Ceremonies.scss b/src/components/Resources2023/Ceremonies.scss deleted file mode 100644 index 7102ea4..0000000 --- a/src/components/Resources2023/Ceremonies.scss +++ /dev/null @@ -1,58 +0,0 @@ -@import "components/common/YoutubeEmbed.scss"; - -.Ceremonies { - .ceremonies-content { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - .ceremonies-videos { - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-between; - width: $section-width; - } - - .ceremonies-title { - display: flex; - padding-bottom: 32px; - flex-direction: column; - align-items: center; - } - - .left-column, - .right-column { - flex-direction: column; - } - } -} - -@include media-breakpoint-up(md) { - .Ceremonies { - .ceremonies-content { - justify-content: center; - - &:not(:last-child) { - padding-bottom: 64px; - } - - .ceremonies-videos { - flex-direction: row; - } - - .left-column, - .right-column { - flex-direction: column; - width: 46%; - } - } - } -} diff --git a/src/components/Resources2023/FAQ.jsx b/src/components/Resources2023/FAQ.jsx deleted file mode 100644 index ec3f003..0000000 --- a/src/components/Resources2023/FAQ.jsx +++ /dev/null @@ -1,73 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; - -import Accordion from 'react-bootstrap/Accordion'; -import Card from 'react-bootstrap/Card'; - -import { FAQS } from 'constants/faq'; - -export default class FAQ extends Component { - - static get propTypes() { - return { - className: PropTypes.string, - } - } - - static get defaultProps() { - return { - className: '', - }; - } - - render() { - const classNames = classnames('Section', 'FAQ', this.props.className); - - return ( -
-
-
-

FAQs

-
-

- If your question is not answered below, please reach out to us - at exploretechla@cs.ucla.edu for - more information! -

-
- {this._getStudentFAQ()} -
-
- ); - } - - _getStudentFAQ() { - return ( -
-
-

Student FAQs

-
-
- - {FAQS.map(faq => { - return ( - -
{faq.question}
-
- - -
{faq.answer}
- {faq.note && ( -

Note: {faq.note}

- )} -
-
-
- ) - })} -
-
- ); - } -} diff --git a/src/components/Resources2023/FAQ.scss b/src/components/Resources2023/FAQ.scss deleted file mode 100644 index dc177e3..0000000 --- a/src/components/Resources2023/FAQ.scss +++ /dev/null @@ -1,59 +0,0 @@ -.FAQ { - background-color: white; - - .faq-content { - display: flex; - flex-direction: column; - justify-content: space-between; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - .faq-column-container { - flex-direction: row; - justify-content: space-between; - } - - .faq-centered-title { - flex-direction: column; - align-items: center; - } - - .left-column, .right-column { - &.text { - padding-top: 32px; - } - } - } - - .faq-student, .faq-teacher, .faq-parent { - padding-bottom: 32px; - } -} - -@include media-breakpoint-up(md) { - .FAQ { - .faq-content { - justify-content: center; - - &:not(:last-child) { - padding-bottom: 64px; - } - - &.faq-column-container { - flex-direction: row; - } - - .left-column, .right-column { - width: 46%; - - &.text { - padding-top: 0px; - } - } - } - } -} \ No newline at end of file diff --git a/src/components/Resources2023/Maps.jsx b/src/components/Resources2023/Maps.jsx deleted file mode 100644 index 7dfd447..0000000 --- a/src/components/Resources2023/Maps.jsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from 'react'; -import classnames from 'classnames'; -import Button from 'react-bootstrap/Button'; - -export const Maps = (props) => { - const classNames = classnames('Section', 'Maps', props.className); - const { maps } = props - - return ( -
-
-
-

Maps

-
-
-
- Below are links to view all the maps you may need throughout the day! -
-
- {maps.map(map => { - return - // return
- // {map.src} - //
- })} -
-
-
- ); -} - -export default Maps; \ No newline at end of file diff --git a/src/components/Resources2023/Maps.scss b/src/components/Resources2023/Maps.scss deleted file mode 100644 index 15edc14..0000000 --- a/src/components/Resources2023/Maps.scss +++ /dev/null @@ -1,41 +0,0 @@ -.Maps { - background-color: #f5f5f5; - - .maps-content { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - .maps-title { - display: flex; - padding-bottom: 32px; - flex-direction: column; - align-items: center; - } - - .buttons { - padding-top: 20px; - display: grid; - row-gap: 10px; - grid-template-columns: auto; - padding-bottom: 20px; - width: 60vw; - } - } -} - -@include media-breakpoint-up(md) { - .Maps { - .buttons { - flex-direction: row; - - .button { - padding-left: 10px; - padding-right: 10px; - } - } - } -} diff --git a/src/components/Resources2023/Resources.jsx b/src/components/Resources2023/Resources.jsx deleted file mode 100644 index b5bb3d5..0000000 --- a/src/components/Resources2023/Resources.jsx +++ /dev/null @@ -1,94 +0,0 @@ -import React from 'react'; -import Button from 'react-bootstrap/Button'; - -import Workshops from './Workshops'; -// import FAQ from 'components/Resources/FAQ'; -import Footer from '../Footer'; -import Maps from 'components/Resources/Maps'; -import Schedule from 'components/Resources/Schedule'; -// import Waivers from 'components/Resources/Waivers'; - -import busRoutes from "static/maps/bus_routes.jpg" -import ackerman_union_2F from "static/maps/su_map_ack_2.jpeg" -import ackerman_union_3F from "static/maps/su_map_ack_3.jpeg" -// import wristbands from "static/maps/wristband_coordination.png" -// import EventProgram from "static/pdf/Event_Program.pdf" - -function Resources() { - const maps = [ - { - src: busRoutes, - name: "Bus Routes", - }, { - src: ackerman_union_2F, - name: "Ackerman Union 2F", - }, { - src: ackerman_union_3F, - name: "Ackerman Union 3F", - }, - ] - - return ( -
-
-

Resources

-
-
-
- Welcome students and teachers! Confused about the schedule? Lost and need a map? - Or maybe just curious about what workshops are happening and when? This webpage contains - important resources you need for the exploretech.la 2023 event! If you can't find what - you need, feel free to - contact exploretechla@cs.ucla.edu for more questions. -
-
-
- {/* */} - -
- - - -
-

Wristbands

-
-
Make sure you have your wristband on the entire time!
-
-
- All high school students are divided into 3 groups, each will get a different colored wristband. - During each session, 1 group will be at the exhibition hall and the other 2 groups will be at the workshops. - Group 1 (green colored-wristband) will be at the exhibition hall during Session 1, - Group 2 (blue) during Session 2, and Group 3 (red) during Session 3. -
-
- {/* Wristband coordination */} -
- {/* */} - {/* */} -
- {/*

Wristbands

*/} -
-
-
Thanks for coming to our event! Got feedback? Let us know by filling out this form below!
-
-
-
- {/* */} - -
-
-
-
- ); -} - -Resources.displayName = "Resources"; -export default Resources; diff --git a/src/components/Resources2023/Resources.scss b/src/components/Resources2023/Resources.scss deleted file mode 100644 index 7de47fc..0000000 --- a/src/components/Resources2023/Resources.scss +++ /dev/null @@ -1,39 +0,0 @@ -// Resources Component Styles -@import "components/Footer.scss"; -@import "components/Resources/Ceremonies.scss"; -@import "components/Resources/Workshops.scss"; -@import "components/Resources/Maps.scss"; - -.Resources { - .resources-title { - display: flex; - flex-direction: column; - align-items: center; - max-width: $section-width; - margin: auto; - padding-top: 32px; - padding-bottom: 32px; - } - - .resources-text { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - padding-top: 30px; - } - - .banner { - width: 100vw; - height: auto; - } - - .full-length-button { - padding-top: 20px; - display: grid; - row-gap: 10px; - grid-template-columns: auto; - padding-bottom: 20px; - width: 100%; - } -} diff --git a/src/components/Resources2023/Schedule.jsx b/src/components/Resources2023/Schedule.jsx deleted file mode 100644 index c3f1a88..0000000 --- a/src/components/Resources2023/Schedule.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; - -import { SCHEDULE } from 'constants/schedule'; - -export default class Schedule extends Component { - - static get propTypes() { - return { - className: PropTypes.string, - } - } - - static get defaultProps() { - return { - className: '', - }; - } - - render() { - const classNames = classnames('Section', 'Schedule', this.props.className); - - return ( -
-
-
-

Schedule

-
-
-
-

- {SCHEDULE.map(event => { - return

{event.time} {event.name}

- })} -

-
-
-
- ); - } -} \ No newline at end of file diff --git a/src/components/Resources2023/Schedule.scss b/src/components/Resources2023/Schedule.scss deleted file mode 100644 index 9aaac1e..0000000 --- a/src/components/Resources2023/Schedule.scss +++ /dev/null @@ -1,54 +0,0 @@ -.Schedule { - background-color: white; - - .schedule-content { - display: flex; - flex-direction: column; - justify-content: space-between; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - &.schedule-column-container { - flex-direction: column; - } - - .schedule-title { - align-items: center; - text-align: center; - } - - .left-column, .right-column { - &.text { - padding-top: 32px; - } - } - } -} - -@include media-breakpoint-up(md) { - .Schedule { - .schedule-content { - justify-content: space-between; - - &:not(:last-child) { - padding-bottom: 64px; - } - - &.schedule-column-container { - flex-direction: row; - } - - .left-column, .right-column { - width: 46%; - - &.text { - padding-top: 0px; - } - } - } - } - } \ No newline at end of file diff --git a/src/components/Resources2023/Waivers.jsx b/src/components/Resources2023/Waivers.jsx deleted file mode 100644 index 2754dab..0000000 --- a/src/components/Resources2023/Waivers.jsx +++ /dev/null @@ -1,60 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; - -import Button from 'react-bootstrap/Button'; - -import LiabilityWaiver from 'static/pdf/exploretech_la_2022_Liability_Waiver.pdf'; -import MultimediaRelease from 'static/pdf/exploretech_la_2022_Multimedia_Release_Form.pdf'; -import StudentVerification from 'static/pdf/exploretech_la_2022_Student_Verification_Form.pdf'; - -export default class Waivers extends Component { - - static get propTypes() { - return { - className: PropTypes.string, - } - } - - static get defaultProps() { - return { - className: '', - }; - } - - // render() { - // const classNames = classnames('Waivers', this.props.className); - - // return ( - //
- //
- //

Waivers

- //
- //

- // Please download and sign the following waivers. They are a required part of your registration. - //

- //

- // Note: For high school students, the waivers require a parent/guardian signature. - //

- //
- //
- //
- // - //
- //
- // - //
- //
- // - //
- //
- //
- // ); - // } -} diff --git a/src/components/Resources2023/Waivers.scss b/src/components/Resources2023/Waivers.scss deleted file mode 100644 index 855912e..0000000 --- a/src/components/Resources2023/Waivers.scss +++ /dev/null @@ -1,41 +0,0 @@ -.Waivers { - background-color: #F5F5F5; - display: flex; - flex-direction: column; - align-items: center; - margin: auto; - padding-bottom: 32px; - - .waivers-title, .waivers-text { - display: flex; - flex-direction: column; - align-items: center; - } - - .buttons { - padding-top: 20px; - display: flex; - flex-direction: column; - align-items: center; - padding-bottom: 20px; - - .button { - padding-top: 10px; - padding-bottom: 10px; - } - } - -} - -@include media-breakpoint-up(md) { - .Waivers { - .buttons { - flex-direction: row; - - .button { - padding-left: 10px; - padding-right: 10px; - } - } - } -} \ No newline at end of file diff --git a/src/components/Resources2023/Workshops copy.jsx b/src/components/Resources2023/Workshops copy.jsx deleted file mode 100644 index 45ca9db..0000000 --- a/src/components/Resources2023/Workshops copy.jsx +++ /dev/null @@ -1,242 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; - -import Card from 'react-bootstrap/Card'; -import CardDeck from 'react-bootstrap/CardDeck'; -import ListGroup from 'react-bootstrap/ListGroup'; -import ListGroupItem from 'react-bootstrap/ListGroupItem'; -import YoutubeEmbed from "components/common/YoutubeEmbed"; - -export default class Workshops extends Component { - - static get propTypes() { - return { - className: PropTypes.string, - } - } - - static get defaultProps() { - return { - className: '', - }; - } - - render() { - const classNames = classnames('Section', 'Workshops', this.props.className); - - return ( -
-
-
-

Workshops

-
-
- {this._getWorkshopCards()} -
-
-
-

Panels

-
-
- {this._getPanelCards()} -
-
- ); - } - - _getWorkshopCards() { - return ( -
- - - - Coding 101 - - - (Session 1 Recording) - - - - Session 2 Recording - Student Guide - Slides - Solutions - - - - - ExploreWeb.la: Web Design & Dev - - - - Slides - Review Sheet - Codepen - - - - - - - Operating Systems - - - - Slides - Linux Emulator - - - - - Draw with Code - - - - Slides - Repl.it Project - - - - - - - Less Quantum More Computing - - - - Slides - Definitions Doc - Google Colab - - - - - Crack the Code with Cryptography - - - - Slides - Escape Room Google Form - Escape Room Questions and Solutions - - - - - - - Escaping Reality with Game Development - - - - Slides - Codepen Activity - - - - - Murder Mystery! - - - - Slides - Worksheet - - - - - - - AI Adventures - - - - Slides - Worksheet - - - - - Digital Design - - - - Slides - Miro Whiteboard - - - - - - - Data Science - - - - Slides - Spreadsheet - - - - - Tech & Society - - - - Slides - - - - - - - Bot Buddy - Hosted by DIY Girls - - - (Session 1 Recording) - - - - Session 2 Recording - Skin Templates - Youtube Tutorial - Slides - Follow Up Instructions - - - -
- ); - } - - _getPanelCards() { - return ( -
- - - - Diverse Careers in Computer Science - - - - Slides - Padlet - Panelist Info and Resources - - - - - Representation in Computer Science - - - - Slides - Padlet - - - -
- ); - } -} diff --git a/src/components/Resources2023/Workshops copy.scss b/src/components/Resources2023/Workshops copy.scss deleted file mode 100644 index a0b3782..0000000 --- a/src/components/Resources2023/Workshops copy.scss +++ /dev/null @@ -1,32 +0,0 @@ -@import 'components/common/YoutubeEmbed.scss'; - -.Workshops { - .workshops-content { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - .workshops-cards { - display: flex; - flex-direction: column; - width: 75vw; - padding-bottom: 50px; - } - - .workshops-title { - display: flex; - padding-bottom: 32px; - flex-direction: column; - align-items: center; - } - - .card-row { - padding-top: 15px; - padding-bottom: 15px; - } - - } -} \ No newline at end of file diff --git a/src/components/Resources2023/Workshops.jsx b/src/components/Resources2023/Workshops.jsx deleted file mode 100644 index e72587b..0000000 --- a/src/components/Resources2023/Workshops.jsx +++ /dev/null @@ -1,355 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import Card from "react-bootstrap/Card"; -import CardDeck from "react-bootstrap/CardDeck"; -import ListGroup from "react-bootstrap/ListGroup"; -import ListGroupItem from "react-bootstrap/ListGroupItem"; - -export default class Workshops extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("Section", "Workshops", this.props.className); - - return ( -
-
-
-

Workshops

-
-
- {this._getWorkshopCards()} -
-
-
-

Panels

-
-
- {this._getPanelCards()} -
-
- ); - } - - _getWorkshopCards() { - return ( -
- - - - - Fundamentals of Data Science - - Instructors: Takao Oba and Riya Bhatla - - - - Unlock the power of data and enhance your skills with our comprehensive Data Science workshop. Join us and discover the latest tools and techniques to turn data into actionable insights and drive better decision making. - - - - Slides - - - - - - - - Game Development - - Instructors: Michael Bunte and Grace Mao - - - - Ever wonder how your favorite games are created? How do artists, programmers, composers, and others work together to create an amazing final product? Come find out at the game development workshop! - - - - Slides - - - - - - - - - - Python Turtle - - Instructors: Aparna Hariharan and Isha Rajput - - - - Come learn how to code in Python using Python's fun art library called Python Turtle! By the end, you'll have created a customized digital sticker that you can design! - - - - Slides - - - - - - - - SCRATCHing the Surface of Coding - - Instructors: Michael Bunte and Jason Lozada - - - - Want to learn how to code but don’t know where to start? Come join us as we introduce you to Scratch, a visual programming language that allows you to create your own interactive animations, stories, and games. - - - - Slides - - - - - - - - - - CS Operations in Minecraft - - Instructors: Grace Mao and Kelly Zhang - - - - Logic gates, circuits, game dev...in Minecraft ?!?! Come to our workshop to learn about Minecraft's amazing redstone system and how it connects to engineering :0 - - - - Slides - - - - - - - - Are you Related to a Strawberry? - - Instructors: Wendy Su and Krisha Chokshi - - - - Are you related to a strawberry? Are you the plant parent? Learn about the intersection of biology and computer science in what we call bioinformatics. Come for a hands-on experience in extracting DNA! - - - - Slides - - - - - - - - - - Basics of Encryption - - Instructors: Ashish Basetty and Takao Oba - - - - You’ve heard of hackers, but do you know about the people who stop them? Join us as we learn about how we keep our data secure. Work together to solve codes and puzzles, and learn how we can keep passwords and personal information private. - - - - Slides - - - - - - - - Intro to Web Development - - Instructors: Emily Nham and Jazlin Ong - - - - Have you ever wondered how websites are made? Join us to learn the basics of HTML and CSS, the coding languages of the web. By the end of our session, you’ll walk out with the ability to make your own website! - - - - Slides - - - - - - - - - - Internet of Things - - Instructors: Kunal Patil and Krisha Chokshi - - - - Explore the Internet of Things, its evolution, and its relevance to today’s society! Students will learn about cybersecurity protocols and get a chance to demo and test IoT products. While brainstorming daily uses of IoT, they will discover its widespread impact on each of our lives. - - - - Slides - - - - - - - - Natural Language Proccessing - - Instructors: Ashish Basetty and Jazlin Ong - - - - Every used Siri? ChatGPT? Google Translate? Come to this workshop to learn how a computer thinking in 0’s and 1’s can learn to speak like a human. Learn more about how human language works, and how we can come up with rules to teach it to a machine. - - - - Slides - - - - - - - - - - Machines Learn How to Learn - - Instructors: Michael Song and Kelly Zhang - - - - As technology advances and we get smarter devices, we are also collecting more and more data. All of this data is meaningless without the help of machine learning. In this workshop we’ll delve into how machines use data to predict and answer questions. - - - - Slides - - - - - - - - Making Your Own Shazam - - Instructors: Riya Bhatla and Joe Lin - - - - Ever heard a song at a party that you didn’t recognize? Shazam is the solution. In this workshop, you’ll get hands-on experience to build your own song recognizer. You’ll learn about the basics of audio processing and analysis and much more! - - - - Slides - - - - - - - - - - Introduction to Autonomous Vehicles - - Instructors: Michael Song and Joe Lin - - - - Ever wondered how a Tesla or Waymo car navigates itself through a seemingly countless number of road scenarios? Join us in this workshop to learn about the fundamental building blocks of autonomous vehicle technology and even get a chance to witness object detection models in action! - - - - Slides - - - - - -
- ); - } - - _getPanelCards() { - return ( -
- - - - - Careers in Computer Science - - Moderators: Isha Rajput and Emily Nham - - - - Want to know what it's like working in tech? Meetcurrent students and graduates pursuing Computer Science at places like Google, Facebook, Atlassian, and CreditKarma! Come learn about what they do and how they ended up where they are! - - - - Slides - - - - - Panelist Info - - - - - - - - Divieristy 101 - - Moderators: Aparna Hariharan and Jason Lozada - - - - Join the conversation with our esteemed guests regarding Diversity in Computer Science and what their experiences are like as minorities in this field. - - - - Slides - - - - - Panelist Info - - - - - -
- ); - } -} diff --git a/src/components/Resources2023/Workshops.scss b/src/components/Resources2023/Workshops.scss deleted file mode 100644 index 225667e..0000000 --- a/src/components/Resources2023/Workshops.scss +++ /dev/null @@ -1,43 +0,0 @@ -@import "components/common/YoutubeEmbed.scss"; - -.Workshops { - .workshops-content { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - .workshops-cards { - display: flex; - flex-direction: column; - width: 75vw; - padding-bottom: 50px; - } - - .workshops-title { - display: flex; - padding-bottom: 32px; - flex-direction: column; - align-items: center; - } - - .card-row { - padding-top: 15px; - padding-bottom: 15px; - } - - .panelists-container { - max-width: $section-width; - margin: auto; - - .panelists-header { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1rem; - } - } - } -} diff --git a/src/components/Resources2023/exploretech2021.jsx b/src/components/Resources2023/exploretech2021.jsx deleted file mode 100644 index 429ccf1..0000000 --- a/src/components/Resources2023/exploretech2021.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react'; - -import Ceremonies from './Ceremonies'; -import Workshops from './Workshops'; -import Footer from '../Footer'; - -function Resources() { - return ( -
-
-

Resources

-
-
-
- Welcome students! This webpage contains the recordings and resources of all of our - workshops and panels for the exploretech.la 2021 event! For each workshop or panel, - please watch the recording first and check back on this page to access the appropriate - resources for the activity. -
-
- - -
-
-
- ); -} - -Resources.displayName = 'Resources'; -export default Resources; \ No newline at end of file diff --git a/src/components/Resources2023/exploretech2021.scss b/src/components/Resources2023/exploretech2021.scss deleted file mode 100644 index 907b4e6..0000000 --- a/src/components/Resources2023/exploretech2021.scss +++ /dev/null @@ -1,29 +0,0 @@ -// Resources Component Styles -@import 'components/Footer.scss'; -@import 'components/Resources/Ceremonies.scss'; -@import 'components/Resources/Workshops.scss'; - -.Resources { - .resources-title { - display: flex; - flex-direction: column; - align-items: center; - max-width: $section-width; - margin: auto; - padding-top: 32px; - padding-bottom: 32px; - } - - .resources-text { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - padding-top: 30px; - } - - .banner { - width: 100vw; - height: auto; - } -} \ No newline at end of file diff --git a/src/components/Resources2026/Ceremonies.jsx b/src/components/Resources2026/Ceremonies.jsx deleted file mode 100644 index 2adeb5a..0000000 --- a/src/components/Resources2026/Ceremonies.jsx +++ /dev/null @@ -1,48 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import YoutubeEmbed from "components/common/YoutubeEmbed"; - -export default class Ceremonies extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames( - "Section", - "Ceremonies", - this.props.className - ); - - return ( -
-
-
-

Ceremonies

-
-
-
-
-

Opening Ceremony

- -
-
-

Closing Ceremony

- -
-
-
-
- ); - } -} diff --git a/src/components/Resources2026/Ceremonies.scss b/src/components/Resources2026/Ceremonies.scss deleted file mode 100644 index 7102ea4..0000000 --- a/src/components/Resources2026/Ceremonies.scss +++ /dev/null @@ -1,58 +0,0 @@ -@import "components/common/YoutubeEmbed.scss"; - -.Ceremonies { - .ceremonies-content { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - .ceremonies-videos { - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-between; - width: $section-width; - } - - .ceremonies-title { - display: flex; - padding-bottom: 32px; - flex-direction: column; - align-items: center; - } - - .left-column, - .right-column { - flex-direction: column; - } - } -} - -@include media-breakpoint-up(md) { - .Ceremonies { - .ceremonies-content { - justify-content: center; - - &:not(:last-child) { - padding-bottom: 64px; - } - - .ceremonies-videos { - flex-direction: row; - } - - .left-column, - .right-column { - flex-direction: column; - width: 46%; - } - } - } -} diff --git a/src/components/Resources2026/FAQ.jsx b/src/components/Resources2026/FAQ.jsx deleted file mode 100644 index ec3f003..0000000 --- a/src/components/Resources2026/FAQ.jsx +++ /dev/null @@ -1,73 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; - -import Accordion from 'react-bootstrap/Accordion'; -import Card from 'react-bootstrap/Card'; - -import { FAQS } from 'constants/faq'; - -export default class FAQ extends Component { - - static get propTypes() { - return { - className: PropTypes.string, - } - } - - static get defaultProps() { - return { - className: '', - }; - } - - render() { - const classNames = classnames('Section', 'FAQ', this.props.className); - - return ( -
-
-
-

FAQs

-
-

- If your question is not answered below, please reach out to us - at exploretechla@cs.ucla.edu for - more information! -

-
- {this._getStudentFAQ()} -
-
- ); - } - - _getStudentFAQ() { - return ( -
-
-

Student FAQs

-
-
- - {FAQS.map(faq => { - return ( - -
{faq.question}
-
- - -
{faq.answer}
- {faq.note && ( -

Note: {faq.note}

- )} -
-
-
- ) - })} -
-
- ); - } -} diff --git a/src/components/Resources2026/FAQ.scss b/src/components/Resources2026/FAQ.scss deleted file mode 100644 index dc177e3..0000000 --- a/src/components/Resources2026/FAQ.scss +++ /dev/null @@ -1,59 +0,0 @@ -.FAQ { - background-color: white; - - .faq-content { - display: flex; - flex-direction: column; - justify-content: space-between; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - .faq-column-container { - flex-direction: row; - justify-content: space-between; - } - - .faq-centered-title { - flex-direction: column; - align-items: center; - } - - .left-column, .right-column { - &.text { - padding-top: 32px; - } - } - } - - .faq-student, .faq-teacher, .faq-parent { - padding-bottom: 32px; - } -} - -@include media-breakpoint-up(md) { - .FAQ { - .faq-content { - justify-content: center; - - &:not(:last-child) { - padding-bottom: 64px; - } - - &.faq-column-container { - flex-direction: row; - } - - .left-column, .right-column { - width: 46%; - - &.text { - padding-top: 0px; - } - } - } - } -} \ No newline at end of file diff --git a/src/components/Resources2026/Maps.jsx b/src/components/Resources2026/Maps.jsx deleted file mode 100644 index 5ef5128..0000000 --- a/src/components/Resources2026/Maps.jsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from 'react'; -import classnames from 'classnames'; -import Button from 'react-bootstrap/Button'; - -export const Maps = (props) => { - const classNames = classnames('Section', 'Maps', props.className); - const { maps } = props - - return ( -
-
-
-

Maps

-
-
-
- Below are links to view all the maps you may need throughout the day! -
-
- {maps.map(map => { - return - // return
- // {map.src} - //
- })} -
-
-
- ); -} - -export default Maps; diff --git a/src/components/Resources2026/Maps.scss b/src/components/Resources2026/Maps.scss deleted file mode 100644 index 15edc14..0000000 --- a/src/components/Resources2026/Maps.scss +++ /dev/null @@ -1,41 +0,0 @@ -.Maps { - background-color: #f5f5f5; - - .maps-content { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - .maps-title { - display: flex; - padding-bottom: 32px; - flex-direction: column; - align-items: center; - } - - .buttons { - padding-top: 20px; - display: grid; - row-gap: 10px; - grid-template-columns: auto; - padding-bottom: 20px; - width: 60vw; - } - } -} - -@include media-breakpoint-up(md) { - .Maps { - .buttons { - flex-direction: row; - - .button { - padding-left: 10px; - padding-right: 10px; - } - } - } -} diff --git a/src/components/Resources2026/Resources.scss b/src/components/Resources2026/Resources.scss deleted file mode 100644 index 58b8087..0000000 --- a/src/components/Resources2026/Resources.scss +++ /dev/null @@ -1,40 +0,0 @@ -// Resources Component Styles -@import "../Footer.scss"; -@import "./Ceremonies.scss"; -@import "./Schedule.scss"; -@import "./Workshops.scss"; -@import "./Maps.scss"; - -.Resources { - .resources-title { - display: flex; - flex-direction: column; - align-items: center; - max-width: $section-width; - margin: auto; - padding-top: 32px; - padding-bottom: 32px; - } - - .resources-text { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - padding-top: 30px; - } - - .banner { - width: 100vw; - height: auto; - } - - .full-length-button { - padding-top: 20px; - display: grid; - row-gap: 10px; - grid-template-columns: auto; - padding-bottom: 20px; - width: 100%; - } -} diff --git a/src/components/Resources2026/Schedule.jsx b/src/components/Resources2026/Schedule.jsx deleted file mode 100644 index cd9b5c5..0000000 --- a/src/components/Resources2026/Schedule.jsx +++ /dev/null @@ -1,42 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; - -import { SCHEDULE2026 } from 'constants/2026schedule'; - -export default class Schedule extends Component { - - static get propTypes() { - return { - className: PropTypes.string, - } - } - - static get defaultProps() { - return { - className: '', - }; - } - - render() { - const classNames = classnames('Section', 'Schedule', this.props.className); - - return ( -
-
-
-

Schedule

-
-
-
-

- {SCHEDULE2026.map(event => { - return

{event.time} {event.name}

- })} -

-
-
-
- ); - } -} diff --git a/src/components/Resources2026/Schedule.scss b/src/components/Resources2026/Schedule.scss deleted file mode 100644 index 9aaac1e..0000000 --- a/src/components/Resources2026/Schedule.scss +++ /dev/null @@ -1,54 +0,0 @@ -.Schedule { - background-color: white; - - .schedule-content { - display: flex; - flex-direction: column; - justify-content: space-between; - max-width: $section-width; - margin: auto; - - &:not(:last-child) { - padding-bottom: 32px; - } - - &.schedule-column-container { - flex-direction: column; - } - - .schedule-title { - align-items: center; - text-align: center; - } - - .left-column, .right-column { - &.text { - padding-top: 32px; - } - } - } -} - -@include media-breakpoint-up(md) { - .Schedule { - .schedule-content { - justify-content: space-between; - - &:not(:last-child) { - padding-bottom: 64px; - } - - &.schedule-column-container { - flex-direction: row; - } - - .left-column, .right-column { - width: 46%; - - &.text { - padding-top: 0px; - } - } - } - } - } \ No newline at end of file diff --git a/src/components/Resources2026/Waivers.jsx b/src/components/Resources2026/Waivers.jsx deleted file mode 100644 index 2754dab..0000000 --- a/src/components/Resources2026/Waivers.jsx +++ /dev/null @@ -1,60 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; - -import Button from 'react-bootstrap/Button'; - -import LiabilityWaiver from 'static/pdf/exploretech_la_2022_Liability_Waiver.pdf'; -import MultimediaRelease from 'static/pdf/exploretech_la_2022_Multimedia_Release_Form.pdf'; -import StudentVerification from 'static/pdf/exploretech_la_2022_Student_Verification_Form.pdf'; - -export default class Waivers extends Component { - - static get propTypes() { - return { - className: PropTypes.string, - } - } - - static get defaultProps() { - return { - className: '', - }; - } - - // render() { - // const classNames = classnames('Waivers', this.props.className); - - // return ( - //
- //
- //

Waivers

- //
- //

- // Please download and sign the following waivers. They are a required part of your registration. - //

- //

- // Note: For high school students, the waivers require a parent/guardian signature. - //

- //
- //
- //
- // - //
- //
- // - //
- //
- // - //
- //
- //
- // ); - // } -} diff --git a/src/components/Resources2026/Waivers.scss b/src/components/Resources2026/Waivers.scss deleted file mode 100644 index 855912e..0000000 --- a/src/components/Resources2026/Waivers.scss +++ /dev/null @@ -1,41 +0,0 @@ -.Waivers { - background-color: #F5F5F5; - display: flex; - flex-direction: column; - align-items: center; - margin: auto; - padding-bottom: 32px; - - .waivers-title, .waivers-text { - display: flex; - flex-direction: column; - align-items: center; - } - - .buttons { - padding-top: 20px; - display: flex; - flex-direction: column; - align-items: center; - padding-bottom: 20px; - - .button { - padding-top: 10px; - padding-bottom: 10px; - } - } - -} - -@include media-breakpoint-up(md) { - .Waivers { - .buttons { - flex-direction: row; - - .button { - padding-left: 10px; - padding-right: 10px; - } - } - } -} \ No newline at end of file diff --git a/src/components/Resources2026/Workshops copy.jsx b/src/components/Resources2026/Workshops copy.jsx deleted file mode 100644 index 45ca9db..0000000 --- a/src/components/Resources2026/Workshops copy.jsx +++ /dev/null @@ -1,242 +0,0 @@ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import classnames from 'classnames'; - -import Card from 'react-bootstrap/Card'; -import CardDeck from 'react-bootstrap/CardDeck'; -import ListGroup from 'react-bootstrap/ListGroup'; -import ListGroupItem from 'react-bootstrap/ListGroupItem'; -import YoutubeEmbed from "components/common/YoutubeEmbed"; - -export default class Workshops extends Component { - - static get propTypes() { - return { - className: PropTypes.string, - } - } - - static get defaultProps() { - return { - className: '', - }; - } - - render() { - const classNames = classnames('Section', 'Workshops', this.props.className); - - return ( -
-
-
-

Workshops

-
-
- {this._getWorkshopCards()} -
-
-
-

Panels

-
-
- {this._getPanelCards()} -
-
- ); - } - - _getWorkshopCards() { - return ( -
- - - - Coding 101 - - - (Session 1 Recording) - - - - Session 2 Recording - Student Guide - Slides - Solutions - - - - - ExploreWeb.la: Web Design & Dev - - - - Slides - Review Sheet - Codepen - - - - - - - Operating Systems - - - - Slides - Linux Emulator - - - - - Draw with Code - - - - Slides - Repl.it Project - - - - - - - Less Quantum More Computing - - - - Slides - Definitions Doc - Google Colab - - - - - Crack the Code with Cryptography - - - - Slides - Escape Room Google Form - Escape Room Questions and Solutions - - - - - - - Escaping Reality with Game Development - - - - Slides - Codepen Activity - - - - - Murder Mystery! - - - - Slides - Worksheet - - - - - - - AI Adventures - - - - Slides - Worksheet - - - - - Digital Design - - - - Slides - Miro Whiteboard - - - - - - - Data Science - - - - Slides - Spreadsheet - - - - - Tech & Society - - - - Slides - - - - - - - Bot Buddy - Hosted by DIY Girls - - - (Session 1 Recording) - - - - Session 2 Recording - Skin Templates - Youtube Tutorial - Slides - Follow Up Instructions - - - -
- ); - } - - _getPanelCards() { - return ( -
- - - - Diverse Careers in Computer Science - - - - Slides - Padlet - Panelist Info and Resources - - - - - Representation in Computer Science - - - - Slides - Padlet - - - -
- ); - } -} diff --git a/src/components/Resources2026/Workshops copy.scss b/src/components/Resources2026/Workshops copy.scss deleted file mode 100644 index a0b3782..0000000 --- a/src/components/Resources2026/Workshops copy.scss +++ /dev/null @@ -1,32 +0,0 @@ -@import 'components/common/YoutubeEmbed.scss'; - -.Workshops { - .workshops-content { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - .workshops-cards { - display: flex; - flex-direction: column; - width: 75vw; - padding-bottom: 50px; - } - - .workshops-title { - display: flex; - padding-bottom: 32px; - flex-direction: column; - align-items: center; - } - - .card-row { - padding-top: 15px; - padding-bottom: 15px; - } - - } -} \ No newline at end of file diff --git a/src/components/Resources2026/Workshops.jsx b/src/components/Resources2026/Workshops.jsx deleted file mode 100644 index 67ec717..0000000 --- a/src/components/Resources2026/Workshops.jsx +++ /dev/null @@ -1,107 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import Card from "react-bootstrap/Card"; -import CardDeck from "react-bootstrap/CardDeck"; -import ListGroup from "react-bootstrap/ListGroup"; -import ListGroupItem from "react-bootstrap/ListGroupItem"; - -import { WORKSHOPS2026 } from "constants/2026workshop"; - -export default class Workshops extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("Section", "Workshops", this.props.className); - - const workshopItems = WORKSHOPS2026.filter((item) => item.type === "workshop"); - const panelItems = WORKSHOPS2026.filter((item) => item.type === "panel"); - - return ( -
-
-
-

Workshops

-
-
- {this._renderCards(workshopItems)} -
- -
-
-

Panels

-
-
- {this._renderCards(panelItems)} -
-
- ); - } - - _chunkArray(items, size = 2) { - const rows = []; - for (let i = 0; i < items.length; i += size) { - rows.push(items.slice(i, i + size)); - } - return rows; - } - - _renderCards(items) { - const rows = this._chunkArray(items, 2); - - return ( -
- {rows.map((row, rowIndex) => ( - - {row.map((item) => ( - - - - {item.title} - - - {item.instructors && ( - - {item.type === "panel" ? "Moderators" : "Instructors"}: {item.instructors} - - )} - - - - {item.description && ( - - {item.description} - - )} - - {item.slidesUrl && ( - - Slides - - )} - - {item.panelistInfoUrl && ( - - Panelist Info - - )} - - - ))} - - ))} -
- ); - } -} \ No newline at end of file diff --git a/src/components/Resources2026/Workshops.scss b/src/components/Resources2026/Workshops.scss deleted file mode 100644 index 225667e..0000000 --- a/src/components/Resources2026/Workshops.scss +++ /dev/null @@ -1,43 +0,0 @@ -@import "components/common/YoutubeEmbed.scss"; - -.Workshops { - .workshops-content { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - max-width: $section-width; - margin: auto; - - .workshops-cards { - display: flex; - flex-direction: column; - width: 75vw; - padding-bottom: 50px; - } - - .workshops-title { - display: flex; - padding-bottom: 32px; - flex-direction: column; - align-items: center; - } - - .card-row { - padding-top: 15px; - padding-bottom: 15px; - } - - .panelists-container { - max-width: $section-width; - margin: auto; - - .panelists-header { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1rem; - } - } - } -} diff --git a/src/components/Resources2026/exploretech2021.jsx b/src/components/Resources2026/exploretech2021.jsx deleted file mode 100644 index 429ccf1..0000000 --- a/src/components/Resources2026/exploretech2021.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react'; - -import Ceremonies from './Ceremonies'; -import Workshops from './Workshops'; -import Footer from '../Footer'; - -function Resources() { - return ( -
-
-

Resources

-
-
-
- Welcome students! This webpage contains the recordings and resources of all of our - workshops and panels for the exploretech.la 2021 event! For each workshop or panel, - please watch the recording first and check back on this page to access the appropriate - resources for the activity. -
-
- - -
-
-
- ); -} - -Resources.displayName = 'Resources'; -export default Resources; \ No newline at end of file diff --git a/src/components/Resources2026/exploretech2021.scss b/src/components/Resources2026/exploretech2021.scss deleted file mode 100644 index 907b4e6..0000000 --- a/src/components/Resources2026/exploretech2021.scss +++ /dev/null @@ -1,29 +0,0 @@ -// Resources Component Styles -@import 'components/Footer.scss'; -@import 'components/Resources/Ceremonies.scss'; -@import 'components/Resources/Workshops.scss'; - -.Resources { - .resources-title { - display: flex; - flex-direction: column; - align-items: center; - max-width: $section-width; - margin: auto; - padding-top: 32px; - padding-bottom: 32px; - } - - .resources-text { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - padding-top: 30px; - } - - .banner { - width: 100vw; - height: auto; - } -} \ No newline at end of file diff --git a/src/components/Schedule.jsx b/src/components/Schedule.jsx deleted file mode 100644 index f9bdbb8..0000000 --- a/src/components/Schedule.jsx +++ /dev/null @@ -1,24 +0,0 @@ -import React, { Component } from "react"; - -import Container from "react-bootstrap/Container"; -import Row from "react-bootstrap/Row"; -import Col from "react-bootstrap/Col"; - -import UnorderedItemList from "./common/UnorderedItemList"; - -const scheduleItems = [ - "Opening Ceremony", - "Exhbition Hall", - "Workshops", - "Closing Ceremony", -]; - -export default class Schedule extends Component { - render() { - return ( -
- {/* */} -
- ); - } -} diff --git a/src/components/Speakers.jsx b/src/components/Speakers.jsx deleted file mode 100644 index d3e5c47..0000000 --- a/src/components/Speakers.jsx +++ /dev/null @@ -1,58 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import People from "components/common/People"; - -import HomePageSections from "constants/HomePageSections"; -import { PastSpeakers } from "constants/speakers"; - -const SpeakersTypeEnum = { - CURRENT: { - id: 1, - name: "Current", - }, - PAST: { - id: 2, - name: "Past", - }, -}; - -export default class Speakers extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("Section", "Speakers", this.props.className); - return ( -
- {this._renderSpeakers(PastSpeakers, SpeakersTypeEnum.PAST)} -
- ); - } - - _renderSpeakers(speakers, speakerType) { - if (!speakers || speakers.length === 0) { - return null; - } - - return ( -
-
-

{speakerType.name} Speakers

-
-
- -
- ); - } -} diff --git a/src/components/Speakers.scss b/src/components/Speakers.scss deleted file mode 100644 index 191224f..0000000 --- a/src/components/Speakers.scss +++ /dev/null @@ -1,87 +0,0 @@ -.Speakers { - p { - margin-bottom: 0.25rem; - } - - a { - text-decoration: none !important; - } - - .speakers-container { - max-width: $section-width; - margin: auto; - - .speakers-header { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1rem; - } - - .speakers-list { - display: flex; - flex-direction: row; - overflow-x: scroll; - padding-bottom: 1rem; - transform: scaleX(-1) rotateZ(180deg); - } - - .speaker { - width: 14rem; - height: 100%; - padding: 1rem 0.5rem; - text-align: center; - cursor: pointer; - color: black; - transition: color 0.5s; - transform: scaleX(-1) rotateZ(180deg); - - .speaker-image { - width: 10rem; - height: auto; - border-radius: 50%; - margin-bottom: 1.25rem; - } - - .speaker-title { - font-size: small; - } - } - } - - .speakers-container:not(:last-child) { - padding-bottom: 64px; - } -} - -@include media-breakpoint-up(sm) { - .Speakers { - .speakers-container { - .speaker:hover { - color: $color-muted-blue; - transition: color 0.5s; - } - } - } -} - -@include media-breakpoint-up(md) { - .Speakers { - .speakers-container { - .speakers-header { - margin-bottom: 0; - } - - .speakers-list { - transform: none; - justify-content: center; - flex-wrap: wrap; - padding-bottom: 0; - } - - .speaker { - transform: none; - } - } - } -} diff --git a/src/components/Sponsors.jsx b/src/components/Sponsors.jsx deleted file mode 100644 index 6af64b9..0000000 --- a/src/components/Sponsors.jsx +++ /dev/null @@ -1,92 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; -import ReactGA from "react-ga"; - -import { MdKeyboardArrowRight } from "react-icons/md"; - -import HomePageSections from "constants/HomePageSections"; -import { LargeLogoSponsors, SmallLogoSponsors } from "constants/sponsors"; -// import { CommunityPartners } from 'constants/community-partners'; - -export default class Sponsors extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - // Sponsor logos live at the bottom of the home page, so they are all - // lazy; the two rows are rendered at different widths. - const largeLogos = LargeLogoSponsors.map((logo) => - this._renderLogo(logo, "(min-width: 768px) 16rem, 14rem") - ); - const smallLogos = SmallLogoSponsors.map((logo) => - this._renderLogo(logo, "(min-width: 768px) 12rem, 8rem") - ); - - // const commPartnerLogos = CommunityPartners.map(logo => this._renderLogo(logo)); - - const classNames = classnames("Section", "Sponsors", this.props.className); - - return ( -
-
-
-

Our Sponsors

-
-
-
{largeLogos}
-
{smallLogos}
- {/*
-

Our Community Partners

-
-
-
- {commPartnerLogos} -
*/} -
-
Interested in sponsoring?
-
- -

Email Us!

- -
-
-
-
-
- ); - } - - _renderLogo(logo, sizes) { - if (!logo || !logo.name || !logo.src) return null; - // Both raster variants and the retained SVG include intrinsic dimensions. - const { name, website, ...image } = logo; - return ( -
- - {name} - -
- ); - } -} diff --git a/src/components/Sponsors.scss b/src/components/Sponsors.scss deleted file mode 100644 index 3e58b12..0000000 --- a/src/components/Sponsors.scss +++ /dev/null @@ -1,118 +0,0 @@ -.Sponsors { - background-color: #f5f5f5; - - .sponsors-container { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - max-width: $section-width; - margin: auto; - - .sponsors-header { - display: flex; - flex-direction: column; - align-items: center; - } - - .logo-container { - margin: 1rem; - } - - .large-logos, - .small-logos { - display: flex; - flex-flow: row wrap; - justify-content: center; - align-items: center; - } - - .large-logos, - .small-logos { - padding-bottom: 32px; - } - - .large-logos { - .logo { - width: 14rem; - height: auto; - } - } - - .small-logos { - .logo { - width: 8rem; - height: auto; - } - } - - .sponsor-contact { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - - h5 { - margin-bottom: 1rem; - } - - .sponsor-cta { - a { - display: flex; - flex-direction: row; - align-items: center; - text-decoration: none; - color: $color-muted-blue; - } - - &:hover { - .MdKeyboardArrowRight { - fill: white; - background-color: $color-muted-blue; - border: 2px solid $color-muted-blue; - } - } - - p { - margin-bottom: 0; - margin-right: 0.5rem; - } - } - } - } - - .MdKeyboardArrowRight { - fill: $color-muted-blue; - border: 2px solid #e2e2e2; - border-radius: 50%; - width: 1.5rem; - min-width: 1.5rem; - height: 1.5rem; - transition: all 0.3s ease-in-out; - -webkit-transition: all 0.3s ease-in-out; /** Chrome & Safari **/ - -moz-transition: all 0.3s ease-in-out; /** Firefox **/ - -o-transition: all 0.3s ease-in-out; /** Opera **/ - } -} - -@include media-breakpoint-up(md) { - .Sponsors { - .sponsors-container { - .logo-container { - margin: 2rem; - } - - .large-logos { - .logo { - width: 16rem; - } - } - - .small-logos { - .logo { - width: 12rem; - } - } - } - } -} diff --git a/src/components/Team/Content.jsx b/src/components/Team/Content.jsx deleted file mode 100644 index f72783e..0000000 --- a/src/components/Team/Content.jsx +++ /dev/null @@ -1,36 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import People from "components/common/People"; - -import { Content } from "constants/content"; - -export default class ContentComponent extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("Section", "Content", this.props.className); - return ( -
-
-
-

Content

-
-
- -
-
- ); - } -} diff --git a/src/components/Team/Content.scss b/src/components/Team/Content.scss deleted file mode 100644 index bcadbe7..0000000 --- a/src/components/Team/Content.scss +++ /dev/null @@ -1,23 +0,0 @@ -.Content { - .content-container { - max-width: $section-width; - margin: auto; - - .content-header { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1rem; - } - } -} - -@include media-breakpoint-up(md) { - .Content { - .content-container { - .content-header { - margin-bottom: 0; - } - } - } -} diff --git a/src/components/Team/Design.jsx b/src/components/Team/Design.jsx deleted file mode 100644 index 72d63bf..0000000 --- a/src/components/Team/Design.jsx +++ /dev/null @@ -1,36 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import People from "components/common/People"; - -import { Design } from "constants/design"; - -export default class DesignComponent extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("Section", "Design", this.props.className); - return ( -
-
-
-

Design

-
-
- -
-
- ); - } -} diff --git a/src/components/Team/Design.scss b/src/components/Team/Design.scss deleted file mode 100644 index 946db64..0000000 --- a/src/components/Team/Design.scss +++ /dev/null @@ -1,25 +0,0 @@ -.Design { - background-color: #f5f5f5; - - .design-container { - max-width: $section-width; - margin: auto; - - .design-header { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1rem; - } - } -} - -@include media-breakpoint-up(md) { - .Design { - .design-container { - .design-header { - margin-bottom: 0; - } - } - } -} diff --git a/src/components/Team/External.jsx b/src/components/Team/External.jsx deleted file mode 100644 index 29101f6..0000000 --- a/src/components/Team/External.jsx +++ /dev/null @@ -1,36 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import People from "components/common/People"; - -import { External } from "constants/external"; - -export default class ExternalComponent extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("Section", "External", this.props.className); - return ( -
-
-
-

External

-
-
- -
-
- ); - } -} diff --git a/src/components/Team/External.scss b/src/components/Team/External.scss deleted file mode 100644 index 3df7dd7..0000000 --- a/src/components/Team/External.scss +++ /dev/null @@ -1,23 +0,0 @@ -.External { - .external-container { - max-width: $section-width; - margin: auto; - - .external-header { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1rem; - } - } -} - -@include media-breakpoint-up(md) { - .External { - .external-container { - .external-header { - margin-bottom: 0; - } - } - } -} diff --git a/src/components/Team/Leadership.jsx b/src/components/Team/Leadership.jsx deleted file mode 100644 index 283a87d..0000000 --- a/src/components/Team/Leadership.jsx +++ /dev/null @@ -1,41 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import People from "components/common/People"; - -import HomePageSections from "constants/HomePageSections"; -import { Leadership } from "constants/leadership"; - -export default class LeadershipComponent extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames( - "Section", - "Leadership", - this.props.className - ); - return ( -
-
-
-

Leadership

-
-
- -
-
- ); - } -} diff --git a/src/components/Team/Leadership.scss b/src/components/Team/Leadership.scss deleted file mode 100644 index 0a92709..0000000 --- a/src/components/Team/Leadership.scss +++ /dev/null @@ -1,25 +0,0 @@ -.Leadership { - background-color: #f5f5f5; - - .leadership-container { - max-width: $section-width; - margin: auto; - - .leadership-header { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1rem; - } - } -} - -@include media-breakpoint-up(md) { - .Leadership { - .leadership-container { - .leadership-header { - margin-bottom: 0; - } - } - } -} diff --git a/src/components/Team/Operations.jsx b/src/components/Team/Operations.jsx deleted file mode 100644 index bcac0d9..0000000 --- a/src/components/Team/Operations.jsx +++ /dev/null @@ -1,40 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import People from "components/common/People"; - -import { Operations } from "constants/operations"; - -export default class OperationsComponent extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames( - "Section", - "Operations", - this.props.className - ); - return ( -
-
-
-

Operations

-
-
- -
-
- ); - } -} diff --git a/src/components/Team/Operations.scss b/src/components/Team/Operations.scss deleted file mode 100644 index a40a3dd..0000000 --- a/src/components/Team/Operations.scss +++ /dev/null @@ -1,25 +0,0 @@ -.Operations { - background-color: #f5f5f5; - - .operations-container { - max-width: $section-width; - margin: auto; - - .operations-header { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1rem; - } - } -} - -@include media-breakpoint-up(md) { - .Opertions { - .operations-container { - .operations-header { - margin-bottom: 0; - } - } - } -} diff --git a/src/components/Team/Team.jsx b/src/components/Team/Team.jsx deleted file mode 100644 index 92f31a6..0000000 --- a/src/components/Team/Team.jsx +++ /dev/null @@ -1,124 +0,0 @@ -import React from "react"; -import { useLocation, Link } from "react-router-dom"; - -import Leadership from "./Leadership"; -import Content from "./Content"; -import Design from "./Design"; -import Operations from "./Operations"; -import External from "./External"; -import Footer from "../Footer"; -import People from "../common/People"; -import { WebDev } from "constants/webdev"; -import { Marketing } from "constants/marketing"; -import "./Team.scss"; - -function Team() { - const location = useLocation(); - - // Extract section from URL path - const pathParts = location.pathname.split('/').filter(Boolean); - const activeSection = pathParts[pathParts.length - 1] === 'our_team' - ? 'leadership' - : pathParts[pathParts.length - 1] || 'leadership'; - - const renderTeamSection = () => { - switch (activeSection) { - case "leadership": - return ; - case "content": - return ; - case "design": - return ; - case "operations": - return ; - case "external": - return ; - case "web-dev": - return ( -
-
-

Web Dev

-
-
- -
- ); - case "marketing": - return ( -
-
-

Marketing

-
-
- -
- ); - default: - return ; - } - }; - - return ( -
-
-

Meet Our Team

-
-
- -
- - Leadership - - - Content - - - Design - - - Operations - - - External - - - Web Dev - - - Marketing - -
- -
- {renderTeamSection()} -
- -
-
- ); -} - -Team.displayName = "Team"; - -export default Team; diff --git a/src/components/Team/Team.scss b/src/components/Team/Team.scss deleted file mode 100644 index 78f318d..0000000 --- a/src/components/Team/Team.scss +++ /dev/null @@ -1,170 +0,0 @@ -// Team Component Styles -@import "../Footer.scss"; - -.Team { - display: flex; - flex-direction: column; - align-items: center; - min-height: 100vh; - background-color: #f5f5f5; - - .team-title { - text-align: center; - width: 100%; - background-color: white; - padding: 2rem 0; - margin-bottom: 2rem; - - h1 { - font-size: 2.5rem; - color: #333; - margin-bottom: 1rem; - } - - .pill-divider { - width: 60px; - height: 4px; - background-color: #448494; - margin: 0 auto; - border-radius: 2px; - } - } - - .team-navigation { - display: flex; - gap: 1rem; - margin-bottom: 2rem; - flex-wrap: wrap; - justify-content: center; - padding: 0 1rem; - - a { - padding: 0.75rem 1.5rem; - border: 2px solid #448494; - background-color: transparent; - color: #448494; - border-radius: 25px; - font-size: 1rem; - font-weight: 500; - cursor: pointer; - transition: all 0.3s ease; - text-decoration: none; - display: inline-block; - - &:hover { - background-color: #448494; - color: white; - } - - &.active { - background-color: #448494; - color: white; - } - } - } - - .team-section-header { - display: flex; - flex-direction: column; - align-items: center; - margin-bottom: 1rem; - } - - .team-content { - width: 100%; - max-width: 1200px; - padding: 0 1rem; - flex: 1; - position: relative; - - .coming-soon-overlay { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(255, 255, 255, 0.9); - display: flex; - justify-content: center; - align-items: center; - z-index: 10; - - h2 { - font-size: 2.5rem; - color: #448494; - font-weight: 500; - } - } - - .coming-soon-section { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - min-height: 400px; - text-align: center; - padding: 2rem; - - h2 { - font-size: 2.5rem; - color: #448494; - font-weight: 500; - margin-bottom: 1rem; - } - - p { - font-size: 1.2rem; - color: #666; - max-width: 500px; - line-height: 1.6; - } - } - } - - .team-text { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - padding-top: 30px; - padding-bottom: 30px; - } - - .banner { - width: 100vw; - height: auto; - } - - // Ensure the footer is always full width and not centered - > .Footer { - align-self: stretch; - width: 100%; - } -} - -// Responsive styles -@media (max-width: 768px) { - .Team { - .team-navigation { - a { - padding: 0.5rem 1rem; - font-size: 0.9rem; - } - } - - .team-content { - .coming-soon-section { - min-height: 300px; - padding: 1rem; - - h2 { - font-size: 2rem; - } - - p { - font-size: 1rem; - } - } - } - } -} diff --git a/src/components/common/Alerts.jsx b/src/components/common/Alerts.jsx deleted file mode 100644 index 2100cbe..0000000 --- a/src/components/common/Alerts.jsx +++ /dev/null @@ -1,69 +0,0 @@ -import React, { Component } from "react"; -import ReactGA from "react-ga"; - -import Alert from "react-bootstrap/Alert"; -import Button from "react-bootstrap/Button"; - -export default class Alerts extends Component { - render() { - return ( -
-
{this._getAlert()}
-
- ); - } - - _getAlert() { - return ( - - - {this.props.title} - - {this.props.messages.map((message) => ( -

{message}

- ))} -
-
-
- -
- {this.props.secondaryLink && ( -
- -
- )} -
-
- ); - } - - _trackTeamApplicationClick() { - ReactGA.outboundLink( - { - label: "Team Application", - }, - () => {} - ); - } - - _trackInfoSessionSlidesClick() { - ReactGA.outboundLink( - { - label: "Info Session", - }, - () => {} - ); - } -} diff --git a/src/components/common/Alerts.scss b/src/components/common/Alerts.scss deleted file mode 100644 index dc18638..0000000 --- a/src/components/common/Alerts.scss +++ /dev/null @@ -1,40 +0,0 @@ -.Alerts { - background-color: #d1ecf1; - padding-top: 1em !important; - padding-bottom: 1em !important; - - .alert { - border: 0 solid transparent; - margin-bottom: 0; - } - - .alerts-container { - max-width: $section-width; - margin: auto; - } - - .buttons { - padding-top: 10px; - display: flex; - flex-direction: row; - - .button { - padding-top: 10px; - padding-right: 10px; - padding-bottom: 10px; - } - } - - .MdKeyboardArrowRight { - fill: $color-muted-blue; - border: 2px solid #e2e2e2; - border-radius: 50%; - width: 1.5rem; - min-width: 1.5rem; - height: 1.5rem; - transition: all 0.3s ease-in-out; - -webkit-transition: all 0.3s ease-in-out; /** Chrome & Safari **/ - -moz-transition: all 0.3s ease-in-out; /** Firefox **/ - -o-transition: all 0.3s ease-in-out; /** Opera **/ - } -} diff --git a/src/components/common/Header.jsx b/src/components/common/Header.jsx deleted file mode 100644 index b8116f0..0000000 --- a/src/components/common/Header.jsx +++ /dev/null @@ -1,140 +0,0 @@ -import React, { useEffect, useRef, useState } from "react"; -import { Link, useHistory, useLocation } from "react-router-dom"; -import classnames from "classnames"; - -import { Navbar, Nav, NavDropdown } from "react-bootstrap"; - -import HomePageSections from "constants/HomePageSections"; - -import LogoWithIcons from "static/svg/logo-with-icons-navy.svg"; -import CompassLogo from "static/svg/logo-compass.svg"; - -const IGNITE_ENABLED = false; - -function Header() { - // let navItems = []; - let isHomePage = false; - let isIgnitePage = false; - - const location = useLocation(); - const history = useHistory(); - const pendingHash = useRef(null); - const [expanded, setExpanded] = useState(false); - useEffect(() => { - pendingHash.current = history.action === "POP" ? null : location.hash; - setExpanded(false); - }, [location.key, location.hash, history]); - if (location.pathname === "/") { - isHomePage = true; - } - - if (location.pathname === "/ignite" && IGNITE_ENABLED) { - isIgnitePage = true; - } - - // if (location.pathname === '/our_team') { - // navItems = ourTeamNavItems; - // } - // if (location.pathname === '/resources') { - // navItems = resourcesNavItems; - // } - - const classNames = classnames("Section", "Header", { - Home: isHomePage, - IgniteHeader: isIgnitePage, - }); - - const navBarItems = ( - - ); - - return ( - { - pendingHash.current = null; - setExpanded(next); - }} - expand="sm" - > - - logo-compass - logo-with-icons - - - { - const target = - pendingHash.current && - document.getElementById(pendingHash.current.slice(1)); - pendingHash.current = null; - if (target) target.scrollIntoView(); - }} - > - - - - ); -} - -export default Header; diff --git a/src/components/common/Header.scss b/src/components/common/Header.scss deleted file mode 100644 index dbac997..0000000 --- a/src/components/common/Header.scss +++ /dev/null @@ -1,62 +0,0 @@ -.Header { - &.Home { - background-color: $color-aqua; - } - - &.Section { - padding-top: 1rem; - padding-bottom: 1rem; - } - - .navbar-nav { - padding-top: 0.5rem; - - .nav-item, - .nav-link, - .dropdown { - margin-left: 0.5rem; - margin-right: 0.5rem; - } - } - - .logo-compass { - display: block; - width: 2.5rem; - height: auto; - } - - .logo-with-icons { - display: none; - max-width: 14rem; - height: auto; - } -} - -@include media-breakpoint-up(sm) { - .Header { - .navbar-nav { - padding-top: 0; - } - } -} - -@include media-breakpoint-up(md) { - .Header { - .logo-compass { - display: none; - } - - .logo-with-icons { - display: block; - } - } -} - -.Header.IgniteHeader { - background-color: #2da6bc !important; -} - -.Header.IgniteHeader .navbar, -.Header.IgniteHeader.navbar { - background-color: #2da6bc !important; -} diff --git a/src/components/common/Header.tsx b/src/components/common/Header.tsx new file mode 100644 index 0000000..01ecf49 --- /dev/null +++ b/src/components/common/Header.tsx @@ -0,0 +1,208 @@ +import { useEffect, useRef, useState } from "react"; +import { Link, useLocation, useNavigationType } from "react-router-dom"; +import HomePageSections from "../../content/sections"; +import LogoWithIcons from "../../static/svg/logo-with-icons-navy.svg"; +import CompassLogo from "../../static/svg/logo-compass.svg"; +import Collapse from "../Collapse"; +import { EVENT_ROUTES } from "../../content/events"; + +const menus = [ + { + id: "home", + title: "Home", + links: [ + ["Home", "/"], + ["About", `/#${HomePageSections.ABOUT.name}`], + ["Get Involved", `/#${HomePageSections.GET_INVOLVED.name}`], + ["Speakers", `/#${HomePageSections.SPEAKERS.name}`], + ["Sponsors", `/#${HomePageSections.SPONSORS.name}`], + ], + }, + { id: "events", title: "Events", links: [["Ignite", "/ignite"]] }, + { + id: "resources", + title: "Resources", + links: [...EVENT_ROUTES] + .reverse() + .map(({ route, navLabel }) => [navLabel, route] as const), + }, +] as const; + +type MenuId = (typeof menus)[number]["id"]; +export default function Header() { + const location = useLocation(); + const navigationType = useNavigationType(); + const [expanded, setExpanded] = useState(false); + const [menu, setMenu] = useState(null); + const header = useRef(null); + const pendingHash = useRef(null); + + useEffect(() => { + pendingHash.current = navigationType === "POP" ? null : location.hash; + setMenu(null); + setExpanded(false); + }, [location.key, location.hash, navigationType]); + + useEffect(() => { + if (!menu) return; + const closeOutside = (event: MouseEvent) => { + if ( + event.target instanceof Node && + !header.current?.contains(event.target) + ) + setMenu(null); + }; + document.addEventListener("click", closeOutside); + return () => document.removeEventListener("click", closeOutside); + }, [menu]); + + const selectLink = (href: string) => { + const hash = new URL(href, window.location.href).hash; + pendingHash.current = hash; + setMenu(null); + setExpanded(false); + // Same-hash links may not change location, so scroll even without a route effect. + if (!expanded && hash) + requestAnimationFrame(() => + document.getElementById(hash.slice(1))?.scrollIntoView(), + ); + }; + + const renderMenu = (item: (typeof menus)[number]) => ( +
{ + if (event.key === "Escape") { + setMenu(null); + document.getElementById(`navbar-${item.id}`)?.focus(); + event.preventDefault(); + } + if (event.key === "ArrowDown" || event.key === "ArrowUp") { + if (event.key === "ArrowUp" && menu !== item.id) return; + event.preventDefault(); + setMenu(item.id); + const parent = event.currentTarget; + const backwards = event.key === "ArrowUp"; + requestAnimationFrame(() => { + const links = Array.from( + parent.querySelectorAll(".site-menu-link"), + ); + const index = links.findIndex( + (link) => link === document.activeElement, + ); + const next = Math.max( + 0, + Math.min(links.length - 1, index + (backwards ? -1 : 1)), + ); + links[next]?.focus(); + }); + } + }} + onBlur={(event) => { + if ( + event.relatedTarget instanceof Node && + !event.currentTarget.contains(event.relatedTarget) + ) + setMenu(null); + }} + > + { + event.preventDefault(); + setMenu((current) => (current === item.id ? null : item.id)); + }} + onKeyDown={(event) => { + if (event.key === " ") { + event.preventDefault(); + setMenu((current) => (current === item.id ? null : item.id)); + } + }} + > + {item.title} + + {menu === item.id && ( +
+ {item.links.map(([label, href]) => ( + selectLink(href)} + > + {label} + + ))} +
+ )} +
+ ); + + return ( + + ); +} diff --git a/src/components/common/LinkWithArrow.jsx b/src/components/common/LinkWithArrow.jsx deleted file mode 100644 index 3ad0a13..0000000 --- a/src/components/common/LinkWithArrow.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from "react"; -import { Link } from "react-router-dom"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -import { MdKeyboardArrowRight } from "react-icons/md"; - -const propTypes = { - className: PropTypes.string, - text: PropTypes.string.isRequired, - to: PropTypes.string, -}; - -const defaultProps = { - className: "", - to: null, -}; - -function LinkWithArrow(props) { - const { className, text, to } = props; - const classNames = classnames("LinkWithArrow", className); - return ( -
- - {text} - - -
- ); -} - -LinkWithArrow.displayName = "LinkWithArrow"; -LinkWithArrow.propTypes = propTypes; -LinkWithArrow.defaultProps = defaultProps; -export default LinkWithArrow; diff --git a/src/components/common/LinkWithArrow.scss b/src/components/common/LinkWithArrow.scss deleted file mode 100644 index a61aa3f..0000000 --- a/src/components/common/LinkWithArrow.scss +++ /dev/null @@ -1,41 +0,0 @@ -.LinkWithArrow { - display: flex; - flex-direction: row; - align-items: center; - - a { - display: flex; - flex-direction: row; - align-items: center; - text-decoration: none; - - &:hover { - text-decoration: none; - - .MdKeyboardArrowRight { - fill: white; - background-color: $color-muted-blue; - border: 2px solid $color-muted-blue; - } - } - - .link-text { - margin-bottom: 0; - margin-right: 0.5rem; - color: $color-muted-blue; - } - } - - .MdKeyboardArrowRight { - fill: $color-muted-blue; - border: 2px solid #e2e2e2; - border-radius: 50%; - width: 1.5rem; - min-width: 1.5rem; - height: 1.5rem; - transition: all 0.3s ease-in-out; - -webkit-transition: all 0.3s ease-in-out; /** Chrome & Safari **/ - -moz-transition: all 0.3s ease-in-out; /** Firefox **/ - -o-transition: all 0.3s ease-in-out; /** Opera **/ - } -} diff --git a/src/components/common/LinkWithArrow.tsx b/src/components/common/LinkWithArrow.tsx new file mode 100644 index 0000000..12f9b60 --- /dev/null +++ b/src/components/common/LinkWithArrow.tsx @@ -0,0 +1,18 @@ +import { Link } from "react-router-dom"; +import { MdKeyboardArrowRight } from "react-icons/md"; + +interface LinkWithArrowProps { + readonly text: string; + readonly to: string; +} + +export default function LinkWithArrow({ text, to }: LinkWithArrowProps) { + return ( +
+ + {text} + + +
+ ); +} diff --git a/src/components/common/People.jsx b/src/components/common/People.jsx deleted file mode 100644 index a583fbf..0000000 --- a/src/components/common/People.jsx +++ /dev/null @@ -1,100 +0,0 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; -import ReactGA from "react-ga"; - -export default class People extends Component { - static get propTypes() { - return { - className: PropTypes.string, - people: PropTypes.array.isRequired, - eagerCount: PropTypes.number, - }; - } - - static get defaultProps() { - return { - className: "", - people: [], - eagerCount: 2, - }; - } - - render() { - if (!this.props.people || this.props.people.length === 0) { - return null; - } - - const peopleElements = this.props.people.map((person, index) => - this._renderPerson(person, index) - ); - const classNames = classnames("People", this.props.className); - - return
{peopleElements}
; - } - - _renderPerson(person, index) { - if (!person || !person.name) { - return null; - } - - const { name, title, descriptions, image, link } = person; - if (link) { - return ( - -
- {image ? ( - {name} - ) : ( - - - ); - } - return ( -
- {image ? ( - {name} - ) : ( - - ); - } -} diff --git a/src/components/common/People.scss b/src/components/common/People.scss deleted file mode 100644 index 38efd68..0000000 --- a/src/components/common/People.scss +++ /dev/null @@ -1,65 +0,0 @@ -.People { - display: flex; - flex-direction: row; - overflow-x: scroll; - padding-bottom: 1rem; - transform: scaleX(-1) rotateZ(180deg); - - p { - margin-bottom: 0.25rem; - } - - a { - text-decoration: none !important; - } - - .person { - width: 14rem; - height: 100%; - padding: 1rem 0.5rem; - text-align: center; - color: black; - transition: color 0.5s; - transform: scaleX(-1) rotateZ(180deg); - - .person-image { - width: 10rem; - height: 10rem; - border-radius: 50%; - margin-bottom: 1.25rem; - object-fit: cover; - object-position: center; - transition: filter 0.3s ease; - } - - .person-title { - font-size: small; - } - - .person-description { - font-size: small; - } - } -} - -@include media-breakpoint-up(sm) { - .People { - .person:hover { - color: $color-muted-blue; - transition: color 0.5s; - } - } -} - -@include media-breakpoint-up(md) { - .People { - transform: none; - justify-content: center; - flex-wrap: wrap; - padding-bottom: 0; - - .person { - transform: none; - } - } -} diff --git a/src/components/common/People.tsx b/src/components/common/People.tsx new file mode 100644 index 0000000..a1838a3 --- /dev/null +++ b/src/components/common/People.tsx @@ -0,0 +1,76 @@ +import type { PersonCard } from "../../content/types"; +import OutboundLink from "../OutboundLink"; + +interface PeopleProps { + readonly people: readonly PersonCard[]; + readonly className?: string; + /** Number of leading portraits loaded eagerly; the rest load lazily. */ + readonly eagerCount?: number; +} + +/** + * Horizontal-scrolling card list shared by team sections, speakers and + * panelists. Cards with a profile link become tracked outbound anchors. + */ +export default function People({ + people, + className, + eagerCount = 2, +}: PeopleProps) { + if (people.length === 0) { + return null; + } + + return ( +
+ {people.map((person, index) => { + const { name, title, descriptions, image, link } = person; + const body = ( + <> + {image ? ( + {name} + ) : ( + + ); +} diff --git a/src/components/common/UnorderedItemList.jsx b/src/components/common/UnorderedItemList.jsx deleted file mode 100644 index 0a82ea4..0000000 --- a/src/components/common/UnorderedItemList.jsx +++ /dev/null @@ -1,36 +0,0 @@ -import React, { PureComponent } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; - -export default class UnorderedItemList extends PureComponent { - static get propTypes() { - return { - className: PropTypes.string, - items: PropTypes.arrayOf(PropTypes.string).isRequired, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } - - render() { - const classNames = classnames("UnorderedItemList", this.props.className); - const items = this.props.items.map((item, index) => - this._getItem(index + 1, item) - ); - - return
{items}
; - } - - _getItem(number, content) { - return ( -
-
-
{content}
-
- ); - } -} diff --git a/src/components/common/UnorderedItemList.scss b/src/components/common/UnorderedItemList.scss deleted file mode 100644 index c5ae802..0000000 --- a/src/components/common/UnorderedItemList.scss +++ /dev/null @@ -1,36 +0,0 @@ -.UnorderedItemList { - .item { - display: flex; - align-items: center; - width: 100%; - padding-bottom: 24px; - - .item-indicator { - height: 24px; - width: 24px; - border-radius: 50%; - background-color: #448494; - text-align: center; - line-height: 1.5; - flex-shrink: 0; - margin-right: 16px; - } - - .item-indicator::after { - content: ""; - display: block; - margin-left: 11px; - width: 2px; - height: 50px; - background-color: #448494; - } - - &:last-child { - padding-bottom: 0; - - .item-indicator::after { - display: none; - } - } - } -} diff --git a/src/components/common/YoutubeEmbed.scss b/src/components/common/YoutubeEmbed.scss deleted file mode 100644 index f4bbac0..0000000 --- a/src/components/common/YoutubeEmbed.scss +++ /dev/null @@ -1,61 +0,0 @@ -// Reserve the same 16:9 slot for the button and the activated player. -.video-responsive { - width: 300px; - max-width: 100%; - - .video-frame { - position: relative; - height: 0; - // Percentage padding resolves against the container width. - padding-bottom: 56.25%; - overflow: hidden; - background-color: #000000; - } - - .video-frame iframe, - .video-frame .video-facade { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - } - - .video-facade { - display: flex; - align-items: center; - justify-content: center; - padding: 0; - border: 0; - cursor: pointer; - background: radial-gradient(circle at center, #2f2f2f 0%, #000000 100%); - - &:hover, - &:focus { - .video-facade-play { - background-color: #ff0000; - } - } - } - - .video-facade-play { - position: relative; - display: block; - width: 54px; - height: 38px; - border-radius: 10px; - background-color: rgba(33, 33, 33, 0.85); - transition: background-color 0.2s ease-in-out; - - &::after { - content: ""; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - border-style: solid; - border-width: 9px 0 9px 15px; - border-color: transparent transparent transparent #ffffff; - } - } -} diff --git a/src/components/common/YoutubeEmbed.jsx b/src/components/common/YoutubeEmbed.tsx similarity index 67% rename from src/components/common/YoutubeEmbed.jsx rename to src/components/common/YoutubeEmbed.tsx index ea4830e..4c64b68 100644 --- a/src/components/common/YoutubeEmbed.jsx +++ b/src/components/common/YoutubeEmbed.tsx @@ -1,8 +1,15 @@ -import React, { useState } from "react"; -import PropTypes from "prop-types"; +import { useState } from "react"; -// No player or remote thumbnail request until the visitor chooses to play. -const YoutubeEmbed = ({ embedId, title }) => { +interface YoutubeEmbedProps { + readonly embedId: string; + readonly title?: string; +} + +/** No player or remote thumbnail request until the visitor chooses to play. */ +export default function YoutubeEmbed({ + embedId, + title = "Embedded youtube", +}: YoutubeEmbedProps) { const [activated, setActivated] = useState(false); return ( @@ -30,15 +37,4 @@ const YoutubeEmbed = ({ embedId, title }) => {
); -}; - -YoutubeEmbed.propTypes = { - embedId: PropTypes.string.isRequired, - title: PropTypes.string, -}; - -YoutubeEmbed.defaultProps = { - title: "Embedded youtube", -}; - -export default YoutubeEmbed; +} diff --git a/src/constants/2026schedule.js b/src/constants/2026schedule.js deleted file mode 100644 index 4e36ea4..0000000 --- a/src/constants/2026schedule.js +++ /dev/null @@ -1,27 +0,0 @@ -export const SCHEDULE2026 = [ - { - key: 1, - name: "Opening Ceremony", - time: "9:55AM - 10:10AM", - }, { - key: 2, - name: "Session 1", - time: "10:15AM - 10:50AM", - }, { - key: 3, - name: "Session 2", - time: "11:00AM - 11:40AM", - }, { - key: 4, - name: "Session 3", - time: "11:50AM - 12:30PM", - }, { - key: 5, - name: "Lunch with a Mentor", - time: "12:30PM - 1:10PM", - }, { - key: 6, - name: "Closing Ceremony", - time: "1:10PM - 1:30PM", - }, -] \ No newline at end of file diff --git a/src/constants/2026workshop.js b/src/constants/2026workshop.js deleted file mode 100644 index ed39e57..0000000 --- a/src/constants/2026workshop.js +++ /dev/null @@ -1,124 +0,0 @@ -export const WORKSHOPS2026 = [ - { - title: "Tower Stacking Game", - type: "workshop", - instructors: "Emma Qiu and Eli Drewry", - description: "Students will compete in groups to see who can create the tallest free-standing tower with limited materials (popsicle sticks, tape, rope, etc). This challenge tests their communication, strategy, and discovering the importance of architecture while getting a chance to win prizes.", - slidesUrl: "https://canva.link/79sw40e0u4vhk4j", - panelistInfoUrl: "", - }, - { - title: "Intro to Game Development", - type: "workshop", - instructors: "Joshua Jin and Paul Macapinlac", - description: "Learn how the snake game works in this fun workshop! Uncover the secrets of Python and learn to customize your snake. Before you know it, you’ll be a pro game dev with a fully customized snake game.", - slidesUrl: "https://canva.link/y27fiyfbq1pfd3t", - panelistInfoUrl: "", - }, - { - title: "Battle Bots", - type: "workshop", - instructors: "Sofia Matos and Benjamin Garcia", - description: "Drive XRP Robots on a field to take down your opponents in a game of robot soccer! After interacting with code, you will be able to drive and dribble past other robots to score using teamwork and strategy.", - slidesUrl: "https://canva.link/6edmsozmzcmhkf2", - panelistInfoUrl: "", - }, - { - title: "Squid Games Several-Legged Pentathalon (STEM Edition)", - type: "workshop", - instructors: "Matthew Chen and Paul Macapinlac", - description: "Inspired by the hit Netflix series “Squid Games,” collaborate with up to 3 of your friends to participate in the STEM Games Several-Legged Pentathlon, where you will be tasked to solve STEM puzzles and activities in an interactive race against time.", - slidesUrl: - "https://docs.google.com/presentation/d/10K0MQv8v8IqyC8qRrrJJanGZpn2YVPQUX6VFvdg_1ww/edit?slide=id.gf6d3ad9fd1_0_1011#slide=id.gf6d3ad9fd1_0_1011", - panelistInfoUrl: "", - }, - { - title: "AI Photobooth", - type: "workshop", - instructors: "Ridhima Seth and Joshua Jin", - description: "Do you want to learn more about AI image generation? Come to AI Photobooth! This workshop will show you the basics of how an AI image generator works, and then we’ll let you try it for yourself!", - slidesUrl: "https://canva.link/p62kuwtzwy1ieb6", - panelistInfoUrl: "", - }, - { - title: "COVID-19 Simulator", - type: "workshop", - instructors: "Clemente Irarrazaval and Eli Drewry", - description: "Students will get an introduction into the field of game development by designing a COVID-19 spread simulator. Using Scratch they’ll explore conditionals, loops, and movement while working through obstacles. Students work in teams to build, test, and modify their own simulation-based game, also encouraging teamwork.", - slidesUrl: "https://canva.link/5noyqe130bqgdqs", - panelistInfoUrl: "", - }, - { - title: "AI Music", - type: "workshop", - instructors: "Matthew Chen and Benjamin Garcia", - description: "The purpose of this workshop is to teach students how to use suno.com, an AI music website that allows users to create any form of music by simply entering into the prompt bar.", - slidesUrl: "https://canva.link/ja5m1l7cy6k1zsh", - panelistInfoUrl: "", - }, - { - title: "Bridge Building Competition", - type: "workshop", - instructors: "Atharv Panditrao and Clemente Irarrazaval", - description: "Students will design and build a small bridge using limited materials. They will learn basic structural concepts, apply problem-solving skills, and work collaboratively to create a bridge that can hold the greatest load. Students compete in teams and test their designs in a fun final challenge.", - slidesUrl: "https://canva.link/6ov265jv8fwkeql", - panelistInfoUrl: "", - }, - { - title: "Live Coding Music", - type: "workshop", - instructors: "Ana Laura Santana and Atharv Panditrao", - description: "Sometimes learning code can seem like it’s exclusively professional or something you will never see in your career. But in truth, coding can be useful for all types of passions beyond a corporate life, which is what gives it its beauty. In this workshop, you will learn how to become a DJ using only code!", - slidesUrl: "https://canva.link/9pwbi4o0ztadleh", - panelistInfoUrl: "", - }, - { - title: "Prompt Engineering", - type: "workshop", - instructors: "Alexander Chien and Arjun Asudani", - description: "Join our prompt engineering workshop to learn how to make the most out of your AI credits. Today’s chat models have vast capabilities, but accessing these skills can be more nuanced than just a straightforward question. We’ll cover prompting methods you can use to ensure you get the results you want. Let’s harness the power of AI!", - slidesUrl: - "https://docs.google.com/presentation/d/1IJsZaSjOSEOXJBQJAjdo4N0Zz3iFHkn5otzM8JBI4do/edit?usp=sharing", - panelistInfoUrl: "", - }, - { - title: "How Machines can learn like humans (Neural Networks)", - type: "workshop", - instructors: "Ana Laura Santana and Emma Qiu", - description: "Students will learn the basics of neural networks, and how they are present in our everyday lives. They will also get hands-on experience with neural networks by loading data and training their own model. In the end, students will gain a conceptual understanding and practical skills in AI, which has become increasingly influential in the tech world.", - slidesUrl: "https://canva.link/t49ze6ojz5edwil", - panelistInfoUrl: "", - }, - { - title: "AI Guess Who", - type: "workshop", - instructors: "Ridhima Seth and Amy Lloyd", - description: "Want to master Guess Who? with logic and strategy? Learn how decision trees and probability help you ask the smartest questions, minimize guesswork, and consistently win. This session makes algorithmic thinking fun and practical—sharpen your problem-solving skills while gaining a competitive edge in both games and real-world decision-making!", - slidesUrl: "https://canva.link/gu84339jr1878xm", - panelistInfoUrl: "", - }, - { - title: "Game Theory", - type: "workshop", - instructors: "Arjun Asudani and Alexander Chien", - description: "What would you do if your success depended on someone else’s choice? This interactive workshop introduces game theory through fast-paced games and real-life scenarios. You’ll explore why people compete, when cooperation fails, and how small incentives can completely change outcomes.", - slidesUrl: "https://www.canva.com/design/DAHDlh96pCw/4F5lGBuqGXyBBO1a2Lyutg/edit", - panelistInfoUrl: "", - }, - { - title: "Careers in Tech Panel", - type: "panel", - instructors: "Meet Modi / Tammy Sujaritchai and Sofia Matos", - description: "Curious about what a career in tech actually looks like? Join us for a discussion with students and professionals as they share their experiences, career paths, and advice for breaking into the industry. Learn about different roles in tech, what skills matter most, and how to start exploring your own path.", - slidesUrl: "https://drive.google.com/drive/folders/1ZBMXid-LFwTB84lA5etUmEHMExT9Ee9W", - panelistInfoUrl: "https://docs.google.com/document/d/1Gaj_cB8Y7RgeDnxmjOmZGS6XhREWHHRYwg-b7EyUBiw/edit?usp=sharing", - }, - { - title: "CS/Tech in College Panel", - type: "panel", - instructors: "Meet Modi / Tammy Sujaritchai and Amy Lloyd", - description: "What is it really like to study computer science or tech in college? In this panel, students will talk about classes, projects, internships, clubs, and how they found their place in tech. Come ask questions, hear honest advice, and get a better sense of what the college experience can look like.", - slidesUrl: "https://docs.google.com/presentation/d/1XCDfJbdINGh4_OCPuUYX9roVqXul3N04L3zM6cUqm5M/edit?usp=sharing", - panelistInfoUrl: "https://docs.google.com/document/d/1Fkc3Ot_d7xpQTU8_oOfYIu_ugJzcenvjnlOOvWkVBBM/edit?usp=sharing", - }, -]; \ No newline at end of file diff --git a/src/constants/HomePageSections.js b/src/constants/HomePageSections.js deleted file mode 100644 index b00b96e..0000000 --- a/src/constants/HomePageSections.js +++ /dev/null @@ -1,22 +0,0 @@ -const HomePageSections = { - ABOUT: { - name: "about", - }, - TEAM: { - name: "our_team", - }, - GET_INVOLVED: { - name: "get-involved", - }, - SPEAKERS: { - name: "speakers", - }, - LEADERSHIP: { - name: "leadership", - }, - SPONSORS: { - name: "sponsors", - }, -}; - -export default HomePageSections; diff --git a/src/constants/community-partners.js b/src/constants/community-partners.js deleted file mode 100644 index ecb03c5..0000000 --- a/src/constants/community-partners.js +++ /dev/null @@ -1,45 +0,0 @@ -import aceMentor from "static/community-partners/ace-mentor.png"; -import csta from "static/community-partners/csta.png"; -import diyGirls from "static/community-partners/diy-girls.png"; -import girlsWhoCode from "static/community-partners/girls-who-code.png"; -import technovation from "static/community-partners/technovation.png"; -import tieIns from "static/community-partners/tie-ins.jpg"; -import txt from "static/community-partners/txt.png"; - -export const CommunityPartners = [ - { - name: "ace-mentor", - src: aceMentor, - website: "https://www.acementor.org/", - }, - { - name: "csta", - src: csta, - website: "https://www.csteachers.org/", - }, - { - name: "diy-girls", - src: diyGirls, - website: "https://www.diygirls.org/", - }, - { - name: "girls-who-code", - src: girlsWhoCode, - website: "https://girlswhocode.com/", - }, - { - name: "technovation", - src: technovation, - website: "https://www.technovation.org/", - }, - { - name: "tie-ins", - src: tieIns, - website: "https://tie-ins.gseis.ucla.edu/", - }, - { - name: "txt", - src: txt, - website: "https://exploringtech.org/home", - }, -]; diff --git a/src/constants/content.js b/src/constants/content.js deleted file mode 100644 index 3240b5f..0000000 --- a/src/constants/content.js +++ /dev/null @@ -1,53 +0,0 @@ -import images from "./optimizedImages"; - -export const Content = [ - { - key: 1, - name: "Eli Drewry", - title: "Content Director", - image: images["team/leadership/2027/eli-drewry.jpg"].src, - link: "", - }, - { - key: 2, - name: "Matthew Chen", - title: "Content Director", - image: images["team/leadership/2027/matthew-chen.jpg"].src, - link: "", - }, - { - key: 3, - name: "Ridhima Seth", - title: "Content Member", - image: images["team/content/ridhima-seth.png"].src, - link: "", - }, - { - key: 4, - name: "Sofia Matos", - title: "Content Member", - image: images["team/content/sofia-matos.jpg"].src, - link: "", - }, - { - key: 5, - name: "Paul Macapinlac", - title: "Content Member", - image: images["team/content/paul-headshot.png"].src, - link: "", - }, - { - key: 6, - name: "Joy Szeto", - title: "Content Member", - image: images["team/operations/joy-szeto-headshot.jpeg"].src, - link: "", - }, - { - key: 7, - name: "Benjamin Garcia", - title: "Content Member", - image: images["team/content/benjamin-garcia.jpg"].src, - link: "", - }, -]; diff --git a/src/constants/design.js b/src/constants/design.js deleted file mode 100644 index f1c792e..0000000 --- a/src/constants/design.js +++ /dev/null @@ -1,37 +0,0 @@ -import images from "./optimizedImages"; - -export const Design = [ - { - key: 1, - name: "Isabelle Chang", - title: "Design Director", - image: images["team/design/isabelle-chang.png"].src, - link: "", - }, - { - key: 2, - name: "Sarah Zhao", - title: "Design Director", - image: images["team/leadership/2027/sarah-zhao.jpg"].src, - link: "", - }, - { - key: 3, - name: "Allison Gao", - title: "Design Member", - link: "", - }, - { - key: 4, - name: "Izabella Chan", - title: "Design Member", - link: "", - }, - { - key: 5, - name: "Ela Defne Erkan", - title: "Design Member", - image: images["team/design/ela_defne_erkan.png"].src, - link: "", - }, -]; diff --git a/src/constants/external.js b/src/constants/external.js deleted file mode 100644 index bd223a9..0000000 --- a/src/constants/external.js +++ /dev/null @@ -1,39 +0,0 @@ -import images from "./optimizedImages"; - -export const External = [ - { - key: 1, - name: "Sadie Scott", - title: "External Director", - image: images["team/leadership/2027/sadie-scott.jpg"].src, - link: "", - }, - { - key: 2, - name: "Jubilee Yul", - title: "External Director", - image: images["team/leadership/2027/jubilee-yul.jpg"].src, - link: "", - }, - { - key: 3, - name: "Shayla Kumaresan", - title: "External Member", - image: images["team/external/shayla-kumaresan-headshot.jpg"].src, - link: "", - }, - { - key: 4, - name: "Luisa Chen", - title: "External Member", - image: images["team/operations/luisa-chen.png"].src, - link: "", - }, - { - key: 5, - name: "Kayla Wai", - title: "External Member", - image: images["team/operations/kayla-wai.jpg"].src, - link: "", - }, -]; diff --git a/src/constants/faq.js b/src/constants/faq.js deleted file mode 100644 index f99bfb4..0000000 --- a/src/constants/faq.js +++ /dev/null @@ -1,68 +0,0 @@ -export const FAQS = [ - { - key: 1, - question: "I'm still interested in attending but registration is closed! Can I still attend?", - answer: "Yes you can! Just fill out all of the waivers under the \"Waivers\" section below and email them to us at exploretechla@cs.ucla.edu ASAP so we can get you registered!", - note: "", - }, { - key: 2, - question: "Is there a registration fee? Are there any associated costs with the program (i.e: need to pay for an account on the virtual platform?)", - answer: "This event is completely free for all attendees! All you will need is a computer and stable internet to access the event.", - note: "", - }, { - key: 3, - question: "What prior background is needed?", - answer: "No experience needed! This event is meant to help you explore the different fields of CS and tech!", - note: "", - }, { - key: 4, - question: "When does the event start/end?", - answer: "The Opening Ceremony will begin at 9AM and the Closing Ceremony will begin at 1:00PM. Refer to the program for more schedule info!", - note: "", - }, { - key: 5, - question: "How does the raffle work?", - answer: "Workshops will give 1 ticket to students if they ask a good question or complete some activity. Panels will also give 1 ticket to all students who attend. Hold onto your ticket until the Closing Ceremony, where a raffle will be held and prizes will be given!", - note: "", - }, { - key: 6, - question: "Where is bus pick-up?", - answer: "Bus pick-up will be at the same place as the drop-off area (across Intramural Field) as detailed in the logistics packet sent to your school.", - note: "", - }, { - key: 7, - question: "How many high school students and how many high schools are participating in our events today?", - answer: "There are 8 schools with a total of 371 students! Woo!", - note: "", - }, { - key: 8, - question: "How does the mentorship session + lunch work?", - answer: "Each student’s wristband has a number on it indicating which mentor group they are in. Mentors will hold up a sign with their group number on it and students will find their mentors accordingly. Mentor groups will take turns getting lunch and they can use any space in the AGB (around the chairs/on the floor/etc) to gather around and start the mentorship session.", - note: "Group 3 students will start finding their mentors 15 minutes prior to the end of Session 3 and will get their lunch first.", - }, { - key: 9, - question: "Can students go to any workshop they want to?", - answer: "Yes! However, some workshops are limited by room size/workshop material capacity so they will be closed once capacity is reached on a first-come, first-served basis, and students will be directed to other workshops instead.", - note: "", - }, { - key: 10, - question: "Are there restrooms in the venue?", - answer: "Restrooms are on the third floor of Ackerman Union.", - note: "", - }, { - key: 12, - question: "Who is organizing this event?", - answer: "This event is being organized by exploretech.la, a group of UCLA undergraduate students! Learn more about us on our website!", - note: "", - }, { - key: 13, - question: "What are the raffle prizes?", - answer: "3 big prizes (including airpods!) are being given out during the Closing Ceremony, while additional digital prizes will be awarded to students who fill out the Feedback Survey.", - note: "", - }, { - key: 14, - question: "How many students are at UCLA?", - answer: "There are over 40,000 students at UCLA", - note: "", - }, -] \ No newline at end of file diff --git a/src/constants/leadership.js b/src/constants/leadership.js deleted file mode 100644 index 58ba8f1..0000000 --- a/src/constants/leadership.js +++ /dev/null @@ -1,102 +0,0 @@ -import images from "./optimizedImages"; - -export const Leadership = [ - { - key: 1, - name: "Spoorthy Nalumachu", - title: "Executive Director", - image: images["team/leadership/2027/spoorthy-nalumachu.jpg"].src, - link: "https://www.linkedin.com/in/spoorthy-nalumachu", - }, - { - key: 2, - name: "Clara Zhang", - title: "Executive Director", - image: images["team/leadership/2027/clara-zhang.jpg"].src, - link: "https://www.linkedin.com/in/clara-zhang-009497197/", - }, - { - key: 3, - name: "Annika Renganathan", - title: "External Advisor", - image: images["team/leadership/annika-renganathan.jpg"].src, - link: "https://www.linkedin.com/in/annika-renganathan-b437022b9", - }, - { - key: 4, - name: "Shaina Grover", - title: "Content Advisor", - image: images["team/leadership/shaina-grover.jpg"].src, - link: "https://www.linkedin.com/in/shaina-grover", - }, - { - key: 5, - name: "Sandra Pan", - title: "Design Advisor", - image: images["team/leadership/sandra-pan.jpg"].src, - link: "https://www.linkedin.com/in/sandra-pan-b994802aa", - }, - { - key: 6, - name: "Eli Drewry", - title: "Content Director", - image: images["team/leadership/2027/eli-drewry.jpg"].src, - link: "", - }, - { - key: 7, - name: "Matthew Chen", - title: "Content Director", - image: images["team/leadership/2027/matthew-chen.jpg"].src, - link: "", - }, - { - key: 8, - name: "Isabelle Chang", - title: "Design Director & UI/UX Design Lead", - image: images["team/design/isabelle-chang.png"].src, - link: "", - }, - { - key: 9, - name: "Sarah Zhao", - title: "Design Director", - image: images["team/leadership/2027/sarah-zhao.jpg"].src, - link: "", - }, - { - key: 10, - name: "Eric Chen", - title: "Operations Director", - image: images["team/leadership/2027/eric-chen.jpg"].src, - link: "", - }, - { - key: 11, - name: "Christina Uong", - title: "Operations Director", - image: images["team/leadership/2027/christina-uong.jpg"].src, - link: "", - }, - { - key: 12, - name: "Sadie Scott", - title: "External Director", - image: images["team/leadership/2027/sadie-scott.jpg"].src, - link: "", - }, - { - key: 13, - name: "Jubilee Yul", - title: "External Director", - image: images["team/leadership/2027/jubilee-yul.jpg"].src, - link: "", - }, - { - key: 14, - name: "Benjamin Garcia", - title: "Web Dev Lead", - image: images["team/content/benjamin-garcia.jpg"].src, - link: "", - }, -]; diff --git a/src/constants/marketing.js b/src/constants/marketing.js deleted file mode 100644 index d796158..0000000 --- a/src/constants/marketing.js +++ /dev/null @@ -1,11 +0,0 @@ -import images from "./optimizedImages"; - -export const Marketing = [ - { - key: 1, - name: "Luisa Chen", - title: "Marketing Member", - image: images["team/operations/luisa-chen.png"].src, - link: "", - }, -]; diff --git a/src/constants/navigation.js b/src/constants/navigation.js deleted file mode 100644 index a6de640..0000000 --- a/src/constants/navigation.js +++ /dev/null @@ -1,80 +0,0 @@ -export const homeNavItems = [ - { - key: 1, - name: "About", - href: "#about", - }, { - key: 2, - name: "Get Involved", - href: "#get-involved", - }, { - key: 3, - name: "Speakers", - href: "#speakers", - }, { - key: 4, - name: "Sponsors", - href: "#sponsors", - }, { - key: 5, - name: "Our Team", - href: "/our_team", - }, { - key: 6, - name: "Resources", - href: '/resources', - }, - { - key: 7, - name: "Ignite", - href: "/ignite" - } -] - -export const ourTeamNavItems = [ - { - key: 1, - name: "Home", - href: "/", - }, { - key: 2, - name: "Leadership", - href: "#leadership", - }, { - key: 3, - name: "Content", - href: "#content", - }, { - key: 4, - name: "Design", - href: "#design", - }, { - key: 5, - name: "External", - href: "#external", - }, { - key: 6, - name: "Operations", - href: "#operations", - }, { - key: 7, - name: "Resources", - href: "/resources", - } -] - -export const resourcesNavItems = [ - { - key: 1, - name: "Home", - href: "/", - }, { - key: 2, - name: "Our Team", - href: "/our_team", - }, { - key: 3, - name: "Resources", - href: "/resources", - }, -] \ No newline at end of file diff --git a/src/constants/operations.js b/src/constants/operations.js deleted file mode 100644 index b532a12..0000000 --- a/src/constants/operations.js +++ /dev/null @@ -1,39 +0,0 @@ -import images from "./optimizedImages"; - -export const Operations = [ - { - key: 1, - name: "Eric Chen", - title: "Operations Director", - image: images["team/leadership/2027/eric-chen.jpg"].src, - link: "", - }, - { - key: 2, - name: "Christina Uong", - title: "Operations Director", - image: images["team/leadership/2027/christina-uong.jpg"].src, - link: "", - }, - { - key: 3, - name: "Angeleena Poothavelil", - title: "Operations Member", - image: images["team/operations/angeleena-poothavelil.png"].src, - link: "", - }, - { - key: 4, - name: "Aansh Singh", - title: "Operations Member", - image: images["team/operations/aansh-singh.jpeg"].src, - link: "", - }, - { - key: 5, - name: "Esther Yao", - title: "Operations Member", - image: images["team/operations/esther-yao-headshot.jpg"].src, - link: "", - }, -]; diff --git a/src/constants/optimizedImages.js b/src/constants/optimizedImages.ts similarity index 55% rename from src/constants/optimizedImages.js rename to src/constants/optimizedImages.ts index 9973ceb..e3ef45d 100644 --- a/src/constants/optimizedImages.js +++ b/src/constants/optimizedImages.ts @@ -3,97 +3,97 @@ // Optimized WebP variants keyed by the ORIGINAL src/static-relative path. // Each value spreads straight onto a native : // -// import images from "constants/optimizedImages"; +// import images from "../constants/optimizedImages"; // Sandra Pan // // Regenerate with `npm run images` after editing scripts/image-sources.json. -import img_images_banner_1280w from "static/optimized/images/banner-1280w.webp"; -import img_images_banner_1920w from "static/optimized/images/banner-1920w.webp"; -import img_images_banner_640w from "static/optimized/images/banner-640w.webp"; -import img_images_demo_microsoft_vr_1280w from "static/optimized/images/demo-microsoft-vr-1280w.webp"; -import img_images_demo_microsoft_vr_640w from "static/optimized/images/demo-microsoft-vr-640w.webp"; -import img_images_explore_tech_2022_1280w from "static/optimized/images/explore-tech-2022-1280w.webp"; -import img_images_explore_tech_2022_640w from "static/optimized/images/explore-tech-2022-640w.webp"; -import img_images_ignite_ML_1052w from "static/optimized/images/ignite/ML-1052w.webp"; -import img_images_ignite_ML_640w from "static/optimized/images/ignite/ML-640w.webp"; -import img_images_ignite_PXL_20250215_212102361_MP_1280w from "static/optimized/images/ignite/PXL_20250215_212102361.MP-1280w.webp"; -import img_images_ignite_PXL_20250215_212102361_MP_640w from "static/optimized/images/ignite/PXL_20250215_212102361.MP-640w.webp"; -import img_images_ignite_cllab2_1280w from "static/optimized/images/ignite/cllab2-1280w.webp"; -import img_images_ignite_cllab2_640w from "static/optimized/images/ignite/cllab2-640w.webp"; -import img_images_ignite_collab1_1280w from "static/optimized/images/ignite/collab1-1280w.webp"; -import img_images_ignite_collab1_640w from "static/optimized/images/ignite/collab1-640w.webp"; -import img_images_ignite_gamdev_1280w from "static/optimized/images/ignite/gamdev-1280w.webp"; -import img_images_ignite_gamdev_640w from "static/optimized/images/ignite/gamdev-640w.webp"; -import img_images_ignite_gamedevroblox_1280w from "static/optimized/images/ignite/gamedevroblox-1280w.webp"; -import img_images_ignite_gamedevroblox_640w from "static/optimized/images/ignite/gamedevroblox-640w.webp"; -import img_images_ignite_python_1280w from "static/optimized/images/ignite/python-1280w.webp"; -import img_images_ignite_python_640w from "static/optimized/images/ignite/python-640w.webp"; -import img_images_ignite_webdev_1280w from "static/optimized/images/ignite/webdev-1280w.webp"; -import img_images_ignite_webdev_640w from "static/optimized/images/ignite/webdev-640w.webp"; -import img_images_speaker_connie_1280w from "static/optimized/images/speaker-connie-1280w.webp"; -import img_images_speaker_connie_640w from "static/optimized/images/speaker-connie-640w.webp"; -import img_images_taboola_booth_1280w from "static/optimized/images/taboola-booth-1280w.webp"; -import img_images_taboola_booth_640w from "static/optimized/images/taboola-booth-640w.webp"; -import img_images_teals_vr_640w from "static/optimized/images/teals-vr-640w.webp"; -import img_images_teals_vr_721w from "static/optimized/images/teals-vr-721w.webp"; -import img_images_workshop_audience_1280w from "static/optimized/images/workshop-audience-1280w.webp"; -import img_images_workshop_audience_640w from "static/optimized/images/workshop-audience-640w.webp"; -import img_images_workshop_dev_tools_1280w from "static/optimized/images/workshop-dev-tools-1280w.webp"; -import img_images_workshop_dev_tools_640w from "static/optimized/images/workshop-dev-tools-640w.webp"; -import img_images_workshop_kaylie_1280w from "static/optimized/images/workshop-kaylie-1280w.webp"; -import img_images_workshop_kaylie_640w from "static/optimized/images/workshop-kaylie-640w.webp"; -import img_images_workshop_scratch_1280w from "static/optimized/images/workshop-scratch-1280w.webp"; -import img_images_workshop_scratch_640w from "static/optimized/images/workshop-scratch-640w.webp"; -import img_speakers_alfredo_ayala_320w from "static/optimized/speakers/alfredo-ayala-320w.webp"; -import img_speakers_carey_nachenberg_320w from "static/optimized/speakers/carey-nachenberg-320w.webp"; -import img_speakers_jayathi_murthy_320w from "static/optimized/speakers/jayathi-murthy-320w.webp"; -import img_speakers_justin_brezhnev_320w from "static/optimized/speakers/justin-brezhnev-320w.webp"; -import img_speakers_nick_corral_320w from "static/optimized/speakers/nick-corral-320w.webp"; -import img_speakers_ruth_johnson_320w from "static/optimized/speakers/ruth-johnson-320w.webp"; -import img_speakers_solomon_russell_200w from "static/optimized/speakers/solomon-russell-200w.webp"; -import img_speakers_tyler_menezes_320w from "static/optimized/speakers/tyler-menezes-320w.webp"; -import img_sponsors_balsamiq_192w from "static/optimized/sponsors/balsamiq-192w.webp"; -import img_sponsors_balsamiq_384w from "static/optimized/sponsors/balsamiq-384w.webp"; -import img_sponsors_cloud_girls_192w from "static/optimized/sponsors/cloud-girls-192w.webp"; -import img_sponsors_cloud_girls_384w from "static/optimized/sponsors/cloud-girls-384w.webp"; -import img_sponsors_disney_192w from "static/optimized/sponsors/disney-192w.webp"; -import img_sponsors_disney_384w from "static/optimized/sponsors/disney-384w.webp"; -import img_sponsors_google_logo_256w from "static/optimized/sponsors/google-logo-256w.webp"; -import img_sponsors_google_logo_512w from "static/optimized/sponsors/google-logo-512w.webp"; -import img_sponsors_northrop_grumman_192w from "static/optimized/sponsors/northrop-grumman-192w.webp"; -import img_sponsors_northrop_grumman_384w from "static/optimized/sponsors/northrop-grumman-384w.webp"; -import img_sponsors_ucla_cs_256w from "static/optimized/sponsors/ucla-cs-256w.webp"; -import img_sponsors_ucla_cs_512w from "static/optimized/sponsors/ucla-cs-512w.webp"; -import img_sponsors_ucla_samueli_engineering_192w from "static/optimized/sponsors/ucla-samueli-engineering-192w.webp"; -import img_sponsors_ucla_samueli_engineering_384w from "static/optimized/sponsors/ucla-samueli-engineering-384w.webp"; -import img_sponsors_yubico_192w from "static/optimized/sponsors/yubico-192w.webp"; -import img_sponsors_yubico_384w from "static/optimized/sponsors/yubico-384w.webp"; -import img_team_content_benjamin_garcia_320w from "static/optimized/team/content/benjamin-garcia-320w.webp"; -import img_team_content_paul_headshot_320w from "static/optimized/team/content/paul-headshot-320w.webp"; -import img_team_content_ridhima_seth_320w from "static/optimized/team/content/ridhima-seth-320w.webp"; -import img_team_content_sofia_matos_320w from "static/optimized/team/content/sofia-matos-320w.webp"; -import img_team_design_ela_defne_erkan_320w from "static/optimized/team/design/ela_defne_erkan-320w.webp"; -import img_team_design_isabelle_chang_320w from "static/optimized/team/design/isabelle-chang-320w.webp"; -import img_team_external_shayla_kumaresan_headshot_320w from "static/optimized/team/external/shayla-kumaresan-headshot-320w.webp"; -import img_team_leadership_2027_christina_uong_320w from "static/optimized/team/leadership/2027/christina-uong-320w.webp"; -import img_team_leadership_2027_clara_zhang_320w from "static/optimized/team/leadership/2027/clara-zhang-320w.webp"; -import img_team_leadership_2027_eli_drewry_320w from "static/optimized/team/leadership/2027/eli-drewry-320w.webp"; -import img_team_leadership_2027_eric_chen_320w from "static/optimized/team/leadership/2027/eric-chen-320w.webp"; -import img_team_leadership_2027_jubilee_yul_320w from "static/optimized/team/leadership/2027/jubilee-yul-320w.webp"; -import img_team_leadership_2027_matthew_chen_320w from "static/optimized/team/leadership/2027/matthew-chen-320w.webp"; -import img_team_leadership_2027_sadie_scott_320w from "static/optimized/team/leadership/2027/sadie-scott-320w.webp"; -import img_team_leadership_2027_sarah_zhao_320w from "static/optimized/team/leadership/2027/sarah-zhao-320w.webp"; -import img_team_leadership_2027_spoorthy_nalumachu_320w from "static/optimized/team/leadership/2027/spoorthy-nalumachu-320w.webp"; -import img_team_leadership_annika_renganathan_320w from "static/optimized/team/leadership/annika-renganathan-320w.webp"; -import img_team_leadership_sandra_pan_320w from "static/optimized/team/leadership/sandra-pan-320w.webp"; -import img_team_leadership_shaina_grover_320w from "static/optimized/team/leadership/shaina-grover-320w.webp"; -import img_team_operations_aansh_singh_320w from "static/optimized/team/operations/aansh-singh-320w.webp"; -import img_team_operations_angeleena_poothavelil_320w from "static/optimized/team/operations/angeleena-poothavelil-320w.webp"; -import img_team_operations_esther_yao_headshot_320w from "static/optimized/team/operations/esther-yao-headshot-320w.webp"; -import img_team_operations_joy_szeto_headshot_320w from "static/optimized/team/operations/joy-szeto-headshot-320w.webp"; -import img_team_operations_kayla_wai_320w from "static/optimized/team/operations/kayla-wai-320w.webp"; -import img_team_operations_luisa_chen_320w from "static/optimized/team/operations/luisa-chen-320w.webp"; +import img_images_banner_1280w from "../static/optimized/images/banner-1280w.webp"; +import img_images_banner_1920w from "../static/optimized/images/banner-1920w.webp"; +import img_images_banner_640w from "../static/optimized/images/banner-640w.webp"; +import img_images_demo_microsoft_vr_1280w from "../static/optimized/images/demo-microsoft-vr-1280w.webp"; +import img_images_demo_microsoft_vr_640w from "../static/optimized/images/demo-microsoft-vr-640w.webp"; +import img_images_explore_tech_2022_1280w from "../static/optimized/images/explore-tech-2022-1280w.webp"; +import img_images_explore_tech_2022_640w from "../static/optimized/images/explore-tech-2022-640w.webp"; +import img_images_ignite_ML_1052w from "../static/optimized/images/ignite/ML-1052w.webp"; +import img_images_ignite_ML_640w from "../static/optimized/images/ignite/ML-640w.webp"; +import img_images_ignite_PXL_20250215_212102361_MP_1280w from "../static/optimized/images/ignite/PXL_20250215_212102361.MP-1280w.webp"; +import img_images_ignite_PXL_20250215_212102361_MP_640w from "../static/optimized/images/ignite/PXL_20250215_212102361.MP-640w.webp"; +import img_images_ignite_cllab2_1280w from "../static/optimized/images/ignite/cllab2-1280w.webp"; +import img_images_ignite_cllab2_640w from "../static/optimized/images/ignite/cllab2-640w.webp"; +import img_images_ignite_collab1_1280w from "../static/optimized/images/ignite/collab1-1280w.webp"; +import img_images_ignite_collab1_640w from "../static/optimized/images/ignite/collab1-640w.webp"; +import img_images_ignite_gamdev_1280w from "../static/optimized/images/ignite/gamdev-1280w.webp"; +import img_images_ignite_gamdev_640w from "../static/optimized/images/ignite/gamdev-640w.webp"; +import img_images_ignite_gamedevroblox_1280w from "../static/optimized/images/ignite/gamedevroblox-1280w.webp"; +import img_images_ignite_gamedevroblox_640w from "../static/optimized/images/ignite/gamedevroblox-640w.webp"; +import img_images_ignite_python_1280w from "../static/optimized/images/ignite/python-1280w.webp"; +import img_images_ignite_python_640w from "../static/optimized/images/ignite/python-640w.webp"; +import img_images_ignite_webdev_1280w from "../static/optimized/images/ignite/webdev-1280w.webp"; +import img_images_ignite_webdev_640w from "../static/optimized/images/ignite/webdev-640w.webp"; +import img_images_speaker_connie_1280w from "../static/optimized/images/speaker-connie-1280w.webp"; +import img_images_speaker_connie_640w from "../static/optimized/images/speaker-connie-640w.webp"; +import img_images_taboola_booth_1280w from "../static/optimized/images/taboola-booth-1280w.webp"; +import img_images_taboola_booth_640w from "../static/optimized/images/taboola-booth-640w.webp"; +import img_images_teals_vr_640w from "../static/optimized/images/teals-vr-640w.webp"; +import img_images_teals_vr_721w from "../static/optimized/images/teals-vr-721w.webp"; +import img_images_workshop_audience_1280w from "../static/optimized/images/workshop-audience-1280w.webp"; +import img_images_workshop_audience_640w from "../static/optimized/images/workshop-audience-640w.webp"; +import img_images_workshop_dev_tools_1280w from "../static/optimized/images/workshop-dev-tools-1280w.webp"; +import img_images_workshop_dev_tools_640w from "../static/optimized/images/workshop-dev-tools-640w.webp"; +import img_images_workshop_kaylie_1280w from "../static/optimized/images/workshop-kaylie-1280w.webp"; +import img_images_workshop_kaylie_640w from "../static/optimized/images/workshop-kaylie-640w.webp"; +import img_images_workshop_scratch_1280w from "../static/optimized/images/workshop-scratch-1280w.webp"; +import img_images_workshop_scratch_640w from "../static/optimized/images/workshop-scratch-640w.webp"; +import img_speakers_alfredo_ayala_320w from "../static/optimized/speakers/alfredo-ayala-320w.webp"; +import img_speakers_carey_nachenberg_320w from "../static/optimized/speakers/carey-nachenberg-320w.webp"; +import img_speakers_jayathi_murthy_320w from "../static/optimized/speakers/jayathi-murthy-320w.webp"; +import img_speakers_justin_brezhnev_320w from "../static/optimized/speakers/justin-brezhnev-320w.webp"; +import img_speakers_nick_corral_320w from "../static/optimized/speakers/nick-corral-320w.webp"; +import img_speakers_ruth_johnson_320w from "../static/optimized/speakers/ruth-johnson-320w.webp"; +import img_speakers_solomon_russell_200w from "../static/optimized/speakers/solomon-russell-200w.webp"; +import img_speakers_tyler_menezes_320w from "../static/optimized/speakers/tyler-menezes-320w.webp"; +import img_sponsors_balsamiq_192w from "../static/optimized/sponsors/balsamiq-192w.webp"; +import img_sponsors_balsamiq_384w from "../static/optimized/sponsors/balsamiq-384w.webp"; +import img_sponsors_cloud_girls_192w from "../static/optimized/sponsors/cloud-girls-192w.webp"; +import img_sponsors_cloud_girls_384w from "../static/optimized/sponsors/cloud-girls-384w.webp"; +import img_sponsors_disney_192w from "../static/optimized/sponsors/disney-192w.webp"; +import img_sponsors_disney_384w from "../static/optimized/sponsors/disney-384w.webp"; +import img_sponsors_google_logo_256w from "../static/optimized/sponsors/google-logo-256w.webp"; +import img_sponsors_google_logo_512w from "../static/optimized/sponsors/google-logo-512w.webp"; +import img_sponsors_northrop_grumman_192w from "../static/optimized/sponsors/northrop-grumman-192w.webp"; +import img_sponsors_northrop_grumman_384w from "../static/optimized/sponsors/northrop-grumman-384w.webp"; +import img_sponsors_ucla_cs_256w from "../static/optimized/sponsors/ucla-cs-256w.webp"; +import img_sponsors_ucla_cs_512w from "../static/optimized/sponsors/ucla-cs-512w.webp"; +import img_sponsors_ucla_samueli_engineering_192w from "../static/optimized/sponsors/ucla-samueli-engineering-192w.webp"; +import img_sponsors_ucla_samueli_engineering_384w from "../static/optimized/sponsors/ucla-samueli-engineering-384w.webp"; +import img_sponsors_yubico_192w from "../static/optimized/sponsors/yubico-192w.webp"; +import img_sponsors_yubico_384w from "../static/optimized/sponsors/yubico-384w.webp"; +import img_team_content_benjamin_garcia_320w from "../static/optimized/team/content/benjamin-garcia-320w.webp"; +import img_team_content_paul_headshot_320w from "../static/optimized/team/content/paul-headshot-320w.webp"; +import img_team_content_ridhima_seth_320w from "../static/optimized/team/content/ridhima-seth-320w.webp"; +import img_team_content_sofia_matos_320w from "../static/optimized/team/content/sofia-matos-320w.webp"; +import img_team_design_ela_defne_erkan_320w from "../static/optimized/team/design/ela_defne_erkan-320w.webp"; +import img_team_design_isabelle_chang_320w from "../static/optimized/team/design/isabelle-chang-320w.webp"; +import img_team_external_shayla_kumaresan_headshot_320w from "../static/optimized/team/external/shayla-kumaresan-headshot-320w.webp"; +import img_team_leadership_2027_christina_uong_320w from "../static/optimized/team/leadership/2027/christina-uong-320w.webp"; +import img_team_leadership_2027_clara_zhang_320w from "../static/optimized/team/leadership/2027/clara-zhang-320w.webp"; +import img_team_leadership_2027_eli_drewry_320w from "../static/optimized/team/leadership/2027/eli-drewry-320w.webp"; +import img_team_leadership_2027_eric_chen_320w from "../static/optimized/team/leadership/2027/eric-chen-320w.webp"; +import img_team_leadership_2027_jubilee_yul_320w from "../static/optimized/team/leadership/2027/jubilee-yul-320w.webp"; +import img_team_leadership_2027_matthew_chen_320w from "../static/optimized/team/leadership/2027/matthew-chen-320w.webp"; +import img_team_leadership_2027_sadie_scott_320w from "../static/optimized/team/leadership/2027/sadie-scott-320w.webp"; +import img_team_leadership_2027_sarah_zhao_320w from "../static/optimized/team/leadership/2027/sarah-zhao-320w.webp"; +import img_team_leadership_2027_spoorthy_nalumachu_320w from "../static/optimized/team/leadership/2027/spoorthy-nalumachu-320w.webp"; +import img_team_leadership_annika_renganathan_320w from "../static/optimized/team/leadership/annika-renganathan-320w.webp"; +import img_team_leadership_sandra_pan_320w from "../static/optimized/team/leadership/sandra-pan-320w.webp"; +import img_team_leadership_shaina_grover_320w from "../static/optimized/team/leadership/shaina-grover-320w.webp"; +import img_team_operations_aansh_singh_320w from "../static/optimized/team/operations/aansh-singh-320w.webp"; +import img_team_operations_angeleena_poothavelil_320w from "../static/optimized/team/operations/angeleena-poothavelil-320w.webp"; +import img_team_operations_esther_yao_headshot_320w from "../static/optimized/team/operations/esther-yao-headshot-320w.webp"; +import img_team_operations_joy_szeto_headshot_320w from "../static/optimized/team/operations/joy-szeto-headshot-320w.webp"; +import img_team_operations_kayla_wai_320w from "../static/optimized/team/operations/kayla-wai-320w.webp"; +import img_team_operations_luisa_chen_320w from "../static/optimized/team/operations/luisa-chen-320w.webp"; const images = { "images/banner.png": { diff --git a/src/constants/panelists.js b/src/constants/panelists.js deleted file mode 100644 index 7edfec5..0000000 --- a/src/constants/panelists.js +++ /dev/null @@ -1,39 +0,0 @@ -export const PANELS = [ - { - key: 1, - name: "Diversity 101", - panelists: [ - { - name: "Danielle Jaffe", - image: "", - description: "Daniel (he/him) is a 3rd-year transfer student at UCLA studying Computer Science after an extensive career in the television industry, including roles at Hell’s Kitchen and The Bachelorette! Ask him about working at NASA, Viasat, or transitioning into CS from another field.", - }, { - name: "Evan Zhong", - image: "", - description: "Evan (he/him) is a 3rd-year Computer Science student at UCLA. Ask him what Computer Vision is, how to get involved with CS research, and landing an internship at Facebook/Meta!", - }, { - name: "Colleen Li", - image: "", - description: "Colleen (she/her) is a 3rd-year Cognitive Science student at UCLA with a specialization in coding. Ask her what Product Design is, how she landed her summer internships at Slack and Salesforce, and her experience as a woman in STEM!", - } - ] - }, { - key: 2, - name: "Careers in CS", - panelists: [ - { - name: "Daniel Jaffe", - image: "", - description: "Daniel (he/him) is a 3rd-year transfer student at UCLA studying Computer Science after an extensive career in the television industry, including roles at Hell’s Kitchen and The Bachelorette! Ask him about working at NASA, Viasat, or transitioning into CS from another field.", - }, { - name: "Evan Zhong", - image: "", - description: "Evan (he/him) is a 3rd-year Computer Science student at UCLA. Ask him what Computer Vision is, how to get involved with CS research, and landing an internship at Facebook/Meta!", - }, { - name: "Colleen Li", - image: "", - description: "Colleen (she/her) is a 3rd-year Cognitive Science student at UCLA with a specialization in coding. Ask her what Product Design is, how she landed her summer internships at Slack and Salesforce, and her experience as a woman in STEM!", - } - ] - } -] \ No newline at end of file diff --git a/src/constants/schedule.js b/src/constants/schedule.js deleted file mode 100644 index 76d8666..0000000 --- a/src/constants/schedule.js +++ /dev/null @@ -1,27 +0,0 @@ -export const SCHEDULE = [ - { - key: 1, - name: "Opening Ceremony", - time: "9:00AM - 9:30AM", - }, { - key: 2, - name: "Session 1", - time: "9:30AM - 10:15AM", - }, { - key: 3, - name: "Session 2", - time: "10:30AM - 11:15AM", - }, { - key: 4, - name: "Session 3", - time: "11:30AM - 12:15PM", - }, { - key: 5, - name: "Lunch with a Mentor", - time: "12:15PM - 1:00PM", - }, { - key: 6, - name: "Closing Ceremony", - time: "1:00PM - 1:30PM", - }, -] \ No newline at end of file diff --git a/src/constants/speakers.js b/src/constants/speakers.js deleted file mode 100644 index 7640387..0000000 --- a/src/constants/speakers.js +++ /dev/null @@ -1,54 +0,0 @@ -import images from "./optimizedImages"; - -export const CurrentSpeakers = []; - -export const PastSpeakers = [ - { - name: "Alfredo Ayala", - title: "Walt Disney Executive R&D Imagineer at Walt Disney Imagineering", - image: images["speakers/alfredo-ayala.jpg"].src, - link: "https://www.linkedin.com/in/alfredo-ayala-b0094426/", - }, - { - name: "Carey Nachenberg", - title: "Adjunct Professor at UCLA, Principal SWE Lyft Level 5", - image: images["speakers/carey-nachenberg.png"].src, - link: "https://www.linkedin.com/in/carey-nachenberg-14bbb03/", - }, - { - name: "Jayathi Murthy", - title: "Dean, UCLA Samueli School of Engineering", - image: images["speakers/jayathi-murthy.png"].src, - link: "https://samueli.ucla.edu/jayathi-y-murthy/", - }, - { - name: "Justin Brezhnev", - title: "President & CEO, Hacker Fund", - image: images["speakers/justin-brezhnev.png"].src, - link: "https://www.linkedin.com/in/brezh/", - }, - { - name: "Tyler Menezes", - title: "Executive Director, CodeDay", - image: images["speakers/tyler-menezes.png"].src, - link: "https://www.linkedin.com/in/tylermenezes/", - }, - { - name: "Solomon Russell", - title: "Assistant Professor, El Camino College", - image: images["speakers/solomon-russell.jpeg"].src, - link: "https://www.linkedin.com/in/solomon-russell-220aa014/", - }, - { - name: "Ruth Johnson", - title: "Computer Science PhD Student, UCLA", - image: images["speakers/ruth-johnson.jpeg"].src, - link: "https://www.linkedin.com/in/ruthjohnson13/", - }, - { - name: "Nick Corral", - title: "Techincal Program Manager, Oculus", - image: images["speakers/nick-corral.jpg"].src, - link: "https://www.linkedin.com/in/nick-corral-595723106/", - }, -]; diff --git a/src/constants/webdev.js b/src/constants/webdev.js deleted file mode 100644 index 3833d3b..0000000 --- a/src/constants/webdev.js +++ /dev/null @@ -1,59 +0,0 @@ -import images from "./optimizedImages"; - -export const WebDev = [ - { - key: 1, - name: "Benjamin Garcia", - title: "Web Dev Lead", - image: images["team/content/benjamin-garcia.jpg"].src, - link: "", - }, - { - key: 2, - name: "Shayla Kumaresan", - title: "Web Dev Member", - image: images["team/external/shayla-kumaresan-headshot.jpg"].src, - link: "", - }, - { - key: 3, - name: "Aansh Singh", - title: "Web Dev Member", - image: images["team/operations/aansh-singh.jpeg"].src, - link: "", - }, - { - key: 4, - name: "Paul Macapinlac", - title: "Web Dev Member", - image: images["team/content/paul-headshot.png"].src, - link: "", - }, - { - key: 5, - name: "Angeleena Poothavelil", - title: "Web Dev Member", - image: images["team/operations/angeleena-poothavelil.png"].src, - link: "", - }, - { - key: 6, - name: "Isabelle Chang", - title: "UI/UX Design Lead", - image: images["team/design/isabelle-chang.png"].src, - link: "", - }, - { - key: 7, - name: "Ela Defne Erkan", - title: "UI/UX Designer", - image: images["team/design/ela_defne_erkan.png"].src, - link: "", - }, - { - key: 8, - name: "Allison Gao", - title: "UI/UX Designer", - link: "", - }, -]; diff --git a/src/constants/workshops.js b/src/constants/workshops.js deleted file mode 100644 index f0654d9..0000000 --- a/src/constants/workshops.js +++ /dev/null @@ -1,408 +0,0 @@ -import coding101Logo from "static/workshop-logos/coding-101.png"; -import bioinformaticsLogo from "static/workshop-logos/bioinformatics.png"; -import uiUxLogo from "static/workshop-logos/ui-ux.png"; -import iotLogo from "static/workshop-logos/iot.png"; -import nftBlockchainLogo from "static/workshop-logos/nft-blockchain.png"; -import pearDeckLogo from "static/workshop-logos/pear-deck.png"; -import computerVisionLogo from "static/workshop-logos/computer-vision.png"; -import webDevLogo from "static/workshop-logos/web-dev.png"; -import aiMlLogo from "static/workshop-logos/ai-ml.png"; -import diversity101Logo from "static/workshop-logos/diversity-101.png"; -import passwordSecurityLogo from "static/workshop-logos/password-security.png"; -import cryptographyLogo from "static/workshop-logos/cryptography.png"; -import arVrLogo from "static/workshop-logos/ar-vr.png"; -import gameDevLogo from "static/workshop-logos/game-dev.png"; -import pythonTurtlesLogo from "static/workshop-logos/python-turtles.png"; -import nlpLogo from "static/workshop-logos/nlp.png"; -import careersInCsLogo from "static/workshop-logos/careers-in-cs.png"; -import yoshinoGotoPhoto from "static/panelists/yoshino-goto.png"; -import christineKimPhoto from "static/panelists/christine-kim.png"; -import ingridTienPhoto from "static/panelists/ingrid-tien.png"; -import sydneySavagePhoto from "static/panelists/sydney-savage.png"; -import danielJaffePhoto from "static/panelists/daniel-jaffe.png"; -import henryTrinhPhoto from "static/panelists/henry-trinh.png"; -import colleenLiPhoto from "static/panelists/colleen-li.png"; -import evanZhongPhoto from "static/panelists/evan-zhong.png"; - -const WORKSHOPS_ALL = [ - { - key: 1, - name: "Coding 101", - logo: coding101Logo, - session: "Session 1", - location: "Room 2408", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/1Ua_oBxXy5mz5YjPCWCi3zxClVDzKQOyqTaOnrj3ITe8/edit?usp=sharing", - }, - { - name: "Station 1", - link: "https://scratch.mit.edu/projects/638101091", - }, - { - name: "Station 2", - link: "https://scratch.mit.edu/projects/648458946/", - }, - { - name: "Station 3", - link: "https://scratch.mit.edu/projects/638136677/", - }, - { - name: "Station 4", - link: "https://scratch.mit.edu/projects/648389443/", - }, - { - name: "Station 5 (bonus)", - link: "https://scratch.mit.edu/projects/650445764/", - }, - ], - }, - { - key: 2, - name: "Are You Related to a Strawberry?", - logo: bioinformaticsLogo, - session: "Session 1", - location: "Room 2412", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/167XxMzyj2Zlx3UCcJCajfznXUzEYzhp_mRFxMZ1nq2U/edit?usp=sharing", - }, - { - name: "Strawberry DNA Activity", - link: "https://www.genome.gov/Pages/Education/Modules/StrawberryExtractionInstructions.pdf", - }, - { - name: "Bioinformatics Video", - link: "https://www.youtube.com/watch?v=W-Ov2cUaYQY", - }, - { - name: "More About Next Generation Sequencing", - link: "https://www.illumina.com/science/technology/next-generation-sequencing/beginners.html", - }, - ], - }, - { - key: 3, - name: "UI/UX", - logo: uiUxLogo, - session: "Session 1", - location: "Room 3508", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/1xvJgQ2KqWKiCEmYr3Ea0IMGcjpHNSTecKWG_VTcq-mM/edit?usp=sharing", - }, - ], - }, - { - key: 4, - name: "Internet of Things", - logo: iotLogo, - session: "Session 1", - location: "Room 3517", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/1sYEp47_nqLz-8BqVgSwz1DlkoS_uwpBgfIIl4FALN04/edit?usp=sharing", - }, - { - name: "Resources", - link: "https://docs.google.com/document/d/1nWZPfzaNvEq43ZflmGaHD_suWqYXZCwdcN1rzxLRo6o/edit?usp=sharing", - }, - ], - }, - { - key: 5, - name: "Inside Blockchain", - logo: nftBlockchainLogo, - session: "Session 1", - location: "Room BRR", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/1i0ASCMTT1k2pRxd-2ilYqi3E1587Rt5DpHaJcPKU57A/edit?usp=sharing", - }, - { - name: "Resources", - link: "https://docs.google.com/document/d/1Lu7-zxKIxXzutHIE-JI5yiiEO2qU9qlPdDbmw6VLfcM/edit?usp=sharing", - }, - ], - }, - { - key: 6, - name: "Pear Deck", - logo: pearDeckLogo, - session: "Sessions 1 & 2", - location: "Room 3508", - resources: [ - { - name: "Website", - link: "https://www.peardeck.com/?utm_source=google&utm_medium=cpc&utm_campaign=15840444475&utm_content=135652187681&utm_term=Pear%20Deck&aid=573893289485&dev=c&gclid=Cj0KCQjw_4-SBhCgARIsAAlegrVjNPmOjo_iVHT0pINs2J2dObfE1DToD7o1E0uf3-TY1LW5lYJsJtcaAhaQEALw_wcB", - }, - ], - }, - { - key: 7, - name: "Teaching a Computer to See", - logo: computerVisionLogo, - session: "Session 2", - location: "Room 2412", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/1zSx-i_plBCiCC9t8xiD8fm-n2GTK9Zo_widxSmL0ufI/edit?usp=sharing", - }, - { - name: "Resources", - link: "https://docs.google.com/document/d/1w_IW6smjdKwp3nDFL97-UWee2Lib5UV5Ooy5-MVd8fQ/edit?usp=sharing", - }, - ], - }, - { - key: 8, - name: "exploreWeb.la: Intro to Web Dev", - logo: webDevLogo, - session: "Session 2", - location: "Room 2408", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/1OKKO_WLaWZQBqxTG6vVIomwo_JGSlF1sWWBraHu5l44/edit?usp=sharing", - }, - { - name: "Codepen", - link: "https://codepen.io/pen?template=MWOjyeb", - }, - ], - }, - { - key: 9, - name: "Artificial Intelligence and Machine Learning", - logo: aiMlLogo, - session: "Session 2", - location: "Room 3508", - resources: [ - { - name: "Slides", - link: "https://www.hacksplaining.com/exercises/sql-injection#/start", - }, - { - name: "Neural Networks Video", - link: "https://www.youtube.com/watch?v=oV3ZY6tJiA0&t=324s", - }, - { - name: "Learn more about machine learning", - link: "https://github.com/kjaisingh/high-school-guide-to-machine-learning", - }, - { - name: "Self-driving car moral activity", - link: "https://www.moralmachine.net/", - }, - { - name: "More About the Facebook Scandal", - link: "https://www.techrepublic.com/article/facebook-data-privacy-scandal-a-cheat-sheet/", - }, - ], - }, - { - key: 10, - name: "Diversity 101 Panel", - logo: diversity101Logo, - session: "Session 2", - location: "Room 3517", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/1adtKaYiW1GIzEVGnB6r7-h1rJ57uxBQ5yQmhYUMmKp0/edit?usp=sharing", - }, - { - name: "Wordcloud Activity", - link: "https://www.menti.com/4yj9zwxn6p", - }, - { - name: "Resources", - link: "https://docs.google.com/document/d/1exbMLRhw2emX7HhpKa54j_nvonISsXTb-jel7tau6oU/edit?usp=sharing", - }, - ], - }, - { - key: 11, - name: "HacKeD!", - logo: passwordSecurityLogo, - session: "Session 3", - location: "Room 3517", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/1a7RlA6L7_cbLU8lx3anCyUGMBD3xmKp0Zzj0Pkgckps/edit?usp=sharing", - }, - { - name: "Passwords Interactive Activity", - link: "https://passworks.uclaacm.com/", - }, - { - name: "SQL Injection", - link: "https://www.hacksplaining.com/exercises/sql-injection#/start", - }, - ], - }, - { - key: 12, - name: "Spill the Tea with Cryptography!", - logo: cryptographyLogo, - session: "Session 2", - location: "Room BRR", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/1uB5g2TzUee4Ssro2Uu8h0TtPigAdXZQGRNH2S9xEOUE/edit?usp=sharing", - }, - ], - }, - { - key: 13, - name: "Augment Your Reality", - logo: arVrLogo, - session: "Session 3", - location: "Room BRR", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/12pszxNemyy2sJAgxKFg9aZl4ADPBGj_mfeuJs5vkOxM/edit?usp=sharing", - }, - { - name: "Resources", - link: "https://docs.google.com/document/d/1gERLaBktQB6VIhcvfZjr84FGWjtPn7JeSZE7BCkI5Ug/edit?usp=sharing", - }, - ], - }, - { - key: 14, - name: "Game Dev", - logo: gameDevLogo, - session: "Session 3", - location: "Room 2412", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/1zyhW6E3vVFzBytB-aFcW9nb0mZw2MsAHIMcX9lLNMH0/edit?usp=sharing", - }, - ], - }, - { - key: 15, - name: "Python Turtles", - logo: pythonTurtlesLogo, - session: "Session 3", - location: "Room 2408", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/1xfCi4U7kR3-oSFo65zyp0QRPls0LuzV63QaDCvOxXKE/edit?usp=sharing", - }, - { - name: "Resources", - link: "https://docs.google.com/document/d/1K6BEInJ1x5gBkApxqeI1j5Zh6uKeJWKROblz40wzl_M/edit?usp=sharing", - }, - ], - }, - { - key: 16, - name: "Natural Language Processing", - logo: nlpLogo, - session: "Session 3", - location: "Room 3408", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/16LflAJt277QGr_u-XAIf_9aWm4G1vYfHs7d_O5wfJpI/edit?usp=sharing", - }, - { - name: "Resources", - link: "https://docs.google.com/document/d/1ajAsqe11G9DqtYD_u_h1KKq2by2ssFU8VpUOoTfgtsE/edit", - }, - ], - }, - { - key: 17, - name: "Careers in CS Panel", - logo: careersInCsLogo, - session: "Session 3", - location: "Room 2410", - resources: [ - { - name: "Slides", - link: "https://docs.google.com/presentation/d/1OeMMIp4exQBKwLqFuXVBj-C39M20g4W0R40me-vNcVg/edit?usp=sharing", - }, - { - name: "Resources", - link: "https://docs.google.com/document/d/1R-O5r31aqIbyPn5n8EJPRXtFOjMYr91sn6Bg5rRtCJ8/edit?usp=sharing", - }, - ], - }, -]; - -// group every workshop by two -export const WORKSHOPS = WORKSHOPS_ALL.reduce( - (accumulator, currentValue, currentIndex, array) => { - if (currentIndex % 2 === 0) - accumulator.push(array.slice(currentIndex, currentIndex + 2)); - return accumulator; - }, - [], -); - -export const PANELS = [ - { - name: "Diversity 101", - panelists: [ - { - name: "Yoshino Goto", - image: yoshinoGotoPhoto, - link: "https://www.linkedin.com/in/ygoto/", - }, - { - name: "Christine Kim", - image: christineKimPhoto, - link: "https://www.linkedin.com/in/minjeong-christine-kim/", - }, - { - name: "Ingrid Tien", - image: ingridTienPhoto, - link: "https://www.linkedin.com/in/ingrid-tien-8981631a5/", - }, - { - name: "Sydney Savage", - image: sydneySavagePhoto, - link: "https://www.linkedin.com/in/sydney-savage/", - }, - ], - }, - { - name: "Careers in CS", - panelists: [ - { - name: "Daniel Jaffe", - image: danielJaffePhoto, - link: "https://www.linkedin.com/in/dgjaffe/", - }, - { - name: "Henry Trinh", - image: henryTrinhPhoto, - link: "https://www.linkedin.com/in/thenry3/", - }, - { - name: "Colleen Li", - image: colleenLiPhoto, - link: "https://www.linkedin.com/in/colleenli2/", - }, - { - name: "Evan Zhong", - image: evanZhongPhoto, - link: "https://www.linkedin.com/in/evan-zhong/", - }, - ], - }, -]; diff --git a/src/content/events/2021.ts b/src/content/events/2021.ts new file mode 100644 index 0000000..f7f9cf1 --- /dev/null +++ b/src/content/events/2021.ts @@ -0,0 +1,177 @@ +import type { DocumentLink } from "../types"; +import type { ScheduleDay, FaqContent } from "./types"; +import { WAIVER_FORMS, WAIVER_INTRO, WAIVER_NOTE } from "./waivers"; + +/** + * exploretech.la 2021, the virtual event still served at /register. + * It is the only two-day event and the only page with the Socio platform links, + * so it keeps its own shape instead of pretending to be an EventContent. + */ +export interface RegistrationContent { + readonly title: string; + readonly alert: { + readonly heading: string; + readonly note: string; + readonly linkLabel: string; + readonly to: string; + /** Analytics label recorded when the alert link is followed. */ + readonly trackingLabel: string; + }; + readonly schedule: readonly [ScheduleDay, ScheduleDay]; + readonly importantLinks: { + readonly intro: string; + readonly platform: DocumentLink; + readonly documents: readonly DocumentLink[]; + readonly support: { + readonly heading: string; + readonly paragraphs: readonly string[]; + readonly liveHeading: string; + readonly liveBody: string; + readonly zoom: DocumentLink; + readonly hoursLabel: string; + readonly hours: string; + }; + }; + readonly faq: FaqContent; + readonly waivers: { + readonly intro: string; + readonly note: string; + readonly forms: readonly DocumentLink[]; + readonly allFormsHeading: string; + readonly allFormsBody: string; + readonly allForms: DocumentLink; + }; +} + +export const REGISTRATION_2021: RegistrationContent = { + title: "Event Information", + alert: { + heading: "Missed our event? Want to rewatch workshops and panels?", + note: "Checkout our past workshops and resources from previous exploretech.la main events on our Resources Page.", + linkLabel: "exploretech.la Recordings and Resources", + to: "/resources", + trackingLabel: "Resources", + }, + schedule: [ + { + title: "Day 1 (Saturday, April 10th)", + items: [ + { key: 1, time: "9:30 AM", name: "Virtual Platform Opens" }, + { key: 2, time: "10:00 AM", name: "Opening Ceremony" }, + { key: 3, time: "10:30 AM", name: "Session 1" }, + { key: 4, time: "11:40 AM", name: "College Buddy Chat" }, + { key: 5, time: "12:20 PM", name: "Session 2" }, + { key: 6, time: "1:20 PM", name: "Closing Briefing" }, + ], + }, + { + title: "Day 2 (Sunday, April 11th)", + items: [ + { key: 1, time: "9:30 AM", name: "Virtual Platform Opens" }, + { key: 2, time: "10:00 AM", name: "Opening Briefing" }, + { key: 3, time: "10:10 AM", name: "Session 3" }, + { key: 4, time: "11:20 AM", name: "College Buddy Chat" }, + { key: 5, time: "12:00 PM", name: "Session 4" }, + { key: 6, time: "1:00 PM", name: "Closing Ceremony" }, + ], + }, + ], + importantLinks: { + intro: "Below are some of the important links you need for the event!", + platform: { + name: "Socio Virtual Platform Access", + src: "https://tinyurl.com/exploretechla2021", + }, + documents: [ + { + name: "exploretech.la 2021 Program", + src: "https://drive.google.com/file/d/1icRfJae9wy8Kld8qSUxsY0pbsyIu9nh2/view?usp=sharing", + }, + { + name: "Student Event Day Guide", + src: "https://docs.google.com/document/d/14_eHYyuf4V9BnUUEUijrYEYVxUTPfAUFZrey7blTc9s/edit?usp=sharing", + }, + { + name: "Workshop/Panel Schedule", + src: "https://tinyurl.com/contentschedule2021", + }, + ], + support: { + heading: "Event Support", + paragraphs: [ + "If you are experiencing any technical difficulties or have any questions about the event, please first refer to the FAQs below. ", + " If your question is not answered below, please reach out to us at exploretechla@cs.ucla.edu for assistance! ", + ], + liveHeading: "Live Event Day Support", + liveBody: + "For the duration of our event, attendees will be able to join a Zoom meeting (link below) to ask any questions live to an exploretech.la 2021 Staff Member.", + zoom: { + name: "Zoom Help Room Link", + src: "https://tinyurl.com/exploretechla2021help", + }, + hoursLabel: "Zoom Meeting Hours:", + hours: "Saturday and Sunday, 9:30AM to 1:30PM", + }, + }, + faq: { + kind: "registration", + initialOpenKey: 11, + intro: { + heading: "Still interested in attending?", + body: 'If you are still interested in attending, fill out the waivers at the bottom of the page (under "Waivers") and email them to us at exploretechla@cs.ucla.edu ASAP so we can get you registered!', + }, + items: [ + { + key: 11, + question: + "I'm still interested in attending but registration is closed! Can I still attend? ", + answer: + 'Yes you can! Just fill out all of the waivers under the "Waivers" secrtion below and email them to us at exploretechla@cs.ucla.edu ASAP so we can get you registered!', + }, + { + key: 0, + question: + "Is there a registration fee? Are there any associated costs with the program (ie: need to pay for an account on the virtual platform?) ", + answer: + "This event is completely free for all attendees! All you will need is a computer and stable internet to access the event.", + }, + { + key: 1, + question: "What prior background is needed? ", + answer: + "No experience needed! This event is meant to help you explore the different fields of CS and tech!", + }, + { + key: 3, + question: "How would virtual format work? (boxes, platform, etc) ", + answer: + "The event will be hosted completely online. exploretech.boxes will be sent to each attendee (while supplies last) as well as instructions on how to access the virtual platform prior to the event. Attendees will receive more information once registration is closed.", + }, + { + key: 4, + question: "What is an exploretech.box?", + answer: + "An exploretech.box is a box that will hold all of the supplemental workshop materials and swag for the event. We will ship these to our attendees prior to the event. Supplies will be limited, but not having a box will not prevent you from attending our event.", + }, + { + key: 6, + question: "What is the College Buddy Chat?", + answer: + "Each day you will have the opportunity to talk with one to two UCLA undergraduates about their life at UCLA and in STEM. Feel free to ask them any questions you may have about going from high school to college and pursuing a STEM degree!", + }, + ], + }, + waivers: { + intro: WAIVER_INTRO, + note: WAIVER_NOTE, + forms: WAIVER_FORMS, + allFormsHeading: + "All forms can also be found here, in both PDF and Google Docs formats (for easier editing):", + allFormsBody: + "To edit the Google Docs, please make a copy of the waiver into your own Drive and fill it out there. Simply save as PDF to upload to the registration form.", + allForms: { + name: "All Forms (PDFs and Google Docs)", + src: "https://tinyurl.com/exploretechla2021-waivers", + }, + }, +}; diff --git a/src/content/events/2022.ts b/src/content/events/2022.ts new file mode 100644 index 0000000..776b278 --- /dev/null +++ b/src/content/events/2022.ts @@ -0,0 +1,396 @@ +import busRoutes from "../../static/maps/bus_routes.jpg"; +import ackermanUnion2F from "../../static/maps/su_map_ack_2.jpeg"; +import ackermanUnion3F from "../../static/maps/su_map_ack_3.jpeg"; +import wristbands from "../../static/maps/wristband_coordination.png"; +import eventProgram from "../../static/pdf/Event_Program.pdf"; + +import type { EventContent } from "./types"; +import { WAIVER_FORMS } from "./waivers"; + +/** + * exploretech.la 2022, served at /resources. + * Its workshop cards are archived recordings, so every card carries a video facade. + */ +export const EVENT_2022: EventContent = { + year: "2022", + programHref: eventProgram, + schedule: [ + { key: 1, name: "Opening Ceremony", time: "9:00AM - 9:30AM" }, + { key: 2, name: "Session 1", time: "9:30AM - 10:15AM" }, + { key: 3, name: "Session 2", time: "10:30AM - 11:15AM" }, + { key: 4, name: "Session 3", time: "11:30AM - 12:15PM" }, + { key: 5, name: "Lunch with a Mentor", time: "12:15PM - 1:00PM" }, + { key: 6, name: "Closing Ceremony", time: "1:00PM - 1:30PM" }, + ], + maps: [ + { name: "Bus Routes", src: busRoutes }, + { name: "Ackerman Union 2F", src: ackermanUnion2F }, + { name: "Ackerman Union 3F", src: ackermanUnion3F }, + ], + workshopsPlacement: "after-wristbands", + wristbandImage: { src: wristbands, alt: "Wristband coordination" }, + workshops: [ + { + heading: "Workshops", + cards: [ + { + kind: "archivedVideo", + title: "Coding 101", + embedId: "WaZ2bN8t2cc", + caption: "(Session 1 Recording)", + links: [ + { + name: "Session 2 Recording", + src: "https://youtu.be/-NN-O42OleY", + }, + { + name: "Student Guide", + src: "https://docs.google.com/document/d/1ElU9F8cRtpw7QWjIj3QkJsBVG8xmE2Ywpd2b8Gxi75w/edit", + }, + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1sZ5aDpGpKbjd5CuhOd5hTCljncScBwf3m7FWMb6_jd4/edit#slide=id.gbbd58c2398_0_15", + }, + { + name: "Solutions", + src: "https://docs.google.com/document/d/1UDakvA2lzu5px7Ox20s7E8ZYN17WtcPTcmtoTANRL5o/edit", + }, + ], + }, + { + kind: "archivedVideo", + title: "ExploreWeb.la: Web Design & Dev", + embedId: "jP8itIcFFa4", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/u/0/d/1QB4seIW1s97Aqrf-Wn8n9UQq6YNM3opvqzt3ZUZtGOM/edit", + }, + { + name: "Review Sheet", + src: "https://docs.google.com/document/d/1zAbuNQzRgHYhH9E9sdJudYQ96FJYfXcqfO4qJv736K4/edit", + }, + { + name: "Codepen", + src: "https://codepen.io/raphaeling/pen/VwmjxzJ", + }, + ], + }, + { + kind: "archivedVideo", + title: "Operating Systems", + embedId: "u-X1K9Rz75U", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/17Dl1hE1kUmffXtlF8aC_CMuXNvFgTp3IgLADvT9pJmw/edit#slide=id.g7cb5bbd26d_0_20", + }, + { + name: "Linux Emulator", + src: "http://copy.sh/v86/?profile=linux26", + }, + ], + }, + { + kind: "archivedVideo", + title: "Draw with Code", + embedId: "oTzUKgOTEGE", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1yKOG-eBJveoCHa0XX0-JhGSxVLSJ6x4d993uWdySm_I/edit?usp=sharing", + }, + { + name: "Repl.it Project", + src: "https://repl.it/@AlyssaSchimm/Python-Graphics-Skeleton", + }, + ], + }, + { + kind: "archivedVideo", + title: "Less Quantum More Computing", + embedId: "rC-llUnQt88", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1ceW21j9s6EwD4MtMN8gytIH_ku-sZLy0JnAuQ4pmrlQ/edit#slide=id.gc204a219fe_1_10", + }, + { + name: "Definitions Doc", + src: "https://docs.google.com/document/d/1dbcPxbjI50PYgRMoLolfNP3FGHvBojHuFfYHRtzGNv4/edit?usp=sharing", + }, + { + name: "Google Colab", + src: "https://colab.research.google.com/drive/1jViSXWVgbFK6GeU2z7VrSxx8PjOF8dOk", + }, + ], + }, + { + kind: "archivedVideo", + title: "Crack the Code with Cryptography", + embedId: "HCrLnfs5yqU", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1Z2GZoJtq2IwqjO2Akr9vIv6km_Pc_a1h_0b98HMQNIA/edit?usp=sharing", + }, + { + name: "Escape Room Google Form", + src: "https://forms.gle/bmewxDNqbuXENENf8", + }, + { + name: "Escape Room Questions and Solutions", + src: "https://docs.google.com/document/d/14P2cz0_CLCPlWJFjyXICMdhN_YfoRlUiPSZW0wxvf1w/edit", + }, + ], + }, + { + kind: "archivedVideo", + title: "Escaping Reality with Game Development", + embedId: "PiDWtEGfgiM", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1-FAlSMU2WDh_qZVjUSUV6bNSShXxCP5IAzx9y3guXW8/edit", + }, + { + name: "Codepen Activity", + src: "https://codepen.io/catpls/pen/QWdgpwe", + }, + ], + }, + { + kind: "archivedVideo", + title: "Murder Mystery!", + embedId: "RPZqYD4KX9I", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/17QCnC1LfixiFyfCSMTwE-6VUC-NyznB3UHs3Szrx3HQ/edit#slide=id.g7cb5bbd26d_0_20", + }, + { + name: "Worksheet", + src: "https://docs.google.com/document/d/1R0Ne_90c7aRuzvtkA5HSPAgBw70GJfwiH6i1-1BCxh0/copy", + }, + ], + }, + { + kind: "archivedVideo", + title: "AI Adventures", + embedId: "YemyR8KdDe0", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1rq2lxcW1MK1pSZZP2bl1-kz5JkvRN0kJ-GpzIXxm1UY/edit#slide=id.g7cb5bbd26d_0_20", + }, + { + name: "Worksheet", + src: "https://docs.google.com/document/d/1KQi86CtI4OG2cgEoZLQCDeQk8a_204Ek_yESjdlAAaM/edit?usp=sharing", + }, + ], + }, + { + kind: "archivedVideo", + title: "Digital Design", + embedId: "sjHU3FDty68", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1SzxLUCi8xBJRQC4uGt9fIk-gZvdqeS-_HdIG0ToaQpU/edit?usp=sharing", + }, + { + name: "Miro Whiteboard", + src: "https://miro.com/app/board/o9J_lMyUL1U=/", + }, + ], + }, + { + kind: "archivedVideo", + title: "Data Science", + embedId: "OlKpWAwA32Q", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1WonMzMY2AaReC5yPW94akZaSKOuBV2ci2iYswWIEG5U/edit#slide=id.g7cb5bbd26d_0_20", + }, + { + name: "Spreadsheet", + src: "https://docs.google.com/spreadsheets/d/1E6mFcAMfeSlz1B61lInOuTVO1tvR7ggYzXTeqxCxkQQ/edit#gid=1207580287", + }, + ], + }, + { + kind: "archivedVideo", + title: "Tech & Society", + embedId: "b-bgVV-aEKI", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/15Kcr7BihmCtBo-l2CxGelzLGCglmXhx0-3L-YtonyDo/edit#slide=id.g7cb5bbd26d_0_20", + }, + ], + }, + { + kind: "archivedVideo", + title: "Bot Buddy", + subtitle: "Hosted by DIY Girls", + embedId: "b2ijVF2aLQs", + caption: "(Session 1 Recording)", + links: [ + { + name: "Session 2 Recording", + src: "https://youtu.be/jhGA1TZG9PA", + }, + { + name: "Skin Templates", + src: "https://drive.google.com/drive/folders/1aaPdABZMsORNaRHP7EZKMbfST2x6j_bt", + }, + { + name: "Youtube Tutorial", + src: "https://www.youtube.com/watch?v=JKoLj8lmkfM", + }, + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1XNH37Cw5P7_tEWqWckaev5vxETBVVapTIbJXXr-6uNs/edit#slide=id.p", + }, + { + name: "Follow Up Instructions", + src: "https://docs.google.com/document/d/1xSpGUjHA2qL8DJjGagBPAolmfcHAdcHvuTpl_lC67po/edit", + }, + ], + }, + ], + }, + { + heading: "Panels", + cards: [ + { + kind: "archivedVideo", + title: "Diverse Careers in Computer Science", + embedId: "xzZzhmeo9_Y", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/18H8XdlIscdZdeLiOUCPtAfu0tuhukW1EfDBH8uDkUXE/edit#slide=id.gc5794a6fcc_0_12", + }, + { + name: "Padlet", + src: "https://padlet.com/bonniebonnielee/nm6pc2j59e5hhigl", + }, + { + name: "Panelist Info and Resources", + src: "https://docs.google.com/document/d/1hG6YO9epajDiYqma-j882qRzmUITZdlTFWvvjrTTy44/edit?usp=sharing", + }, + ], + }, + { + kind: "archivedVideo", + title: "Representation in Computer Science", + embedId: "vrPl7EmwV9A", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/16KnUGORLcdWsVqfCFgGzkqFniVPzHvtL2WyoY22Mgv4/edit#slide=id.gc7ccf7fc99_0_0", + }, + { + name: "Padlet", + src: "https://padlet.com/wsu315/a9fa6pk1k3iodi7o", + }, + ], + }, + ], + }, + ], + faq: { + kind: "resources", + initialOpenKey: null, + items: [ + { + key: 1, + question: + "I'm still interested in attending but registration is closed! Can I still attend?", + answer: + 'Yes you can! Just fill out all of the waivers under the "Waivers" section below and email them to us at exploretechla@cs.ucla.edu ASAP so we can get you registered!', + }, + { + key: 2, + question: + "Is there a registration fee? Are there any associated costs with the program (i.e: need to pay for an account on the virtual platform?)", + answer: + "This event is completely free for all attendees! All you will need is a computer and stable internet to access the event.", + }, + { + key: 3, + question: "What prior background is needed?", + answer: + "No experience needed! This event is meant to help you explore the different fields of CS and tech!", + }, + { + key: 4, + question: "When does the event start/end?", + answer: + "The Opening Ceremony will begin at 9AM and the Closing Ceremony will begin at 1:00PM. Refer to the program for more schedule info!", + }, + { + key: 5, + question: "How does the raffle work?", + answer: + "Workshops will give 1 ticket to students if they ask a good question or complete some activity. Panels will also give 1 ticket to all students who attend. Hold onto your ticket until the Closing Ceremony, where a raffle will be held and prizes will be given!", + }, + { + key: 6, + question: "Where is bus pick-up?", + answer: + "Bus pick-up will be at the same place as the drop-off area (across Intramural Field) as detailed in the logistics packet sent to your school.", + }, + { + key: 7, + question: + "How many high school students and how many high schools are participating in our events today?", + answer: "There are 8 schools with a total of 371 students! Woo!", + }, + { + key: 8, + question: "How does the mentorship session + lunch work?", + answer: + "Each student’s wristband has a number on it indicating which mentor group they are in. Mentors will hold up a sign with their group number on it and students will find their mentors accordingly. Mentor groups will take turns getting lunch and they can use any space in the AGB (around the chairs/on the floor/etc) to gather around and start the mentorship session.", + note: "Group 3 students will start finding their mentors 15 minutes prior to the end of Session 3 and will get their lunch first.", + }, + { + key: 9, + question: "Can students go to any workshop they want to?", + answer: + "Yes! However, some workshops are limited by room size/workshop material capacity so they will be closed once capacity is reached on a first-come, first-served basis, and students will be directed to other workshops instead.", + }, + { + key: 10, + question: "Are there restrooms in the venue?", + answer: "Restrooms are on the third floor of Ackerman Union.", + }, + { + key: 12, + question: "Who is organizing this event?", + answer: + "This event is being organized by exploretech.la, a group of UCLA undergraduate students! Learn more about us on our website!", + }, + { + key: 13, + question: "What are the raffle prizes?", + answer: + "3 big prizes (including airpods!) are being given out during the Closing Ceremony, while additional digital prizes will be awarded to students who fill out the Feedback Survey.", + }, + { + key: 14, + question: "How many students are at UCLA?", + answer: "There are over 40,000 students at UCLA", + }, + ], + }, + waivers: WAIVER_FORMS, + // The deployed page reuses the "Wristbands" heading above the feedback form. + feedbackHeading: "Wristbands", + feedback: { + kind: "link", + href: "https://tinyurl.com/exploretechla2022feedback", + }, +}; diff --git a/src/content/events/2023.ts b/src/content/events/2023.ts new file mode 100644 index 0000000..3ce984c --- /dev/null +++ b/src/content/events/2023.ts @@ -0,0 +1,245 @@ +import busRoutes from "../../static/maps/bus_routes.jpg"; +import ackermanUnion2F from "../../static/maps/su_map_ack_2.jpeg"; +import ackermanUnion3F from "../../static/maps/su_map_ack_3.jpeg"; + +import type { EventContent } from "./types"; + +/** + * exploretech.la 2023, served at /resources2023. + * The page reuses the 2022 schedule times verbatim and has no FAQ or waiver section. + */ +export const EVENT_2023: EventContent = { + year: "2023", + programHref: + "https://drive.google.com/file/d/1QBPh_9WEnlVxcw18xKHrCtPD4Wv9tfrj/view?usp=sharing", + schedule: [ + { key: 1, name: "Opening Ceremony", time: "9:00AM - 9:30AM" }, + { key: 2, name: "Session 1", time: "9:30AM - 10:15AM" }, + { key: 3, name: "Session 2", time: "10:30AM - 11:15AM" }, + { key: 4, name: "Session 3", time: "11:30AM - 12:15PM" }, + { key: 5, name: "Lunch with a Mentor", time: "12:15PM - 1:00PM" }, + { key: 6, name: "Closing Ceremony", time: "1:00PM - 1:30PM" }, + ], + maps: [ + { name: "Bus Routes", src: busRoutes }, + { name: "Ackerman Union 2F", src: ackermanUnion2F }, + { name: "Ackerman Union 3F", src: ackermanUnion3F }, + ], + workshopsPlacement: "before-maps", + workshops: [ + { + heading: "Workshops", + cards: [ + { + kind: "described", + title: "Fundamentals of Data Science", + instructors: "Takao Oba and Riya Bhatla", + description: + "Unlock the power of data and enhance your skills with our comprehensive Data Science workshop. Join us and discover the latest tools and techniques to turn data into actionable insights and drive better decision making.", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1fxkiS4XMG671dKL1WzmJzBGUzU10INoKsWndY9HnvBc/edit#slide=id.g7cb5bbd26d_0_20", + }, + ], + }, + { + kind: "described", + title: "Game Development", + instructors: "Michael Bunte and Grace Mao", + description: + "Ever wonder how your favorite games are created? How do artists, programmers, composers, and others work together to create an amazing final product? Come find out at the game development workshop!", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1p-yarwAOKpz6IMsHkZAFFdjfmZ_G1qHaT_1XrrDNEzY/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "Python Turtle", + instructors: "Aparna Hariharan and Isha Rajput", + description: + "Come learn how to code in Python using Python's fun art library called Python Turtle! By the end, you'll have created a customized digital sticker that you can design!", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/16Ip1fP3i4CPrJL6g_jn22DaIsZH1nY_a4OiTXoTkMp4/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "SCRATCHing the Surface of Coding", + instructors: "Michael Bunte and Jason Lozada", + description: + "Want to learn how to code but don’t know where to start? Come join us as we introduce you to Scratch, a visual programming language that allows you to create your own interactive animations, stories, and games.", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1f8GMGnJuTECpuWZ1JYiYT5e-qf_SXuyY_x3WqQ5VsmQ/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "CS Operations in Minecraft", + instructors: "Grace Mao and Kelly Zhang", + description: + "Logic gates, circuits, game dev...in Minecraft ?!?! Come to our workshop to learn about Minecraft's amazing redstone system and how it connects to engineering :0", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1QgNJpiJEAx07bN88bUnQjo8nLJvXR26ivJB7x3J2p2Q/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "Are you Related to a Strawberry?", + instructors: "Wendy Su and Krisha Chokshi", + description: + "Are you related to a strawberry? Are you the plant parent? Learn about the intersection of biology and computer science in what we call bioinformatics. Come for a hands-on experience in extracting DNA!", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1dH1imIjo3ZSOoGxk3vyewLHc5G3JQufePPGY-5pxriE/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "Basics of Encryption", + instructors: "Ashish Basetty and Takao Oba", + description: + "You’ve heard of hackers, but do you know about the people who stop them? Join us as we learn about how we keep our data secure. Work together to solve codes and puzzles, and learn how we can keep passwords and personal information private.", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1Rpj6HeWxVXUPhcaeAA8StKu5Vkv6zR8Di1hQegGkHag/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "Intro to Web Development", + instructors: "Emily Nham and Jazlin Ong", + description: + "Have you ever wondered how websites are made? Join us to learn the basics of HTML and CSS, the coding languages of the web. By the end of our session, you’ll walk out with the ability to make your own website!", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/139VY0bVt_-fYPsUwpGKRgFs7QJVkpEg1FoHmVEuksiI/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "Internet of Things", + instructors: "Kunal Patil and Krisha Chokshi", + description: + "Explore the Internet of Things, its evolution, and its relevance to today’s society! Students will learn about cybersecurity protocols and get a chance to demo and test IoT products. While brainstorming daily uses of IoT, they will discover its widespread impact on each of our lives.", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1dv_L1bAyp3XUmvUKLUO70yvJec7yGDDqHjTltZckrMk/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "Natural Language Proccessing", + instructors: "Ashish Basetty and Jazlin Ong", + description: + "Every used Siri? ChatGPT? Google Translate? Come to this workshop to learn how a computer thinking in 0’s and 1’s can learn to speak like a human. Learn more about how human language works, and how we can come up with rules to teach it to a machine.", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1OUdQO-sLEhkZEgIDItNT-2VPtL_DmPZjz43SiW1GYXo/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "Machines Learn How to Learn", + instructors: "Michael Song and Kelly Zhang", + description: + "As technology advances and we get smarter devices, we are also collecting more and more data. All of this data is meaningless without the help of machine learning. In this workshop we’ll delve into how machines use data to predict and answer questions.", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1kp-5c-YiCRJOgF6xbcHn7mzWIFt9eBSVZTwLsQVhz7o/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "Making Your Own Shazam", + instructors: "Riya Bhatla and Joe Lin", + description: + "Ever heard a song at a party that you didn’t recognize? Shazam is the solution. In this workshop, you’ll get hands-on experience to build your own song recognizer. You’ll learn about the basics of audio processing and analysis and much more!", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1DzbhxN7w5s9n2F7jyAOIv4ZvDkF-ILkaamgSqM98gvU/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "Introduction to Autonomous Vehicles", + instructors: "Michael Song and Joe Lin", + description: + "Ever wondered how a Tesla or Waymo car navigates itself through a seemingly countless number of road scenarios? Join us in this workshop to learn about the fundamental building blocks of autonomous vehicle technology and even get a chance to witness object detection models in action!", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/11jR37NzXGQYdFi_RJgtd7LBzPaSyA31vdjlfSBxEj1k/edit?usp=sharing", + }, + ], + }, + ], + }, + { + heading: "Panels", + cards: [ + { + kind: "described", + title: "Careers in Computer Science", + instructors: "Isha Rajput and Emily Nham", + description: + "Want to know what it's like working in tech? Meetcurrent students and graduates pursuing Computer Science at places like Google, Facebook, Atlassian, and CreditKarma! Come learn about what they do and how they ended up where they are!", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1mVDXX-o_0BZO19UC-kFXJVUkMU7wvUfgaNii9bxDxNE/edit?usp=sharing", + }, + { + name: "Panelist Info", + src: "https://docs.google.com/document/d/1_a-basdjuWGzqQe_9g3LwmtLoQhuPX_Bmhpx-llbyZo/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "Divieristy 101", + instructors: "Aparna Hariharan and Jason Lozada", + description: + "Join the conversation with our esteemed guests regarding Diversity in Computer Science and what their experiences are like as minorities in this field.", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1LPeMr3cr28CYTaLrrDpeh3EMlx5tyaZ1HzyRoLDaqOw/edit?usp=sharing", + }, + { + name: "Panelist Info", + src: "https://docs.google.com/document/d/1BvEGkB0tGuW9C-pyQFqqC_f-rgnLe8NEEccIaj5-NnU/edit?usp=sharing", + }, + ], + }, + ], + }, + ], + feedback: { kind: "coming-soon", disabled: false }, +}; diff --git a/src/content/events/2026.ts b/src/content/events/2026.ts new file mode 100644 index 0000000..1af2fcf --- /dev/null +++ b/src/content/events/2026.ts @@ -0,0 +1,216 @@ +import busRoutes from "../../static/maps/bus_routes.jpg"; +import ackermanUnion2F from "../../static/maps/su_map_ack_2.jpeg"; +import ackermanUnion3F from "../../static/maps/su_map_ack_3.jpeg"; +import eventProgram from "../../static/pdf/Event_Program_2026.pdf"; + +import type { EventContent } from "./types"; + +/** + * exploretech.la 2026, served at /resources2026. + * Panels are authored after the workshops; both render as described cards. + */ +export const EVENT_2026: EventContent = { + year: "2026", + programHref: eventProgram, + schedule: [ + { key: 1, name: "Opening Ceremony", time: "9:55AM - 10:10AM" }, + { key: 2, name: "Session 1", time: "10:15AM - 10:50AM" }, + { key: 3, name: "Session 2", time: "11:00AM - 11:40AM" }, + { key: 4, name: "Session 3", time: "11:50AM - 12:30PM" }, + { key: 5, name: "Lunch with a Mentor", time: "12:30PM - 1:10PM" }, + { key: 6, name: "Closing Ceremony", time: "1:10PM - 1:30PM" }, + ], + maps: [ + { name: "Bus Routes", src: busRoutes }, + { name: "Ackerman Union 2F", src: ackermanUnion2F }, + { name: "Ackerman Union 3F", src: ackermanUnion3F }, + ], + mapsLinkRel: "noopener noreferrer", + workshopsPlacement: "before-maps", + workshops: [ + { + heading: "Workshops", + cards: [ + { + kind: "described", + title: "Tower Stacking Game", + instructors: "Emma Qiu and Eli Drewry", + description: + "Students will compete in groups to see who can create the tallest free-standing tower with limited materials (popsicle sticks, tape, rope, etc). This challenge tests their communication, strategy, and discovering the importance of architecture while getting a chance to win prizes.", + links: [ + { name: "Slides", src: "https://canva.link/79sw40e0u4vhk4j" }, + ], + }, + { + kind: "described", + title: "Intro to Game Development", + instructors: "Joshua Jin and Paul Macapinlac", + description: + "Learn how the snake game works in this fun workshop! Uncover the secrets of Python and learn to customize your snake. Before you know it, you’ll be a pro game dev with a fully customized snake game.", + links: [ + { name: "Slides", src: "https://canva.link/y27fiyfbq1pfd3t" }, + ], + }, + { + kind: "described", + title: "Battle Bots", + instructors: "Sofia Matos and Benjamin Garcia", + description: + "Drive XRP Robots on a field to take down your opponents in a game of robot soccer! After interacting with code, you will be able to drive and dribble past other robots to score using teamwork and strategy.", + links: [ + { name: "Slides", src: "https://canva.link/6edmsozmzcmhkf2" }, + ], + }, + { + kind: "described", + title: "Squid Games Several-Legged Pentathalon (STEM Edition)", + instructors: "Matthew Chen and Paul Macapinlac", + description: + "Inspired by the hit Netflix series “Squid Games,” collaborate with up to 3 of your friends to participate in the STEM Games Several-Legged Pentathlon, where you will be tasked to solve STEM puzzles and activities in an interactive race against time.", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/10K0MQv8v8IqyC8qRrrJJanGZpn2YVPQUX6VFvdg_1ww/edit?slide=id.gf6d3ad9fd1_0_1011#slide=id.gf6d3ad9fd1_0_1011", + }, + ], + }, + { + kind: "described", + title: "AI Photobooth", + instructors: "Ridhima Seth and Joshua Jin", + description: + "Do you want to learn more about AI image generation? Come to AI Photobooth! This workshop will show you the basics of how an AI image generator works, and then we’ll let you try it for yourself!", + links: [ + { name: "Slides", src: "https://canva.link/p62kuwtzwy1ieb6" }, + ], + }, + { + kind: "described", + title: "COVID-19 Simulator", + instructors: "Clemente Irarrazaval and Eli Drewry", + description: + "Students will get an introduction into the field of game development by designing a COVID-19 spread simulator. Using Scratch they’ll explore conditionals, loops, and movement while working through obstacles. Students work in teams to build, test, and modify their own simulation-based game, also encouraging teamwork.", + links: [ + { name: "Slides", src: "https://canva.link/5noyqe130bqgdqs" }, + ], + }, + { + kind: "described", + title: "AI Music", + instructors: "Matthew Chen and Benjamin Garcia", + description: + "The purpose of this workshop is to teach students how to use suno.com, an AI music website that allows users to create any form of music by simply entering into the prompt bar.", + links: [ + { name: "Slides", src: "https://canva.link/ja5m1l7cy6k1zsh" }, + ], + }, + { + kind: "described", + title: "Bridge Building Competition", + instructors: "Atharv Panditrao and Clemente Irarrazaval", + description: + "Students will design and build a small bridge using limited materials. They will learn basic structural concepts, apply problem-solving skills, and work collaboratively to create a bridge that can hold the greatest load. Students compete in teams and test their designs in a fun final challenge.", + links: [ + { name: "Slides", src: "https://canva.link/6ov265jv8fwkeql" }, + ], + }, + { + kind: "described", + title: "Live Coding Music", + instructors: "Ana Laura Santana and Atharv Panditrao", + description: + "Sometimes learning code can seem like it’s exclusively professional or something you will never see in your career. But in truth, coding can be useful for all types of passions beyond a corporate life, which is what gives it its beauty. In this workshop, you will learn how to become a DJ using only code!", + links: [ + { name: "Slides", src: "https://canva.link/9pwbi4o0ztadleh" }, + ], + }, + { + kind: "described", + title: "Prompt Engineering", + instructors: "Alexander Chien and Arjun Asudani", + description: + "Join our prompt engineering workshop to learn how to make the most out of your AI credits. Today’s chat models have vast capabilities, but accessing these skills can be more nuanced than just a straightforward question. We’ll cover prompting methods you can use to ensure you get the results you want. Let’s harness the power of AI!", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1IJsZaSjOSEOXJBQJAjdo4N0Zz3iFHkn5otzM8JBI4do/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "How Machines can learn like humans (Neural Networks)", + instructors: "Ana Laura Santana and Emma Qiu", + description: + "Students will learn the basics of neural networks, and how they are present in our everyday lives. They will also get hands-on experience with neural networks by loading data and training their own model. In the end, students will gain a conceptual understanding and practical skills in AI, which has become increasingly influential in the tech world.", + links: [ + { name: "Slides", src: "https://canva.link/t49ze6ojz5edwil" }, + ], + }, + { + kind: "described", + title: "AI Guess Who", + instructors: "Ridhima Seth and Amy Lloyd", + description: + "Want to master Guess Who? with logic and strategy? Learn how decision trees and probability help you ask the smartest questions, minimize guesswork, and consistently win. This session makes algorithmic thinking fun and practical—sharpen your problem-solving skills while gaining a competitive edge in both games and real-world decision-making!", + links: [ + { name: "Slides", src: "https://canva.link/gu84339jr1878xm" }, + ], + }, + { + kind: "described", + title: "Game Theory", + instructors: "Arjun Asudani and Alexander Chien", + description: + "What would you do if your success depended on someone else’s choice? This interactive workshop introduces game theory through fast-paced games and real-life scenarios. You’ll explore why people compete, when cooperation fails, and how small incentives can completely change outcomes.", + links: [ + { + name: "Slides", + src: "https://www.canva.com/design/DAHDlh96pCw/4F5lGBuqGXyBBO1a2Lyutg/edit", + }, + ], + }, + ], + }, + { + heading: "Panels", + cards: [ + { + kind: "described", + title: "Careers in Tech Panel", + instructors: "Meet Modi / Tammy Sujaritchai and Sofia Matos", + description: + "Curious about what a career in tech actually looks like? Join us for a discussion with students and professionals as they share their experiences, career paths, and advice for breaking into the industry. Learn about different roles in tech, what skills matter most, and how to start exploring your own path.", + links: [ + { + name: "Slides", + src: "https://drive.google.com/drive/folders/1ZBMXid-LFwTB84lA5etUmEHMExT9Ee9W", + }, + { + name: "Panelist Info", + src: "https://docs.google.com/document/d/1Gaj_cB8Y7RgeDnxmjOmZGS6XhREWHHRYwg-b7EyUBiw/edit?usp=sharing", + }, + ], + }, + { + kind: "described", + title: "CS/Tech in College Panel", + instructors: "Meet Modi / Tammy Sujaritchai and Amy Lloyd", + description: + "What is it really like to study computer science or tech in college? In this panel, students will talk about classes, projects, internships, clubs, and how they found their place in tech. Come ask questions, hear honest advice, and get a better sense of what the college experience can look like.", + links: [ + { + name: "Slides", + src: "https://docs.google.com/presentation/d/1XCDfJbdINGh4_OCPuUYX9roVqXul3N04L3zM6cUqm5M/edit?usp=sharing", + }, + { + name: "Panelist Info", + src: "https://docs.google.com/document/d/1Fkc3Ot_d7xpQTU8_oOfYIu_ugJzcenvjnlOOvWkVBBM/edit?usp=sharing", + }, + ], + }, + ], + }, + ], + feedback: { kind: "coming-soon", disabled: true }, +}; diff --git a/src/content/events/index.ts b/src/content/events/index.ts new file mode 100644 index 0000000..eee89c7 --- /dev/null +++ b/src/content/events/index.ts @@ -0,0 +1,29 @@ +import type { EventContent, EventYear } from "./types"; +import { EVENT_2022 } from "./2022"; +import { EVENT_2023 } from "./2023"; +import { EVENT_2026 } from "./2026"; + +export * from "./types"; +export { REGISTRATION_2021 } from "./2021"; +export type { RegistrationContent } from "./2021"; +export { WAIVER_FORMS } from "./waivers"; + +export const EVENTS = { + "2022": EVENT_2022, + "2023": EVENT_2023, + "2026": EVENT_2026, +} satisfies Record; + +/** + * Public routes, in the order they were published. The 2022 event keeps the + * unnumbered /resources path it shipped with. + */ +export const EVENT_ROUTES: readonly { + readonly route: string; + readonly year: EventYear; + readonly navLabel: string; +}[] = [ + { route: "/resources", year: "2022", navLabel: "exploretech 2021" }, + { route: "/resources2023", year: "2023", navLabel: "exploretech 2023" }, + { route: "/resources2026", year: "2026", navLabel: "exploretech 2026" }, +]; diff --git a/src/content/events/types.ts b/src/content/events/types.ts new file mode 100644 index 0000000..43eaf77 --- /dev/null +++ b/src/content/events/types.ts @@ -0,0 +1,64 @@ +import type { DocumentLink } from "../types"; +import type { EVENTS } from "./index"; + +export type EventYear = keyof typeof EVENTS; +export interface ScheduleEntry { + readonly key: number; + readonly time: string; + readonly name: string; +} +export interface ScheduleDay { + readonly title: string; + readonly items: readonly ScheduleEntry[]; +} +export type WorkshopCard = { + readonly title: string; + readonly links: readonly DocumentLink[]; +} & ( + | { + readonly kind: "archivedVideo"; + readonly embedId: string; + readonly subtitle?: string; + readonly caption?: string; + } + | { + readonly kind: "described"; + readonly instructors?: string; + readonly description?: string; + } +); +export interface WorkshopSection { + readonly heading: "Workshops" | "Panels"; + readonly cards: readonly WorkshopCard[]; +} +export interface FaqEntry { + readonly key: number; + readonly question: string; + readonly answer: string; + readonly note?: string; +} +export interface FaqContent { + readonly kind: "registration" | "resources"; + readonly initialOpenKey: number | null; + readonly items: readonly FaqEntry[]; + /** Extra lead-in shown only on the registration page, above the first question. */ + readonly intro?: { readonly heading: string; readonly body: string }; +} +export type Feedback = + | { readonly kind: "link"; readonly href: string } + | { readonly kind: "coming-soon"; readonly disabled: boolean }; +export interface EventContent { + readonly year: string; + readonly programHref: string; + readonly schedule: readonly ScheduleEntry[]; + readonly maps: readonly DocumentLink[]; + /** 2026 added rel="noopener noreferrer" to its map buttons; 2022/2023 did not. */ + readonly mapsLinkRel?: "noopener noreferrer"; + readonly workshops: readonly WorkshopSection[]; + readonly workshopsPlacement: "before-maps" | "after-wristbands"; + readonly wristbandImage?: { readonly src: string; readonly alt: string }; + readonly faq?: FaqContent; + readonly waivers?: readonly DocumentLink[]; + readonly feedbackHeading?: string; + readonly feedback: Feedback; +} diff --git a/src/content/events/waivers.ts b/src/content/events/waivers.ts new file mode 100644 index 0000000..6a8dfcd --- /dev/null +++ b/src/content/events/waivers.ts @@ -0,0 +1,21 @@ +import liabilityWaiver from "../../static/pdf/exploretech_la_2022_Liability_Waiver.pdf"; +import multimediaRelease from "../../static/pdf/exploretech_la_2022_Multimedia_Release_Form.pdf"; +import studentVerification from "../../static/pdf/exploretech_la_2022_Student_Verification_Form.pdf"; + +import type { DocumentLink } from "../types"; + +/** + * The same three signed forms are offered on /register and on /resources. + * Both pages link the identical PDFs, so they are authored once here. + */ +export const WAIVER_FORMS: readonly DocumentLink[] = [ + { name: "Liability Waiver", src: liabilityWaiver }, + { name: "Multimedia Release Form", src: multimediaRelease }, + { name: "Student Verification Form", src: studentVerification }, +]; + +export const WAIVER_INTRO = + "Please download and sign the following waivers. They are a required part of your registration."; + +export const WAIVER_NOTE = + "Note: For high school students, the waivers require a parent/guardian signature."; diff --git a/src/content/people.ts b/src/content/people.ts new file mode 100644 index 0000000..66b100c --- /dev/null +++ b/src/content/people.ts @@ -0,0 +1,170 @@ +import images from "../constants/optimizedImages"; +import type { PersonProfile } from "./types"; + +/** + * The authoritative profile for every team member and past speaker. + * + * One entry per person. Contextual role titles are NOT stored here: a person + * can hold different titles in different teams, so titles live with the + * assignment in `teams.ts`. To update someone's name, portrait or profile + * link, edit exactly one entry below. + */ +export const people = { + "spoorthy-nalumachu": { + name: "Spoorthy Nalumachu", + image: images["team/leadership/2027/spoorthy-nalumachu.jpg"].src, + link: "https://www.linkedin.com/in/spoorthy-nalumachu", + }, + "clara-zhang": { + name: "Clara Zhang", + image: images["team/leadership/2027/clara-zhang.jpg"].src, + link: "https://www.linkedin.com/in/clara-zhang-009497197/", + }, + "annika-renganathan": { + name: "Annika Renganathan", + image: images["team/leadership/annika-renganathan.jpg"].src, + link: "https://www.linkedin.com/in/annika-renganathan-b437022b9", + }, + "shaina-grover": { + name: "Shaina Grover", + image: images["team/leadership/shaina-grover.jpg"].src, + link: "https://www.linkedin.com/in/shaina-grover", + }, + "sandra-pan": { + name: "Sandra Pan", + image: images["team/leadership/sandra-pan.jpg"].src, + link: "https://www.linkedin.com/in/sandra-pan-b994802aa", + }, + "eli-drewry": { + name: "Eli Drewry", + image: images["team/leadership/2027/eli-drewry.jpg"].src, + }, + "matthew-chen": { + name: "Matthew Chen", + image: images["team/leadership/2027/matthew-chen.jpg"].src, + }, + "isabelle-chang": { + name: "Isabelle Chang", + image: images["team/design/isabelle-chang.png"].src, + }, + "sarah-zhao": { + name: "Sarah Zhao", + image: images["team/leadership/2027/sarah-zhao.jpg"].src, + }, + "eric-chen": { + name: "Eric Chen", + image: images["team/leadership/2027/eric-chen.jpg"].src, + }, + "christina-uong": { + name: "Christina Uong", + image: images["team/leadership/2027/christina-uong.jpg"].src, + }, + "sadie-scott": { + name: "Sadie Scott", + image: images["team/leadership/2027/sadie-scott.jpg"].src, + }, + // Spelling is user-authoritative: the source photo is named "jubilee-yu". + "jubilee-yul": { + name: "Jubilee Yul", + image: images["team/leadership/2027/jubilee-yul.jpg"].src, + }, + "benjamin-garcia": { + name: "Benjamin Garcia", + image: images["team/content/benjamin-garcia.jpg"].src, + }, + "ridhima-seth": { + name: "Ridhima Seth", + image: images["team/content/ridhima-seth.png"].src, + }, + "sofia-matos": { + name: "Sofia Matos", + image: images["team/content/sofia-matos.jpg"].src, + }, + "paul-macapinlac": { + name: "Paul Macapinlac", + image: images["team/content/paul-headshot.png"].src, + }, + "joy-szeto": { + name: "Joy Szeto", + image: images["team/operations/joy-szeto-headshot.jpeg"].src, + }, + // Deliberately has no portrait; the card still renders name and role. + "allison-gao": { + name: "Allison Gao", + }, + // Deliberately has no portrait; the card still renders name and role. + "izabella-chan": { + name: "Izabella Chan", + }, + "ela-defne-erkan": { + name: "Ela Defne Erkan", + image: images["team/design/ela_defne_erkan.png"].src, + }, + "angeleena-poothavelil": { + name: "Angeleena Poothavelil", + image: images["team/operations/angeleena-poothavelil.png"].src, + }, + "aansh-singh": { + name: "Aansh Singh", + image: images["team/operations/aansh-singh.jpeg"].src, + }, + "esther-yao": { + name: "Esther Yao", + image: images["team/operations/esther-yao-headshot.jpg"].src, + }, + "shayla-kumaresan": { + name: "Shayla Kumaresan", + image: images["team/external/shayla-kumaresan-headshot.jpg"].src, + }, + "luisa-chen": { + name: "Luisa Chen", + image: images["team/operations/luisa-chen.png"].src, + }, + "kayla-wai": { + name: "Kayla Wai", + image: images["team/operations/kayla-wai.jpg"].src, + }, + "alfredo-ayala": { + name: "Alfredo Ayala", + image: images["speakers/alfredo-ayala.jpg"].src, + link: "https://www.linkedin.com/in/alfredo-ayala-b0094426/", + }, + "carey-nachenberg": { + name: "Carey Nachenberg", + image: images["speakers/carey-nachenberg.png"].src, + link: "https://www.linkedin.com/in/carey-nachenberg-14bbb03/", + }, + "jayathi-murthy": { + name: "Jayathi Murthy", + image: images["speakers/jayathi-murthy.png"].src, + link: "https://samueli.ucla.edu/jayathi-y-murthy/", + }, + "justin-brezhnev": { + name: "Justin Brezhnev", + image: images["speakers/justin-brezhnev.png"].src, + link: "https://www.linkedin.com/in/brezh/", + }, + "tyler-menezes": { + name: "Tyler Menezes", + image: images["speakers/tyler-menezes.png"].src, + link: "https://www.linkedin.com/in/tylermenezes/", + }, + "solomon-russell": { + name: "Solomon Russell", + image: images["speakers/solomon-russell.jpeg"].src, + link: "https://www.linkedin.com/in/solomon-russell-220aa014/", + }, + "ruth-johnson": { + name: "Ruth Johnson", + image: images["speakers/ruth-johnson.jpeg"].src, + link: "https://www.linkedin.com/in/ruthjohnson13/", + }, + "nick-corral": { + name: "Nick Corral", + image: images["speakers/nick-corral.jpg"].src, + link: "https://www.linkedin.com/in/nick-corral-595723106/", + }, +} satisfies Record; + +/** Every valid person reference, derived from the registry keys. */ +export type PersonId = keyof typeof people; diff --git a/src/content/sections.ts b/src/content/sections.ts new file mode 100644 index 0000000..f3f79dd --- /dev/null +++ b/src/content/sections.ts @@ -0,0 +1,22 @@ +export type HomeSectionId = + | "about" + | "our_team" + | "get-involved" + | "speakers" + | "leadership" + | "sponsors"; + +export interface HomePageSection { + readonly name: HomeSectionId; +} + +const HomePageSections = { + ABOUT: { name: "about" }, + TEAM: { name: "our_team" }, + GET_INVOLVED: { name: "get-involved" }, + SPEAKERS: { name: "speakers" }, + LEADERSHIP: { name: "leadership" }, + SPONSORS: { name: "sponsors" }, +} as const satisfies Record; + +export default HomePageSections; diff --git a/src/content/speakers.ts b/src/content/speakers.ts new file mode 100644 index 0000000..0116f4c --- /dev/null +++ b/src/content/speakers.ts @@ -0,0 +1,25 @@ +import type { PersonRole } from "./types"; + +// Titles describe the historical speaking role, not a current team assignment. +export const pastSpeakers: readonly PersonRole[] = [ + { + personId: "alfredo-ayala", + title: "Walt Disney Executive R&D Imagineer at Walt Disney Imagineering", + }, + { + personId: "carey-nachenberg", + title: "Adjunct Professor at UCLA, Principal SWE Lyft Level 5", + }, + { + personId: "jayathi-murthy", + title: "Dean, UCLA Samueli School of Engineering", + }, + { personId: "justin-brezhnev", title: "President & CEO, Hacker Fund" }, + { personId: "tyler-menezes", title: "Executive Director, CodeDay" }, + { + personId: "solomon-russell", + title: "Assistant Professor, El Camino College", + }, + { personId: "ruth-johnson", title: "Computer Science PhD Student, UCLA" }, + { personId: "nick-corral", title: "Techincal Program Manager, Oculus" }, +]; diff --git a/src/content/teams.ts b/src/content/teams.ts new file mode 100644 index 0000000..a8bbf0e --- /dev/null +++ b/src/content/teams.ts @@ -0,0 +1,118 @@ +import { people } from "./people"; +import type { PersonCard, TeamSection, TeamSectionId } from "./types"; + +/** + * Ordered team sections. Each member references a profile in `people.ts` and + * supplies the title that person holds *in this section*; the same person may + * appear in several sections with different titles. + * + * Key order is the order the tabs and cards render in. + */ +export const teamSectionsById = { + leadership: { + id: "leadership", + navLabel: "Leadership", + heading: "Leadership", + members: [ + { personId: "spoorthy-nalumachu", title: "Executive Director" }, + { personId: "clara-zhang", title: "Executive Director" }, + { personId: "annika-renganathan", title: "External Advisor" }, + { personId: "shaina-grover", title: "Content Advisor" }, + { personId: "sandra-pan", title: "Design Advisor" }, + { personId: "eli-drewry", title: "Content Director" }, + { personId: "matthew-chen", title: "Content Director" }, + { + personId: "isabelle-chang", + title: "Design Director & UI/UX Design Lead", + }, + { personId: "sarah-zhao", title: "Design Director" }, + { personId: "eric-chen", title: "Operations Director" }, + { personId: "christina-uong", title: "Operations Director" }, + { personId: "sadie-scott", title: "External Director" }, + { personId: "jubilee-yul", title: "External Director" }, + { personId: "benjamin-garcia", title: "Web Dev Lead" }, + ], + }, + content: { + id: "content", + navLabel: "Content", + heading: "Content", + members: [ + { personId: "eli-drewry", title: "Content Director" }, + { personId: "matthew-chen", title: "Content Director" }, + { personId: "ridhima-seth", title: "Content Member" }, + { personId: "sofia-matos", title: "Content Member" }, + { personId: "paul-macapinlac", title: "Content Member" }, + { personId: "joy-szeto", title: "Content Member" }, + { personId: "benjamin-garcia", title: "Content Member" }, + ], + }, + design: { + id: "design", + navLabel: "Design", + heading: "Design", + members: [ + { personId: "isabelle-chang", title: "Design Director" }, + { personId: "sarah-zhao", title: "Design Director" }, + { personId: "allison-gao", title: "Design Member" }, + { personId: "izabella-chan", title: "Design Member" }, + { personId: "ela-defne-erkan", title: "Design Member" }, + ], + }, + operations: { + id: "operations", + navLabel: "Operations", + heading: "Operations", + members: [ + { personId: "eric-chen", title: "Operations Director" }, + { personId: "christina-uong", title: "Operations Director" }, + { personId: "angeleena-poothavelil", title: "Operations Member" }, + { personId: "aansh-singh", title: "Operations Member" }, + { personId: "esther-yao", title: "Operations Member" }, + ], + }, + external: { + id: "external", + navLabel: "External", + heading: "External", + members: [ + { personId: "sadie-scott", title: "External Director" }, + { personId: "jubilee-yul", title: "External Director" }, + { personId: "shayla-kumaresan", title: "External Member" }, + { personId: "luisa-chen", title: "External Member" }, + { personId: "kayla-wai", title: "External Member" }, + ], + }, + "web-dev": { + id: "web-dev", + navLabel: "Web Dev", + heading: "Web Dev", + members: [ + { personId: "benjamin-garcia", title: "Web Dev Lead" }, + { personId: "shayla-kumaresan", title: "Web Dev Member" }, + { personId: "aansh-singh", title: "Web Dev Member" }, + { personId: "paul-macapinlac", title: "Web Dev Member" }, + { personId: "angeleena-poothavelil", title: "Web Dev Member" }, + { personId: "isabelle-chang", title: "UI/UX Design Lead" }, + { personId: "ela-defne-erkan", title: "UI/UX Designer" }, + { personId: "allison-gao", title: "UI/UX Designer" }, + ], + }, + marketing: { + id: "marketing", + navLabel: "Marketing", + heading: "Marketing", + members: [{ personId: "luisa-chen", title: "Marketing Member" }], + }, +} satisfies Record; + +export const teamSections: readonly TeamSection[] = + Object.values(teamSectionsById); + +/** Resolves a section's assignments into renderable cards, in order. */ +export function teamCards(id: TeamSectionId): readonly PersonCard[] { + return teamSectionsById[id].members.map(({ personId, title }) => ({ + ...people[personId], + title, + })); +} diff --git a/src/content/types.ts b/src/content/types.ts new file mode 100644 index 0000000..145f4e1 --- /dev/null +++ b/src/content/types.ts @@ -0,0 +1,45 @@ +import type { PersonId } from "./people"; + +export interface PersonProfile { + readonly name: string; + readonly image?: string; + readonly link?: string; + readonly descriptions?: readonly string[]; +} + +/** A rendered role combines a profile with its context-specific title. */ +export interface PersonCard extends PersonProfile { + readonly title?: string; +} + +export interface DocumentLink { + readonly name: string; + readonly src: string; +} + +export type TeamSectionId = + | "leadership" + | "content" + | "design" + | "operations" + | "external" + | "web-dev" + | "marketing"; +export interface PersonRole { + readonly personId: PersonId; + readonly title: string; +} +export interface TeamSection { + readonly id: TeamSectionId; + readonly navLabel: string; + readonly heading: string; + readonly members: readonly PersonRole[]; +} + +export interface OptimizedImage { + readonly src: string; + readonly srcSet?: string; + readonly sizes?: string; + readonly width: number; + readonly height: number; +} diff --git a/src/components/Resources2026/Resources.jsx b/src/features/events/EventPage.tsx similarity index 50% rename from src/components/Resources2026/Resources.jsx rename to src/features/events/EventPage.tsx index e07e1df..a95582a 100644 --- a/src/components/Resources2026/Resources.jsx +++ b/src/features/events/EventPage.tsx @@ -1,36 +1,44 @@ -import React from "react"; -import Button from "react-bootstrap/Button"; - -import "./Resources.scss"; -import Workshops from "./Workshops"; -// import FAQ from './FAQ'; -import Footer from "../Footer"; +import Footer from "../../components/Footer"; +import { EVENTS } from "../../content/events"; +import type { EventYear, Feedback } from "../../content/events/types"; +import { WAIVER_INTRO, WAIVER_NOTE } from "../../content/events/waivers"; +import ActionLink from "../../components/ActionLink"; +import Faq from "./Faq"; import Maps from "./Maps"; import Schedule from "./Schedule"; -// import Waivers from './Waivers'; +import Waivers from "./Waivers"; +import Workshops from "./Workshops"; -import busRoutes from "static/maps/bus_routes.jpg"; -import ackerman_union_2F from "static/maps/su_map_ack_2.jpeg"; -import ackerman_union_3F from "static/maps/su_map_ack_3.jpeg"; -// import wristbands from "static/maps/wristband_coordination.png" -// import EventProgram from "static/pdf/Event_Program.pdf" -import EventProgram from "static/pdf/Event_Program_2026.pdf" +function FeedbackButton({ feedback }: { feedback: Feedback }) { + if (feedback.kind === "link") { + return ( + + Feedback Form + + ); + } + return ( + + ); +} -function Resources() { - const maps = [ - { - src: busRoutes, - name: "Bus Routes", - }, - { - src: ackerman_union_2F, - name: "Ackerman Union 2F", - }, - { - src: ackerman_union_3F, - name: "Ackerman Union 3F", - }, - ]; +/** + * One page for every archived annual resources route; the year's differences all + * come from `src/content/events/.ts`. + */ +export default function EventPage({ year }: { year: EventYear }) { + const event = EVENTS[year]; + const workshops = ; return (
@@ -42,8 +50,8 @@ function Resources() { Welcome students and teachers! Confused about the schedule? Lost and need a map? Or maybe just curious about what workshops are happening and when? This webpage contains important resources you need for the - exploretech.la 2026 event! If you can't find what you need, feel - free to contact{" "} + exploretech.la {event.year} event! If you can't find what you need, + feel free to contact{" "}
- - {/* */} +
- - - + + {event.workshopsPlacement === "before-maps" && workshops} +

Wristbands

@@ -94,12 +90,25 @@ function Resources() { and Group 3 (red) during Session 3.
- {/* Wristband coordination */} + {event.wristbandImage && ( + {event.wristbandImage.alt} + )}
- {/* */} - {/* */} + {event.workshopsPlacement === "after-wristbands" && workshops} + {event.faq && } + {event.waivers && ( + + )}
- {/*

Wristbands

*/} + {event.feedbackHeading &&

{event.feedbackHeading}

}
@@ -111,18 +120,10 @@ function Resources() {
- {/* */} - +
); } - -Resources.displayName = "Resources"; -export default Resources; diff --git a/src/features/events/Faq.tsx b/src/features/events/Faq.tsx new file mode 100644 index 0000000..442e162 --- /dev/null +++ b/src/features/events/Faq.tsx @@ -0,0 +1,90 @@ +import { useState } from "react"; + +import type { FaqContent } from "../../content/events/types"; +import Collapse from "../../components/Collapse"; + +/** + * One accordion, two presentations: the registration page uses plain text inside + * smaller headings, the resources pages wrap every question and answer in `h5`. + */ +export default function Faq({ content }: { content: FaqContent }) { + const [openKey, setOpenKey] = useState(content.initialOpenKey); + const registration = content.kind === "registration"; + + return ( +
+
+
+

FAQs

+
+
+
+ {registration ? ( +

Student FAQs

+ ) : ( +

Student FAQs

+ )} +
+
+
+ {content.items.map((item) => ( +
+ {/* + The shipped header is a plain div with a click handler; it was never + focusable or keyboard-operable. Preserved rather than quietly changed. + */} +
+ setOpenKey((current) => + current === item.key ? null : item.key, + ) + } + > + {registration ? ( + {item.question} + ) : ( +
+ {item.question} +
+ )} +
+ +
+ {registration ? item.answer :
{item.answer}
} + {item.note &&

Note: {item.note}

} +
+
+
+ ))} +
+
+
+
+ ); +} diff --git a/src/features/events/Maps.tsx b/src/features/events/Maps.tsx new file mode 100644 index 0000000..51823ce --- /dev/null +++ b/src/features/events/Maps.tsx @@ -0,0 +1,37 @@ +import type { DocumentLink } from "../../content/types"; +import ActionLink from "../../components/ActionLink"; + +export default function Maps({ + maps, + linkRel, +}: { + maps: readonly DocumentLink[]; + linkRel?: string; +}) { + return ( +
+
+
+

Maps

+
+
+
+ Below are links to view all the maps you may need throughout the day! +
+
+ {maps.map((map) => ( + + {map.name} + + ))} +
+
+
+ ); +} diff --git a/src/features/events/Schedule.tsx b/src/features/events/Schedule.tsx new file mode 100644 index 0000000..23713df --- /dev/null +++ b/src/features/events/Schedule.tsx @@ -0,0 +1,28 @@ +import type { ScheduleEntry } from "../../content/events/types"; + +export default function Schedule({ + items, +}: { + items: readonly ScheduleEntry[]; +}) { + return ( +
+
+
+

Schedule

+
+
+
+

+ {items.map((entry) => ( +

+ {entry.time} + {entry.name} +

+ ))} +

+
+
+
+ ); +} diff --git a/src/features/events/Waivers.tsx b/src/features/events/Waivers.tsx new file mode 100644 index 0000000..dc4384b --- /dev/null +++ b/src/features/events/Waivers.tsx @@ -0,0 +1,46 @@ +import type { ReactNode } from "react"; + +import type { DocumentLink } from "../../content/types"; +import ActionLink from "../../components/ActionLink"; + +/** + * Shared by /resources and /register. `children` carries the extra + * "all forms" block that only the registration page shows. + */ +export default function Waivers({ + forms, + intro, + note, + children, +}: { + forms: readonly DocumentLink[]; + intro: string; + note: string; + children?: ReactNode; +}) { + return ( +
+
+

Waivers

+
+

{intro}

+

+ {note} +

+
+
+ {forms.map((form) => ( +
+ + {form.name} + +
+ ))} +
+ {children} +
+ ); +} diff --git a/src/features/events/Workshops.tsx b/src/features/events/Workshops.tsx new file mode 100644 index 0000000..da0dd1e --- /dev/null +++ b/src/features/events/Workshops.tsx @@ -0,0 +1,97 @@ +import YoutubeEmbed from "../../components/common/YoutubeEmbed"; +import type { WorkshopCard, WorkshopSection } from "../../content/events/types"; + +/** Cards have always been laid out two per deck row, in authored order. */ +function rowsOfTwo( + cards: readonly WorkshopCard[], +): readonly (readonly WorkshopCard[])[] { + const rows: WorkshopCard[][] = []; + for (let index = 0; index < cards.length; index += 2) { + rows.push(cards.slice(index, index + 2)); + } + return rows; +} + +function Card({ + card, + heading, +}: { + card: WorkshopCard; + heading: WorkshopSection["heading"]; +}) { + return ( +
+
+
+ {card.title} +
+ {card.kind === "archivedVideo" ? ( + <> + {card.subtitle && ( +
+ {card.subtitle} +
+ )} + + {card.caption && ( +

{card.caption}

+ )} + + ) : ( + card.instructors && ( +

+ {heading === "Panels" ? "Moderators" : "Instructors"}:{" "} + {card.instructors} +

+ ) + )} +
+
+ {card.kind === "described" && card.description && ( +
+

{card.description}

+
+ )} + {card.links.map((link) => ( + + ))} +
+
+ ); +} + +export default function Workshops({ + sections, +}: { + sections: readonly WorkshopSection[]; +}) { + return ( +
+ {sections.map((section) => ( +
+
+

{section.heading}

+
+
+
+ {rowsOfTwo(section.cards).map((row, index) => ( +
+ {row.map((card) => ( + + ))} +
+ ))} +
+
+ ))} +
+ ); +} diff --git a/src/features/home/Home.tsx b/src/features/home/Home.tsx new file mode 100644 index 0000000..39ec5e2 --- /dev/null +++ b/src/features/home/Home.tsx @@ -0,0 +1,19 @@ +import Footer from "../../components/Footer"; +import About from "./components/About"; +import GetInvolved from "./components/GetInvolved"; +import Hero from "./components/Hero"; +import Speakers from "./components/Speakers"; +import Sponsors from "./components/Sponsors"; + +export default function Home() { + return ( +
+ + + + + +
+
+ ); +} diff --git a/src/components/About.test.jsx b/src/features/home/components/About.test.tsx similarity index 53% rename from src/components/About.test.jsx rename to src/features/home/components/About.test.tsx index 6119505..881fac0 100644 --- a/src/components/About.test.jsx +++ b/src/features/home/components/About.test.tsx @@ -1,20 +1,32 @@ -import { vi } from "vitest"; -import React from "react"; -import ReactDOM from "react-dom"; -import { act, Simulate } from "react-dom/test-utils"; +import { act } from "react"; +import { createRoot, type Root } from "react-dom/client"; import { MemoryRouter } from "react-router-dom"; + import About from "./About"; -let container; -let images; +let container: HTMLDivElement; +let root: Root; +let images: HTMLImageElement[]; + const activeImage = () => container.querySelector(".carousel-item.active img"); -const select = (index) => { + +const click = (element: Element | null | undefined) => { act(() => { - Simulate.click( - container.querySelectorAll(".carousel-indicators li")[index], - ); + element?.dispatchEvent(new MouseEvent("click", { bubbles: true })); + }); +}; + +const select = (index: number) => { + click(container.querySelectorAll(".carousel-indicators li")[index]); +}; + +const fire = (element: HTMLImageElement, type: "load" | "error") => { + act(() => { + element.dispatchEvent(new Event(type)); }); }; + +/** Longer than the 600ms slide, so the carousel has settled on a slide. */ const settle = () => { act(() => { vi.advanceTimersByTime(700); @@ -25,12 +37,12 @@ beforeEach(() => { vi.useFakeTimers(); container = document.createElement("div"); document.body.appendChild(container); + root = createRoot(container); act(() => { - ReactDOM.render( + root.render( , - container, ); }); images = Array.from(container.querySelectorAll(".carousel-item img")); @@ -38,7 +50,7 @@ beforeEach(() => { afterEach(() => { act(() => { - ReactDOM.unmountComponentAtNode(container); + root.unmount(); }); container.remove(); vi.useRealTimers(); @@ -46,38 +58,28 @@ afterEach(() => { it("skips a failed selected image and keeps backward navigation usable", () => { act(() => { - [0, 1, 3, 4].forEach((index) => Simulate.load(images[index])); + [0, 1, 3, 4].forEach((index) => + images[index].dispatchEvent(new Event("load")), + ); }); select(2); - act(() => { - Simulate.error(images[2]); - }); + fire(images[2], "error"); settle(); expect(activeImage()).toBe(images[3]); - act(() => { - Simulate.click(container.querySelector(".carousel-control-prev")); - }); + click(container.querySelector(".carousel-control-prev")); settle(); expect(activeImage()).toBe(images[1]); }); it("does not let older image events override the newer selection", () => { - act(() => { - Simulate.load(images[0]); - }); + fire(images[0], "load"); select(1); select(3); - act(() => { - Simulate.load(images[1]); - }); + fire(images[1], "load"); settle(); expect(activeImage()).toBe(images[0]); - act(() => { - Simulate.error(images[0]); - }); - act(() => { - Simulate.load(images[3]); - }); + fire(images[0], "error"); + fire(images[3], "load"); settle(); expect(activeImage()).toBe(images[3]); }); diff --git a/src/components/About.jsx b/src/features/home/components/About.tsx similarity index 61% rename from src/components/About.jsx rename to src/features/home/components/About.tsx index 0416b7c..95c3ecc 100644 --- a/src/components/About.jsx +++ b/src/features/home/components/About.tsx @@ -1,16 +1,13 @@ -import React, { Component } from "react"; -import PropTypes from "prop-types"; -import classnames from "classnames"; +import { Component } from "react"; import { Link } from "react-router-dom"; -import ReactGA from "react-ga"; - -import Carousel from "react-bootstrap/Carousel"; import { MdKeyboardArrowRight } from "react-icons/md"; -import GA from "util/GoogleAnalytics"; -import HomePageSections from "constants/HomePageSections"; -import CaourselImages from "constants/carousel"; -import images from "constants/optimizedImages"; +import GA from "../../../util/GoogleAnalytics"; +import OutboundLink from "../../../components/OutboundLink"; +import images from "../../../constants/optimizedImages"; +import HomePageSections from "../../../content/sections"; +import CarouselSlides from "../content/carousel"; +import Carousel, { type CarouselSlideItem } from "./Carousel"; const FoundingStoryLink = "https://medium.com/techatucla/exploretechla-founding-story-3bb8a947f931"; @@ -19,35 +16,25 @@ const FoundingStoryLink = const AboutImageSizes = "(min-width: 1100px) 480px, (min-width: 768px) 46vw, 100vw"; -export default class About extends Component { - static get propTypes() { - return { - className: PropTypes.string, - }; - } - - static get defaultProps() { - return { - className: "", - }; - } +interface AboutState { + readonly activeIndex: number; + readonly primed: boolean; + readonly requestedIndex: number | null; +} - constructor(props) { - super(props); +export default class About extends Component< + Record, + AboutState +> { + private readonly loadedSlides = new Set(); - this.state = { activeIndex: 0, primed: false, requestedIndex: null }; - this.loadedSlides = new Set(); - this.failedSlides = new Set(); + private readonly failedSlides = new Set(); - this._onSelect = this._onSelect.bind(this); - this._onSlideLoad = this._onSlideLoad.bind(this); - } + state: AboutState = { activeIndex: 0, primed: false, requestedIndex: null }; render() { - const classNames = classnames("Section", "About", this.props.className); - return ( -
+
@@ -78,7 +65,7 @@ export default class About extends Component {

- {this._renderCarousel({ className: "right-column" })} + {this._renderCarousel()}
-

Read about our founding story

-
+
@@ -132,36 +119,41 @@ export default class About extends Component { ); } - _onSelect(index) { - const count = CaourselImages.length; + /** + * Selection is advisory: the carousel only moves once the requested slide has + * loaded, and failed slides are stepped over in the direction of travel. + */ + private _onSelect = (index: number) => { + const count = CarouselSlides.length; if (this.failedSlides.size === count) { this.setState({ requestedIndex: null, primed: false }); return; } const previous = (this.state.activeIndex + count - 1) % count; const direction = index === previous ? -1 : 1; - while (this.failedSlides.has(index)) { - index = (index + direction + count) % count; + let target = index; + while (this.failedSlides.has(target)) { + target = (target + direction + count) % count; } - this.setState( - this.loadedSlides.has(index) - ? { activeIndex: index, requestedIndex: null } - : { requestedIndex: index } - ); - } + if (this.loadedSlides.has(target)) { + this.setState({ activeIndex: target, requestedIndex: null }); + } else { + this.setState({ requestedIndex: target }); + } + }; - _onSlideLoad(index) { + private _onSlideLoad = (index: number) => { this.failedSlides.delete(index); this.loadedSlides.add(index); this.setState((state) => ({ primed: true, - ...(state.requestedIndex === index - ? { activeIndex: index, requestedIndex: null } - : {}), + activeIndex: state.requestedIndex === index ? index : state.activeIndex, + requestedIndex: + state.requestedIndex === index ? null : state.requestedIndex, })); - } + }; - _onSlideError(index) { + private _onSlideError = (index: number) => { this.failedSlides.add(index); this.loadedSlides.delete(index); const { activeIndex, requestedIndex } = this.state; @@ -171,55 +163,47 @@ export default class About extends Component { ) { this._onSelect(index); } - } + }; // Keep the current slide visible until a requested slide has loaded. - _renderCarousel({ className }) { - const carouselItems = CaourselImages.map((img, index) => - this._renderCarouselItem(img, index) + private _renderCarousel() { + const { activeIndex, primed, requestedIndex } = this.state; + const total = CarouselSlides.length; + const items: readonly CarouselSlideItem[] = CarouselSlides.map( + (img, index) => { + const isNeighbour = + index === activeIndex || + index === (activeIndex + 1) % total || + index === (activeIndex + total - 1) % total; + return { + key: img.alt, + content: ( + {img.alt} this._onSlideLoad(index)} + onError={() => this._onSlideError(index)} + /> + ), + }; + }, ); + return ( - {carouselItems} - - ); - } - - _renderCarouselItem(img, index) { - if (!img || !img.src || !img.alt) { - return null; - } - - const { activeIndex, primed, requestedIndex } = this.state; - const total = CaourselImages.length; - const isNeighbour = - index === activeIndex || - index === (activeIndex + 1) % total || - index === (activeIndex + total - 1) % total; - - return ( - - {img.alt} this._onSlideLoad(index)} - onError={() => this._onSlideError(index)} - /> - + /> ); } } diff --git a/src/features/home/components/Carousel.tsx b/src/features/home/components/Carousel.tsx new file mode 100644 index 0000000..3fc34c6 --- /dev/null +++ b/src/features/home/components/Carousel.tsx @@ -0,0 +1,303 @@ +import { + useCallback, + useEffect, + useLayoutEffect, + useRef, + useState, + type KeyboardEvent, + type ReactNode, + type TouchEvent, +} from "react"; + +/** + * The one carousel this site uses: the About section's photo strip. + * + * It reproduces Bootstrap 4's `.carousel.slide` markup and its class + * choreography (`carousel-item-next` -> reflow -> `carousel-item-left`), so the + * existing stylesheet drives the same 600ms slide. Slide contents are supplied + * by the caller, which also owns which slide is selected; this component owns + * only the transition, autoplay, keyboard, hover and touch behaviour. + */ + +const SWIPE_THRESHOLD = 40; + +/** dom-helpers padded its emulated transition end by 5ms; keep that slack. */ +const TRANSITION_END_PADDING_MS = 5; + +export interface CarouselSlideItem { + readonly key: string; + readonly content: ReactNode; +} + +interface CarouselProps { + readonly className: string; + readonly items: readonly CarouselSlideItem[]; + readonly activeIndex: number; + /** Autoplay delay in milliseconds, or null to leave autoplay off. */ + readonly interval: number | null; + readonly onSelect: (index: number) => void; +} + +type SlideDirection = "next" | "prev"; + +interface SlideState { + readonly from: number; + readonly to: number; + readonly direction: SlideDirection; + /** `start` positions the incoming slide; `active` runs the transition. */ + readonly phase: "start" | "active"; +} + +function useEventCallback( + fn: (...args: A) => void, +): (...args: A) => void { + const ref = useRef(fn); + useLayoutEffect(() => { + ref.current = fn; + }); + return useCallback((...args: A) => ref.current(...args), []); +} + +function transitionDuration(node: Element): number { + const value = window.getComputedStyle(node).transitionDuration || ""; + const multiplier = value.indexOf("ms") === -1 ? 1000 : 1; + return parseFloat(value) * multiplier || 0; +} + +function isVisible(element: HTMLElement | null): boolean { + const parent = element?.parentElement; + if (!element || !parent) return false; + return ( + window.getComputedStyle(element).display !== "none" && + window.getComputedStyle(element).visibility !== "hidden" && + window.getComputedStyle(parent).display !== "none" + ); +} + +export default function Carousel({ + className, + items, + activeIndex, + interval, + onSelect, +}: CarouselProps) { + const elementRef = useRef(null); + const enteringRef = useRef(null); + const pendingDirectionRef = useRef(null); + + const [renderedActiveIndex, setRenderedActiveIndex] = useState(activeIndex); + const [slide, setSlide] = useState(null); + const [pausedOnHover, setPausedOnHover] = useState(false); + const [pausedOnTouch, setPausedOnTouch] = useState(false); + + // Adopt a new selection during render so the outgoing and incoming slides + // commit together, exactly as the Bootstrap carousel did. + if (slide === null && activeIndex !== renderedActiveIndex) { + setSlide({ + from: renderedActiveIndex, + to: activeIndex, + direction: + pendingDirectionRef.current ?? + (activeIndex > renderedActiveIndex ? "next" : "prev"), + phase: "start", + }); + setRenderedActiveIndex(activeIndex); + } + + const isSliding = slide !== null; + const count = items.length; + + const prev = useCallback(() => { + if (isSliding) return; + const target = renderedActiveIndex - 1; + pendingDirectionRef.current = "prev"; + onSelect(target < 0 ? count - 1 : target); + }, [isSliding, renderedActiveIndex, onSelect, count]); + + // Stable so the autoplay interval is not torn down on every render. + const next = useEventCallback(() => { + if (isSliding) return; + const target = renderedActiveIndex + 1; + pendingDirectionRef.current = "next"; + onSelect(target >= count ? 0 : target); + }); + + const nextWhenVisible = useEventCallback(() => { + if (!document.hidden && isVisible(elementRef.current)) next(); + }); + + useLayoutEffect(() => { + if (slide === null || slide.phase !== "start") return; + pendingDirectionRef.current = null; + // Force layout between the positioning class and the moving class so the + // browser animates instead of jumping. + if (enteringRef.current) void enteringRef.current.offsetHeight; + setSlide({ ...slide, phase: "active" }); + }, [slide]); + + useEffect(() => { + if (slide === null || slide.phase !== "active") return undefined; + const node = enteringRef.current; + if (!node) { + setSlide(null); + return undefined; + } + const finish = () => setSlide(null); + const handle = window.setTimeout( + finish, + transitionDuration(node) + TRANSITION_END_PADDING_MS, + ); + node.addEventListener("transitionend", finish); + return () => { + window.clearTimeout(handle); + node.removeEventListener("transitionend", finish); + }; + }, [slide]); + + const shouldPlay = + interval !== null && !pausedOnHover && !pausedOnTouch && !isSliding; + + useEffect(() => { + if (!shouldPlay) return undefined; + const handle = window.setInterval( + document.visibilityState ? nextWhenVisible : next, + interval ?? undefined, + ); + return () => window.clearInterval(handle); + }, [shouldPlay, next, interval, nextWhenVisible]); + + const touchStartXRef = useRef(0); + const touchDeltaXRef = useRef(0); + const touchUnpauseRef = useRef(undefined); + useEffect(() => () => window.clearTimeout(touchUnpauseRef.current), []); + + const handleKeyDown = (event: KeyboardEvent) => { + if ( + event.target instanceof HTMLElement && + /input|textarea/i.test(event.target.tagName) + ) + return; + if (event.key === "ArrowLeft") { + event.preventDefault(); + prev(); + } else if (event.key === "ArrowRight") { + event.preventDefault(); + next(); + } + }; + + const handleTouchStart = (event: TouchEvent) => { + touchStartXRef.current = event.touches[0].clientX; + touchDeltaXRef.current = 0; + setPausedOnTouch(true); + }; + + const handleTouchMove = (event: TouchEvent) => { + touchDeltaXRef.current = + event.touches.length > 1 + ? 0 + : event.touches[0].clientX - touchStartXRef.current; + }; + + const handleTouchEnd = () => { + const touchDeltaX = touchDeltaXRef.current; + // A tap below the swipe threshold leaves autoplay paused, as before. + if (Math.abs(touchDeltaX) <= SWIPE_THRESHOLD) return; + if (touchDeltaX > 0) prev(); + else next(); + window.clearTimeout(touchUnpauseRef.current); + touchUnpauseRef.current = window.setTimeout( + () => setPausedOnTouch(false), + interval ?? undefined, + ); + }; + + const slideClassName = (index: number): string => { + if (slide === null) { + return index === renderedActiveIndex + ? "active carousel-item" + : "carousel-item"; + } + const order = `carousel-item-${slide.direction}`; + const moving = `carousel-item-${slide.direction === "next" ? "left" : "right"}`; + if (index === slide.to) { + return slide.phase === "start" + ? `${order} carousel-item` + : `${order} ${moving} carousel-item`; + } + if (index === slide.from) { + return slide.phase === "start" + ? "active carousel-item" + : `active ${moving} carousel-item`; + } + return "carousel-item"; + }; + + return ( + + ); +} diff --git a/src/features/home/components/GetInvolved.tsx b/src/features/home/components/GetInvolved.tsx new file mode 100644 index 0000000..6a88b13 --- /dev/null +++ b/src/features/home/components/GetInvolved.tsx @@ -0,0 +1,126 @@ +import { MdKeyboardArrowRight } from "react-icons/md"; + +import OutboundLink from "../../../components/OutboundLink"; +import images from "../../../constants/optimizedImages"; +import HomePageSections from "../../../content/sections"; + +// Three cards side by side inside the 1040px section on desktop, a single +// 18rem card in the horizontal scroller below that. +const CardImageSizes = + "(min-width: 1100px) 340px, (min-width: 768px) 33vw, 18rem"; + +const MailingListSignUp = + "https://mailchi.mp/e1197feb6276/ucla-student-mailing-list"; + +export default function GetInvolved() { + return ( +
+
+
+

Get Involved

+
+
+
+
+ + +
+
+
+ For High Schools +
+

Inspire your students

+
+ +

+ Interest Form Out Soon +

+
+
+
+
+ +
+
+ + +
+
+
+ For Companies +
+

+ Become an industry partner +

+

+ Partner with us +

+
+ +

Email us

+
+
+
+
+ +
+
+ + +
+
+
+ For UCLA Students +
+

Join our team

+
+ +

+ Get our newsletter +

+

+ Sign up for our newsletter +

+
+
+
+
+ +
+
+
+
+ ); +} diff --git a/src/features/home/components/Hero.tsx b/src/features/home/components/Hero.tsx new file mode 100644 index 0000000..52ef8cd --- /dev/null +++ b/src/features/home/components/Hero.tsx @@ -0,0 +1,68 @@ +import { Link } from "react-router-dom"; + +import GA from "../../../util/GoogleAnalytics"; +import HomePageSections from "../../../content/sections"; +import LogoWithIconGroup from "../../../static/svg/logo-navy-with-icon-group-white.svg"; +import ActionLink from "../../../components/ActionLink"; + +const trackLearnMore = () => + GA.trackEvent({ category: "Hero", action: "Click", label: "Learn More" }); + +export default function Hero() { + return ( +
+ logo-with-icon-group +
+

Schedule is out now!

+
+ Check out our 2026 schedule page for the latest event details and + updates. +
+

+ Any questions or partnerships? +

+

+ Contact our executive directors Spoorthy Nalumachu and Clara Zhang:{" "} + + exploretechla@cs.ucla.edu + {" "} +

+ +
+ + GA.trackEvent({ + category: "Hero", + action: "Click", + label: "Register Today", + }) + } + > + Event Info + + { + if (event.key !== " ") return; + trackLearnMore(); + }} + > + Learn More + +
+
+
+ ); +} diff --git a/src/features/home/components/Speakers.tsx b/src/features/home/components/Speakers.tsx new file mode 100644 index 0000000..1b98003 --- /dev/null +++ b/src/features/home/components/Speakers.tsx @@ -0,0 +1,24 @@ +import People from "../../../components/common/People"; +import HomePageSections from "../../../content/sections"; +import { pastSpeakers } from "../../../content/speakers"; +import { people } from "../../../content/people"; + +export default function Speakers() { + return ( +
+
+
+

Past Speakers

+
+
+ ({ + ...people[personId], + title, + }))} + eagerCount={0} + /> +
+
+ ); +} diff --git a/src/features/home/components/Sponsors.tsx b/src/features/home/components/Sponsors.tsx new file mode 100644 index 0000000..d49ba39 --- /dev/null +++ b/src/features/home/components/Sponsors.tsx @@ -0,0 +1,63 @@ +import { MdKeyboardArrowRight } from "react-icons/md"; + +import OutboundLink from "../../../components/OutboundLink"; +import HomePageSections from "../../../content/sections"; +import { + LargeLogoSponsors, + SmallLogoSponsors, + type SponsorLogo, +} from "../content/sponsors"; + +// Sponsor logos live at the bottom of the home page, so they are all lazy; the +// two rows are rendered at different widths. +const LargeLogoSizes = "(min-width: 768px) 16rem, 14rem"; +const SmallLogoSizes = "(min-width: 768px) 12rem, 8rem"; + +function renderLogo({ name, website, ...image }: SponsorLogo, sizes: string) { + return ( +
+ + {name} + +
+ ); +} + +export default function Sponsors() { + return ( +
+
+
+

Our Sponsors

+
+
+
+ {LargeLogoSponsors.map((logo) => renderLogo(logo, LargeLogoSizes))} +
+
+ {SmallLogoSponsors.map((logo) => renderLogo(logo, SmallLogoSizes))} +
+
+
Interested in sponsoring?
+
+ +

Email Us!

+ +
+
+
+
+
+ ); +} diff --git a/src/constants/carousel.js b/src/features/home/content/carousel.ts similarity index 53% rename from src/constants/carousel.js rename to src/features/home/content/carousel.ts index f96c42f..11a9291 100644 --- a/src/constants/carousel.js +++ b/src/features/home/content/carousel.ts @@ -1,7 +1,12 @@ -import images from "./optimizedImages"; +import images from "../../../constants/optimizedImages"; +import type { OptimizedImage } from "../../../content/types"; -// Each entry spreads straight onto an : src, srcSet, sizes, width, height. -const CaourselImages = [ +/** Each slide spreads straight onto an : src, srcSet, sizes, width, height. */ +export interface CarouselSlide extends OptimizedImage { + readonly alt: string; +} + +const CarouselSlides: readonly CarouselSlide[] = [ { ...images["images/demo-microsoft-vr.jpg"], alt: "VR Demo", @@ -24,4 +29,4 @@ const CaourselImages = [ }, ]; -export default CaourselImages; +export default CarouselSlides; diff --git a/src/constants/sponsors.js b/src/features/home/content/sponsors.ts similarity index 65% rename from src/constants/sponsors.js rename to src/features/home/content/sponsors.ts index 63cc39e..e210efb 100644 --- a/src/constants/sponsors.js +++ b/src/features/home/content/sponsors.ts @@ -1,9 +1,21 @@ -import images from "./optimizedImages"; -import capcomLogo from "static/sponsors/capcom.svg"; +import images from "../../../constants/optimizedImages"; +import capcomLogo from "../../../static/sponsors/capcom.svg"; -// Raster logos spread the generated metadata (src, srcSet, width, height) so the -// browser can pick a variant and reserve the box. capcom stays vector. -export const LargeLogoSponsors = [ +/** + * Raster logos spread the generated metadata (src, srcSet, width, height) so the + * browser can pick a variant and reserve the box. capcom stays vector, so it has + * no srcSet. + */ +export interface SponsorLogo { + readonly name: string; + readonly website: string; + readonly src: string; + readonly srcSet?: string; + readonly width: number; + readonly height: number; +} + +export const LargeLogoSponsors: readonly SponsorLogo[] = [ { name: "google-logo", ...images["sponsors/google-logo.png"], @@ -16,7 +28,7 @@ export const LargeLogoSponsors = [ }, ]; -export const SmallLogoSponsors = [ +export const SmallLogoSponsors: readonly SponsorLogo[] = [ { name: "balsamiq", ...images["sponsors/balsamiq.png"], diff --git a/src/features/ignite/Ignite.tsx b/src/features/ignite/Ignite.tsx new file mode 100644 index 0000000..df4e398 --- /dev/null +++ b/src/features/ignite/Ignite.tsx @@ -0,0 +1,265 @@ +import Footer from "../../components/Footer"; +import PageNotFound from "../../components/PageNotFound"; +import images from "../../constants/optimizedImages"; + +// Workshop cards sit three-up on desktop; the capstone and apply photos are +// single large images inside their own containers. +const WorkshopImageSizes = "(min-width: 992px) 33vw, 100vw"; +const CapstoneImageSizes = "(min-width: 1000px) 900px, 90vw"; +const ApplyImageSizes = "(min-width: 992px) 50vw, 100vw"; + +const ApplicationForm = "https://forms.gle/DKUZARUPjWoxrUif6"; + +// Every image on this page is below the header section, so they are all lazy. +function lazyPhoto(key: keyof typeof images, sizes: string) { + return { + ...images[key], + sizes, + loading: "lazy", + decoding: "async", + } as const; +} + +const IGNITE_ENABLED: boolean = true; // gate + +export default function Ignite() { + if (!IGNITE_ENABLED) { + return ; + } + + return ( +
+
+
+

Ignite

+
+

+ Ignite is a 4-week series of beginner-friendly workshops offering + an in-depth exploration of current trending topics in technology. + It is designed to inspire and encourage high school students to + pursue a career in the STEM/Tech field. +

+
+
+ + +
+
+
+ +
+
+

Program Structure

+
+
+

Week 1: Foundation

+

+ Building core skills and understanding key concepts. +

+
+
+

Week 2: Development

+

+ Hands-on learning and practical application. +

+
+
+

Week 3: Integration

+

+ Advanced concepts and team collaboration. +

+
+
+

+ Week 4: +
+ Capstone +

+

+ Project development and final presentation. +

+
+
+
+
+ +
+
+

2025 Workshops

+
+
+

Introduction to Python

+

+ Dive into one of the most versatile and widely used programming + languages. This track will teach you essential Python concepts + and guide you through practical projects, perfect for beginners. +

+
+ Introduction to Python +
+
+
+

+ Game Development with Roblox +

+

+ Design and develop an exciting speed run parkour game using + Roblox Studio. From building dynamic levels to scripting game + mechanics with Lua, you'll gain hands-on experience in game + creation. +

+
+ Game Development with Roblox +
+
+
+

Web Development

+

+ Learn how websites are built using HTML and CSS. Build your + skills throughout the sessions and create your very own custom + website as a capstone project. +

+
+ Web Development +
+
+
+
+
+ +
+
+

2024 Workshops

+
+
+

Introduction to Python

+

+ Dive into one of the most versatile and widely used programming + languages. This track will teach you essential Python concepts + and guide you through practical projects, perfect for beginners. +

+
+ Introduction to Python +
+
+
+

+ Game Development with Unity +

+

+ Design and develop an exciting speed run parkour game using + Roblox Studio. From building dynamic levels to scripting game + mechanics with Lua, you'll gain hands-on experience in game + creation. +

+
+ Game Development with Unity +
+
+
+

Machine Learning

+

+ Learn how websites are built using HTML and CSS. Build your + skills throughout the sessions and create your very own custom + website as a capstone project. +

+
+ Machine Learning +
+
+
+
+
+ +
+
+

Capstone Project

+

+ The program culminates in a capstone project... +

+
+ Capstone Project Presentation +
+
+
+ +
+
+
+

Apply Now!

+

+ Applications for the next IGNITE are open... +

+ +
+ +
+
+ Students Workshop +
+
+
+
+ +
+
+ ); +} diff --git a/src/features/registration/ImportantLinks.tsx b/src/features/registration/ImportantLinks.tsx new file mode 100644 index 0000000..0529c6a --- /dev/null +++ b/src/features/registration/ImportantLinks.tsx @@ -0,0 +1,62 @@ +import type { RegistrationContent } from "../../content/events/2021"; +import ActionLink from "../../components/ActionLink"; + +export default function ImportantLinks({ + links, +}: { + links: RegistrationContent["importantLinks"]; +}) { + const { support } = links; + + return ( +
+
+

Important Links

+
+

{links.intro}

+
+
+ + {links.platform.name} + +
+
+ {links.documents.map((document) => ( +
+ + {document.name} + +
+ ))} +
+
+

{support.heading}

+
+ {support.paragraphs.map((paragraph) => ( +

{paragraph}

+ ))} +
+

{support.liveHeading}

+

{support.liveBody}

+
+ + {support.zoom.name} + +
+
+

+ {support.hoursLabel} {support.hours} +

+
+
+ ); +} diff --git a/src/features/registration/RegistrationAlert.tsx b/src/features/registration/RegistrationAlert.tsx new file mode 100644 index 0000000..e555827 --- /dev/null +++ b/src/features/registration/RegistrationAlert.tsx @@ -0,0 +1,38 @@ +import { Link } from "react-router-dom"; + +import type { RegistrationContent } from "../../content/events/2021"; +import GA from "../../util/GoogleAnalytics"; + +export default function RegistrationAlert({ + alert, +}: { + alert: RegistrationContent["alert"]; +}) { + return ( +
+

+ {alert.heading} +

+
+
{alert.note}
+
+
+
+ + GA.trackEvent({ + category: "RegistrationAlert", + action: "Click", + label: alert.trackingLabel, + }) + } + > + {alert.linkLabel} + +
+
+
+ ); +} diff --git a/src/features/registration/RegistrationPage.tsx b/src/features/registration/RegistrationPage.tsx new file mode 100644 index 0000000..96d3988 --- /dev/null +++ b/src/features/registration/RegistrationPage.tsx @@ -0,0 +1,57 @@ +import Footer from "../../components/Footer"; +import images from "../../constants/optimizedImages"; +import { REGISTRATION_2021 } from "../../content/events/2021"; +import ActionLink from "../../components/ActionLink"; +import Faq from "../events/Faq"; +import Waivers from "../events/Waivers"; +import ImportantLinks from "./ImportantLinks"; +import RegistrationAlert from "./RegistrationAlert"; +import TwoDaySchedule from "./TwoDaySchedule"; + +/** The 2021 event information page, served at /register. */ +export default function RegistrationPage() { + const content = REGISTRATION_2021; + const { waivers } = content; + + return ( +
+
+ {/* + The banner is the first thing on the page, so it stays eager and + keeps its intrinsic dimensions to reserve the space it needs. + */} + banner +
+ +
+

{content.title}

+
+ + + + +
+

+ {waivers.allFormsHeading} +

+

{waivers.allFormsBody}

+
+ + {waivers.allForms.name} + +
+
+
+
+
+ ); +} diff --git a/src/features/registration/TwoDaySchedule.tsx b/src/features/registration/TwoDaySchedule.tsx new file mode 100644 index 0000000..5208757 --- /dev/null +++ b/src/features/registration/TwoDaySchedule.tsx @@ -0,0 +1,43 @@ +import type { ScheduleDay } from "../../content/events/types"; + +function Column({ day, side }: { day: ScheduleDay; side: "left" | "right" }) { + return ( +
+
+

{day.title}

+
+
+
+

+ {day.items.map((entry) => ( +

+ {entry.time}: {entry.name} +

+ ))} +

+
+
+ ); +} + +/** The 2021 event ran over two days, so its schedule renders as two columns. */ +export default function TwoDaySchedule({ + days, +}: { + days: readonly [ScheduleDay, ScheduleDay]; +}) { + return ( +
+
+
+

Schedule

+
+
+
+ + +
+
+
+ ); +} diff --git a/src/features/team/Team.tsx b/src/features/team/Team.tsx new file mode 100644 index 0000000..29372b6 --- /dev/null +++ b/src/features/team/Team.tsx @@ -0,0 +1,120 @@ +import { Link, useLocation } from "react-router-dom"; + +import Footer from "../../components/Footer"; +import People from "../../components/common/People"; +import { teamCards, teamSections, teamSectionsById } from "../../content/teams"; +import type { TeamSectionId } from "../../content/types"; + +interface SectionLayout { + /** Second class on the
, after "Section". */ + readonly sectionClass: string; + /** Wrapper div around header + cards; absent for the newest two sections. */ + readonly containerClass?: string; + readonly headerClass: string; + readonly elementId?: string; +} + +/** + * Legacy DOM shape per section. The five original sections wrap their header + * and cards in a "-container" div and use a "-header"; Web Dev and + * Marketing were added later without a container and share a generic header + * class. Existing stylesheets select on these exact names. + */ +const sectionLayouts: Record = { + leadership: { + sectionClass: "Leadership", + containerClass: "leadership-container", + headerClass: "leadership-header", + elementId: "leadership", + }, + content: { + sectionClass: "Content", + containerClass: "content-container", + headerClass: "content-header", + }, + design: { + sectionClass: "Design", + containerClass: "design-container", + headerClass: "design-header", + }, + operations: { + sectionClass: "Operations", + containerClass: "operations-container", + headerClass: "operations-header", + }, + external: { + sectionClass: "External", + containerClass: "external-container", + headerClass: "external-header", + }, + "web-dev": { + sectionClass: "WebDev", + headerClass: "team-section-header", + }, + marketing: { + sectionClass: "Marketing", + headerClass: "team-section-header", + }, +}; + +export default function Team() { + const location = useLocation(); + + // Section comes from the URL: /our_team and /our_team/. + const pathParts = location.pathname.split("/").filter(Boolean); + const lastPart = pathParts[pathParts.length - 1]; + const activeSlug = + lastPart === "our_team" ? "leadership" : lastPart || "leadership"; + + // Unknown slugs render Leadership without marking any tab active. + const section = + teamSections.find((candidate) => candidate.id === activeSlug) ?? + teamSectionsById.leadership; + const layout = sectionLayouts[section.id]; + + const sectionBody = ( + <> +
+

{section.heading}

+
+
+ + + ); + + return ( +
+
+

Meet Our Team

+
+
+ +
+ {teamSections.map((candidate) => ( + + {candidate.navLabel} + + ))} +
+ +
+
+ {layout.containerClass ? ( +
{sectionBody}
+ ) : ( + sectionBody + )} +
+
+ +
+
+ ); +} diff --git a/src/index.jsx b/src/index.jsx deleted file mode 100644 index 0fbff3c..0000000 --- a/src/index.jsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom"; -import { BrowserRouter } from "react-router-dom"; - -import App from "./App"; - -import "./index.scss"; - -ReactDOM.render( - - - , - document.getElementById("root") -); diff --git a/src/styles/app-shell.css b/src/styles/app-shell.css new file mode 100644 index 0000000..19d7cf7 --- /dev/null +++ b/src/styles/app-shell.css @@ -0,0 +1,173 @@ +/* + * Site shell: the divider, document behaviour, section geometry and the two pieces of + * chrome that wrap every route. Section padding is the one piece of layout that is exactly + * a token lookup at every breakpoint, so it is expressed with Tailwind utilities over the + * spacing tokens instead of four hand-written media blocks. + */ + +/* Shared pill divider */ +.pill-divider { + @apply h-2 w-16 mb-6 rounded-sm bg-aqua; +} + +/* Document */ +html { + scroll-behavior: smooth; +} + +/* Section geometry and scrollbars */ +.App section, +.App .Section { + @apply py-section-y px-section-xs sm:px-section-sm md:px-section-md lg:px-section-lg; +} + +.App ::-webkit-scrollbar { + @apply h-[2px]; +} + +.App ::-webkit-scrollbar-track { + background: #ebebeb; + @apply rounded-[1px]; +} + +.App ::-webkit-scrollbar-thumb { + background: var(--color-aqua); + @apply rounded-[1px]; +} + +@media (max-width: 575.98px) { + .App { + overflow-x: hidden; + } +} + +@media (min-width: 576px) { + .App ::-webkit-scrollbar { + @apply h-[4px]; + } + + .App ::-webkit-scrollbar-track { + @apply rounded-[2px]; + } + + .App ::-webkit-scrollbar-thumb { + @apply rounded-[2px]; + } +} + +@media (min-width: 768px) { + .App ::-webkit-scrollbar { + @apply hidden; + } +} + +/* Site header */ +.Header.Home { + background-color: var(--color-aqua); +} + +.Header.Section { + @apply pt-[1rem]; + @apply pb-[1rem]; +} + +.Header .site-nav-items { + @apply pt-[0.5rem]; +} + +.Header .site-nav-items .site-nav-item, +.Header .site-nav-items .site-nav-link, +.Header .site-nav-items .site-menu { + @apply ml-[0.5rem]; + @apply mr-[0.5rem]; +} + +.Header .logo-compass { + @apply block w-[2.5rem] h-[auto]; +} + +.Header .logo-with-icons { + @apply hidden max-w-[14rem] h-[auto]; +} + +@media (min-width: 576px) { + .Header .site-nav-items { + @apply pt-[0]; + } +} + +@media (min-width: 768px) { + .Header .logo-compass { + @apply hidden; + } + + .Header .logo-with-icons { + @apply block; + } +} + +/* Site footer */ +.Footer { + @apply p-[48px_0]; + color: #ffffff; + background-color: var(--color-muted-blue); +} + +.Footer .footer-inner { + @apply flex; + @apply flex-col justify-between items-center max-w-[1200px] m-[auto]; +} + +.Footer .footer-inner .footer-item { + @apply text-center; +} + +.Footer .footer-inner .footer-item:not(:last-child) { + @apply pb-[2.5rem]; +} + +.Footer .footer-inner .footer-item.logo { + @apply hidden; +} + +.Footer .footer-inner .footer-item.email p:last-child { + @apply mb-[0]; +} + +.Footer .footer-inner .footer-item .logo-with-icons { + @apply w-[14rem] h-[auto]; +} + +.Footer .footer-inner .footer-item .social-media-list { + @apply flex justify-center; +} + +.Footer .footer-inner .footer-item .social-media-list .social-media-link { + @apply m-[0_8px]; +} + +.Footer .footer-inner .footer-item a { + color: #ffffff; + text-decoration: none; +} + +.Footer .FaHeart { + fill: red; + @apply mb-[2px]; +} + +@media (min-width: 576px) { + .Footer .footer-inner { + @apply flex-row p-[0_24px]; + } + + .Footer .footer-inner .footer-item { + @apply pb-[0]; + } +} + +@media (min-width: 992px) { + .Footer .footer-inner .footer-item.logo { + @apply block; + } +} diff --git a/src/index.scss b/src/styles/base.css similarity index 56% rename from src/index.scss rename to src/styles/base.css index 8c470ff..161ff89 100644 --- a/src/index.scss +++ b/src/styles/base.css @@ -2,8 +2,8 @@ body { margin: 0; padding: 0; font-family: "Poppins", sans-serif; +} - .in-text-link { - color: #448494; - } +body .in-text-link { + color: var(--color-muted-blue); } diff --git a/src/styles/controls.css b/src/styles/controls.css new file mode 100644 index 0000000..b26b772 --- /dev/null +++ b/src/styles/controls.css @@ -0,0 +1,778 @@ +/* + * Rules in this file are derived from Bootstrap v4.5.2 (https://getbootstrap.com/), + * Copyright 2011-2020 The Bootstrap Authors and Twitter, Inc., MIT licensed + * (https://github.com/twbs/bootstrap/blob/main/LICENSE). + * + * They are the subset the shipped markup actually depended on, extracted from the compiled + * baseline rather than re-imported, so the site keeps its exact reset and control geometry + * without carrying the framework. + */ +/* Buttons */ +.action { + @apply inline-block font-normal text-[#212529] text-center align-middle select-none bg-transparent border border-solid border-transparent px-3 py-[0.375rem] text-[1rem] leading-[1.5] rounded-[0.25rem]; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .action { + transition: none; + } +} + +.action:hover { + color: #212529; + text-decoration: none; +} + +.action:focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.action:disabled { + opacity: 0.65; +} + +.action:not(:disabled) { + cursor: pointer; +} + +.action-primary { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.action-primary:hover { + color: #fff; + background-color: #0069d9; + border-color: #0062cc; +} + +.action-primary:focus { + color: #fff; + background-color: #0069d9; + border-color: #0062cc; + box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); +} + +.action-primary:disabled { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.action-primary:not(:disabled):active { + color: #fff; + background-color: #0062cc; + border-color: #005cbf; +} + +.action-primary:not(:disabled):active:focus { + box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); +} + +.action-info { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.action-info:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b; +} + +.action-info:focus { + color: #fff; + background-color: #138496; + border-color: #117a8b; + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); +} + +.action-info:disabled { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.action-info:not(:disabled):active { + color: #fff; + background-color: #117a8b; + border-color: #10707f; +} + +.action-info:not(:disabled):active:focus { + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); +} + +.action-warning { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.action-warning:hover { + color: #212529; + background-color: #e0a800; + border-color: #d39e00; +} + +.action-warning:focus { + color: #212529; + background-color: #e0a800; + border-color: #d39e00; + box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); +} + +.action-warning:disabled { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.action-warning:not(:disabled):active { + color: #212529; + background-color: #d39e00; + border-color: #c69500; +} + +.action-warning:not(:disabled):active:focus { + box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); +} + +.action-outline { + color: #17a2b8; + border-color: #17a2b8; +} + +.action-outline:hover { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.action-outline:focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.action-outline:disabled { + color: #17a2b8; + background-color: transparent; +} + +.action-outline:not(:disabled):active { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.action-outline:not(:disabled):active:focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.action-inverse { + color: #f8f9fa; + border-color: #f8f9fa; +} + +.action-inverse:hover { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.action-inverse:focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.action-inverse:disabled { + color: #f8f9fa; + background-color: transparent; +} + +.action-inverse:not(:disabled):active { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.action-inverse:not(:disabled):active:focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.action-large { + @apply p-[0.5rem_1rem] text-[1.25rem] leading-[1.5] rounded-[0.3rem]; +} + +/* Disclosure (menu and accordion) transitions */ +.disclosure:not(.show) { + @apply hidden; +} + +.disclosure-transition { + @apply relative h-[0]; + overflow: hidden; + transition: height 0.35s ease; +} + +@media (prefers-reduced-motion: reduce) { + .disclosure-transition { + transition: none; + } +} + +/* Dropdown */ +.site-menu { + @apply relative; +} + +.site-menu-toggle { + @apply whitespace-nowrap; +} + +.site-menu-toggle::after { + @apply inline-block ml-[0.255em]; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} + +.site-menu-items { + @apply absolute top-[100%] left-[0] z-[1000] hidden; + float: left; + @apply min-w-[10rem] p-[0.5rem_0] m-[0.125rem_0_0] text-[1rem]; + color: #212529; + @apply text-left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + @apply rounded-[0.25rem]; +} + +.site-menu-link { + @apply block w-[100%] p-[0.25rem_1.5rem]; + clear: both; + @apply font-normal; + color: #212529; + text-align: inherit; + @apply whitespace-nowrap; + background-color: transparent; + border: 0; +} + +.site-menu-link:hover, +.site-menu-link:focus { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; +} + +.site-menu-link.active, +.site-menu-link:active { + color: #fff; + text-decoration: none; + background-color: #007bff; +} + +.site-menu-items.show { + @apply block; +} + +/* Nav */ +.site-nav-link { + @apply block p-[0.5rem_1rem]; +} + +.site-nav-link:hover, +.site-nav-link:focus { + text-decoration: none; +} + +/* Navbar */ +.site-nav { + @apply relative flex; + @apply flex-wrap items-center justify-between p-[0.5rem_1rem]; +} + +.site-brand { + @apply inline-block pt-[0.3125rem]; + @apply pb-[0.3125rem] mr-[1rem] text-[1.25rem] leading-[inherit] whitespace-nowrap; +} + +.site-brand:hover, +.site-brand:focus { + text-decoration: none; +} + +.site-nav-items { + @apply flex; + @apply flex-col pl-[0] mb-[0]; + list-style: none; +} + +.site-nav-items .site-nav-link { + @apply pr-[0]; + @apply pl-[0]; +} + +.site-nav-items .site-menu-items { + @apply static; + float: none; +} + +.site-nav-panel { + flex-basis: 100%; + @apply grow-[1] items-center; +} + +.site-nav-toggle { + @apply p-[0.25rem_0.75rem] text-[1.25rem] leading-[1]; + background-color: transparent; + border: 1px solid transparent; + @apply rounded-[0.25rem]; +} + +.site-nav-toggle:hover, +.site-nav-toggle:focus { + text-decoration: none; +} + +.site-nav-toggle-icon { + @apply inline-block w-[1.5em] h-[1.5em] align-middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; +} + +@media (min-width: 576px) { + .site-nav-responsive { + flex-flow: row nowrap; + @apply justify-start; + } + + .site-nav-responsive .site-nav-items { + @apply flex-row; + } + + .site-nav-responsive .site-nav-items .site-menu-items { + @apply absolute; + } + + .site-nav-responsive .site-nav-items .site-nav-link { + @apply pr-[0.5rem]; + @apply pl-[0.5rem]; + } + + .site-nav-responsive .site-nav-panel { + display: flex !important; + flex-basis: auto; + } + + .site-nav-responsive .site-nav-toggle { + @apply hidden; + } +} + +.site-nav-light .site-brand { + color: rgba(0, 0, 0, 0.9); +} + +.site-nav-light .site-brand:hover, +.site-nav-light .site-brand:focus { + color: rgba(0, 0, 0, 0.9); +} + +.site-nav-light .site-nav-items .site-nav-link { + color: rgba(0, 0, 0, 0.5); +} + +.site-nav-light .site-nav-items .site-nav-link:hover, +.site-nav-light .site-nav-items .site-nav-link:focus { + color: rgba(0, 0, 0, 0.7); +} + +.site-nav-light .site-nav-items .show > .site-nav-link, +.site-nav-light .site-nav-items .active > .site-nav-link, +.site-nav-light .site-nav-items .site-nav-link.show, +.site-nav-light .site-nav-items .site-nav-link.active { + color: rgba(0, 0, 0, 0.9); +} + +.site-nav-light .site-nav-toggle { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); +} + +.site-nav-light .site-nav-toggle-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +/* Card */ +.content-card { + @apply relative flex; + @apply flex-col min-w-[0]; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + @apply rounded-[0.25rem]; +} + +.content-card > .resource-list { + border-top: inherit; + border-bottom: inherit; +} + +.content-card > .resource-list:first-child { + border-top-width: 0; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} + +.content-card > .resource-list:last-child { + border-bottom-width: 0; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +.content-card > .content-card-header + .resource-list { + border-top: 0; +} + +.content-card-body { + flex: 1 1 auto; + @apply min-h-[1px] p-[1.25rem]; +} + +.content-card-title { + @apply mb-[0.75rem]; +} + +.content-card-subtitle { + @apply mt-[-0.375rem]; + @apply mb-[0]; +} + +.content-card-text:last-child { + @apply mb-[0]; +} + +.content-card-link:hover { + text-decoration: none; +} + +.content-card-link + .content-card-link { + @apply ml-[1.25rem]; +} + +.content-card-header { + @apply p-[0.75rem_1.25rem] mb-[0]; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} + +.content-card-header:first-child { + @apply rounded-[calc(0.25rem_-_1px)_calc(0.25rem_-_1px)_0_0]; +} + +.content-card-overlay { + @apply absolute top-[0] right-[0] bottom-[0] left-[0] p-[1.25rem] rounded-[calc(0.25rem_-_1px)]; +} + +.content-card-image { + @apply shrink-[0] w-[100%]; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} + +.content-card-row .content-card { + @apply mb-[15px]; +} + +@media (min-width: 576px) { + .content-card-row { + @apply flex; + flex-flow: row wrap; + @apply mr-[-15px]; + @apply ml-[-15px]; + } + + .content-card-row .content-card { + flex: 1 0 0%; + @apply mr-[15px]; + @apply mb-[0]; + @apply ml-[15px]; + } +} + +/* Accordion */ +.accordion { + overflow-anchor: none; +} + +.accordion > .content-card { + overflow: hidden; +} + +.accordion > .content-card:not(:last-of-type) { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.accordion > .content-card:not(:first-of-type) { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.accordion > .content-card > .content-card-header { + @apply rounded-[0] mb-[-1px]; +} + +/* List group */ +.resource-list { + @apply flex; + @apply flex-col pl-[0] mb-[0] rounded-[0.25rem]; +} + +.resource-list-item { + @apply relative block p-[0.75rem_1.25rem]; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} + +.resource-list-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} + +.resource-list-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} + +.resource-list-item.active { + @apply z-[2]; + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.resource-list-item + .resource-list-item { + border-top-width: 0; +} + +.resource-list-item + .resource-list-item.active { + @apply mt-[-1px]; + border-top-width: 1px; +} + +.resource-list-flush { + @apply rounded-[0]; +} + +.resource-list-flush > .resource-list-item { + border-width: 0 0 1px; +} + +.resource-list-flush > .resource-list-item:last-child { + border-bottom-width: 0; +} + +/* Carousel */ +.carousel { + @apply relative; +} + +.carousel-inner { + @apply relative w-[100%]; + overflow: hidden; +} + +.carousel-inner::after { + @apply block; + clear: both; + content: ""; +} + +.carousel-item { + @apply relative hidden; + float: left; + @apply w-[100%] mr-[-100%]; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + @apply block; +} + +.carousel-item-next:not(.carousel-item-left), +.active.carousel-item-right { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-right), +.active.carousel-item-left { + transform: translateX(-100%); +} + +.carousel-control-prev, +.carousel-control-next { + @apply absolute top-[0] bottom-[0] z-[1] flex items-center justify-center w-[15%]; + color: #fff; + @apply text-center; + opacity: 0.5; + transition: opacity 0.15s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} + +.carousel-control-prev:hover, +.carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + @apply left-[0]; +} + +.carousel-control-next { + @apply right-[0]; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + @apply inline-block w-[20px] h-[20px]; + background: no-repeat 50%/100% 100%; +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + @apply absolute right-[0] bottom-[0] left-[0] z-[15] flex justify-center pl-[0] mr-[15%]; + @apply ml-[15%]; + list-style: none; +} + +.carousel-indicators li { + box-sizing: content-box; + flex: 0 1 auto; + @apply w-[30px] h-[3px] mr-[3px]; + @apply ml-[3px]; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-indicators li { + transition: none; + } +} + +.carousel-indicators .active { + opacity: 1; +} + +/* + * Utility classes the markup still uses and Tailwind does not reproduce identically. + * `mb-2` and `text-center` were dropped: Tailwind generates the same declarations for those + * literals. `sr-only` stays because Tailwind's version hides text with `clip-path` instead of + * `clip`, which is a different computed style from the one this site shipped. + */ +.visually-hidden { + @apply absolute w-[1px] h-[1px] p-[0] m-[-1px]; + overflow: hidden; + clip: rect(0, 0, 0, 0); + @apply whitespace-nowrap; + border: 0; +} + +.nav-align-end { + justify-content: flex-end !important; +} + +.muted-copy { + color: #6c757d !important; +} + +@media print { + *, + *::before, + *::after { + text-shadow: none !important; + box-shadow: none !important; + } + + a:not(.action) { + text-decoration: underline; + } + + img { + page-break-inside: avoid; + } + + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + + h2, + h3 { + page-break-after: avoid; + } + + @page { + size: a3; + } + + body { + min-width: 992px !important; + } + + .site-nav { + @apply hidden; + } +} diff --git a/src/styles/events.css b/src/styles/events.css new file mode 100644 index 0000000..014be54 --- /dev/null +++ b/src/styles/events.css @@ -0,0 +1,210 @@ +/* Not found */ +.PageNotFound { + @apply flex; + @apply flex-col items-center text-center; +} + +.PageNotFound h3 { + @apply mb-[2rem]; +} + +/* Registration */ +.RegistrationAlert { + background-color: var(--color-muted-blue); + @apply flex; + @apply flex-col items-center text-center m-[auto] pt-[32px]; + @apply pb-[32px]; +} + +.RegistrationAlert h3, +.RegistrationAlert h5 { + color: white; + @apply pr-[10px]; + @apply pl-[10px]; +} + +.RegistrationAlert .buttons { + @apply pt-[10px] flex; + @apply flex-col items-center; +} + +.RegistrationAlert .buttons .button { + @apply pt-[10px]; + @apply pb-[10px]; +} + +.RegistrationAlert .notes { + @apply pt-[10px]; +} + +.Waivers { + background-color: #f5f5f5; + @apply flex; + @apply flex-col items-center m-[auto] pb-[32px]; +} + +.Waivers .waivers-title, +.Waivers .waivers-text { + @apply flex; + @apply flex-col items-center; +} + +.Waivers .buttons { + @apply pt-[20px] flex; + @apply flex-col items-center pb-[20px]; +} + +.Waivers .buttons .button { + @apply pt-[10px]; + @apply pb-[10px]; +} + +.ImportantLinks { + background-color: #f5f5f5; + @apply flex; + @apply flex-col items-center m-[auto] pb-[32px]; +} + +.ImportantLinks .links-title { + @apply flex; + @apply flex-col items-center; +} + +.ImportantLinks .links-text { + @apply flex; + @apply flex-col items-center pt-[30px]; +} + +.ImportantLinks .buttons { + @apply pt-[20px] flex; + @apply flex-col items-center pb-[20px]; +} + +.ImportantLinks .buttons .button { + @apply pt-[10px]; + @apply pb-[10px]; +} + +.FAQ { + background-color: white; +} + +.FAQ .faq-content { + @apply flex; + @apply flex-col justify-between max-w-[1200px] m-[auto]; +} + +.FAQ .faq-content:not(:last-child) { + @apply pb-[32px]; +} + +.FAQ .faq-content .faq-centered-title { + @apply flex-col items-center; +} + +.FAQ .faq-content .left-column.text, +.FAQ .faq-content .right-column.text { + @apply pt-[32px]; +} + +.FAQ .faq-student { + @apply pb-[32px]; +} + +.Schedule { + background-color: white; +} + +.Schedule .schedule-content { + @apply flex; + @apply flex-col justify-between max-w-[1200px] m-[auto]; +} + +.Schedule .schedule-content:not(:last-child) { + @apply pb-[32px]; +} + +.Schedule .schedule-content.schedule-column-container { + @apply flex-col; +} + +.Schedule .schedule-content .schedule-title { + @apply items-center text-center; +} + +.Schedule .schedule-content .left-column.text, +.Schedule .schedule-content .right-column.text { + @apply pt-[32px]; +} + +.Register .registration-title { + @apply flex; + @apply flex-col items-center max-w-[1200px] m-[auto] pt-[32px]; + @apply pb-[32px]; +} + +.Register .banner { + @apply w-[100vw] h-[auto]; +} + +/* Resources */ +.Workshops .workshops-content { + @apply flex; + @apply flex-col justify-between items-center max-w-[1200px] m-[auto]; +} + +.Workshops .workshops-content .workshops-cards { + @apply flex; + @apply flex-col w-[75vw] pb-[50px]; +} + +.Workshops .workshops-content .workshops-title { + @apply flex pb-[32px]; + @apply flex-col items-center; +} + +.Workshops .workshops-content .card-row { + @apply pt-[15px]; + @apply pb-[15px]; +} + +.Maps { + background-color: #f5f5f5; +} + +.Maps .maps-content { + @apply flex; + @apply flex-col justify-between items-center max-w-[1200px] m-[auto]; +} + +.Maps .maps-content .maps-title { + @apply flex pb-[32px]; + @apply flex-col items-center; +} + +.Maps .maps-content .buttons { + @apply pt-[20px] grid gap-y-[10px]; + grid-template-columns: auto; + @apply pb-[20px] w-[60vw]; +} + +.Resources .resources-title { + @apply flex; + @apply flex-col items-center max-w-[1200px] m-[auto] pt-[32px]; + @apply pb-[32px]; +} + +.Resources .resources-text { + @apply flex; + @apply flex-col items-center text-center pt-[30px]; +} + +.Resources .banner { + @apply w-[100vw] h-[auto]; +} + +.Resources .full-length-button { + @apply pt-[20px] grid gap-y-[10px]; + grid-template-columns: auto; + @apply pb-[20px] w-[100%]; +} diff --git a/src/styles/home.css b/src/styles/home.css new file mode 100644 index 0000000..bf10a7c --- /dev/null +++ b/src/styles/home.css @@ -0,0 +1,564 @@ +/* Hero */ +.Hero { + @apply h-[450px] flex justify-center items-center; + @apply flex-col; + background-color: var(--color-aqua); + color: var(--color-navy); +} + +.Hero .logo-with-icon-group { + @apply w-[20rem] h-[auto] mb-[2rem] pl-[24px]; + @apply pr-[24px]; +} + +.Hero .hero-content { + @apply flex; + @apply flex-col justify-center items-center text-center; +} + +.Hero .hero-content .h1-title { + @apply hidden; +} + +.Hero .hero-content .hero-cta { + @apply mt-[1rem] flex; + @apply flex-row; +} + +.Hero .hero-content .hero-cta .action:not(:last-child) { + @apply mr-[1rem]; +} + +.Hero p { + @apply m-[0]; +} + +@media (min-width: 576px) { + .Hero .logo-with-icon-group { + @apply w-[25rem]; + } + + .Hero .hero-content .h1-title { + @apply block; + } +} + +@media (min-width: 768px) { + .Hero { + @apply flex-row; + } + + .Hero .logo-with-icon-group { + @apply mr-[3rem]; + @apply mb-[0] pl-[0]; + @apply pr-[0]; + } + + .Hero .hero-content { + @apply justify-start items-start text-left max-w-[400px]; + } +} + +@media (min-width: 992px) { + .Hero .logo-with-icon-group { + @apply w-[30rem] mr-[4rem]; + } +} + +/* About */ +.About .about-content { + @apply flex justify-between items-center max-w-[1040px] m-[auto]; +} + +.About .about-content:not(:last-child) { + @apply pb-[32px]; +} + +.About .about-content.about-org { + flex-direction: column-reverse; +} + +.About .about-content.about-team { + @apply flex-col; +} + +.About .about-content .left-column.text, +.About .about-content .right-column.text { + @apply pt-[32px]; +} + +.About .about-content .founding-story a, +.About .about-content .current-team a { + @apply flex; + @apply flex-row items-center; + text-decoration: none; + color: var(--color-muted-blue); +} + +.About .about-content .founding-story a:hover .MdKeyboardArrowRight, +.About .about-content .current-team a:hover .MdKeyboardArrowRight { + fill: white; + background-color: var(--color-muted-blue); + border: 2px solid var(--color-muted-blue); +} + +.About .about-content .founding-story a p, +.About .about-content .current-team a p { + @apply mb-[0]; + @apply mr-[0.5rem]; +} + +.About .about-content img { + @apply max-w-[100%]; + @apply max-h-[100vh] h-[auto]; +} + +.About .MdKeyboardArrowRight { + fill: var(--color-muted-blue); + border: 2px solid #e2e2e2; + @apply rounded-[50%] w-[1.5rem] min-w-[1.5rem] h-[1.5rem]; + transition: all 0.3s ease-in-out; + -webkit-transition: all 0.3s ease-in-out; /** Chrome & Safari **/ + -moz-transition: all 0.3s ease-in-out; /** Firefox **/ + -o-transition: all 0.3s ease-in-out; /** Opera **/ +} + +@media (min-width: 768px) { + .About .about-content { + @apply justify-between; + } + + .About .about-content:not(:last-child) { + @apply pb-[64px]; + } + + .About .about-content.about-org, + .About .about-content.about-team { + @apply flex-row; + } + + .About .about-content .left-column, + .About .about-content .right-column { + @apply w-[46%]; + } + + .About .about-content .left-column.text, + .About .about-content .right-column.text { + @apply pt-[0px]; + } +} + +/* Get involved cards */ +.GetInvolved { + background-color: #f5f5f5; +} + +.GetInvolved .cards-container { + @apply m-[0_auto] max-w-[1040px]; +} + +.GetInvolved .cards-container .cards-header { + @apply flex; + @apply flex-col items-center mb-[1rem]; +} + +.GetInvolved .cards-container .content-card-row { + overflow-x: scroll; + @apply whitespace-nowrap pb-[1.5rem]; + transform: scaleX(-1) rotateZ(180deg); +} + +.GetInvolved .cards-container .content-card { + @apply inline-block w-[18rem] mb-[0]; + transform: scaleX(-1) rotateZ(180deg); +} + +@media (max-width: 575.98px) { + .GetInvolved .cards-container .content-card:not(:last-child) { + @apply mr-[0.5rem]; + } +} + +.GetInvolved .cards-container .content-card.high-schools .content-card-image { + object-position: 25% 80%; +} + +.GetInvolved .cards-container .content-card.companies .content-card-image { + object-position: 44% 50%; +} + +.GetInvolved .cards-container .content-card.ucla-students .content-card-image { + object-position: 15% 50%; +} + +.GetInvolved .cards-container .content-card .content-card-image { + @apply h-[512px] object-cover; +} + +.GetInvolved .cards-container .content-card .content-card-overlay { + @apply flex; + @apply flex-col justify-end; + color: #ffffff; +} + +.GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content { + @apply z-[2]; +} + +.GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content + .content-card-title { + @apply mb-[0.25rem]; +} + +.GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content + .content-card-text { + @apply mb-[0.4rem]; +} + +.GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content + .get-involved-cta { + @apply flex; + @apply flex-row items-center; +} + +.GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content + .get-involved-cta + .cta-text { + opacity: 1; + @apply mb-[0]; + @apply ml-[8px]; + transition: all 0.3s ease-in-out; + -webkit-transition: all 0.3s ease-in-out; /** Chrome & Safari **/ + -moz-transition: all 0.3s ease-in-out; /** Firefox **/ + -o-transition: all 0.3s ease-in-out; /** Opera **/ +} + +.GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content + .short-content { + @apply hidden; +} + +.GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content + .full-content { + @apply block; +} + +.GetInvolved + .cards-container + .content-card + .content-card-overlay + .gradient-back { + @apply absolute bottom-[0px] left-[0px] w-[100%] h-[224px] z-[1]; + background: -moz-linear-gradient( + top, + rgba(137, 255, 241, 0) 0%, + rgba(0, 0, 0, 0.75) 100% + ); /* FF3.6+ */ + background: -webkit-gradient( + linear, + left top, + left bottom, + color-stop(0%, rgba(137, 255, 241, 0)), + color-stop(100%, rgba(0, 0, 0, 0.75)) + ); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient( + top, + rgba(137, 255, 241, 0) 0%, + rgba(0, 0, 0, 0.75) 100% + ); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient( + top, + rgba(137, 255, 241, 0) 0%, + rgba(0, 0, 0, 0.75) 100% + ); /* Opera 11.10+ */ + background: -ms-linear-gradient( + top, + rgba(137, 255, 241, 0) 0%, + rgba(0, 0, 0, 0.75) 100% + ); /* IE10+ */ + background: linear-gradient( + to bottom, + rgba(137, 255, 241, 0) 0%, + rgba(0, 0, 0, 0.75) 100% + ); /* W3C */ +} + +.GetInvolved .cards-container .content-card .MdKeyboardArrowRight { + fill: #ffffff; + background-color: var(--color-muted-blue); + border: 2px solid var(--color-muted-blue); + @apply rounded-[50%] w-[1.5rem] min-w-[1.5rem] h-[1.5rem]; + transition: all 0.3s ease-in-out; + -webkit-transition: all 0.3s ease-in-out; /** Chrome & Safari **/ + -moz-transition: all 0.3s ease-in-out; /** Firefox **/ + -o-transition: all 0.3s ease-in-out; /** Opera **/ +} + +@media (min-width: 576px) { + .GetInvolved .cards-container .content-card-row { + @apply block; + } + + .GetInvolved .cards-container .content-card:first-child { + @apply ml-[0]; + } + + .GetInvolved .cards-container .content-card:last-child { + @apply mr-[0]; + } + + .GetInvolved + .cards-container + .content-card:hover + .content-card-overlay + .card-content + .get-involved-cta + .cta-text { + opacity: 1; + } + + .GetInvolved + .cards-container + .content-card:hover + .content-card-overlay + .card-content + .get-involved-cta + .MdKeyboardArrowRight { + background-color: var(--color-muted-blue); + border: 2px solid var(--color-muted-blue); + } + + .GetInvolved .cards-container .content-card.high-schools .content-card-image { + object-position: 20% 80%; + } + + .GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content + .get-involved-cta + .cta-text { + opacity: 0; + } + + .GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content + .get-involved-cta + .MdKeyboardArrowRight { + background-color: transparent; + border: 2px solid rgba(255, 255, 255, 0.3); + } +} + +@media (min-width: 768px) { + .GetInvolved .cards-container .content-card-row { + @apply flex; + overflow-x: visible; + } + + .GetInvolved .cards-container .content-card { + @apply flex w-[100%]; + } + + .GetInvolved .cards-container .content-card.high-schools .content-card-image { + object-position: 30% 80%; + } + + .GetInvolved .cards-container .content-card.companies .content-card-image { + object-position: 40% 50%; + } + + .GetInvolved + .cards-container + .content-card.ucla-students + .content-card-image { + object-position: 12% 50%; + } + + .GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content + .short-content { + @apply block; + } + + .GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content + .full-content { + @apply hidden; + } +} + +@media (min-width: 992px) { + .GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content + .short-content { + @apply hidden; + } + + .GetInvolved + .cards-container + .content-card + .content-card-overlay + .card-content + .full-content { + @apply block; + } +} + +/* Speakers */ +.Speakers p { + @apply mb-[0.25rem]; +} + +.Speakers a { + text-decoration: none !important; +} + +.Speakers .speakers-container { + @apply max-w-[1040px] m-[auto]; +} + +.Speakers .speakers-container .speakers-header { + @apply flex; + @apply flex-col items-center mb-[1rem]; +} + +.Speakers .speakers-container:not(:last-child) { + @apply pb-[64px]; +} + +@media (min-width: 768px) { + .Speakers .speakers-container .speakers-header { + @apply mb-[0]; + } +} + +/* Sponsors */ +.Sponsors { + background-color: #f5f5f5; +} + +.Sponsors .sponsors-container { + @apply flex; + @apply flex-col justify-center items-center max-w-[1040px] m-[auto]; +} + +.Sponsors .sponsors-container .sponsors-header { + @apply flex; + @apply flex-col items-center; +} + +.Sponsors .sponsors-container .logo-container { + @apply m-[1rem]; +} + +.Sponsors .sponsors-container .large-logos, +.Sponsors .sponsors-container .small-logos { + @apply flex; + flex-flow: row wrap; + @apply justify-center items-center pb-[32px]; +} + +.Sponsors .sponsors-container .large-logos .logo { + @apply w-[14rem] h-[auto]; +} + +.Sponsors .sponsors-container .small-logos .logo { + @apply w-[8rem] h-[auto]; +} + +.Sponsors .sponsors-container .sponsor-contact { + @apply flex; + @apply flex-col justify-center items-center; +} + +.Sponsors .sponsors-container .sponsor-contact h5 { + @apply mb-[1rem]; +} + +.Sponsors .sponsors-container .sponsor-contact .sponsor-cta a { + @apply flex; + @apply flex-row items-center; + text-decoration: none; + color: var(--color-muted-blue); +} + +.Sponsors + .sponsors-container + .sponsor-contact + .sponsor-cta:hover + .MdKeyboardArrowRight { + fill: white; + background-color: var(--color-muted-blue); + border: 2px solid var(--color-muted-blue); +} + +.Sponsors .sponsors-container .sponsor-contact .sponsor-cta p { + @apply mb-[0]; + @apply mr-[0.5rem]; +} + +.Sponsors .MdKeyboardArrowRight { + fill: var(--color-muted-blue); + border: 2px solid #e2e2e2; + @apply rounded-[50%] w-[1.5rem] min-w-[1.5rem] h-[1.5rem]; + transition: all 0.3s ease-in-out; + -webkit-transition: all 0.3s ease-in-out; /** Chrome & Safari **/ + -moz-transition: all 0.3s ease-in-out; /** Firefox **/ + -o-transition: all 0.3s ease-in-out; /** Opera **/ +} + +@media (min-width: 768px) { + .Sponsors .sponsors-container .logo-container { + @apply m-[2rem]; + } + + .Sponsors .sponsors-container .large-logos .logo { + @apply w-[16rem]; + } + + .Sponsors .sponsors-container .small-logos .logo { + @apply w-[12rem]; + } +} diff --git a/src/styles/ignite.css b/src/styles/ignite.css new file mode 100644 index 0000000..377258f --- /dev/null +++ b/src/styles/ignite.css @@ -0,0 +1,310 @@ +/* Ignite page shell */ +.Ignite { + @apply w-[100%] min-h-[100vh]; +} + +.Ignite .ignite-section { + @apply w-[100%] p-[80px_20px] flex justify-center; +} + +.Ignite .ignite-section .content-wrapper { + @apply w-[100%] max-w-[1140px] flex; + @apply flex-col items-center text-center; +} + +/* Header */ +.Ignite .header-section { + @apply pt-[100px]; + @apply pb-[80px]; + color: white; + /* NEW — solid blue background */ + background: #2ca6bc; +} + +.Ignite .header-section .ignite-title { + @apply text-[7rem] font-bold; + letter-spacing: -2px; + @apply mb-[42px] leading-[1]; +} + +.Ignite .header-section .ignite-description { + @apply max-w-[800px] text-[1.25rem] leading-[1.5] mb-[40px] font-normal; + color: #d0ecf0; +} + +.Ignite .header-section .header-buttons { + @apply flex gap-[20px]; +} + +.Ignite .header-section .header-buttons .btn-apply { + background-color: #07556f; + border: none; + @apply p-[12px_18px] text-[1.1rem] font-normal rounded-[1rem]; +} + +.Ignite .header-section .header-buttons .btn-previous { + border: 2px solid #06546f; + color: #06546f; + @apply p-[12px_18px] text-[1.1rem]; + background: transparent; + @apply rounded-[1rem] font-normal; +} + +.Ignite .header-section .header-buttons .btn-previous:hover { + background: rgba(255, 255, 255, 0.1); +} + +/* Program structure */ +.Ignite .structure-section { + /* NEW — blue → white gradient */ + background: linear-gradient(to bottom, #2ca6bc 0%, #ddf6f8 100%); +} + +.Ignite .structure-section .section-header { + @apply text-[3.5rem] font-bold mb-[40px]; + color: white; +} + +.Ignite .structure-section .program-cards-container { + @apply flex; + @apply flex-col gap-[20px] w-[100%]; +} + +@media (min-width: 768px) { + .Ignite .structure-section .program-cards-container { + @apply flex-row gap-[14px]; + } +} + +.Ignite .structure-section .program-card { + background: rgba(255, 255, 255, 0.2); + @apply rounded-[16px] p-[20px] flex; + @apply flex-col; + flex: 1; + @apply min-h-[0]; + backdrop-filter: blur(10px); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); + transition: all 0.3s ease; + opacity: 1; +} + +.Ignite .structure-section .program-card .content-card-title { + @apply text-[1.5rem] font-bold; + color: white; + @apply mb-[10px] leading-[1.2]; +} + +.Ignite .structure-section .program-card .card-description { + @apply text-[1rem]; + color: rgba(255, 255, 255, 0.9); + @apply mb-[8px] leading-[1.5]; + display: -webkit-box; + -webkit-line-clamp: 2; + line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; + @apply min-h-[3em]; +} + +.Ignite .structure-section .program-card .card-image { + @apply w-[100%] h-[240px] rounded-[12px]; + overflow: hidden; + @apply mt-[auto]; + background: rgba(0, 0, 0, 0.1); + border: 3px solid white; + @apply shrink-[0] mt-[0]; +} + +.Ignite .structure-section .program-card .card-image img { + @apply w-[100%] h-[100%] object-cover block; +} + +.Ignite .structure-section .program-cards-container:hover .program-card { + opacity: 0.6; + transform: scale(0.98); +} + +.Ignite .structure-section .program-cards-container .program-card:hover { + opacity: 1; + transform: translateY(-8px) scale(1.02); + background: rgba(255, 255, 255, 0.3); + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25); + @apply z-[10] relative; +} + +/* Archived workshops */ +.Ignite .workshop-section { + /* NEW — solid light background */ + background: #ddf6f8; +} + +.Ignite .workshop-section .section-header { + @apply text-[3rem] font-bold mb-[40px]; + color: #06546f; +} + +.Ignite .workshop-section .workshop-cards-container { + @apply flex; + @apply flex-col gap-[20px] w-[100%]; +} + +@media (min-width: 768px) { + .Ignite .workshop-section .workshop-cards-container { + @apply flex-row gap-[14px]; + } +} + +.Ignite .workshop-section .workshop-card { + background: #1cb0c6; + @apply rounded-[16px] p-[20px] flex; + @apply flex-col; + flex: 1; + @apply min-h-[450px]; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); + transition: all 0.3s ease; + opacity: 1; +} + +.Ignite .workshop-section .workshop-card .content-card-title { + @apply text-[1.5rem] font-bold; + color: white; + @apply mb-[10px] leading-[1.2]; +} + +.Ignite .workshop-section .workshop-card .card-description { + @apply text-[1rem]; + color: rgba(255, 255, 255, 0.9); + @apply mb-[8px] leading-[1.5]; +} + +.Ignite .workshop-section .workshop-card .card-image { + @apply w-[100%] h-[240px] rounded-[12px]; + overflow: hidden; + @apply mt-[auto]; + background: rgba(0, 0, 0, 0.1); + border: 3px solid white; + @apply shrink-[0] mt-[0]; +} + +.Ignite .workshop-section .workshop-card .card-image img { + @apply w-[100%] h-[100%] object-cover block; +} + +.Ignite .workshop-section .workshop-cards-container:hover .workshop-card { + opacity: 0.6; + transform: scale(0.98); +} + +.Ignite .workshop-section .workshop-cards-container .workshop-card:hover { + opacity: 1; + transform: translateY(-8px) scale(1.02); + background: #2ca6bc; + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25); + @apply z-[10] relative; +} + +/* Capstone */ +.Ignite .capstone-section { + /* NEW — light grey background */ + background: #f5f5f5; +} + +.Ignite .capstone-section .section-header { + @apply text-[3rem] font-bold mb-[10px]; + color: #06546f; +} + +.Ignite .capstone-section .section-subtitle { + color: #6796a5; + @apply mb-[30px]; +} + +.Ignite .capstone-section .capstone-image-container { + @apply w-[90%] max-w-[900px] m-[0_auto] rounded-[16px]; + overflow: hidden; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); +} + +.Ignite .capstone-section .capstone-image-container img { + @apply w-[100%] h-[auto] block; +} + +/* Apply */ +.Ignite .footer-apply-section { + color: white; + @apply pt-[80px]; + @apply pb-[60px]; + /* NEW — gradient from light blue to darker teal */ + background: linear-gradient(to bottom, #a8d8e8 0%, #2ca6bc 100%); +} + +.Ignite .footer-apply-section .content-wrapper { + @apply flex-col; +} + +@media (min-width: 768px) { + .Ignite .footer-apply-section .content-wrapper { + flex-direction: row !important; + @apply items-start justify-between; + } +} + +.Ignite .footer-apply-section .split-layout { + @apply flex; + @apply flex-col gap-[40px] items-stretch; +} + +.Ignite .footer-apply-section .left-text-col { + @apply flex; + @apply flex-col justify-start items-start text-left; +} + +.Ignite .footer-apply-section .left-text-col .align-left { + @apply text-left; + @apply text-[4rem] font-bold mb-[15px] leading-[1]; + color: #ffffff; +} + +.Ignite .footer-apply-section .left-text-col .section-subtitle-small { + @apply text-[1.1rem] mt-[15px]; + @apply mb-[30px]; + color: white; +} + +.Ignite .footer-apply-section .left-text-col .btn-apply-large { + background-color: #07556f; + border: none; + @apply p-[12px_40px] text-[1.1rem] font-normal rounded-[8px] mt-[10px]; + color: white; + cursor: pointer; + @apply w-[100%]; +} + +.Ignite .footer-apply-section .right-image-col { + @apply w-[100%] flex items-center justify-center; +} + +.Ignite .footer-apply-section .right-image-col .apply-image { + @apply w-[100%] rounded-[20px]; + overflow: hidden; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); +} + +.Ignite .footer-apply-section .right-image-col .apply-image img { + @apply w-[100%] h-[auto] block; +} + +@media (min-width: 768px) { + .Ignite .footer-apply-section .left-text-col { + width: 50% !important; + } + + .Ignite .footer-apply-section .right-image-col { + width: 50% !important; + } + + .Ignite .footer-apply-section .btn-apply-large { + width: 100% !important; + } +} diff --git a/src/styles/reset.css b/src/styles/reset.css new file mode 100644 index 0000000..6a33777 --- /dev/null +++ b/src/styles/reset.css @@ -0,0 +1,179 @@ +/* + * Rules in this file are derived from Bootstrap v4.5.2 (https://getbootstrap.com/), + * Copyright 2011-2020 The Bootstrap Authors and Twitter, Inc., MIT licensed + * (https://github.com/twbs/bootstrap/blob/main/LICENSE). + * + * They are the subset the shipped markup actually depended on, extracted from the compiled + * baseline rather than re-imported, so the site keeps its exact reset and control geometry + * without carrying the framework. + */ + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +article, +aside, +footer, +header, +hgroup, +main, +nav, +section { + display: block; +} + +body { + margin: 0; + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", + Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", + "Segoe UI Symbol", "Noto Color Emoji"; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: left; + background-color: #fff; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0.5rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +ol, +ul { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +b, +strong { + font-weight: bolder; +} + +a { + color: #007bff; + text-decoration: none; + background-color: transparent; +} + +a:hover { + color: #0056b3; + text-decoration: underline; +} + +a:not([href]):not([class]) { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +img { + vertical-align: middle; + border-style: none; +} + +svg { + overflow: hidden; + vertical-align: middle; +} + +button { + border-radius: 0; + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; + overflow: visible; + text-transform: none; + -webkit-appearance: button; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +[role="button"] { + cursor: pointer; +} + +button:not(:disabled) { + cursor: pointer; +} + +button::-moz-focus-inner { + padding: 0; + border-style: none; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.heading-five, +.heading-six { + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; +} + +h1 { + font-size: 2.5rem; +} + +h2 { + font-size: 2rem; +} + +h3 { + font-size: 1.75rem; +} + +h4 { + font-size: 1.5rem; +} + +h5, +.heading-five { + font-size: 1.25rem; +} + +h6, +.heading-six { + font-size: 1rem; +} diff --git a/src/styles/shared-ui.css b/src/styles/shared-ui.css new file mode 100644 index 0000000..a6966b7 --- /dev/null +++ b/src/styles/shared-ui.css @@ -0,0 +1,136 @@ +/* Arrow link */ +.LinkWithArrow { + @apply flex; + @apply flex-row items-center; +} + +.LinkWithArrow a { + @apply flex; + @apply flex-row items-center; + text-decoration: none; +} + +.LinkWithArrow a:hover { + text-decoration: none; +} + +.LinkWithArrow a:hover .MdKeyboardArrowRight { + fill: white; + background-color: var(--color-muted-blue); + border: 2px solid var(--color-muted-blue); +} + +.LinkWithArrow a .link-text { + @apply mb-[0]; + @apply mr-[0.5rem]; + color: var(--color-muted-blue); +} + +.LinkWithArrow .MdKeyboardArrowRight { + fill: var(--color-muted-blue); + border: 2px solid #e2e2e2; + @apply rounded-[50%] w-[1.5rem] min-w-[1.5rem] h-[1.5rem]; + transition: all 0.3s ease-in-out; + -webkit-transition: all 0.3s ease-in-out; /** Chrome & Safari **/ + -moz-transition: all 0.3s ease-in-out; /** Firefox **/ + -o-transition: all 0.3s ease-in-out; /** Opera **/ +} + +/* Person cards */ +.People { + @apply flex; + @apply flex-row; + overflow-x: scroll; + @apply pb-[1rem]; + transform: scaleX(-1) rotateZ(180deg); +} + +.People p { + @apply mb-[0.25rem]; +} + +.People a { + text-decoration: none !important; +} + +.People .person { + @apply w-[14rem] h-[100%] p-[1rem_0.5rem] text-center; + color: black; + transition: color 0.5s; + transform: scaleX(-1) rotateZ(180deg); +} + +.People .person .person-image { + @apply w-[10rem] h-[10rem] rounded-[50%] mb-[1.25rem] object-cover; + object-position: center; + transition: filter 0.3s ease; +} + +.People .person .person-title { + @apply text-[small]; +} + +.People .person .person-description { + @apply text-[small]; +} + +@media (min-width: 576px) { + .People .person:hover { + color: var(--color-muted-blue); + transition: color 0.5s; + } +} + +@media (min-width: 768px) { + .People { + transform: none; + @apply justify-center flex-wrap pb-[0]; + } + + .People .person { + transform: none; + } +} + +/* Click-to-load video facade */ +.video-responsive { + @apply w-[300px] max-w-[100%]; +} + +.video-responsive .video-frame { + @apply relative h-[0] pb-[56.25%]; + overflow: hidden; + background-color: #000000; +} + +.video-responsive .video-frame iframe, +.video-responsive .video-frame .video-facade { + @apply absolute left-[0] top-[0] w-[100%] h-[100%]; +} + +.video-responsive .video-facade { + @apply flex items-center justify-center p-[0]; + border: 0; + cursor: pointer; + background: radial-gradient(circle at center, #2f2f2f 0%, #000000 100%); +} + +.video-responsive .video-facade:hover .video-facade-play, +.video-responsive .video-facade:focus .video-facade-play { + background-color: #ff0000; +} + +.video-responsive .video-facade-play { + @apply relative block w-[54px] h-[38px] rounded-[10px]; + background-color: rgba(33, 33, 33, 0.85); + transition: background-color 0.2s ease-in-out; +} + +.video-responsive .video-facade-play::after { + content: ""; + @apply absolute top-[50%] left-[50%]; + transform: translate(-50%, -50%); + border-style: solid; + border-width: 9px 0 9px 15px; + border-color: transparent transparent transparent #ffffff; +} diff --git a/src/styles/team.css b/src/styles/team.css new file mode 100644 index 0000000..0e49f2c --- /dev/null +++ b/src/styles/team.css @@ -0,0 +1,131 @@ +/* Team page shell */ +.Team { + @apply flex; + @apply flex-col items-center min-h-[100vh]; + background-color: #f5f5f5; +} + +.Team .team-title { + @apply text-center w-[100%]; + background-color: white; + @apply p-[2rem_0] mb-[2rem]; +} + +.Team .team-title h1 { + @apply text-[2.5rem]; + color: #333; + @apply mb-[1rem]; +} + +.Team .team-title .pill-divider { + @apply w-[60px] h-[4px]; + background-color: var(--color-muted-blue); + @apply m-[0_auto] rounded-[2px]; +} + +.Team .team-navigation { + @apply flex gap-[1rem] mb-[2rem]; + @apply flex-wrap justify-center p-[0_1rem]; +} + +.Team .team-navigation a { + @apply p-[0.75rem_1.5rem]; + border: 2px solid var(--color-muted-blue); + background-color: transparent; + color: var(--color-muted-blue); + @apply rounded-[25px] text-[1rem] font-medium; + cursor: pointer; + transition: all 0.3s ease; + text-decoration: none; + @apply inline-block; +} + +.Team .team-navigation a:hover { + background-color: var(--color-muted-blue); + color: white; +} + +.Team .team-navigation a.active { + background-color: var(--color-muted-blue); + color: white; +} + +.Team .team-section-header { + @apply flex; + @apply flex-col items-center mb-[1rem]; +} + +.Team .team-content { + @apply w-[100%] max-w-[1200px] p-[0_1rem]; + flex: 1; + @apply relative; +} + +.Team > .Footer { + align-self: stretch; + @apply w-[100%]; +} + +@media (max-width: 768px) { + .Team .team-navigation a { + @apply p-[0.5rem_1rem] text-[0.9rem]; + } +} + +/* Department containers */ +.Leadership { + background-color: #f5f5f5; +} + +.Leadership .leadership-container { + @apply max-w-[1200px] m-[auto]; +} + +.Leadership .leadership-container .leadership-header { + @apply flex; + @apply flex-col items-center mb-[1rem]; +} + +.Content .content-container { + @apply max-w-[1200px] m-[auto]; +} + +.Content .content-container .content-header { + @apply flex; + @apply flex-col items-center mb-[1rem]; +} + +.Design { + background-color: #f5f5f5; +} + +.Design .design-container { + @apply max-w-[1200px] m-[auto]; +} + +.Design .design-container .design-header { + @apply flex; + @apply flex-col items-center mb-[1rem]; +} + +.Operations { + background-color: #f5f5f5; +} + +.Operations .operations-container { + @apply max-w-[1200px] m-[auto]; +} + +.Operations .operations-container .operations-header { + @apply flex; + @apply flex-col items-center mb-[1rem]; +} + +.External .external-container { + @apply max-w-[1200px] m-[auto]; +} + +.External .external-container .external-header { + @apply flex; + @apply flex-col items-center mb-[1rem]; +} diff --git a/src/styles/theme.css b/src/styles/theme.css new file mode 100644 index 0000000..d48fc5a --- /dev/null +++ b/src/styles/theme.css @@ -0,0 +1,32 @@ +/* + * The single stylesheet entry for the app. Nothing else imports CSS. + * + * Layer order is declared up front so the cascade is explicit: + * theme Tailwind's design tokens plus ./tokens.css + * base the site's element-level reset and typography + * components the site's own rules, in the same order the old Sass emitted them + * utilities Tailwind utilities, which therefore win over component rules + * + * Preflight is deliberately absent. Tailwind's reset is not Bootstrap's Reboot: it makes + * images display:block, strips heading sizes, margins and list styles, and unstyles buttons. + * The site's layout depends on the shipped reset, so reset.css carries those values + * and preflight.css is never imported. Individual Tailwind stylesheet imports + * keep that choice explicit; do not add the full "tailwindcss" import. + */ +@layer theme, base, components, utilities; + +@import "tailwindcss/theme.css" layer(theme); +@import "tailwindcss/utilities.css" layer(utilities); + +@import "./tokens.css"; + +@import "./reset.css" layer(base); +@import "./base.css" layer(base); + +@import "./controls.css" layer(components); +@import "./app-shell.css" layer(components); +@import "./shared-ui.css" layer(components); +@import "./home.css" layer(components); +@import "./team.css" layer(components); +@import "./events.css" layer(components); +@import "./ignite.css" layer(components); diff --git a/src/styles/tokens.css b/src/styles/tokens.css new file mode 100644 index 0000000..e057a03 --- /dev/null +++ b/src/styles/tokens.css @@ -0,0 +1,17 @@ +/* Observed site values, not Tailwind's default breakpoints or palette. */ +@theme { + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --color-aqua: #98d6d6; + --color-muted-blue: #448494; + --color-navy: #0b546f; + --color-teal: #57ada3; + --font-site: "Poppins", sans-serif; + --spacing-section-y: 64px; + --spacing-section-xs: 24px; + --spacing-section-sm: 40px; + --spacing-section-md: 52px; + --spacing-section-lg: 64px; +} diff --git a/src/temp.txt b/src/temp.txt deleted file mode 100644 index b6fc4c6..0000000 --- a/src/temp.txt +++ /dev/null @@ -1 +0,0 @@ -hello \ No newline at end of file diff --git a/src/test-setup.ts b/src/test-setup.ts new file mode 100644 index 0000000..8c4270c --- /dev/null +++ b/src/test-setup.ts @@ -0,0 +1,18 @@ +import { vi } from "vitest"; + +declare global { + var IS_REACT_ACT_ENVIRONMENT: boolean; +} +globalThis.IS_REACT_ACT_ENVIRONMENT = true; +// jsdom has no layout or media-query engine; browser smoke owns those contracts. +Element.prototype.scrollIntoView = vi.fn(); +window.matchMedia = (query: string): MediaQueryList => ({ + matches: false, + media: query, + onchange: null, + addListener: () => {}, + removeListener: () => {}, + addEventListener: () => {}, + removeEventListener: () => {}, + dispatchEvent: () => false, +}); diff --git a/src/util/GoogleAnalytics.js b/src/util/GoogleAnalytics.js deleted file mode 100644 index c66f32a..0000000 --- a/src/util/GoogleAnalytics.js +++ /dev/null @@ -1,74 +0,0 @@ -import ReactGA from "react-ga"; - -let initialized = false; -let enabled = false; - -// Queue hits immediately; let analytics.js and its connected tag load after -// rendering, on interaction, or within four seconds on a slow connection. -const scheduleVendorLoad = () => { - const events = ["pointerdown", "keydown", "touchstart"]; - let requested = false; - const load = () => { - if (requested) return; - requested = true; - window.clearTimeout(deadline); - window.removeEventListener("load", whenIdle); - events.forEach((event) => window.removeEventListener(event, load, true)); - const script = document.createElement("script"); - script.async = true; - script.src = "https://www.google-analytics.com/analytics.js"; - document.head.appendChild(script); - }; - const whenIdle = () => { - if (window.requestIdleCallback) { - window.requestIdleCallback(load, { timeout: 1500 }); - } else { - window.setTimeout(load, 1000); - } - }; - const deadline = window.setTimeout(load, 4000); - events.forEach((event) => - window.addEventListener(event, load, { capture: true, passive: true }), - ); - if (document.readyState === "complete") { - whenIdle(); - } else { - window.addEventListener("load", whenIdle, { once: true }); - } -}; - -const init = () => { - if (initialized) return enabled; - initialized = true; - const trackingId = import.meta.env.VITE_GOOGLE_ANALYTICS_TRACKING_ID; - enabled = - import.meta.env.PROD === true && Boolean(trackingId && trackingId.trim()); - if (!enabled) return false; - - if (!window.ga) { - const queue = function () { - (queue.q = queue.q || []).push(arguments); - }; - queue.l = Date.now(); - window.GoogleAnalyticsObject = "ga"; - window.ga = queue; - } - // Preserve the existing tracker and events without react-ga injecting a script. - ReactGA.initialize(trackingId, { standardImplementation: true }); - scheduleVendorLoad(); - return true; -}; - -const trackPageView = (path) => { - if (!enabled) return; - const page = path || window.location.pathname + window.location.search; - ReactGA.set({ page }); - ReactGA.pageview(page); -}; - -const trackEvent = ({ category, action, label }) => { - if (!enabled) return; - ReactGA.event({ category, action, label }); -}; - -export default { init, trackPageView, trackEvent }; diff --git a/src/util/GoogleAnalytics.test.js b/src/util/GoogleAnalytics.test.ts similarity index 59% rename from src/util/GoogleAnalytics.test.js rename to src/util/GoogleAnalytics.test.ts index 2a6dd54..26b5adc 100644 --- a/src/util/GoogleAnalytics.test.js +++ b/src/util/GoogleAnalytics.test.ts @@ -1,8 +1,14 @@ -import { vi } from "vitest"; +import { vi, type MockInstance } from "vitest"; +import type Analytics from "./GoogleAnalytics"; -let GA; -let readyState; +let GA: typeof Analytics; +let readyState: MockInstance<() => DocumentReadyState>; +function queuedCommands() { + const queue = window.ga?.q; + if (!queue) throw new Error("Analytics did not initialize its command queue"); + return queue; +} beforeEach(async () => { vi.resetModules(); vi.useFakeTimers(); @@ -32,7 +38,7 @@ it("keeps early pageviews and events in order with their original route", () => GA.trackPageView("/ignite"); expect(document.querySelectorAll("script")).toHaveLength(0); - const commands = window.ga.q.map((args) => Array.from(args)); + const commands = queuedCommands(); const routeCommands = commands.filter( ([command]) => command === "set" || command === "send", ); @@ -65,7 +71,9 @@ it("loads the vendor once when interaction beats idle and the deadline", () => { 'script[src="https://www.google-analytics.com/analytics.js"]', ), ).toHaveLength(1); - expect(window.ga.q.filter((args) => args[0] === "create")).toHaveLength(1); + expect(queuedCommands().filter((args) => args[0] === "create")).toHaveLength( + 1, + ); }); it("eventually requests analytics even when load and interaction never happen", () => { @@ -91,3 +99,52 @@ it.each(["development", "missing ID"])( expect(document.querySelectorAll("script")).toHaveLength(0); }, ); + +it("preserves title casing while redacting email labels", () => { + GA.init(); + GA.trackEvent({ + category: "Outbound", + action: "Click", + label: "founding_story", + }); + GA.trackEvent({ + category: "Outbound", + action: "Click", + label: "person@example.com", + }); + const hits = queuedCommands() + .filter(([command]) => command === "send") + .map(([, hit]) => hit); + expect(hits).toEqual([ + { + hitType: "event", + eventCategory: "Outbound", + eventAction: "Click", + eventLabel: "Founding_story", + }, + { + hitType: "event", + eventCategory: "Outbound", + eventAction: "Click", + eventLabel: "REDACTED (Potential Email Address)", + }, + ]); +}); + +it("continues outbound navigation exactly once when a late vendor callback follows the timeout", () => { + GA.init(); + const navigate = vi.fn(); + GA.trackOutbound("Profile", navigate); + const hit = queuedCommands().find(([command]) => command === "send")?.[1]; + if ( + !hit || + typeof hit !== "object" || + !("hitCallback" in hit) || + typeof hit.hitCallback !== "function" + ) { + throw new Error("Outbound event is missing its completion callback"); + } + vi.advanceTimersByTime(250); + hit.hitCallback(); + expect(navigate).toHaveBeenCalledTimes(1); +}); diff --git a/src/util/GoogleAnalytics.ts b/src/util/GoogleAnalytics.ts new file mode 100644 index 0000000..45d7aa2 --- /dev/null +++ b/src/util/GoogleAnalytics.ts @@ -0,0 +1,128 @@ +export interface AnalyticsEvent { + category: string; + action: string; + label: string; +} +interface AnalyticsQueue { + (...command: unknown[]): void; + q?: unknown[][]; + l?: number; +} +declare global { + interface Window { + ga?: AnalyticsQueue; + GoogleAnalyticsObject?: string; + } +} +let initialized = false; +let enabled = false; + +// Keep the shipped title-casing and email-redaction semantics when replacing react-ga. +// To Title Case 2.1, Copyright 2008-2013 David Gouch, MIT license. +const smallWords = + /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i; +function formatLabel(value: string): string { + const title = value + .trim() + .replace( + /[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g, + (word: string, index: number, text: string) => { + if ( + index > 0 && + index + word.length !== text.length && + smallWords.test(word) && + text.charAt(index - 2) !== ":" && + (text.charAt(index + word.length) !== "-" || + text.charAt(index - 1) === "-") && + /[\s-]/.test(text.charAt(index - 1)) + ) + return word.toLowerCase(); + if (/[A-Z]|\../.test(word.slice(1))) return word; + return word.charAt(0).toUpperCase() + word.slice(1); + }, + ); + return title.includes("@") ? "REDACTED (Potential Email Address)" : title; +} + +// Queue immediately; request the vendor at idle, first interaction, or the deadline. +function scheduleVendorLoad() { + const events = ["pointerdown", "keydown", "touchstart"]; + let requested = false; + const load = () => { + if (requested) return; + requested = true; + window.clearTimeout(deadline); + window.removeEventListener("load", whenIdle); + events.forEach((event) => window.removeEventListener(event, load, true)); + const script = document.createElement("script"); + script.async = true; + script.src = "https://www.google-analytics.com/analytics.js"; + document.head.appendChild(script); + }; + const whenIdle = () => { + if (window.requestIdleCallback) + window.requestIdleCallback(load, { timeout: 1500 }); + else window.setTimeout(load, 1000); + }; + const deadline = window.setTimeout(load, 4000); + events.forEach((event) => + window.addEventListener(event, load, { capture: true, passive: true }), + ); + if (document.readyState === "complete") whenIdle(); + else window.addEventListener("load", whenIdle, { once: true }); +} +function init(): boolean { + if (initialized) return enabled; + initialized = true; + const trackingId = import.meta.env.VITE_GOOGLE_ANALYTICS_TRACKING_ID; + enabled = import.meta.env.PROD === true && Boolean(trackingId?.trim()); + if (!enabled) return false; + if (!window.ga) { + const queue: AnalyticsQueue = (...command) => { + (queue.q ??= []).push(command); + }; + queue.l = Date.now(); + window.GoogleAnalyticsObject = "ga"; + window.ga = queue; + } + window.ga("create", trackingId, "auto"); + scheduleVendorLoad(); + return true; +} +function trackPageView(path: string) { + if (!enabled) return; + const page = path || window.location.pathname + window.location.search; + window.ga?.("set", { page }); + window.ga?.("send", { hitType: "pageview", page }); +} +function trackEvent({ category, action, label }: AnalyticsEvent) { + if (!enabled) return; + window.ga?.("send", { + hitType: "event", + eventCategory: formatLabel(category), + eventAction: formatLabel(action), + eventLabel: formatLabel(label), + }); +} +function trackOutbound(label: string, onSent: () => void) { + if (!enabled) { + onSent(); + return; + } + let sent = false; + const done = () => { + if (sent) return; + sent = true; + window.clearTimeout(deadline); + onSent(); + }; + const deadline = window.setTimeout(done, 250); + window.ga?.("send", { + hitType: "event", + eventCategory: "Outbound", + eventAction: "Click", + eventLabel: formatLabel(label), + hitCallback: done, + }); +} +export default { init, trackPageView, trackEvent, trackOutbound }; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..bca9d7b --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1,4 @@ +/// +interface ImportMetaEnv { + readonly VITE_GOOGLE_ANALYTICS_TRACKING_ID?: string; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..df0f5a1 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2024", "DOM", "DOM.Iterable"], + "module": "ESNext", + "moduleResolution": "Bundler", + "jsx": "react-jsx", + "strict": true, + "noEmit": true, + "skipLibCheck": true, + "isolatedModules": true, + "verbatimModuleSyntax": true, + "resolveJsonModule": true, + "types": ["vite/client", "vitest/globals", "node"], + "forceConsistentCasingInFileNames": true + }, + "include": ["src", "scripts/browser-smoke.spec.ts", "playwright.config.ts"] +} diff --git a/vite.config.mjs b/vite.config.mjs index defada6..6f9b2c6 100644 --- a/vite.config.mjs +++ b/vite.config.mjs @@ -1,43 +1,15 @@ -import { fileURLToPath } from "node:url"; import { createHash } from "node:crypto"; import { basename, extname } from "node:path"; import { defineConfig } from "vitest/config"; import react from "@vitejs/plugin-react"; import autoprefixer from "autoprefixer"; - -const src = fileURLToPath(new URL("./src/", import.meta.url)); +import tailwindcss from "@tailwindcss/vite"; export default defineConfig({ - plugins: [ - react({ jsxRuntime: "classic" }), - { - name: "react-16-classic-dependencies", - apply: "serve", - configResolved(config) { - // The plugin includes these even in classic mode; React 16.13 has neither. - config.optimizeDeps.include = config.optimizeDeps.include.filter( - (id) => id !== "react/jsx-runtime" && id !== "react/jsx-dev-runtime", - ); - }, - }, - ], + plugins: [react(), tailwindcss()], server: { strictPort: true }, - optimizeDeps: { - rolldownOptions: { transform: { jsx: { runtime: "classic" } } }, - }, - resolve: { - alias: [ - { - find: /^(components|constants|static|util)\//, - replacement: `${src}$1/`, - }, - ], - }, css: { postcss: { plugins: [autoprefixer()] }, - preprocessorOptions: { - scss: { loadPaths: [src] }, - }, }, build: { outDir: "build", @@ -62,6 +34,7 @@ export default defineConfig({ test: { globals: true, environment: "jsdom", - include: ["src/**/*.test.{js,jsx}"], + include: ["src/**/*.test.{ts,tsx}"], + setupFiles: ["./src/test-setup.ts"], }, }); From 4d4e9cbfb6cb2819d6171021091e9741d32e8289 Mon Sep 17 00:00:00 2001 From: bgar324 Date: Fri, 11 Sep 2026 04:04:34 -0700 Subject: [PATCH 2/3] Record the completed acceptance ledger and review PR --- docs/refactor-plan.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/refactor-plan.md b/docs/refactor-plan.md index 9f3ddbd..6028441 100644 --- a/docs/refactor-plan.md +++ b/docs/refactor-plan.md @@ -28,7 +28,7 @@ Baseline: `origin/master` at `f435aca007fbaf3bc2726c8239bdd784d56b8d6d`, the ind | Feature and content ownership | done | README ownership table and edit-person/roster/event/image instructions | | Strict TS and compatible stable runtime | done | No application JS/JSX; strict typecheck, lint, cold Vite startup and live JSX HMR without document reload | | Tailwind cutover and small shared UI canon | done | No Bootstrap/React Bootstrap/Sass dependencies or application imports; semantic selectors, explicit reset/tokens, shared ActionLink/OutboundLink/Collapse | -| Proven dead code removed | done | Unreachable annual copies, inactive components, old constants, all 59 Sass files and unused scaffold removed; original assets retained | +| Proven dead code removed | done | Unreachable annual copies, inactive components, old constants, all Sass files and unused scaffold removed; original assets retained | | Shipped image loading and regressions preserved | done | 12 Vitest tests, including the original failed/stale carousel and analytics assertions; browser slow/failing-image cases | | Public binary URLs and bytes retained | done | `asset-parity.cjs`: all 102 public image/PDF/icon URLs and SHA-256 hashes unchanged; `404.html` and `CNAME` byte-identical | | CI content checks and browser smoke | done | Existing read-only `verify` extended with types, lint, formatting, content, image/build and 34 Chromium cases; no deployment secrets | @@ -37,7 +37,7 @@ Baseline: `origin/master` at `f435aca007fbaf3bc2726c8239bdd784d56b8d6d`, the ind | Responsive and interaction parity | done | 210 final geometry/style/content cells; 34 WebKit plus 34 Firefox scenarios; 25 hover/focus/video/carousel states; autoplay, pause/resume, interrupted menu and keyboard probes | | Analytics semantics retained | done | Dummy-ID build with real retained `analytics.js`: one tracker/script, resolved-only alias pageview, query changes, no hash-only pageview, correct outbound attribution; collection blocked | | Independent findings resolved | done | Runtime and content/style reviews, followed by targeted approvals after the two fixes below | -| Reviewable pull request without merge/deploy | pending | Open after committing the verified artifact; no authorization to merge or deploy | +| Reviewable pull request without merge/deploy | done | [PR #108](https://github.com/exploretech-la/website/pull/108) is open against master; no merge or deployment performed | ## Demonstrated regressions and fixes From 1d04708ccfb1aacbc401d981d3d1acfe717abd1b Mon Sep 17 00:00:00 2001 From: bgar324 Date: Fri, 11 Sep 2026 04:13:22 -0700 Subject: [PATCH 3/3] Remove unused resource-list active styles --- docs/refactor-plan.md | 2 +- src/styles/controls.css | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/docs/refactor-plan.md b/docs/refactor-plan.md index 6028441..083c255 100644 --- a/docs/refactor-plan.md +++ b/docs/refactor-plan.md @@ -54,7 +54,7 @@ Machine-readable results: [verification/refactor-parity.json](verification/refac - Final PNG comparison: 210 pairs, no dimension changes, 121 byte-identical pairs, 142 with no flagged pixels. The largest flagged fraction is 0.005645%, using pixelmatch threshold 0.1 with antialiasing excluded. Screenshots are not universally pixel-identical. Sampled residual differences are in text rasterization; diff bounds and counts are in the committed summary. - All 25 measured hover/focus/video/carousel states match. Slide motion has observed intermediate transforms and the same 600ms easing. Autoplay advances, pauses on hover, and resumes on both baseline and candidate. Interrupted menu operations settle correctly; intermediate samples depend on frame scheduling. - WebKit and Firefox each pass 34 scenarios, including actual Back reading-position restoration. Chromium's durable test separately proves that the app does not override POP scrolling. -- CSS gzip changed from 28.23KB to 8.43KB. Application JS gzip changed from 99.60KB to 112.98KB with the newer runtime. These are build sizes, not field-performance claims. +- CSS gzip changed from 28.23KB to 8.41KB after removing the unused resource-list active states. Application JS gzip changed from 99.60KB to 112.98KB with the newer runtime. These are build sizes, not field-performance claims. - Browser viewports are emulated. Playwright WebKit is not native Safari or a physical iPhone. External links are syntax-checked, not all contacted. Analytics testing proves local vendor processing, not production-property ingestion. Before is on the left and after is on the right in these representative, unscaled viewport crops: diff --git a/src/styles/controls.css b/src/styles/controls.css index b26b772..62ee27d 100644 --- a/src/styles/controls.css +++ b/src/styles/controls.css @@ -561,22 +561,10 @@ border-bottom-left-radius: inherit; } -.resource-list-item.active { - @apply z-[2]; - color: #fff; - background-color: #007bff; - border-color: #007bff; -} - .resource-list-item + .resource-list-item { border-top-width: 0; } -.resource-list-item + .resource-list-item.active { - @apply mt-[-1px]; - border-top-width: 1px; -} - .resource-list-flush { @apply rounded-[0]; }