diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..c550055 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +Dockerfile +.dockerignore +node_modules +npm-debug.log +README.md +.next +.git diff --git a/CODEOWNERS b/CODEOWNERS index 0b6e550..5f292f6 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1 @@ -* @CorreyL @CSTSTEVENU @immangat @nam-m @openBC-ca @PooriaT @SamHuo213 @umsu2 @Unknown-0perator +* @CorreyL @immangat @nam-m @SamHuo213 @Unknown-0perator diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b82371b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM node:20.12.2-alpine3.19 as base + +EXPOSE 3000 + +WORKDIR /app + +COPY . . +RUN npm install +RUN npm run build + +ENV NODE_ENV production +CMD ["npm", "run", "startProduction"] diff --git a/README.md b/README.md index b670808..38b787c 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# Welcome to OpenBC Website +# Welcome to the CodeForBC Website Repository diff --git a/next.config.js b/next.config.js index d09cddc..52845d1 100644 --- a/next.config.js +++ b/next.config.js @@ -1,11 +1,9 @@ /** @type {import('next').NextConfig} */ -const basePath = process.env.NODE_ENV === 'production' ? '/openbc-web' : ''; const output = process.env.NODE_ENV === 'production' ? 'export' : 'standalone'; -const distDir = process.env.NODE_ENV === 'production' ? 'dist' : '.next'; +const distDir = process.env.NODE_ENV === 'production' ? undefined : '.next'; const nextConfig = { - basePath: basePath, output: output, distDir: distDir, images: { @@ -13,7 +11,7 @@ const nextConfig = { }, typescript: { tsconfigPath: './tsconfig.json', - } + }, }; module.exports = nextConfig; diff --git a/package-lock.json b/package-lock.json index 0203de5..f8eb2d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,17 @@ { - "name": "openbc-web", + "name": "codeforbc-web", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "openbc-web", + "name": "codeforbc-web", "version": "0.1.0", "dependencies": { "@emotion/react": "11.11.3", "@emotion/styled": "11.11.0", "@mui/icons-material": "5.15.6", + "@mui/lab": "^5.0.0-alpha.169", "@mui/material": "5.15.6", "@mui/material-nextjs": "5.15.6", "@typescript-eslint/eslint-plugin": "6.19.1", @@ -1660,6 +1661,77 @@ } } }, + "node_modules/@mui/lab": { + "version": "5.0.0-alpha.169", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.169.tgz", + "integrity": "sha512-h6xe1K6ISKUbyxTDgdvql4qoDP6+q8ad5fg9nXQxGLUrIeT2jVrBuT/jRECSTufbnhzP+V5kulvYxaMfM8rEdA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/base": "5.0.0-beta.40", + "@mui/system": "^5.15.14", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material": ">=5.15.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/lab/node_modules/@mui/base": { + "version": "5.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", + "integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@mui/material": { "version": "5.15.6", "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.6.tgz", @@ -1736,12 +1808,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.15.6", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.6.tgz", - "integrity": "sha512-ZBX9E6VNUSscUOtU8uU462VvpvBS7eFl5VfxAzTRVQBHflzL+5KtnGrebgf6Nd6cdvxa1o0OomiaxSKoN2XDmg==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.14.tgz", + "integrity": "sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==", "dependencies": { - "@babel/runtime": "^7.23.8", - "@mui/utils": "^5.15.6", + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.15.14", "prop-types": "^15.8.1" }, "engines": { @@ -1762,13 +1834,13 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.15.6", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.6.tgz", - "integrity": "sha512-KAn8P8xP/WigFKMlEYUpU9z2o7jJnv0BG28Qu1dhNQVutsLVIFdRf5Nb+0ijp2qgtcmygQ0FtfRuXv5LYetZTg==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.14.tgz", + "integrity": "sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==", "dependencies": { - "@babel/runtime": "^7.23.8", + "@babel/runtime": "^7.23.9", "@emotion/cache": "^11.11.0", - "csstype": "^3.1.2", + "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { @@ -1793,17 +1865,17 @@ } }, "node_modules/@mui/system": { - "version": "5.15.6", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.6.tgz", - "integrity": "sha512-J01D//u8IfXvaEHMBQX5aO2l7Q+P15nt96c4NskX7yp5/+UuZP8XCQJhtBtLuj+M2LLyXHYGmCPeblsmmscP2Q==", - "dependencies": { - "@babel/runtime": "^7.23.8", - "@mui/private-theming": "^5.15.6", - "@mui/styled-engine": "^5.15.6", - "@mui/types": "^7.2.13", - "@mui/utils": "^5.15.6", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.14.tgz", + "integrity": "sha512-auXLXzUaCSSOLqJXmsAaq7P96VPRXg2Rrz6OHNV7lr+kB8lobUF+/N84Vd9C4G/wvCXYPs5TYuuGBRhcGbiBGg==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.15.14", + "@mui/styled-engine": "^5.15.14", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", "clsx": "^2.1.0", - "csstype": "^3.1.2", + "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { @@ -1832,9 +1904,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.13", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.13.tgz", - "integrity": "sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==", + "version": "7.2.14", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz", + "integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" }, @@ -1845,11 +1917,11 @@ } }, "node_modules/@mui/utils": { - "version": "5.15.6", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.6.tgz", - "integrity": "sha512-qfEhf+zfU9aQdbzo1qrSWlbPQhH1nCgeYgwhOVnj9Bn39shJQitEnXpSQpSNag8+uty5Od6PxmlNKPTnPySRKA==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.14.tgz", + "integrity": "sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==", "dependencies": { - "@babel/runtime": "^7.23.8", + "@babel/runtime": "^7.23.9", "@types/prop-types": "^15.7.11", "prop-types": "^15.8.1", "react-is": "^18.2.0" diff --git a/package.json b/package.json index cee72cd..dcf78c2 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "openbc-web", + "name": "codeforbc-web", "version": "0.1.0", "private": true, "scripts": { @@ -7,7 +7,8 @@ "start": "next dev", "lint": "next lint --fix", "lint:check": "next lint", - "startProduction": "next start", + "startProduction": "npx serve@latest out", + "dockerProd": "docker build -t codeforbc-website . && docker run --rm -p 3000:3000 --name codeforbc-website-container codeforbc-website", "test": "jest", "testWatch": "jest --watch" }, @@ -15,6 +16,7 @@ "@emotion/react": "11.11.3", "@emotion/styled": "11.11.0", "@mui/icons-material": "5.15.6", + "@mui/lab": "^5.0.0-alpha.169", "@mui/material": "5.15.6", "@mui/material-nextjs": "5.15.6", "@typescript-eslint/eslint-plugin": "6.19.1", diff --git a/public/assets/airbnb-project.webp b/public/assets/airbnb-project.webp new file mode 100644 index 0000000..b9d7224 Binary files /dev/null and b/public/assets/airbnb-project.webp differ diff --git a/public/assets/codeforbc-logo.svg b/public/assets/codeforbc-logo.svg new file mode 100644 index 0000000..202ee2a --- /dev/null +++ b/public/assets/codeforbc-logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/assets/codeforbc-website-project.webp b/public/assets/codeforbc-website-project.webp new file mode 100644 index 0000000..1801355 Binary files /dev/null and b/public/assets/codeforbc-website-project.webp differ diff --git a/public/assets/core-values-sprite.svg b/public/assets/core-values-sprite.svg new file mode 100644 index 0000000..c099b0b --- /dev/null +++ b/public/assets/core-values-sprite.svg @@ -0,0 +1,32 @@ + diff --git a/public/assets/core-values.png b/public/assets/core-values.png new file mode 100644 index 0000000..3de74bb Binary files /dev/null and b/public/assets/core-values.png differ diff --git a/public/assets/github-linkedin-color.svg b/public/assets/github-linkedin-color.svg new file mode 100644 index 0000000..d1cebc6 --- /dev/null +++ b/public/assets/github-linkedin-color.svg @@ -0,0 +1,22 @@ + diff --git a/public/assets/good-bot.webp b/public/assets/good-bot.webp new file mode 100644 index 0000000..3c0a1e7 Binary files /dev/null and b/public/assets/good-bot.webp differ diff --git a/public/assets/hero-Image.png b/public/assets/hero-Image.png index 3f0481d..82643c6 100644 Binary files a/public/assets/hero-Image.png and b/public/assets/hero-Image.png differ diff --git a/public/assets/join-us-hero.png b/public/assets/join-us-hero.png new file mode 100644 index 0000000..8f9548e Binary files /dev/null and b/public/assets/join-us-hero.png differ diff --git a/public/assets/partner-sprite.svg b/public/assets/partner-sprite.svg new file mode 100644 index 0000000..697b9d0 --- /dev/null +++ b/public/assets/partner-sprite.svg @@ -0,0 +1,15 @@ + diff --git a/public/assets/team-members/ahmad_akhtar.jpeg b/public/assets/team-members/ahmad_akhtar.jpeg new file mode 100644 index 0000000..8c6c8eb Binary files /dev/null and b/public/assets/team-members/ahmad_akhtar.jpeg differ diff --git a/public/assets/team-members/anna_beketova.jpg b/public/assets/team-members/anna_beketova.jpg new file mode 100644 index 0000000..188ea54 Binary files /dev/null and b/public/assets/team-members/anna_beketova.jpg differ diff --git a/public/assets/team-members/avatar-man.png b/public/assets/team-members/avatar-man.png new file mode 100644 index 0000000..12de462 Binary files /dev/null and b/public/assets/team-members/avatar-man.png differ diff --git a/public/assets/team-members/avatar-woman.png b/public/assets/team-members/avatar-woman.png new file mode 100644 index 0000000..474826a Binary files /dev/null and b/public/assets/team-members/avatar-woman.png differ diff --git a/public/assets/team-members/chloe_lim.jpeg b/public/assets/team-members/chloe_lim.jpeg new file mode 100644 index 0000000..c37f5a8 Binary files /dev/null and b/public/assets/team-members/chloe_lim.jpeg differ diff --git a/public/assets/team-members/correy_lim.jpeg b/public/assets/team-members/correy_lim.jpeg new file mode 100644 index 0000000..05700dc Binary files /dev/null and b/public/assets/team-members/correy_lim.jpeg differ diff --git a/public/assets/team-members/glauber_martins.jpg b/public/assets/team-members/glauber_martins.jpg new file mode 100644 index 0000000..f718d42 Binary files /dev/null and b/public/assets/team-members/glauber_martins.jpg differ diff --git a/public/assets/team-members/katie_hong.jpeg b/public/assets/team-members/katie_hong.jpeg new file mode 100644 index 0000000..2315cc1 Binary files /dev/null and b/public/assets/team-members/katie_hong.jpeg differ diff --git a/public/assets/team-members/mangat_toor.jpeg b/public/assets/team-members/mangat_toor.jpeg new file mode 100644 index 0000000..8b70424 Binary files /dev/null and b/public/assets/team-members/mangat_toor.jpeg differ diff --git a/public/assets/team-members/nam_mai.jpeg b/public/assets/team-members/nam_mai.jpeg new file mode 100644 index 0000000..dbba233 Binary files /dev/null and b/public/assets/team-members/nam_mai.jpeg differ diff --git a/public/assets/team-members/prabh_singh.jpg b/public/assets/team-members/prabh_singh.jpg new file mode 100644 index 0000000..eda24a9 Binary files /dev/null and b/public/assets/team-members/prabh_singh.jpg differ diff --git a/public/assets/team-members/sam_huo.jpeg b/public/assets/team-members/sam_huo.jpeg new file mode 100644 index 0000000..efde004 Binary files /dev/null and b/public/assets/team-members/sam_huo.jpeg differ diff --git a/public/assets/team-members/sherry_wu.jpg b/public/assets/team-members/sherry_wu.jpg new file mode 100644 index 0000000..8c7b43c Binary files /dev/null and b/public/assets/team-members/sherry_wu.jpg differ diff --git a/public/assets/team-members/tony_thawatchai.jpg b/public/assets/team-members/tony_thawatchai.jpg new file mode 100644 index 0000000..35697c5 Binary files /dev/null and b/public/assets/team-members/tony_thawatchai.jpg differ diff --git a/public/assets/team-members/xavier_toledo.jpg b/public/assets/team-members/xavier_toledo.jpg new file mode 100644 index 0000000..0b99cb9 Binary files /dev/null and b/public/assets/team-members/xavier_toledo.jpg differ diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..31fb7d1 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,16 @@ + + + + https://www.codeforbc.ca/ + + + https://www.codeforbc.ca/projects + + + https://www.codeforbc.ca/about + + + https://www.codeforbc.ca/join-us + + + diff --git a/src/__tests__/__snapshots__/header.snapshot.tsx.snap b/src/__tests__/__snapshots__/header.snapshot.tsx.snap index 462b7f4..8ade4e0 100644 --- a/src/__tests__/__snapshots__/header.snapshot.tsx.snap +++ b/src/__tests__/__snapshots__/header.snapshot.tsx.snap @@ -3,74 +3,91 @@ exports[`Header snapshot test should render header unchanged 1`] = `
- - OpenBC - + + + + +
-
diff --git a/src/app/_component/home-page.tsx b/src/app/_component/home-page.tsx index 7d4109b..ad137ef 100644 --- a/src/app/_component/home-page.tsx +++ b/src/app/_component/home-page.tsx @@ -1,12 +1,24 @@ import Banner from '@/components/banner/banner'; import FrequentlyAskedQuestions from '@/components/faq/faq'; +import MissionOverview from '@/components/mission-overview/mission-overview'; import ProjectOverview from '@/components/project-overview/project-overview'; +import { Button } from '@mui/material'; export function HomePage() { return (
+ + +
); diff --git a/src/app/about-us/about-us.scss b/src/app/about-us/about-us.scss new file mode 100644 index 0000000..b4d0b71 --- /dev/null +++ b/src/app/about-us/about-us.scss @@ -0,0 +1,99 @@ +@use '../globals.scss' as *; + +.join-us { + @include tablet { + padding: 0 2rem; + } + @include mobile { + padding: 0 1rem; + } + &__heading { + &--primary { + font-weight: 700; + } + + &--secondary { + font-weight: 600; + } + } + + &__text-container { + display: flex; + flex-direction: column; + gap: 2rem; + } + + &__text { + font-size: 1.5rem; + letter-spacing: -0.48px; + color: $text-color-primary; + font-family: inherit; + } + + &__button { + min-width: 184px; + + @include mobile { + width: 100%; + } + } +} + +.join-us-banner { + display: flex; + align-items: center; + justify-content: center; + gap: 2rem; + padding: 6rem 0; + + @include tablet { + flex-direction: column-reverse; + padding: 3rem 0; + } + + @include mobile { + padding: 2rem 0; + } + + &__text-container { + display: flex; + flex-direction: column; + gap: 24px; + + @include tablet { + align-items: center; + justify-content: center; + text-align: center; + } + } + + &__image-container { + padding: 0 2rem; + max-width: 472px; + max-width: 405.265px; + flex-shrink: 0; + + @include tablet { + max-width: 544px; + max-height: 467px; + flex-shrink: 1; + } + } + + &__image { + width: 100%; + height: 100%; + } + + &__button-container { + display: flex; + align-items: center; + gap: 1rem; + margin-top: 2.25rem; + + @include mobile { + width: 100%; + flex-direction: column; + } + } +} diff --git a/src/app/join-us/join-us.page.test.tsx b/src/app/about-us/about.page.test.tsx similarity index 74% rename from src/app/join-us/join-us.page.test.tsx rename to src/app/about-us/about.page.test.tsx index c836218..66292d6 100644 --- a/src/app/join-us/join-us.page.test.tsx +++ b/src/app/about-us/about.page.test.tsx @@ -1,11 +1,11 @@ -import JoinUs from '@/app/join-us/page'; +import AboutUs from '@/app/about-us/page'; import '@testing-library/jest-dom'; import { render, screen } from '@testing-library/react'; import React from 'react'; -describe('Join Us Page', () => { +describe('About Page', () => { it('should render title', () => { - render(); + render(); const subTitle = screen.getByRole('heading', { name: 'Our Mission' }); expect(subTitle).toBeInTheDocument(); }); diff --git a/src/app/about-us/page.client.tsx b/src/app/about-us/page.client.tsx new file mode 100644 index 0000000..8ee71fc --- /dev/null +++ b/src/app/about-us/page.client.tsx @@ -0,0 +1,67 @@ +'use client'; + +import CoreValues from '@/components/core-values/core-values'; +import FrequentlyAskedQuestions from '@/components/faq/faq'; +import JoinUsTab from '@/components/join-us-tab/join-us-tab'; +import MissionOverview from '@/components/mission-overview/mission-overview'; +import { Box, Button, Container, Typography } from '@mui/material'; +import Script from 'next/script'; +import React from 'react'; +import './about-us.scss'; + +export default function AboutUs() { + return ( + <> + + + + + + + + + + Visions + + + Envisioning British Columbia where technology and unity ignite + sustainable progress, we're committed to empowering + communities through innovation and collaboration for a brighter, + inclusive future. + + + + + + + + + ); +} diff --git a/src/app/about-us/page.tsx b/src/app/about-us/page.tsx new file mode 100644 index 0000000..e7e171a --- /dev/null +++ b/src/app/about-us/page.tsx @@ -0,0 +1,12 @@ +import { Metadata } from 'next'; +import AboutUsClient from './page.client'; + +export const metadata: Metadata = { + title: 'About Us & Get Engaged | CodeForBC', + description: + 'Learn more about CodeForBC and How to join the CodeForBC organization', +}; + +export default function AboutUs() { + return ; +} diff --git a/src/app/about/about.scss b/src/app/about/about.scss deleted file mode 100644 index a3a50fc..0000000 --- a/src/app/about/about.scss +++ /dev/null @@ -1,13 +0,0 @@ -body { - .container { - display: flex; - flex-direction: column; - height: 100%; - margin-top: 2%; - - .about-header { - font-family: inherit; - font-weight: 700; - } - } -} diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx deleted file mode 100644 index 73fdff4..0000000 --- a/src/app/about/page.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react'; -import { Typography } from '@mui/material'; -import Container from '@mui/material/Container'; -import './about.scss'; - -export default function About() { - return ( - - - About - - - OpenBC, a community-driven initiative dedicated to harnessing the power - of technology, collaboration, and innovation to create positive impacts - across British Columbia, Canada. Our mission is to bring together - individuals passionate about technology, civic engagement, and community - development to address the unique challenges and opportunities faced by - our province. - - - - Utilize Your Skills for the Betterment of British Columbia with OpenBC - - - - Unlock the power of your skills and expertise to drive positive change - in British Columbia through OpenBC. At OpenBC, we're passionate - about leveraging your unique abilities for the advancement of our - province. Whether you're a tech enthusiast, a creative visionary, - or a community leader, your skills can play a crucial role in addressing - challenges and creating opportunities. - - - - Contribute to Open Source Projects for BC, from Anywhere, with OpenBC - - - - ); -} diff --git a/src/app/code-of-conduct/code-of-conduct-page.test.tsx b/src/app/code-of-conduct/code-of-conduct-page.test.tsx new file mode 100644 index 0000000..444e865 --- /dev/null +++ b/src/app/code-of-conduct/code-of-conduct-page.test.tsx @@ -0,0 +1,12 @@ +import CodeOfConduct from '@/app/code-of-conduct/page'; +import '@testing-library/jest-dom'; +import { render, screen } from '@testing-library/react'; +import React from 'react'; + +describe('Code of Conduct Page', () => { + it('should render title', () => { + render(); + const title = screen.getByText('CodeForBC is a space for everyone.'); + expect(title).toBeInTheDocument(); + }); +}); diff --git a/src/app/code-of-conduct/code-of-conduct.scss b/src/app/code-of-conduct/code-of-conduct.scss new file mode 100644 index 0000000..7e2fc84 --- /dev/null +++ b/src/app/code-of-conduct/code-of-conduct.scss @@ -0,0 +1,178 @@ +@use '../globals.scss' as *; + +.code-of-conduct { + + @include tablet { + padding: 0 6.125rem; + } + + @include mobile { + padding: 0 1rem; + } + + &__heading-container { + padding: 6rem 0; + + @include tablet { + padding: 3rem 0; + } + + @include mobile { + padding: 2rem 0; + } + } + + &__heading { + font-family: inherit; + font-size: 2.75rem; + line-height: 3.4375rem; + font-weight: 600; + color: $heading-color-primary; + } + + &__main-wrapper { + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: center; + gap: 4rem; + padding: 4rem 0; + + @include tablet { + gap: 2rem; + padding: 3rem 0; + } + + @include mobile { + padding: 2rem 0; + } + } + + &__wrapper { + display: flex; + flex-direction: column; + gap: 2rem; + + @include tablet { + gap: 1.5rem; + } + } + + &__sub-heading { + font-family: inherit; + font-size: 2rem; + line-height: 2.5rem; + font-weight: 600; + color: $navbar-text-color; + + @include tablet { + font-size: 1.75rem; + line-height: 2.1875rem; + } + + @include mobile { + font-size: 1.5rem; + line-height: 1.875rem; + } + } + + &__text { + font-family: inherit; + font-size: 1.75rem; + line-height: 2.1875rem; + font-weight: 500; + color: $navbar-text-color; + + @include tablet { + font-size: 1.5rem; + line-height: 1.875rem; + } + + @include mobile { + font-size: 1.25rem; + line-height: 1.5625rem; + } + } + + &__list { + display: flex; + flex-direction: column; + gap: 0.75rem; + } + + &__list-item { + font-family: inherit; + font-size: 1.5rem; + font-weight: 500; + line-height: 1.875rem; + color: $navbar-text-color; + + @include tablet { + font-size: 1.25rem; + line-height: 1.5625rem; + } + } + + &__list-text { + font-family: inherit; + font-size: 1.5rem; + font-weight: 500; + line-height: 1.875rem; + color: $navbar-text-color; + + @include tablet { + font-size: 1.25rem; + line-height: 1.5625rem; + } + } + + &__tertiary-heading { + font-family: inherit; + font-size: 1.75rem; + line-height: 2.1875rem; + font-weight: 700; + color: $navbar-text-color; + + @include tablet { + font-size: 1.5rem; + line-height: 1.875rem; + } + + @include mobile { + font-size: 1.25rem; + line-height: 1.5625rem; + } + } + + &__reporting-template { + max-width: 800px; + padding: 1rem; + box-shadow: 0px 10px 20px -3px rgba(16, 24, 40, 0.10), 0px 4px 6px -4px rgba(16, 24, 40, 0.10); + align-self: center; + display: flex; + flex-direction: column; + gap: 1rem; + } + + &__note { + padding: 6rem 0; + + @include tablet { + padding: 3rem 0; + } + + @include mobile { + padding: 2rem 0; + } + } + + &__note-text { + font-family: inherit; + font-size: 1.75rem; + line-height: 2.1875rem; + font-weight: 600; + color: $text-color-primary; + padding-top: 1rem; + border-top: 1.6px solid $divider-color-secondary; + } +} diff --git a/src/app/code-of-conduct/page.tsx b/src/app/code-of-conduct/page.tsx new file mode 100644 index 0000000..f0c1d3f --- /dev/null +++ b/src/app/code-of-conduct/page.tsx @@ -0,0 +1,174 @@ +import { Box, Container, Typography } from '@mui/material'; +import './code-of-conduct.scss'; + +export default function CodeOfConduct() { + return ( + + + + CodeForBC is a space for everyone. + + + + + + Our Commitment + + + CodeForBC is a volunteer-driven organization committed to leveraging + technology for the betterment of British Columbia. We aim to create + a positive impact and contribute to our community's growth and + development through technology, collaboration, and innovation. Below + is the full text of the CodeForBC Code of Conduct. For any questions + or clarifications regarding this Code of Conduct, please feel free + to reach out + + + + + Code of Conduct + + + In all CodeForBC activities, events, and digital forums, we expect + participants to: + +
    +
  1. + + Foster a Safe and Respectful Environment: We + are committed to creating a space where every participant feels + safe, respected, and free to express their identity without fear + of discrimination or harassment. + +
  2. +
  3. + + Embrace Diversity and Inclusion: We value + diverse ideas, skills, and contributions, encouraging + participation from everyone, especially those traditionally + marginalized in tech and civic processes. + +
  4. +
  5. + + Promote Positive Interaction: We advocate for + inclusive language, a "yes/and" approach in + discussions, and encourage listening and balanced participation. + +
  6. +
  7. + + Support Community Collaboration: Our focus is + on building open and freely available tools for public use, with + an emphasis on public benefit rather than private gain. + +
  8. +
  9. + + Encourage Active Participation: We welcome + participants from all backgrounds and skill levels, fostering an + environment of questions, mentorship, and knowledge sharing. + +
  10. +
  11. + + Maintain Professional and Ethical Standards: We + ensure respectful and participatory interactions within our + community and with our partners + +
  12. +
+
+ + + Anti-Harassment Policy + + + CodeForBC is committed to a harassment-free experience for everyone, + regardless of identity. We do not tolerate harassment in any form, + including but not limited to: + + + + + Reporting and Enforcement + + + Participants exhibiting harassing behavior are expected to comply + immediately upon request to stop. CodeForBC organizers may take + actions like warning or expulsion from events and forums. + + + In Case of Harassment: + +
    +
  • + + In emergencies, call 911 or remove yourself from the situation. + +
  • +
  • + + Contact CodeForBC leadership at codeforbc@gmail.com + +
  • +
+ + Reporting Template for Anti-Harassment + + + + Subject: Harassment Report at [EVENT NAME] + + + Content: + + + I am reporting an issue of harassment at CodeForBC, [EVENT NAME, + LOCATION, DATE]. My contact information is [CONTACT INFO]. Thank + you for addressing this matter. + + +
+
+ + + CodeForBC values each member and believes in a community where + everyone can contribute in a safe, respectful, and harassment-free + environment. These guidelines reflect our commitment to these values + and our dedication to upholding them in all our endeavors. + + +
+ ); +} diff --git a/src/app/dataModels/project.ts b/src/app/dataModels/project.ts index 9502f58..01e08f6 100644 --- a/src/app/dataModels/project.ts +++ b/src/app/dataModels/project.ts @@ -12,4 +12,12 @@ export interface Project { location?: string; status?: ProjectStatusEnum; contributors?: string[]; + projectImage: string; + projectKey: string; + projectOverview?: { + problemStatement: string; + projectObjectives: string[]; + projectLead: string; + lookingFor: string[]; + }; } diff --git a/src/app/favicon.ico b/src/app/favicon.ico index d6299c5..b206f69 100644 Binary files a/src/app/favicon.ico and b/src/app/favicon.ico differ diff --git a/src/app/globals.scss b/src/app/globals.scss index 99d4b18..358194b 100644 --- a/src/app/globals.scss +++ b/src/app/globals.scss @@ -1,13 +1,41 @@ -@import url("https://use.typekit.net/qnx3faq.css"); +@import url('https://use.typekit.net/qnx3faq.css'); -$primary-color: #2563eb; +$primary-color: #15345e; $secondary-color: #ffffff; $tertiary-color: #e7e5e4; $gray-color: #878787; $hover-color: black; $text-color-primary: #424242; +$heading-color-primary: #171717; +$alt-text-color-primary: #327ce0; +$heading-color-primary: #424242; +$heading-color-secondary: #404040; $text-color-secondary: #707070; -$divider-color: #E1E1E1; +$divider-color: #e1e1e1; +$divider-color-secondary: #bebebe; +$background-color-secondary: #f4f8fc; +$pagination-color-active: #327ce0; +$pagination-color-disabled: #909090; +$filter-button-background-color: #f5f5f5; +$filter-button-background-color-active: #ebf2fc; +$team-profile-text-color: #9e9e9e; +$background-color-tertiary: #f5f5f5; +$button-color-primary: #2e71cc; +$primary-50: #ebf2fc; +$navbar-text-color: #15345e; +$navbar-active-text-color: #24589f; + +@mixin tablet { + @media only screen and (max-width: 1280px) { + @content; + } +} + +@mixin mobile { + @media only screen and (max-width: 786px) { + @content; + } +} :root { scroll-behavior: smooth; @@ -26,8 +54,16 @@ body { } .page-heading { - font-family: "Source Serif Pro"; font-size: 56px; font-weight: 700; letter-spacing: -1.12px; + color: $heading-color-primary; + + @include tablet { + font-size: 44px; + } + + &--secondary { + font-weight: 600; + } } diff --git a/src/app/join-us/join-us.scss b/src/app/join-us/join-us.scss deleted file mode 100644 index f1c2623..0000000 --- a/src/app/join-us/join-us.scss +++ /dev/null @@ -1,101 +0,0 @@ -body { - .container { - display: flex; - flex-direction: column; - height: 100%; - margin-top: 2%; - } - .sub-container-2-col { - display: flex; - direction: row; - margin: 2em; - align-items: center; - justify-content: space-between; - } - - .sub-header { - font-size: 1.5rem; - font-weight: 700; - color: inherit; - text-decoration: none; - transition: opacity 0.25s ease-in-out; - margin-bottom: 0.5rem; - } - - .square { - width: 1.5em; - height: 1.5em; - display: fixed; - align-items: center; - justify-content: center; - font-size: 20px; - background-color: #878787; - } - .box-size-30 { - width: 30%; - } - - .box-size-40 { - width: 40%; - - &__center { - @extend .box-size-40; - align-self: center; - } - } - - .box-size-50 { - width: 50%; - - &__marginX { - @extend .box-size-50; - margin-left: 2em; - margin-right: 2em; - } - } - - .box-size-70 { - width: 70%; - } - - .box-number { - display: flex; - align-items: center; - justify-content: center; - height: 100%; - } - - .link-no-decorated { - text-decoration: none; - } - - .divider { - border-radius: 1; - } - - .margin-left-1 { - margin-left: 1em; - } - - .margin-left-4 { - margin-left: 4em; - } - - .margin-bottom-4 { - margin-bottom: 4em; - } - - .display-flex { - display: flex; - - &__center { - @extend .display-flex; - justify-content: center; - } - - &__space-around { - @extend .display-flex; - justify-content: space-around; - } - } -} diff --git a/src/app/join-us/page.tsx b/src/app/join-us/page.tsx deleted file mode 100644 index 62c2776..0000000 --- a/src/app/join-us/page.tsx +++ /dev/null @@ -1,146 +0,0 @@ -import CoreValues from '@/components/core-values/core-values'; -import FrequentlyAskedQuestions from '@/components/faq/faq'; -import { Box, Divider, Link, Paper, Typography } from '@mui/material'; -import Container from '@mui/material/Container'; -import Image from 'next/image'; -import React from 'react'; -import './join-us.scss'; - -export default function JoinUs() { - return ( - - - - Description - - - - Our Mission - - - At OpenBC, we're passionate about leveraging your unique - abilities for the advancement of our province. - - - - Contribute to Open Source Projects for BC, from Anywhere, with - OpenBC. - - - - - - - Visions - - - Quis neque, eu et ipsum amet, vel et. Varius integer enim pellentesque - ornare pharetra faucibs arcu. Mauris blandit egestas nibh. eu et ipsum - amet, vel et. Varius integer enim pellentesque ornare pharetra faucibs - arcu. Mauris blandit egestas nibh. - - - - - - Volunteers - - - Be A Partner - - - - - - - - - Ready to contribute to British Columbia through Open Source - projects? - - - - Join us at OpenBC and become a part of our active and welcoming - community. - - - - - - - 1 - - - - Tell Us About Yourself - - - - Fill out our 2 minute form so we can help match you with - opportunities - - - - - 2 - - - - Onboarding - - - - Tortor interdumd pulvinar risus. Cursus in odio aenean. - - - - - 3 - - - - Have a question? - - - - Find you answers in FAQ or email{' '} - - openbc.ca AT gmail.com - {' '} - with any questions or feedback. - - - - - Core Values - - - - - - - - - - - Description - - - - - - - ); -} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 4aa47ff..4b3b0c2 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,23 +1,26 @@ import Footer from '@/components/footer/footer'; import Header from '@/components/header/header'; import { AppRouterCacheProvider } from '@mui/material-nextjs/v13-appRouter'; -import { Lato } from 'next/font/google'; +import { StyledEngineProvider } from '@mui/material/styles'; +import { Lexend } from 'next/font/google'; import React from 'react'; import './globals.scss'; -const lato = Lato({ +const lexend = Lexend({ subsets: ['latin'], - weight: ['100', '300', '400', '700', '900'], + weight: ['100', '300', '400', '500', '700', '900'], }); export default function RootLayout({ children }: any) { return ( - +
- - {children} - + + + {children} + +