Compare commits

...

152 Commits

Author SHA1 Message Date
Tejas Srikanth d57dcdec82 add_BOT (#580) 2 weeks ago
Raymond Li 86123ca869 raymo-s23-updates (#579) 2 weeks ago
Sat Arora 255b015876 sat-s23-desc-change (#578) 2 weeks ago
Amy Wang 8fa379a098 Add Amy S23 Trez Blurb (#577) 2 weeks ago
Amy Wang 574b8672ea Add S23 elections results (#576) 3 weeks ago
Shahan Nedadahandeh 4aee019326 Spring 2023 Constitution Changes (#534) 3 weeks ago
Amy Wang 56ecae8ab7 Add S23 Elections (#575) 3 weeks ago
Amy Wang a3e0d0aafe Change W23 Elections event file name (#573) 1 month ago
Tejas Srikanth cc99e2d02b add light and dark mode scrollbar (#571) 1 month ago
Tejas Srikanth 48c056ea92 April-Code-Party (#567) 2 months ago
Shahan Nedadahandeh 508b74a126 Added afterhours and prof talk event and updated team (#566) 2 months ago
Max Erenberg 696cdec102 remove ZNC from services (#565) 2 months ago
Shahan Nedadahandeh 019ca7b1ff Added alt tab and CP news (#563) 3 months ago
Darren Lo 57c95d8806 Fixed dead link (#562) 3 months ago
Richard Shuai 7a1520b4ec richardshuai/karaoke (#559) 3 months ago
Shahan Nedadahandeh a506e98632 Fixed missed team (#558) 3 months ago
Tejas Srikanth 33a7722f33 add name to web committee: (#553) 3 months ago
Shahan Nedadahandeh 32506ff0f6 W23 Update Team (#557) 3 months ago
Annie Sun 0381a5d270 Updated exec blurbs (#556) 3 months ago
Shahan Nedadahandeh b20a2a39e5 Added code party event (#554) 4 months ago
Annie Sun e599084fd0 Added circles event to website (#551) 4 months ago
Yiao Shen c1881bd03e add leo shen as sysadmin (#552) 4 months ago
Richard Shuai 2561e8f72b Add Richard Shuai to the website (#542) 4 months ago
Darren Lo 988e3e2f46 Added election news (#547) 4 months ago
Annie Sun cb9fd3aa96 Added myself (annie sun) to website (#544) 4 months ago
Darren Lo 6ea599f9dc Added Darren Lo to the Team page (#543) 4 months ago
Shahan Nedadahandeh 03f652ab99 Fixed exec name showing middle name (#537) 4 months ago
Shahan Nedadahandeh af9246f53f Add BOT 2023 Winter (#536) 5 months ago
Shahan Nedadahandeh 9747386d8b Added first bootcamp and elections event (#535) 5 months ago
Shahan Nedadahandeh 91f7add822 Added afterhours and EOT event (#532) 6 months ago
Max Erenberg 7e5466e2bc always remove tmpdir in deploy.sh (#530) 6 months ago
Amy Wang 3fe5696dd1 Add Alt-Tab (#528) 6 months ago
Shahan Nedadahandeh 9590050d10 Added hiring news and other events (#526) 7 months ago
Shahan Nedadahandeh 9e153763f5 Added alt-tab news (#525) 7 months ago
Shahan Nedadahandeh e92297d1b3 Add code party 2 event (#524) 7 months ago
Amy Wang e3c011c7bf Fix typo (#522) 7 months ago
Amy Wang 4514eb8917 Add Karaoke event and 2023 Class Profile Mailing List news (#519) 7 months ago
Amy Wang 284b90b2fe Update Annie's headshot (#517) 8 months ago
Shahan Nedadahandeh 80795cbb7e Add Rico AMA event (#516) 8 months ago
Amy Wang 4795da482c Add 2023 internship repo (#515) 8 months ago
Amy Wang 6b8d6b0918 Fix VP role (#514) 8 months ago
Amy Wang 6f547908e3 Add librarian (#513) 8 months ago
Shahan Nedadahandeh e36ef5113f Updated exec blurbs (#511) 8 months ago
Beihao Zhou 6fcf793855 Add CSC Kickoff Event News (#510) 8 months ago
Amy Wang dd410b374f Update Meet the Team page for Fall 2022 (#508) 8 months ago
Shahan Nedadahandeh f280ecc9db Add code party event (#509) 8 months ago
Shahan Nedadahandeh 529cf6119c Add project program news (#507) 8 months ago
Shahan Nedadahandeh d74ea51ab1 Update project program image (#506) 8 months ago
Shahan Nedadahandeh 210004a286 Changed project program kickoff room number (#505) 8 months ago
Amy Wang 192dcc2356 Update Project Program event time (#504) 8 months ago
Amy Wang 7176815506 Add Amy's image (#501) 8 months ago
Shahan Nedadahandeh 8b09dcfa47 Added project program event (#503) 8 months ago
Amy Wang 80f618f1e8 Appoint office manager (#502) 8 months ago
Amy Wang dd8babc3f6 Add appointed positions news (#498) 9 months ago
Raymond Li 6d844b2c3c Fix typo (#499) 9 months ago
Raymond Li 7a3ba134c1 New term ~~new~~ revised intro 9 months ago
Amy Wang 9e75ab1c25 Add Fall 2022 Election Results (#497) 9 months ago
Mark Chiu bccbffded5 Add CSC BOT event (#496) 9 months ago
Mark Chiu d411433f4b Add First Year Orientation & Fall 2022 Elections to events (#494) 9 months ago
Mark Chiu 9c5a4d8050 Add bootcamp resume review & mock interviews signup event (#493) 9 months ago
Jared He 558bdae40b Add news "[CSC] Fall 2022 Election Nominations + New Services (Nextcloud, Shlink)" (#492) 9 months ago
Amy Wang 94156adfd2 Fix exec fetching and add events (#491) 9 months ago
Amy Wang f5072d38fd Add Code Party 3 (#490) 10 months ago
Aditya Thakral be308f6249 Create members.json api (#489) 10 months ago
Raymond Li 8e0e446fd9 Update Leo in syscom/termcom (#488) 10 months ago
Shahan Nedadahandeh 8c43ed47b2 Remove warning about emails being lost (#487) 10 months ago
Amy Wang 6e31d572ba Add warning about emails being lost (#486) 10 months ago
Amy Wang 82cf6a7872 Update Fall 2022 hiring deadline (#484) 10 months ago
Jared He c509757975 Make recent images square (#483) 10 months ago
Amy Wang 72723df9eb Add Fall 2022 hiring news (#482) 10 months ago
Jared He f4fbfa254a Add events (#481) 10 months ago
Amy Wang 0a30564750 Update team name to Community Representatives (#478) 11 months ago
Raymond Li 7f9706a1b5 Update the MUA (#473) 11 months ago
Shahan Nedadahandeh 13c6a0fb91 Added afterhours event (#477) 11 months ago
Amy Wang 0a3222a9ce Update Anton Mosunov Prof Talk room (#476) 11 months ago
Shahan Nedadahandeh e88283bc64 Added CTF and Code party events (#475) 11 months ago
Amy Wang e7ca161e76 Fix Andrew Wang Photos (#471) 11 months ago
Amy Wang 14ef810ad9 Image Optimization - Create new ImagePool for each batch (#470) 11 months ago
Aditya Thakral 767e32511d Add some docs about architecture (#459) 12 months ago
Aditya Thakral 44af493832 Do not use index: as metadata for OrganizedContent (#468) 12 months ago
Amy Wang 0f0a25596d Add temporary Eden blurb (#467) 12 months ago
Jared He e1af564621 Redesign and update 'Meet the Team' data (#452) 12 months ago
Max Erenberg d0cc21f406 Add section for cloud accounts (#462) 12 months ago
Shahan Nedadahandeh ad6e02685d Added code party scream event and csc update warning (#463) 12 months ago
Mark Chiu 07b4b77e0c Add Movie Night Event Spring 2022 (#460) 12 months ago
Mark Chiu f631f4013f Implement dark theme (Closes #287) (#407) 12 months ago
Amy Wang 443925190e Improve image optimization run-time and memory usage (#457) 1 year ago
Amy Wang e336bed2aa Add Haley's Blurb (#455) 1 year ago
Raymond Li a2f0a20929 Update my blurb (#454) 1 year ago
Neil Parikh 49925d4cfa Bondfire date change (#453) 1 year ago
Shahan Nedadahandeh f12ffbb925 Add endDate to events (#446) 1 year ago
b38peng c665be281a Add Bondfire event (#447) 1 year ago
Amy Wang fac62e8772 Add Sat's blurb (#440) 1 year ago
Amy Wang 0c94c4b3fb Add CxC Summit and Bonnie's exec blurb (#439) 1 year ago
Aditya Thakral c395dcbcd6 Add myself as an alumni (#438) 1 year ago
Amy Wang a1f418e608 Fix Meet the Team page blurbs and exec images (#435) 1 year ago
Amy Wang aece9ce761 Add S22 elections results (#433) 1 year ago
Amy Wang 180622a71b Add Spring 2022 Elections (#432) 1 year ago
Amy Wang 7be1adb860 Add Spring 2022 Bootcamp mentor application news (#431) 1 year ago
Amy Wang af69b0ab98 Update Get Involved page membership instructions (#429) 1 year ago
Neil Parikh 419a3dd3c6 regen website 1 year ago
Beihao Zhou 08405cabee Add EOT event (#421) 1 year ago
Beihao Zhou 672a4ce013 s22-hiring-news (#420) 1 year ago
Shahan Nedadahandeh c13b6a98f9 Added custom 404 page (#410) 1 year ago
Shahan Nedadahandeh 174ddff299 Addec unix101-1 recording to tech talks (#415) 1 year ago
Amy Wang e74e2279b4 Add Code Party Event (#419) 1 year ago
Jared He 0f1e8b7e81 Link from [term] to [term]/[event] (#412) 1 year ago
Jared He b0ca27416c Add Unix 101 FS/Perms & vim event (#416) 1 year ago
Beihao Zhou bb073136b0 Use LDAP API to fetch executive members' name (Closes #376) (#396) 1 year ago
Shahan Nedadahandeh dd911c12ea added Unix-101-1 event (#411) 1 year ago
Neil Parikh d85016e2cc Empty commit to regen website 1 year ago
Aditya Thakral 4982b86de9 Docs for how pages work (#391) 1 year ago
Beihao Zhou d04115fb12 Separate Teams on Meet the Team page (Close #346) (#404) 1 year ago
Amy Wang 328a2041fa Add Project Program Kick-off, Valentine's Day Speed-Friending, and Tesla Coffee Chat events (#408) 1 year ago
Mark Chiu 31c81f8620 Add Multiple News Items on Homepage and Single News Item Page (Closes #281) (#390) 1 year ago
Shahan Nedadahandeh bb78a3d53d Warning Header (Closes #205) (#394) 1 year ago
Raymond Li 4aaa112822
Merge branch 'main' of csclub.uwaterloo.ca:www/www-new 1 year ago
Raymond Li 17ff0e9b7a
Create SeshanRavikumar.jpg 1 year ago
Raymond Li 73d88f5a46 Remove Paypal (#399) 1 year ago
Raymond Li 2a93c9029a Replace Paypal with commented WUSA store 1 year ago
Raymond Li e285cb0553 Remove Paypal 1 year ago
Beihao Zhou 78c751fce0 Add news for winter 2022 election results (Closes #380) (#383) 1 year ago
Raymond Li b9cd0f6b66 Waive w22 fees (#395) 1 year ago
Amy Wang fc9236f128 Change Discord Mod to Discord (#393) 1 year ago
Mark Chiu 39cece999c Update Meet The Team page for Winter 2022 (Closes #382) (#388) 1 year ago
Amy Wang 84144c10ab Add Afterhours and BOT events (#389) 1 year ago
Renovate Bot d6509b1bfa Update dependency @next/mdx to v11.1.3 (#143) 1 year ago
Renovate Bot dcba1a8cd9 Update npm to v8 (#340) 1 year ago
Renovate Bot cd660a523e Update dependency postcss-preset-env to v7 (#360) 1 year ago
Jared He 2264e60852 Add Term Type (#361) 1 year ago
Amy Wang ff0594eac7 Mobile TeamMemberCard fixes (#368) 1 year ago
Beihao Zhou fdb6bb1ccf Sort Members by name instead of userid (Fixes #371) (#384) 1 year ago
Shahan Nedadahandeh d11aa814ce Fixed logo centering on home page (#386) 1 year ago
Beihao Zhou 92b2e64f5b Add Bootcamp Resume Critique + Mock Interviews to Events (Close #375) (#385) 1 year ago
Mark Chiu 02bb095263 add emily's name & face to the meet our team page (#378) 1 year ago
Beihao Zhou 4af820f150 Update Beihao's name and photo on team page (#377) 1 year ago
Shahan Nedadahandeh e4c0d37337 Added bootcamp mentor signup to news (Jan2022) (Closes #374) (#381) 1 year ago
Shahan Nedadahandeh 8f244bf627 Added Shahan's name and photo to the team page (#379) 1 year ago
Amy Wang 523c4de481 Add Fall 2021 EOT event (#373) 1 year ago
Max Erenberg b98e91af9f run CI 2 years ago
Jared He deaa623d8e Add title to Members page (#366) 2 years ago
Amy Wang 2c2d8abd6a Add Yanni's blurb (#367) 2 years ago
Jared He e6315cf906 Generate members list (#354) 2 years ago
Amy Wang 85e5080012 Update Meet the Team page for Fall 2021 (#363) 2 years ago
Amy Wang fa8cff4a36 Add Winter 2022 hiring news (#362) 2 years ago
Jared He e2ff165a39 Add Tesla event (and other old ones) (#358) 2 years ago
c29wan 56d52a5de6 fix h2,h3,h4 sizing in markdown files (#341) 2 years ago
Max Erenberg d585c4a1af add Fireside Chat event 2 years ago
Amy Wang aae5c9adef Image Optimization Script (#348) 2 years ago
Max Erenberg 041dfac2f2 fix typo in Yanni's username 2 years ago
k4tu 77f385e2cb Update Kallen Tu bio. (#353) 2 years ago
Neil Parikh a7248eebbb Fall Election Results (#351) 2 years ago
  1. 23
      .drone.yml
  2. 7
      .eslintrc.js
  3. 11
      .gitignore
  4. 6
      .vscode/settings.json
  5. 18
      README.md
  6. 2
      components/ArchivePage.module.css
  7. 4
      components/ArchivePage.tsx
  8. 1
      components/Bubble.module.css
  9. 4
      components/Button.module.css
  10. 4
      components/EventCard.module.css
  11. 29
      components/EventCard.tsx
  12. 4
      components/EventDescriptionCard.module.css
  13. 13
      components/EventDescriptionCard.tsx
  14. 33
      components/EventSetting.tsx
  15. 4
      components/Footer.module.css
  16. 14
      components/Footer.tsx
  17. 4
      components/Link.module.css
  18. 20
      components/MiniEventCard.module.css
  19. 32
      components/MiniEventCard.tsx
  20. 10
      components/Navbar.module.css
  21. 71
      components/Navbar.tsx
  22. 8
      components/NewsCard.module.css
  23. 11
      components/NewsCard.tsx
  24. 10
      components/OrganizedContent.module.css
  25. 4
      components/OrganizedContent/Header.module.css
  26. 2
      components/SocialLinks.module.css
  27. 10
      components/SocialLinks.tsx
  28. 6
      components/Table.module.css
  29. 12
      components/TeamMember.module.css
  30. 4
      components/TeamMember.tsx
  31. 66
      components/TeamMemberCard.module.css
  32. 71
      components/TeamMemberCard.tsx
  33. 79
      components/Theme.tsx
  34. 12
      components/WarningHeader.module.css
  35. 61
      components/WarningHeader.tsx
  36. 14
      content/about/code-of-conduct/ORDER.json
  37. 1
      content/about/code-of-conduct/additional-information.md
  38. 1
      content/about/code-of-conduct/addressing-grievances.md
  39. 1
      content/about/code-of-conduct/confidentiality.md
  40. 1
      content/about/code-of-conduct/consequences-of-inappropriate-behaviour.md
  41. 1
      content/about/code-of-conduct/contact-information.md
  42. 1
      content/about/code-of-conduct/expected-behaviour.md
  43. 1
      content/about/code-of-conduct/experiencing-unacceptable-behaviour.md
  44. 1
      content/about/code-of-conduct/license-information-and-attribution.md
  45. 1
      content/about/code-of-conduct/purpose.md
  46. 1
      content/about/code-of-conduct/revision.md
  47. 1
      content/about/code-of-conduct/scope-and-spaces.md
  48. 1
      content/about/code-of-conduct/unacceptable-behaviour.md
  49. 16
      content/about/constitution/ORDER.json
  50. 3
      content/about/constitution/amendments-and-procedures.md
  51. 1
      content/about/constitution/code-of-conduct.md
  52. 20
      content/about/constitution/committees.md
  53. 1
      content/about/constitution/dissolution.md
  54. 20
      content/about/constitution/duties-of-officers.md
  55. 19
      content/about/constitution/executive-council.md
  56. 1
      content/about/constitution/finances.md
  57. 7
      content/about/constitution/meetings.md
  58. 3
      content/about/constitution/membership.md
  59. 1
      content/about/constitution/name.md
  60. 9
      content/about/constitution/officers.md
  61. 1
      content/about/constitution/purpose.md
  62. 3
      content/about/constitution/revision.md
  63. 1
      content/about/constitution/use-of-club-resources.md
  64. 2
      content/about/our-supporters.mdx
  65. 2
      content/events/1994/fall/ACM-Style-Programming-Contest.md
  66. 2
      content/events/1994/fall/CSC-Elections.md
  67. 2
      content/events/1994/fall/Exploring-the-Internet.md
  68. 2
      content/events/1994/fall/Game-Theory.md
  69. 2
      content/events/1994/fall/Movie-Outing-Brainstorm.md
  70. 2
      content/events/1994/fall/Prograph-Picture-the-Future.md
  71. 2
      content/events/1994/fall/SIGGRAPH-Video-Night.md
  72. 2
      content/events/1994/fall/UNIX-I-Tutorial.md
  73. 2
      content/events/1994/fall/UNIX-II-Tutorial.md
  74. 2
      content/events/1999/fall/Calculational-Mathematics.md
  75. 2
      content/events/1999/fall/Ctrl-D.md
  76. 2
      content/events/1999/fall/GDB,-Purify-Tutorial.md
  77. 2
      content/events/1999/fall/Homebrew-Processors-and-Integrated-Systems-in-FPGAs.md
  78. 2
      content/events/1999/fall/Living-Laboratories-The-Future-Computing-Environments-at-Georgia-Tech.md
  79. 2
      content/events/1999/fall/Open-Q&A-session.md
  80. 2
      content/events/1999/fall/Proofs-and-Programs.md
  81. 2
      content/events/2000/fall/CSC-Elections.md
  82. 2
      content/events/2000/fall/Realising-the-Next-Generation-Internet.md
  83. 2
      content/events/2000/fall/SIGGraph-Video-Night.md
  84. 2
      content/events/2000/spring/Ctrl-D.md
  85. 2
      content/events/2000/winter/Enterprise-Java-APIs-and-Implementing-a-Web-Portal-(1).md
  86. 2
      content/events/2000/winter/Enterprise-Java-APIs-and-Implementing-a-Web-Portal.md
  87. 2
      content/events/2001/spring/ACM-Style-programming-contest.md
  88. 2
      content/events/2001/winter/ACM-Style-programming-contest.md
  89. 2
      content/events/2001/winter/Executive-elections.md
  90. 2
      content/events/2001/winter/Meeting-#2.md
  91. 2
      content/events/2001/winter/Meeting-#3.md
  92. 2
      content/events/2001/winter/Meeting-#4.md
  93. 2
      content/events/2001/winter/Meeting-#5.md
  94. 2
      content/events/2002/fall/A-GNU-Approach-to-Virtual-Memory-Management-in-a-Multiserver-Operating-System.md
  95. 2
      content/events/2002/fall/Automatic-Memory-Management-and-Garbage-Collection.md
  96. 2
      content/events/2002/fall/Business-Meeting.md
  97. 2
      content/events/2002/fall/Debian-in-the-Enterprise.md
  98. 2
      content/events/2002/fall/F02-elections.md
  99. 2
      content/events/2002/fall/GNULinux-InstallFest-with-KW-LUG-and-UW-DIG.md
  100. 2
      content/events/2002/fall/GNULinux-on-HPPA.md
  101. Some files were not shown because too many files have changed in this diff Show More

@ -23,25 +23,40 @@ steps:
commands:
- npm run lint
- name: build
- name: optimize-images
image: node:16
depends_on:
- install-deps
commands:
- npm run build:web
- npm run build:images
- name: generate-calendar
image: node:16
depends_on:
- install-deps
commands:
- npm run generate:calendar
- npm run build:calendar
- name: generate-api
image: node:16
depends_on:
- install-deps
commands:
- npm run build:api
- name: build
image: node:16
depends_on:
- optimize-images
commands:
- USE_LDAP=true npm run build:web
- name: export
image: node:16
depends_on:
- build
- generate-api
- generate-calendar
- build
commands:
- npm run export

@ -17,7 +17,12 @@ module.exports = {
],
plugins: ["@typescript-eslint", "react", "react-hooks", "prettier"],
rules: {
"prettier/prettier": "error",
'prettier/prettier': [
'error',
{
'endOfLine': 'lf',
}
],
"import/first": "error",
"import/order": [

11
.gitignore vendored

@ -25,4 +25,13 @@ yarn-debug.log*
yarn-error.log*
# Calendar is automatically generated
/public/events.ics
/public/events.ics
# Images should be optimized
/public/images
# APIs should be automatically generated, schema should be checked in
/public/api/*
!/public/api/schema
.idea/**

@ -40,7 +40,11 @@
"files.eol": "\n",
"[markdown]": {
"editor.wordWrap": "on",
"editor.quickSuggestions": false,
"editor.quickSuggestions": {
"comments": "off",
"strings": "off",
"other": "off"
},
"editor.tabSize": 4
}
}

@ -1,6 +1,13 @@
# Development
# README
## Dependencies
## Documentation
- [Architecture and Folder Structure](docs/architecture.md)
- [Everything about pages](docs/pages.md)
## Development
### Dependencies
Make sure that you have `node` >= 14 and `npm` >= 7. Node 14 ships with npm v6,
so if you're using node 14, you would need to upgrade npm. Alternatively you
@ -8,19 +15,20 @@ could also upgrade to node 16, which ships with npm 7.
How to upgrade npm: `npm i -g npm`
## Local
### Local
- `npm install` to install project dependencies
- `npm run build:images` to optimize images for the first time after cloning
- `npm run dev` to run the dev server (http://localhost:3000)
## Production
### Production
- `npm install` to install project dependencies
- `npm run build` to generate html/css/js
- `npm run export` to move the built files (along with assets in the public directory) to the `/out` directory
- Use your favourite web server to host the files in the `/out` directory. (A very simple one would be `python -m http.server` - not sure if it should actually be used for production :P)
# Deploy
## Deploy
- `groups` (make sure you're in the `www` group)
- `curl -o- https://git.csclub.uwaterloo.ca/www/www-new/raw/branch/main/deploy.sh | bash` (run on `caffeine`)

@ -3,7 +3,7 @@
}
.page > h1 {
border-bottom: calc(1rem / 16) solid var(--primary-heading);
border-bottom: calc(1rem / 16) solid var(--border);
padding-bottom: 1rem;
}

@ -1,6 +1,6 @@
import React from "react";
import { capitalize } from "@/utils";
import { capitalize, Term } from "@/utils";
import { Link } from "./Link";
import {
@ -16,7 +16,7 @@ export interface Props {
type: "news" | "events";
items: {
year: string;
terms: string[];
terms: Term[];
}[];
}

@ -6,7 +6,6 @@
.bubble {
--border-radius: calc(5000rem / 16);
display: flex;
flex-direction: row;
position: absolute;

@ -2,8 +2,8 @@
.link {
font-family: "Poppins", "sans-serif";
border-radius: calc(20rem / 16);
background-color: var(--primary-accent);
color: var(--primary-background);
background-color: var(--button-background);
color: var(--text-light);
border: none;
outline: none;
transition-duration: 0.3s;

@ -31,6 +31,10 @@
margin-bottom: 0;
}
.content > h1 a {
color: var(--primary-heading);
}
.content,
.content > h2 {
font-weight: 400;

@ -10,7 +10,8 @@ import styles from "./EventCard.module.css";
interface EventCardProps {
name: string;
short: string;
date: Date;
startDate: Date;
endDate?: Date;
online: boolean;
location: string;
poster?: string;
@ -18,18 +19,27 @@ interface EventCardProps {
permaLink: string;
showDescription?: boolean;
children: ReactNode;
year: number;
term: string;
slug: string;
titleLinked: boolean;
}
export function EventCard({
permaLink,
name,
date,
startDate,
endDate,
online,
location,
poster,
registerLink,
children,
showDescription = false,
year,
term,
slug,
titleLinked,
}: EventCardProps) {
return (
<article className={styles.card}>
@ -54,9 +64,20 @@ export function EventCard({
showDescription ? styles.mobileShowDescriptionContent : "",
].join(" ")}
>
<h1>{name}</h1>
<h1>
{titleLinked ? (
<Link href={`/events/${year}/${term}/${slug}`}>{name}</Link>
) : (
name
)}
</h1>
<h2>
<EventSetting date={date} online={online} location={location} />
<EventSetting
startDate={startDate}
endDate={endDate}
online={online}
location={location}
/>
</h2>
{!showDescription && (
<Link href={permaLink}>

@ -4,7 +4,7 @@
max-width: calc(540rem / 16);
padding: calc(24rem / 16);
border-radius: calc(20rem / 16);
background-color: var(--primary-background);
background-color: var(--card-background);
}
.poster {
@ -38,7 +38,7 @@
.setting {
margin: 0;
color: var(--primary-accent);
color: var(--link);
font-size: calc(14rem / 16);
font-weight: 600;
}

@ -13,7 +13,8 @@ interface Props {
short: string;
online: boolean;
location: string;
date: Date;
startDate: Date;
endDate?: Date;
poster?: string;
registerLink?: string;
permaLink: string;
@ -34,7 +35,8 @@ export function EventDescriptionCard({
poster,
name,
short,
date,
startDate,
endDate,
online,
registerLink,
permaLink,
@ -48,7 +50,12 @@ export function EventDescriptionCard({
<div className={styles.details}>
<h1 className={styles.name}>{name}</h1>
<h2 className={styles.setting}>
<EventSetting date={date} online={online} location={location} />
<EventSetting
startDate={startDate}
endDate={endDate}
online={online}
location={location}
/>
</h2>
<p className={styles.desc}>{short}</p>
<Link href={permaLink}>Learn more</Link>

@ -3,30 +3,51 @@ import React from "react";
import styles from "./EventSetting.module.css";
interface Props {
date: Date;
startDate: Date;
endDate?: Date;
online: boolean;
location: string;
}
export function EventSetting(props: Props) {
const date = props.date.toLocaleDateString("en-US", {
const date = props.startDate.toLocaleDateString("en-US", {
day: "numeric",
month: "long",
year: "numeric",
});
const time = props.date.toLocaleTimeString("en-US", {
const time = props.startDate.toLocaleTimeString("en-US", {
hour: "numeric",
minute: "numeric",
timeZoneName: "short",
});
const endDate =
props.endDate?.toLocaleDateString("en-US", {
day: "numeric",
month: "long",
year: "numeric",
}) ?? "";
const location = props.online ? `Online - ${props.location}` : props.location;
const separator = <span className={styles.separator}> | </span>;
return (
<div className={styles.container}>
<time dateTime={props.date.toISOString()}>{date}</time>
{separator}
<span>{time}</span>
{!props.endDate || date == endDate ? (
// Single day event
<>
<time dateTime={props.startDate.toISOString()}>{date}</time>
{separator}
<span>{time}</span>
</>
) : (
// Multi day event
<span>
<time dateTime={props.startDate.toISOString()}>{date}</time>
<span> - </span>
<time dateTime={props.startDate.toISOString()}>{endDate}</time>
</span>
)}
{separator}
{location}
</div>

@ -1,6 +1,6 @@
.footer {
box-sizing: border-box;
background: var(--primary-heading);
background: var(--footer-background);
padding: 1rem 0;
width: 100%;
}
@ -17,7 +17,7 @@
}
.text {
color: var(--primary-background);
color: var(--text-light);
font-style: normal;
text-align: center;
}

@ -1,11 +1,15 @@
import Link from "next/link";
import React from "react";
import { Button } from "./Button";
import { SocialLinks } from "./SocialLinks";
import { useThemeContext } from "./Theme";
import styles from "./Footer.module.css";
export function Footer() {
const themeContext = useThemeContext();
return (
<footer className={styles.footer}>
<div className={styles.container}>
@ -15,6 +19,16 @@ export function Footer() {
<a className={styles.email}>exec@csclub.uwaterloo.ca</a>
</Link>
</div>
<Button
size="small"
onClick={() =>
themeContext?.theme.name === "dark"
? themeContext?.setTheme("light")
: themeContext?.setTheme("dark")
}
>
Toggle Theme
</Button>
<SocialLinks color="white" size="small" />
</div>
</footer>

@ -1,5 +1,5 @@
.link {
color: var(--primary-accent);
color: var(--link);
transition-duration: 0.3s;
text-decoration: none;
white-space: normal;
@ -7,5 +7,5 @@
}
.link:hover {
color: var(--secondary-accent);
color: var(--link-hover);
}

@ -2,10 +2,11 @@
box-sizing: border-box;
position: relative;
padding: calc(20rem / 16);
color: var(--text);
}
.card:nth-child(odd) {
background-color: var(--secondary-accent-light);
.darkBg {
background-color: var(--dark-card-background);
}
.name {
@ -14,6 +15,10 @@
margin: 0;
}
.name a {
color: var(--primary-heading);
}
.nameSpacer {
width: calc(140rem / 16);
}
@ -57,6 +62,17 @@
fill: var(--primary-accent);
}
.card h1,
.card h2,
.card h3,
.card h4 {
font-size: calc(18rem / 16);
margin-top: calc(24rem / 16);
margin-bottom: calc(8rem / 16);
color: var(--mini-event-card-text);
}
@media only screen and (max-width: calc(768rem / 16)) {
.details {
bottom: 0;

@ -1,36 +1,54 @@
import React, { ReactNode } from "react";
import { EventSetting } from "./EventSetting";
import { Link } from "./Link";
import styles from "./MiniEventCard.module.css";
interface Props {
interface MiniEventCardProps {
name: string;
description: ReactNode;
short: string;
online: boolean;
location: string;
date: Date;
startDate: Date;
endDate?: Date;
background: "dark-bg" | "normal-bg";
year: number;
term: string;
slug: string;
}
export const MiniEventCard: React.FC<Props> = ({
export const MiniEventCard: React.FC<MiniEventCardProps> = ({
name,
short,
description,
location,
date,
startDate,
endDate,
online,
background,
year,
term,
slug,
}) => {
const cardBackground =
background === "dark-bg" ? `${styles.darkBg} ${styles.card}` : styles.card;
return (
<details className={styles.card}>
<details className={cardBackground}>
<summary>
<div onClick={(event) => event.preventDefault()}>
<h2 className={styles.name}>
<div>{name}</div>
<Link href={`/events/${year}/${term}/${slug}`}>{name}</Link>
<div className={styles.nameSpacer}></div>
</h2>
<div className={styles.info}>
<EventSetting date={date} location={location} online={online} />
<EventSetting
startDate={startDate}
endDate={endDate}
location={location}
online={online}
/>
</div>
<p className={styles.shortDescription}>{short}</p>
</div>