Skip to content

Commit 6ed885d

Browse files
committed
feat(colors): add offset colors to cards and buttons for both themes
1 parent 423bdbf commit 6ed885d

21 files changed

+74
-56
lines changed

common/utils/chart.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ const baseProps = {
2626
domainPadding: 25,
2727
style: {
2828
parent: {
29-
border: '1px solid var(--middle-gray)',
29+
border: '1px solid var(--background-color-offset)',
3030
background: 'var(--background-color)',
3131
},
3232
},

components/Alert/alert.module.scss

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
.alert {
2222
padding: var(--spacing-4);
2323
background-color: var(--muted);
24-
color: var(--text-dark);
24+
color: var(--black-text);
2525
border-left: solid var(--spacing-1) var(--main);
2626
border-radius: var(--spacing-1);
2727
}

components/Card/OutlinedCard.tsx components/Card/BasicCard.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import React, { forwardRef, HTMLProps } from 'react';
22
import cx from 'classnames';
33

4-
import styles from './outlined-card.module.scss';
4+
import styles from './basic-card.module.scss';
55

66
type ElementProps = HTMLProps<HTMLElement>;
77

88
type Props = ElementProps & {
99
as?: string;
1010
};
1111

12-
export const OutlinedCard = forwardRef<HTMLElement, Props>(
12+
export const BasicCard = forwardRef<HTMLElement, Props>(
1313
({ className, as: Element = 'div', children, ...rest }, ref) => {
1414
// just a hack to not trip of typescript with the props of the `as` element.
1515
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -22,4 +22,4 @@ export const OutlinedCard = forwardRef<HTMLElement, Props>(
2222
}
2323
);
2424

25-
OutlinedCard.displayName = 'OutlinedCard';
25+
BasicCard.displayName = 'BasicCard';

components/Card/LinkCard.tsx

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import React, { forwardRef, HTMLProps } from 'react';
2+
import cx from 'classnames';
3+
4+
import styles from './link-card.module.scss';
5+
6+
type Props = HTMLProps<HTMLAnchorElement>;
7+
8+
export const LinkCard = forwardRef<HTMLAnchorElement, Props>(({ className, children, ...props }, ref) => {
9+
return (
10+
<a ref={ref} className={cx(className, styles.card)} {...props}>
11+
{children}
12+
</a>
13+
);
14+
});
15+
16+
LinkCard.displayName = 'LinkCard';
+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.card {
2+
padding: var(--spacing-2);
3+
border-radius: var(--spacing-1);
4+
background-color: var(--background-color-offset);
5+
}

components/Card/outlined-card.module.scss components/Card/link-card.module.scss

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
padding: var(--spacing-2);
1313

1414
border-radius: var(--spacing-1);
15-
border: solid 1px var(--middle-gray);
15+
border: solid 1px var(--background-color-offset);
16+
background-color: var(--background-color-offset);
1617

1718
&:hover {
1819
border: solid 1px var(--text-color);

components/CourseCharts/AverageChart.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export const AverageChartComponent: FC<Props> = ({ grades }) => {
3131
}}
3232
style={{
3333
parent: {
34-
border: '1px solid var(--middle-gray)',
34+
border: '1px solid var(--background-color-offset)',
3535
background: 'var(--background-color)',
3636
},
3737
}}

components/CourseCharts/FailedChart.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export const FailedChartComponent: FC<Props> = ({ grades }) => {
3131
}}
3232
style={{
3333
parent: {
34-
border: '1px solid var(--middle-gray)',
34+
border: '1px solid var(--background-color-offset)',
3535
background: 'var(--background-color)',
3636
},
3737
}}

components/CourseCharts/GradedGraph.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export const GradedGraphComponent: FC<Props> = ({ grade }) => {
2121
}}
2222
style={{
2323
parent: {
24-
border: '1px solid var(--middle-gray)',
24+
border: '1px solid var(--background-color-offset)',
2525
background: 'var(--background-color)',
2626
},
2727
}}

components/CourseCharts/UngradedGraph.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export const UngradedGraphComponent: FC<Props> = ({ grade }) => {
2121
}}
2222
style={{
2323
parent: {
24-
border: '1px solid var(--middle-gray)',
24+
border: '1px solid var(--background-color-offset)',
2525
background: 'var(--background-color)',
2626
},
2727
}}

components/Facts/index.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { Stat } from '../Stat/Stat';
66

77
import s from './facts.module.scss';
88
import { Course } from 'models/Course';
9+
import { BasicCard } from 'components/Card/BasicCard';
910

1011
interface Props {
1112
course: Course;
@@ -18,15 +19,15 @@ export const Facts: FC<Props> = ({ course }) => {
1819
<Heading className={s.heading} as="h2">
1920
Om emnet
2021
</Heading>
21-
<dl className={s.facts}>
22+
<BasicCard as="dl" className={s.facts}>
2223
<Stat label="Studiepoeng" value={String(course.credit)} />
2324
<Stat label="Nivå" value={course.course_level} />
2425
<Stat label="Undervisningsspråk" value={course.taught_in_english ? 'Engelsk' : 'Norsk'} />
2526
<Stat
2627
label={semesters.length === 1 ? 'Semester' : 'Semestere'}
2728
value={semesters.length ? semesters.join(` og `) : 'Ingen'}
2829
/>
29-
</dl>
30+
</BasicCard>
3031
</div>
3132
);
3233
};

