Skip to content

Commit fa55e4c

Browse files
SamZhang0239bytes
andauthoredMar 16, 2025··
Add new logo (#636)
Co-authored-by: 39bytes <[email protected]>
1 parent 7c31d40 commit fa55e4c

24 files changed

+261
-100
lines changed
 

‎client/index.html

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
<html lang="en">
33
<head>
44
<meta charset="UTF-8" />
5+
<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
6+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
7+
<link rel="shortcut icon" href="/favicon.ico" />
58
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
6-
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
7-
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
9+
<meta name="apple-mobile-web-app-title" content="mcgill.courses" />
810
<link rel="manifest" href="/site.webmanifest" />
9-
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#e32323" />
1011
<meta name="msapplication-TileColor" content="#da532c" />
1112
<meta name="theme-color" content="#ffffff" />
1213
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
-5.32 KB
Binary file not shown.
-16.5 KB
Binary file not shown.

‎client/public/apple-touch-icon.png

-1.88 KB
Loading

‎client/public/browserconfig.xml

-9
This file was deleted.

‎client/public/favicon-16x16.png

-835 Bytes
Binary file not shown.

‎client/public/favicon-32x32.png

-1.21 KB
Binary file not shown.

‎client/public/favicon-96x96.png

1.82 KB
Loading

‎client/public/favicon.ico

0 Bytes
Binary file not shown.

‎client/public/favicon.svg

+60
Loading

‎client/public/mstile-150x150.png

-2.86 KB
Binary file not shown.

‎client/public/safari-pinned-tab.svg

-58
This file was deleted.

‎client/public/site.webmanifest

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
{
2-
"name": "",
3-
"short_name": "",
2+
"name": "mcgill.courses",
3+
"short_name": "Courses",
44
"icons": [
55
{
6-
"src": "/android-chrome-192x192.png",
6+
"src": "/web-app-manifest-192x192.png",
77
"sizes": "192x192",
8-
"type": "image/png"
8+
"type": "image/png",
9+
"purpose": "maskable"
910
},
1011
{
11-
"src": "/android-chrome-512x512.png",
12+
"src": "/web-app-manifest-512x512.png",
1213
"sizes": "512x512",
13-
"type": "image/png"
14+
"type": "image/png",
15+
"purpose": "maskable"
1416
}
1517
],
1618
"theme_color": "#ffffff",
3.16 KB
Loading
12.2 KB
Loading

‎client/src/assets/bird.png

-26.9 KB
Binary file not shown.

‎client/src/assets/logo_darkmode.svg

+59
Loading

‎client/src/assets/logo_lightmode.svg

+50
Loading
Loading

‎client/src/components/Logo.tsx

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import darkModeLogoUrl from '../assets/logo_darkmode.svg';
2+
import lightModeLogoUrl from '../assets/logo_lightmode.svg';
3+
import { useDarkMode } from '../hooks/useDarkMode';
4+
5+
type LogoProps = {
6+
darkMode?: boolean;
7+
size?: number;
8+
className?: string;
9+
altText?: string;
10+
};
11+
12+
export const Logo = ({
13+
size = 48,
14+
className = '',
15+
altText = 'mcgill.courses logo',
16+
}: LogoProps) => {
17+
const [darkMode] = useDarkMode();
18+
19+
return (
20+
<img
21+
className={className}
22+
src={darkMode ? darkModeLogoUrl : lightModeLogoUrl}
23+
alt={altText}
24+
style={{ height: size, width: 'auto' }}
25+
/>
26+
);
27+
};

‎client/src/components/Navbar.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { useEffect, useState } from 'react';
33
import { Link, useLocation } from 'react-router-dom';
44
import { toast } from 'sonner';
55

6-
import birdImageUrl from '../assets/bird.png';
76
import { useAuth } from '../hooks/useAuth';
87
import { env } from '../lib/constants';
98
import { repo } from '../lib/repo';
@@ -12,6 +11,7 @@ import type { Notification } from '../model/Notification';
1211
import type { SearchResults } from '../model/SearchResults';
1312
import { CourseSearchBar } from './CourseSearchBar';
1413
import { DarkModeToggle } from './DarkModeToggle';
14+
import { Logo } from './Logo';
1515
import { NotificationDropdown } from './NotificationDropdown';
1616
import { ProfileDropdown } from './ProfileDropdown';
1717
import { SideNav } from './SideNav';
@@ -73,8 +73,8 @@ export const Navbar = () => {
7373
aria-label='Global'
7474
>
7575
<div className='z-40 my-auto mr-auto flex min-w-[48px] lg:flex-1'>
76-
<Link to='/' className='-m-1.5 p-1.5'>
77-
<img className='h-12 w-auto' src={birdImageUrl} alt='bird' />
76+
<Link to='/'>
77+
<Logo className='pt-2' />
7878
</Link>
7979
</div>
8080
{pathName !== '/' ? (

‎client/src/components/SideNav.tsx

+2-7
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import ReactDOM from 'react-dom';
66
import { Link } from 'react-router-dom';
77
import { twMerge } from 'tailwind-merge';
88

9-
import birdImageUrl from '../assets/bird.png';
109
import { useAuth } from '../hooks/useAuth';
1110
import { useDarkMode } from '../hooks/useDarkMode';
1211
import { env } from '../lib/constants';
1312
import { DarkModeToggle } from './DarkModeToggle';
1413
import { navigationItems } from './Footer';
14+
import { Logo } from './Logo';
1515

1616
type OverlayProps = {
1717
children: React.ReactNode;
@@ -74,12 +74,7 @@ export const SideNav = ({ open, onClose }: SideNavProps) => {
7474
<div className='mt-1 flex items-center justify-between'>
7575
<div className='flex items-center'>
7676
<Link to='/'>
77-
<img
78-
className='h-8 w-auto'
79-
src={birdImageUrl}
80-
alt='bird'
81-
onClick={() => onClose(false)}
82-
/>
77+
<Logo size={32} />
8378
</Link>
8479
<div className='ml-6'>
8580
<DarkModeToggle />

‎client/src/pages/About.tsx

+38-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { FiMail } from 'react-icons/fi';
88
import { IoIosArrowDown } from 'react-icons/io';
99
import { Link } from 'react-router-dom';
1010

11+
import McGillDesignConsultancyLogoUrl from '../assets/mcgill_design_consultancy.png';
1112
import { Layout } from '../components/Layout';
1213
import { Paragraph } from '../components/Paragraph';
1314

@@ -165,7 +166,7 @@ const people = [
165166
{
166167
name: "Liam Scalzulli (CS '2025)",
167168
imageUrl:
168-
'https://media.licdn.com/dms/image/v2/D4E03AQGcvphemecHHw/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1718323978830?e=1741219200&v=beta&t=jo2_mDIk2QFvzLURprB2Cxck_Ez5Z2UfAsm7tBhUYnA',
169+
'https://media.licdn.com/dms/image/v2/D4E03AQGcvphemecHHw/profile-displayphoto-shrink_800_800/profile-displayphoto-shrink_800_800/0/1718302697434?e=1747872000&v=beta&t=7if0H3er0T-M5Ze-tNlTCwD540N2BwNW9hGkdnhvjIk',
169170
links: [
170171
{ title: 'Github', url: 'https://github.com/terror' },
171172
{ title: 'Linkedin', url: 'https://www.linkedin.com/in/liamscalzulli/' },
@@ -174,7 +175,7 @@ const people = [
174175
{
175176
name: "Jeff Zhang (Hons CS '2025)",
176177
imageUrl:
177-
'https://media.licdn.com/dms/image/v2/D4E03AQEiV-UNsvxZHg/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1712454391246?e=1741219200&v=beta&t=WAHy8QoDxR50pIZdkFRUBcEzsiWnClx-eFaFlVtsjLc',
178+
'https://media.licdn.com/dms/image/v2/D4E03AQEiV-UNsvxZHg/profile-displayphoto-shrink_800_800/profile-displayphoto-shrink_800_800/0/1712454391246?e=1747872000&v=beta&t=aorR1YBDIdAcJinY0oMl1x5h3B6tK-B4RymgovborWM',
178179
links: [
179180
{ title: 'Github', url: 'https://github.com/39bytes' },
180181
{ title: 'LinkedIn', url: 'https://www.linkedin.com/in/jeff-zhang72/' },
@@ -183,7 +184,7 @@ const people = [
183184
{
184185
name: "Sam Zhang (CS & Stats '2025)",
185186
imageUrl:
186-
'https://media.licdn.com/dms/image/v2/D5603AQGOMBYq2DtcxQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1696648321898?e=1741824000&v=beta&t=e0MAXmge5Reo4MFQGcg7BOdpJEPTII6TqnWPF3r5gkA',
187+
'https://media.licdn.com/dms/image/v2/D4E03AQG8t9QPiG5_QQ/profile-displayphoto-shrink_800_800/B4EZTuCUymG0Ac-/0/1739160375140?e=1747872000&v=beta&t=oK9_CrkWN2glRgzcaGYpEkpAlCCOWm-y-5b5GGAJPYw',
187188
links: [
188189
{ title: 'Github', url: 'https://github.com/samzhang02' },
189190
{ title: 'Linkedin', url: 'https://www.linkedin.com/in/zhang-sam/' },
@@ -192,7 +193,7 @@ const people = [
192193
{
193194
name: "Joey Yu (CS '2025)",
194195
imageUrl:
195-
'https://media.licdn.com/dms/image/v2/D4E03AQHQfxpD5h1Y2w/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1721320736053?e=1741824000&v=beta&t=2q77Ue28ab60dDeouczAXdLVWGYB9BYEni57nz65cms',
196+
'https://media.licdn.com/dms/image/v2/D4E03AQHQfxpD5h1Y2w/profile-displayphoto-shrink_800_800/profile-displayphoto-shrink_800_800/0/1721320736101?e=1747872000&v=beta&t=OCwxZW3XLHcY13eqkOt1BfgA0bN3cC4vSJ9ASeP761I',
196197
links: [{ title: 'Github', url: 'https://github.com/itsjoeoui' }],
197198
},
198199
];
@@ -303,6 +304,39 @@ export const About = () => {
303304
</Paragraph>
304305
</motion.div>
305306

307+
<motion.div variants={fadeInUp}>
308+
<Title>Contributors</Title>
309+
<motion.ul variants={fadeInUp} className='mt-8'>
310+
<div className='flex gap-4'>
311+
<a
312+
href='https://www.instagram.com/mcgilldesignconsultancy'
313+
className='m-auto size-fit flex-none'
314+
>
315+
<img src={McGillDesignConsultancyLogoUrl} className='size-16' />
316+
</a>
317+
<Paragraph>
318+
A heartfelt thank you to{' '}
319+
{/* Sebastian didn't provide a contact*/}
320+
<span className='underline'>Sebastien Chow</span> and{' '}
321+
<a
322+
className='underline'
323+
href='https://www.linkedin.com/in/guo-eugene/ '
324+
>
325+
Eugene Guo
326+
</a>{' '}
327+
from{' '}
328+
<a
329+
href='https://www.instagram.com/mcgilldesignconsultancy'
330+
className='underline'
331+
>
332+
McGill Design Consultancy
333+
</a>{' '}
334+
for their amazing work on our logo design.
335+
</Paragraph>
336+
</div>
337+
</motion.ul>
338+
</motion.div>
339+
306340
<motion.div variants={fadeInUp}>
307341
<Title>Frequently Asked Questions</Title>
308342
<Questions input={questions} />

‎crates/model/src/schedule.rs

+10-10
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ pub struct Block {
2323
impl Into<Bson> for Block {
2424
fn into(self) -> bson::Bson {
2525
Bson::Document(doc! {
26-
"campus": self.campus.map(String::from),
27-
"display": self.display.map(String::from),
28-
"location": self.location.map(String::from),
29-
"timeblocks": self.timeblocks.map(Vec::from),
30-
"crn": self.crn.map(String::from),
26+
"campus": self.campus,
27+
"display": self.display,
28+
"location": self.location,
29+
"timeblocks": self.timeblocks,
30+
"crn": self.crn,
3131
})
3232
}
3333
}
@@ -53,9 +53,9 @@ pub struct TimeBlock {
5353
impl Into<Bson> for TimeBlock {
5454
fn into(self) -> bson::Bson {
5555
Bson::Document(doc! {
56-
"day": self.day.map(String::from),
57-
"t1": self.t1.map(String::from),
58-
"t2": self.t2.map(String::from),
56+
"day": self.day,
57+
"t1": self.t1,
58+
"t2": self.t2,
5959
})
6060
}
6161
}
@@ -80,8 +80,8 @@ pub struct Schedule {
8080
impl Into<Bson> for Schedule {
8181
fn into(self) -> bson::Bson {
8282
Bson::Document(doc! {
83-
"blocks": self.blocks.map(Vec::from),
84-
"term": self.term.map(String::from),
83+
"blocks": self.blocks,
84+
"term": self.term,
8585
})
8686
}
8787
}

0 commit comments

Comments
 (0)
Please sign in to comment.