components/GradeAverages/GradeAverages.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
calculatePassingRate,
1313
calculateAveragePassingRate,
1414
} from 'common/utils/grades';
15+
import { BasicCard } from 'components/Card/BasicCard';
1516

1617
interface Props {
1718
selectedGrade: Grade;
@@ -30,7 +31,7 @@ export const GradeAverages: FC<Props> = ({ selectedGrade, allGrades, rollingYear
3031
<Heading className={s.heading} as="h2">
3132
Karakterer
3233
</Heading>
33-
<dl className={s.stats}>
34+
<BasicCard as="dl" className={s.stats}>
3435
{isSelectedGradeGraded ? (
3536
<GradedStat
3637
label={`${selectedGrade.year} ${selectedGrade.semester_display}`}
@@ -60,7 +61,7 @@ export const GradeAverages: FC<Props> = ({ selectedGrade, allGrades, rollingYear
6061
) : (
6162
<UngradedStat label="Alle år" percentage={calculateAveragePassingRate(allGrades)} mode="passing" />
6263
)}
63-
</dl>
64+
</BasicCard>
6465
</div>
6566
);
6667
};

components/common/button.module.scss

+6-1
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,13 @@
99
.buttonVariant {
1010
padding: var(--spacing-2);
1111
border-radius: var(--spacing-1);
12-
border: solid 1px var(--text-color);
12+
border: solid 1px var(--background-color-offset);
13+
background-color: var(--background-color-offset);
1314
margin-top: var(--spacing-1);
15+
16+
&:hover {
17+
border: solid 1px var(--text-color);
18+
}
1419
}
1520

1621
.linkVariant {

components/forms/scrolly.module.scss

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
&::-webkit-scrollbar {
77
display: none;
88
}
9+
padding-bottom: 2px; // Let overflowing focus display at the bottom
910
}
1011

1112
.scrollInner {
@@ -16,4 +17,5 @@
1617
.scrollButton {
1718
width: 100px;
1819
text-align: center;
20+
height: 45px; // Height of the select field
1921
}

package-lock.json

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pages/global.scss

+14-9
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@
3030
--font-size-xs: 14px;
3131
}
3232

33-
--text-dark: #1a202c;
34-
--text-light: #ffffff;
33+
--black-base: #141821;
34+
--black-base-offset: #272d3b;
35+
--white-base: #ffffff;
36+
--white-offset: #e5e9f1;
37+
--black-text: #1a202c;
3538

3639
--blue: #08b2e3;
3740
--blue-muted: #98dff3;
@@ -44,7 +47,6 @@
4447
--yellow-muted: #ffe8b9;
4548
--dark-gray: #484d6d;
4649
--very-dark-gray: #1a202c;
47-
--middle-gray: #888888;
4850
--feide-blue: #1f4698;
4951

5052
--test-yellow: #ffc857;
@@ -72,18 +74,21 @@
7274
--grade-not-passed-old: #cc0000;
7375

7476
@media (prefers-color-scheme: dark) {
75-
--text-color: var(--text-light);
76-
--background-color: var(--text-dark);
77+
--text-color: var(--white-base);
78+
--background-color: var(--black-base);
79+
--background-color-offset: var(--black-base-offset);
7780
}
7881

7982
@media (prefers-color-scheme: light) {
80-
--background-color: var(--text-light);
81-
--text-color: var(--text-dark);
83+
--background-color: var(--white-base);
84+
--text-color: var(--black-text);
85+
--background-color-offset: var(--white-offset);
8286
}
8387

8488
[data-reach-dialog-content] {
85-
--background-color: var(--text-light);
86-
--text-color: var(--text-dark);
89+
--background-color: var(--white-base);
90+
--text-color: var(--black-text);
91+
--background-color-offset: var(--white-offset);
8792
}
8893
}
8994

views/AboutView/ContributorCard.tsx

+3-9
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import cx from 'classnames';
44
import { GithubUser } from 'common/api/github/repo';
55
import { Heading } from 'components/Typography/Heading';
66
import { Text } from 'components/Typography/Text';
7-
import { OutlinedCard } from 'components/Card/OutlinedCard';
7+
import { LinkCard } from 'components/Card/LinkCard';
88

99
import styles from './constributor-card.module.scss';
1010

@@ -15,13 +15,7 @@ interface Props {
1515

1616
export const ContributorCard: FC<Props> = ({ className, user }) => {
1717
return (
18-
<OutlinedCard
19-
as="a"
20-
className={cx(styles.card, className)}
21-
href={user.url}
22-
target="_blank"
23-
rel="noopener noreferrer"
24-
>
18+
<LinkCard className={cx(styles.card, className)} href={user.url} target="_blank" rel="noopener noreferrer">
2519
<div className={styles.imageContainer}>
2620
<Image
2721
className={styles.image}
@@ -35,6 +29,6 @@ export const ContributorCard: FC<Props> = ({ className, user }) => {
3529
{user.name ?? user.username}
3630
</Heading>
3731
{user.name ? <Text className={styles.username}>{user.username}</Text> : null}
38-
</OutlinedCard>
32+
</LinkCard>
3933
);
4034
};

views/AboutView/OrgCard.tsx

+3-9
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import cx from 'classnames';
44
import { GithubOrg } from 'common/api/github/repo';
55
import { Heading } from 'components/Typography/Heading';
66
import { Text } from 'components/Typography/Text';
7-
import { OutlinedCard } from 'components/Card/OutlinedCard';
7+
import { LinkCard } from 'components/Card/LinkCard';
88

99
import styles from './org-card.module.scss';
1010

@@ -15,13 +15,7 @@ interface Props {
1515

1616
export const OrgCard: FC<Props> = ({ org, className }) => {
1717
return (
18-
<OutlinedCard
19-
as="a"
20-
className={cx(styles.card, className)}
21-
href={org.url}
22-
target="_blank"
23-
rel="noopener noreferrer"
24-
>
18+
<LinkCard className={cx(styles.card, className)} href={org.url} target="_blank" rel="noopener noreferrer">
2519
<div className={styles.imageContainer}>
2620
<Image className={styles.image} src={org.avatarUrl} alt={`${org.name} logo`} width={100} height={100} />
2721
</div>
@@ -34,6 +28,6 @@ export const OrgCard: FC<Props> = ({ org, className }) => {
3428
<Text>{org.publicReposCount}</Text>
3529
</div>
3630
<Text className={styles.description}>{org.description}</Text>
37-
</OutlinedCard>
31+
</LinkCard>
3832
);
3933
};

views/AboutView/RepoCard.tsx

+3-9
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import styles from './repo-card.module.scss';
66
import { Heading } from 'components/Typography/Heading';
77
import { Text } from 'components/Typography/Text';
88
import { formatDateString } from 'common/utils/date';
9-
import { OutlinedCard } from 'components/Card/OutlinedCard';
9+
import { LinkCard } from 'components/Card/LinkCard';
1010

1111
interface Props {
1212
className?: string;
@@ -15,19 +15,13 @@ interface Props {
1515

1616
export const RepoCard: FC<Props> = ({ className, repo }) => {
1717
return (
18-
<OutlinedCard
19-
as="a"
20-
className={cx(styles.card, className)}
21-
href={repo.url}
22-
target="_blank"
23-
rel="noopener noreferrer"
24-
>
18+
<LinkCard className={cx(styles.card, className)} href={repo.url} target="_blank" rel="noopener noreferrer">
2519
<Heading as="p" size="h5">
2620
{repo.name}
2721
</Heading>
2822
{repo.description ? <Text>{repo.description}</Text> : null}
2923
<Text>Språk: {repo.language}</Text>
3024
<Text>Oppdatert: {formatDateString(repo.updatedAt)}</Text>
31-
</OutlinedCard>
25+
</LinkCard>
3226
);
3327
};

views/FrontPageView/CourseCard.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { Text } from 'components/Typography/Text';
1111
import cx from 'classnames';
1212

1313
import styles from './course-card.module.scss';
14-
import { OutlinedCard } from 'components/Card/OutlinedCard';
14+
import { LinkCard } from 'components/Card/LinkCard';
1515
import { Grade } from 'models/Grade';
1616
import { formatPercentage } from 'common/utils/math';
1717

@@ -43,15 +43,15 @@ export const CourseCard: FC<Props> = ({ className, code, name, grades }) => {
4343
const gradeLetter = averageGrade ? mapGradeAverageToLetter(averageGrade) : undefined;
4444
return (
4545
<Link href="/course/[courseCode]" as={`/course/${code}`}>
46-
<OutlinedCard as="a" className={cx(className, styles.card)}>
46+
<LinkCard className={cx(className, styles.card)}>
4747
<Heading className={styles.code} as="h3">
4848
{code}
4949
</Heading>
5050
<Text className={styles.text}>{name}</Text>
5151
<Text className={cx(styles.grade, GRADE_COLORS[gradeLetter ?? 'PASSED'])}>
5252
{showGradeLetter ? gradeLetter || '-' : averageGrade ? formatPercentage(averageGrade) : '-'}
5353
</Text>
54-
</OutlinedCard>
54+
</LinkCard>
5555
</Link>
5656
);
5757
};

views/FrontPageView/front-page-view.module.scss

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
.featuredCourses {
2525
display: grid;
2626
grid-template-columns: 1fr;
27-
gap: var(--spacing-2);
27+
gap: var(--spacing-3);
2828
margin-top: var(--spacing-4);
2929

3030
@media screen and (min-width: 480px) {

0 commit comments

Comments
 (0)