aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2024-03-17 19:47:53 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2024-03-17 20:15:57 +0100
commit219c362b21608a9bb763ee310b1125a50aa1a312 (patch)
tree813a39325b8192b48d8ece1598ca38a04cb141ce
parentFix research topic spacing on mobile (diff)
downloadblog-219c362b21608a9bb763ee310b1125a50aa1a312.tar.gz
blog-219c362b21608a9bb763ee310b1125a50aa1a312.tar.zst
blog-219c362b21608a9bb763ee310b1125a50aa1a312.zip
Add contacts section
Also enables responsive image optimization
-rw-r--r--docusaurus.config.ts5
-rw-r--r--package.json2
-rw-r--r--src/components/icons.tsx6
-rw-r--r--src/components/landing/sections/Contact.module.css175
-rw-r--r--src/components/landing/sections/Contact.tsx218
-rw-r--r--src/components/landing/sections/Hero.module.css2
-rw-r--r--src/components/landing/sections/Hero.tsx13
-rw-r--r--src/components/landing/sections/Research.tsx2
-rw-r--r--src/components/landing/sections/Software.module.css5
-rw-r--r--src/components/landing/sections/Software.tsx15
-rw-r--r--src/css/custom.css6
-rw-r--r--src/pages/bme-building-i-cropped.jpgbin0 -> 30231 bytes
-rw-r--r--src/pages/bme-building-i-cropped.jpg.license6
-rw-r--r--src/pages/index.tsx10
-rw-r--r--src/pages/license.mdx3
-rw-r--r--src/plugins/responsiveLoaderPlugin.ts39
-rw-r--r--src/types.d.ts25
m---------third-party0
-rw-r--r--yarn.lock404
19 files changed, 887 insertions, 49 deletions
diff --git a/docusaurus.config.ts b/docusaurus.config.ts
index a6b8903..85a07aa 100644
--- a/docusaurus.config.ts
+++ b/docusaurus.config.ts
@@ -25,6 +25,7 @@ export default {
25 ], 25 ],
26 '@docusaurus/plugin-sitemap', 26 '@docusaurus/plugin-sitemap',
27 './src/plugins/swcMinifyPlugin.ts', 27 './src/plugins/swcMinifyPlugin.ts',
28 './src/plugins/responsiveLoaderPlugin.ts',
28 './src/plugins/thirdPartyContentPlugin.ts', 29 './src/plugins/thirdPartyContentPlugin.ts',
29 ], 30 ],
30 themes: [ 31 themes: [
@@ -58,10 +59,6 @@ export default {
58 to: '/#publications', 59 to: '/#publications',
59 }, 60 },
60 { 61 {
61 label: 'Software',
62 to: '/#software',
63 },
64 {
65 label: 'Resume', 62 label: 'Resume',
66 to: '/#resume', 63 to: '/#resume',
67 }, 64 },
diff --git a/package.json b/package.json
index 5421f8e..06c9ca3 100644
--- a/package.json
+++ b/package.json
@@ -54,6 +54,8 @@
54 "@types/node": "^20.11.28", 54 "@types/node": "^20.11.28",
55 "@types/react": "^18.2.66", 55 "@types/react": "^18.2.66",
56 "prettier": "^3.2.5", 56 "prettier": "^3.2.5",
57 "responsive-loader": "^3.1.2",
58 "sharp": "^0.33.2",
57 "typescript": "^5.4.2" 59 "typescript": "^5.4.2"
58 } 60 }
59} 61}
diff --git a/src/components/icons.tsx b/src/components/icons.tsx
index 1411218..57fc10c 100644
--- a/src/components/icons.tsx
+++ b/src/components/icons.tsx
@@ -9,8 +9,10 @@ import {
9 siCreativecommons, 9 siCreativecommons,
10 siDblp, 10 siDblp,
11 siGithub, 11 siGithub,
12 siGnuprivacyguard,
12 siGooglescholar, 13 siGooglescholar,
13 siLinkedin, 14 siLinkedin,
15 siMicrosoftteams,
14 siOrcid, 16 siOrcid,
15 siScopus, 17 siScopus,
16} from 'simple-icons'; 18} from 'simple-icons';
@@ -83,6 +85,8 @@ export const FediverseIcon = makeSimpleIcon(fediverse);
83 85
84export const GithubIcon = makeSimpleIcon(siGithub); 86export const GithubIcon = makeSimpleIcon(siGithub);
85 87
88export const GPGIcon = makeSimpleIcon(siGnuprivacyguard);
89
86export const GoogleScholarIcon = makeSimpleIcon(siGooglescholar); 90export const GoogleScholarIcon = makeSimpleIcon(siGooglescholar);
87 91
88export const LinkedInIcon = makeSimpleIcon(siLinkedin); 92export const LinkedInIcon = makeSimpleIcon(siLinkedin);
@@ -92,3 +96,5 @@ export const MTMTIcon = makeSimpleIcon(mtmt);
92export const OrcidIcon = makeSimpleIcon(siOrcid); 96export const OrcidIcon = makeSimpleIcon(siOrcid);
93 97
94export const ScopusIcon = makeSimpleIcon(siScopus); 98export const ScopusIcon = makeSimpleIcon(siScopus);
99
100export const TeamsIcon = makeSimpleIcon(siMicrosoftteams);
diff --git a/src/components/landing/sections/Contact.module.css b/src/components/landing/sections/Contact.module.css
new file mode 100644
index 0000000..15ed2a6
--- /dev/null
+++ b/src/components/landing/sections/Contact.module.css
@@ -0,0 +1,175 @@
1/*
2 * SPDX-FileCopyrightText: 2024 Kristóf Marussy
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7.contacts {
8 margin-top: 1.5rem;
9 margin-bottom: 2rem;
10}
11
12.col {
13 margin-bottom: 1.5rem;
14}
15
16.contact {
17 position: relative;
18 display: flex;
19 height: 100%;
20 flex-direction: row;
21 align-items: center;
22 --marussy-contact-color: var(--ifm-font-color-base);
23 --marussy-contact-icon-color: var(--marussy-contact-color);
24 --marussy-contact-icon-hover-color: var(--ifm-link-hover-color);
25 --marussy-contact-muted-color: var(--ifm-color-secondary-contrast-foreground);
26 --marussy-contact-muted-color-or-hover: var(--marussy-contact-muted-color);
27 --marussy-alternate-icon: 0;
28 color: var(--marussy-contact-color);
29 transition: color var(--ifm-transition-fast)
30 var(--ifm-transition-timing-default);
31}
32
33[data-theme='dark'] .contact {
34 --marussy-contact-muted-color: var(--ifm-color-emphasis-500);
35 --marussy-contact-icon-hover-color: var(--ifm-color-primary-light);
36}
37
38.contact:not(:has(.contact__action:hover)):hover,
39.contact:focus-within:not(:has(.contact__action:focus)) {
40 --marussy-contact-color: var(--ifm-link-hover-color);
41 --marussy-contact-icon-color: var(--marussy-contact-icon-hover-color);
42 --marussy-contact-muted-color-or-hover: var(--ifm-link-hover-color);
43}
44
45.contact:has(.contact__action--alternate:hover),
46.contact:has(.contact__action--alternate:focus) {
47 --marussy-alternate-icon: 1;
48}
49
50.contact__icon-holder {
51 position: relative;
52 display: flex;
53 padding: 1rem;
54 margin-right: 1rem;
55 background: var(--ifm-color-emphasis-200);
56 border-radius: 50em;
57 align-items: center;
58 justify-content: center;
59 color: var(--marussy-contact-icon-color);
60}
61
62.contact__icon-holder--fediverse {
63 padding: 0.75rem;
64}
65
66.contact__icon {
67 width: 2.5rem;
68 height: 2.5rem;
69 opacity: calc(1 - var(--marussy-alternate-icon));
70 transition:
71 color var(--ifm-transition-fast) var(--ifm-transition-timing-default),
72 opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default);
73}
74
75.contact__icon--fediverse {
76 width: 3rem;
77 height: 3rem;
78 margin: -0.0625rem -0.0625rem 0.0625rem 0.0625rem;
79}
80
81.contact__icon--alternate {
82 position: absolute;
83 top: 1rem;
84 left: 1rem;
85 color: var(--marussy-contact-icon-hover-color);
86 opacity: var(--marussy-alternate-icon);
87}
88
89.contact__content {
90 dispaly: flex;
91 flex-direction: row;
92}
93
94.contact__title {
95 margin: 0;
96 --casl: 0;
97}
98
99.contact__value {
100 margin: 0;
101}
102
103.contact__description {
104 margin: 0;
105 --slnt: -15;
106 --crsv: 1;
107 font-size: 0.875rem;
108 --marussy-contact-color: var(--marussy-contact-muted-color-or-hover);
109 color: var(--marussy-contact-muted-color-or-hover);
110 transition: color var(--ifm-transition-fast)
111 var(--ifm-transition-timing-default);
112}
113
114.contact__link {
115 --ifm-link-color: var(--marussy-contact-color);
116}
117
118.contact__link::after {
119 content: ' ';
120 position: absolute;
121 top: 0;
122 right: 0;
123 bottom: 0;
124 left: 0;
125}
126
127.contact__action {
128 position: relative;
129 --ifm-link-color: var(--marussy-contact-muted-color);
130}
131
132.contact__action:focus {
133 --ifm-link-color: var(--ifm-link-hover-color);
134}
135
136.small {
137 display: inline-block;
138 position: relative;
139 max-height: 0;
140 width: 1.5rem;
141 overflow: visible;
142 vertical-align: text-bottom;
143}
144
145.small__link {
146 display: flex;
147 position: absolute;
148 bottom: 0;
149}
150
151.small__icon {
152 height: 1.5rem;
153 width: 1.5rem;
154}
155
156.photo__container {
157 position: relative;
158 border-radius: var(--ifm-card-border-radius);
159 overflow: hidden;
160 aspect-ratio: 1288/480;
161 min-height: 15rem;
162 max-width: 100%;
163 background-size: cover;
164 background-position: 25% center;
165}
166
167.photo {
168 position: absolute;
169 top: 0;
170 left: 0;
171 width: 100%;
172 height: 100%;
173 object-fit: cover;
174 object-position: 25% center;
175}
diff --git a/src/components/landing/sections/Contact.tsx b/src/components/landing/sections/Contact.tsx
new file mode 100644
index 0000000..01279a9
--- /dev/null
+++ b/src/components/landing/sections/Contact.tsx
@@ -0,0 +1,218 @@
1/*
2 * SPDX-FileCopyrightText: 2024 Kristóf Marussy
3 *
4 * SPDX-License-Identifier: MIT AND CC-BY-4.0
5 *
6 * Code in this file is MIT licensed, while content is CC-BY-4.0 licensed.
7 */
8
9import Link from '@docusaurus/Link';
10import {
11 EnvelopeSimple,
12 HandWaving,
13 MapPin,
14 Phone,
15} from '@phosphor-icons/react';
16import clsx from 'clsx';
17
18import Section from '@site/src/components/landing/Section';
19import { FediverseIcon, GPGIcon, TeamsIcon } from '@site/src/components/icons';
20import photo from '@site/src/pages/bme-building-i-cropped.jpg?placeholder=true&sizes[]=644&sizes[]=1288&sizes[]=2576&rl';
21
22import styles from './Contact.module.css';
23
24export default function Contact() {
25 return (
26 <Section id="contact" title="Contact">
27 <div className={clsx('container', styles.contacts)}>
28 <div className="row">
29 <div className={clsx('col', 'col--4', styles.col)}>
30 <div className={styles.contact}>
31 <div className={styles['contact__icon-holder']}>
32 <EnvelopeSimple
33 aria-hidden="true"
34 className={styles.contact__icon}
35 />
36 </div>
37 <div className={styles.contact__content}>
38 <h3 className={styles.contact__title}>Work e-mail</h3>
39 <p className={styles.contact__value}>
40 <Link
41 to="mailto:marussy@mit.bme.hu"
42 className={styles.contact__link}
43 >
44 marussy@mit.bme.hu
45 </Link>{' '}
46 <span className={styles.small}>
47 <Link
48 to="https://keyoxide.org/96C12D444D19ED5C41BA8B14C30B3B1A31ACCD46"
49 className={clsx(
50 styles.contact__action,
51 styles.small__link,
52 )}
53 >
54 <GPGIcon alt="GPG key" className={styles.small__icon} />
55 </Link>
56 </span>
57 </p>
58 <p className={styles.contact__description}>
59 For research and professional inquiries
60 </p>
61 </div>
62 </div>
63 </div>
64 <div className={clsx('col', 'col--4', styles.col)}>
65 <div className={styles.contact}>
66 <div className={styles['contact__icon-holder']}>
67 <TeamsIcon hidden className={styles.contact__icon} />
68 <Phone
69 aria-hidden="true"
70 className={clsx(
71 styles.contact__icon,
72 styles['contact__icon--alternate'],
73 )}
74 />
75 </div>
76 <div className={styles.contact__content}>
77 <h3 className={styles.contact__title}>Call or chat with me</h3>
78 <p className={styles.contact__value}>
79 <Link
80 to="https://teams.microsoft.com/l/chat/0/0?users=marussy.kristof@bme.hu"
81 className={styles.contact__link}
82 >
83 <span className="sr-only">Microsoft Teams: </span>
84 marussy.kristof@bme.hu
85 </Link>
86 </p>
87 <p className={styles.contact__description}>
88 <Link
89 to="tel:+3614633586"
90 className={clsx(
91 styles.contact__action,
92 styles['contact__action--alternate'],
93 )}
94 >
95 Or use landline: +36 1 463-3586
96 </Link>
97 </p>
98 </div>
99 </div>
100 </div>
101 <div className={clsx('col', 'col--4', styles.col)}>
102 <div className={styles.contact}>
103 <div className={styles['contact__icon-holder']}>
104 <MapPin aria-hidden="true" className={styles.contact__icon} />
105 </div>
106 <div className={styles.contact__content}>
107 <h3 className={styles.contact__title}>Office</h3>
108 <p className={styles.contact__value}>
109 <Link
110 to="https://www.openstreetmap.org/way/24726476#map=19/47.47263/19.06006"
111 className={styles.contact__link}
112 >
113 H-1117 Budapest, Magyar tudósok körútja 2., Building I, Room
114 B.417
115 </Link>
116 </p>
117 </div>
118 </div>
119 </div>
120 </div>
121 <div className="row">
122 <div className={clsx('col', 'col--12', styles.col)}>
123 <div
124 className={styles.photo__container}
125 style={{ backgroundImage: `url("${photo.placeholder}")` }}
126 >
127 <img
128 src={photo.src}
129 srcSet={photo.srcSet}
130 width={photo.width}
131 height={photo.height}
132 sizes="(min-width: 1384px) 1288px, (min-width: 996px) calc(100vw - 96px), (min-width: 676px) calc(100vw - 32px), 644px"
133 loading="lazy"
134 alt=""
135 className={styles.photo}
136 />
137 </div>
138 </div>
139 </div>
140 <div className="row">
141 <div className={clsx('col', 'col--6', styles.col)}>
142 <div className={styles.contact}>
143 <div className={styles['contact__icon-holder']}>
144 <HandWaving
145 aria-hidden="true"
146 className={styles.contact__icon}
147 />
148 </div>
149 <div className={styles.contact__content}>
150 <h3 className={styles.contact__title}>Personal e-mail</h3>
151 <p className={styles.contact__value}>
152 <Link
153 to="mailto:kristof@marussy.com"
154 className={styles.contact__link}
155 >
156 kristof@marussy.com
157 </Link>{' '}
158 <span className={styles.small}>
159 <Link
160 to="https://keyoxide.org/7AADE6E800F1979D2A13EEBBB00C29F3D5A628AF"
161 className={clsx(
162 styles.contact__action,
163 styles.small__link,
164 )}
165 >
166 <GPGIcon alt="GPG key" className={styles.small__icon} />
167 </Link>
168 </span>
169 </p>
170 <p className={styles.contact__description}>
171 For messages about my projects, this website, or anything else
172 </p>
173 </div>
174 </div>
175 </div>
176 <div className={clsx('col', 'col--6', styles.col)}>
177 <div className={styles.contact}>
178 <div
179 className={clsx(
180 styles['contact__icon-holder'],
181 styles['contact__icon-holder--fediverse'],
182 )}
183 >
184 <FediverseIcon
185 className={clsx(
186 styles.contact__icon,
187 styles['contact__icon--fediverse'],
188 )}
189 />
190 </div>
191 <div className={styles.contact__content}>
192 <h3 className={styles.contact__title}>Follow me</h3>
193 <p className={styles.contact__value}>
194 <Link
195 to="https://pleroma.marussy.com/users/kristof"
196 className={styles.contact__link}
197 >
198 @kristof@marussy.com
199 </Link>
200 </p>
201 <p className={styles.contact__description}>
202 On the{' '}
203 <Link
204 to="https://fediverse.info"
205 className={styles.contact__action}
206 >
207 Fediverse
208 </Link>
209 , a diverse community of interconnected platforms
210 </p>
211 </div>
212 </div>
213 </div>
214 </div>
215 </div>
216 </Section>
217 );
218}
diff --git a/src/components/landing/sections/Hero.module.css b/src/components/landing/sections/Hero.module.css
index ce0444f..0909c3f 100644
--- a/src/components/landing/sections/Hero.module.css
+++ b/src/components/landing/sections/Hero.module.css
@@ -37,6 +37,7 @@
37 37
38.avatar__image { 38.avatar__image {
39 width: 100%; 39 width: 100%;
40 height: auto;
40 max-width: 298px; 41 max-width: 298px;
41 border-radius: 100em; 42 border-radius: 100em;
42} 43}
@@ -48,7 +49,6 @@
48 font-size: 1.5rem; 49 font-size: 1.5rem;
49} 50}
50 51
51
52.introduction__name { 52.introduction__name {
53 font-family: var(--ifm-heading-font-family); 53 font-family: var(--ifm-heading-font-family);
54 font-weight: var(--ifm-heading-font-weight); 54 font-weight: var(--ifm-heading-font-weight);
diff --git a/src/components/landing/sections/Hero.tsx b/src/components/landing/sections/Hero.tsx
index 2773b9b..ee11048 100644
--- a/src/components/landing/sections/Hero.tsx
+++ b/src/components/landing/sections/Hero.tsx
@@ -16,10 +16,11 @@ import {
16 LinkedInIcon, 16 LinkedInIcon,
17 OrcidIcon, 17 OrcidIcon,
18} from '@site/src/components/icons'; 18} from '@site/src/components/icons';
19import avatar from '@site/src/pages/avatar.jpg?sizes[]=149&sizes[]=298&sizes[]=596&rl';
19 20
20import styles from './Hero.module.css'; 21import styles from './Hero.module.css';
21 22
22export default function Hero({ avatar }: { avatar: string }) { 23export default function Hero() {
23 return ( 24 return (
24 <header className={clsx('hero', 'hero--dark', styles.hero)}> 25 <header className={clsx('hero', 'hero--dark', styles.hero)}>
25 <div className="container"> 26 <div className="container">
@@ -27,7 +28,15 @@ export default function Hero({ avatar }: { avatar: string }) {
27 <div 28 <div
28 className={clsx('col', 'col--3', styles.hero__col, styles.avatar)} 29 className={clsx('col', 'col--3', styles.hero__col, styles.avatar)}
29 > 30 >
30 <img src={avatar} alt="My photo" className={styles.avatar__image} /> 31 <img
32 src={avatar.src}
33 srcSet={avatar.srcSet}
34 width={avatar.width}
35 height={avatar.height}
36 sizes="(min-width: 1384px) 298px, (min-width: 996px) calc(25vw - 48px), (min-width: 300px) 298px, calc(100vw - 32px)"
37 alt="My photo"
38 className={styles.avatar__image}
39 />
31 </div> 40 </div>
32 <div className={clsx('col', 'col--9', styles.hero__col)}> 41 <div className={clsx('col', 'col--9', styles.hero__col)}>
33 <h1 className={clsx('hero__title', styles.introduction)}> 42 <h1 className={clsx('hero__title', styles.introduction)}>
diff --git a/src/components/landing/sections/Research.tsx b/src/components/landing/sections/Research.tsx
index a295419..5f69d5e 100644
--- a/src/components/landing/sections/Research.tsx
+++ b/src/components/landing/sections/Research.tsx
@@ -33,7 +33,7 @@ function Topic({
33 children: ReactNode; 33 children: ReactNode;
34}) { 34}) {
35 return ( 35 return (
36 <div className={clsx('col', 'col-3', styles.topic)}> 36 <div className={clsx('col', 'col--3', styles.topic)}>
37 <div className={styles.topic__contents}> 37 <div className={styles.topic__contents}>
38 <div className={clsx(styles.topic__icon, style)}> 38 <div className={clsx(styles.topic__icon, style)}>
39 <Icon aria-hidden="true" size={128} weight="light" /> 39 <Icon aria-hidden="true" size={128} weight="light" />
diff --git a/src/components/landing/sections/Software.module.css b/src/components/landing/sections/Software.module.css
deleted file mode 100644
index 1d0db4d..0000000
--- a/src/components/landing/sections/Software.module.css
+++ /dev/null
@@ -1,5 +0,0 @@
1/*
2 * SPDX-FileCopyrightText: 2023 Kristóf Marussy
3 *
4 * SPDX-License-Identifier: MIT
5 */
diff --git a/src/components/landing/sections/Software.tsx b/src/components/landing/sections/Software.tsx
deleted file mode 100644
index 8a421b5..0000000
--- a/src/components/landing/sections/Software.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
1/*
2 * SPDX-FileCopyrightText: 2023 Kristóf Marussy
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7import clsx from 'clsx';
8
9import Section from '@site/src/components/landing/Section';
10
11import styles from './Software.module.css';
12
13export default function Software() {
14 return <Section id="software" title="Software"></Section>;
15}
diff --git a/src/css/custom.css b/src/css/custom.css
index 2141aa3..6261ca7 100644
--- a/src/css/custom.css
+++ b/src/css/custom.css
@@ -68,3 +68,9 @@ h6,
68.button { 68.button {
69 --casl: 1; 69 --casl: 1;
70} 70}
71
72.hash-link {
73 font-weight: 500;
74 --casl: 0;
75 --mono: 1;
76}
diff --git a/src/pages/bme-building-i-cropped.jpg b/src/pages/bme-building-i-cropped.jpg
new file mode 100644
index 0000000..b5cad67
--- /dev/null
+++ b/src/pages/bme-building-i-cropped.jpg
Binary files differ
diff --git a/src/pages/bme-building-i-cropped.jpg.license b/src/pages/bme-building-i-cropped.jpg.license
new file mode 100644
index 0000000..fea5d17
--- /dev/null
+++ b/src/pages/bme-building-i-cropped.jpg.license
@@ -0,0 +1,6 @@
1SPDX-FileCopyrightText: 2024 Kristóf Marussy <kristof@marussy.com>
2
3SPDX-License-Identifier: CC0-1.0
4
5Placeholder image to replace the following third-party content:
6drone shot of BME building I.
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index 125c5d3..60f86ca 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -6,26 +6,22 @@
6 6
7import Layout from '@theme/Layout'; 7import Layout from '@theme/Layout';
8 8
9import Contact from '@site/src/components/landing/sections/Contact';
9import Hero from '@site/src/components/landing/sections/Hero'; 10import Hero from '@site/src/components/landing/sections/Hero';
10import Publications from '@site/src/components/landing/sections/Publications'; 11import Publications from '@site/src/components/landing/sections/Publications';
11import Research from '@site/src/components/landing/sections/Research'; 12import Research from '@site/src/components/landing/sections/Research';
12import Resume from '@site/src/components/landing/sections/Resume'; 13import Resume from '@site/src/components/landing/sections/Resume';
13import Software from '@site/src/components/landing/sections/Software';
14import Section from '@site/src/components/landing/Section';
15import TrackActiveSection from '@site/src/components/TrackActiveSection'; 14import TrackActiveSection from '@site/src/components/TrackActiveSection';
16 15
17import avatar from '@site/src/pages/avatar.jpg';
18
19export default function Home() { 16export default function Home() {
20 return ( 17 return (
21 <Layout> 18 <Layout>
22 <TrackActiveSection> 19 <TrackActiveSection>
23 <Hero avatar={avatar} /> 20 <Hero />
24 <Research /> 21 <Research />
25 <Publications /> 22 <Publications />
26 <Software />
27 <Resume /> 23 <Resume />
28 <Section id="contact" title="Contact" /> 24 <Contact />
29 </TrackActiveSection> 25 </TrackActiveSection>
30 </Layout> 26 </Layout>
31 ); 27 );
diff --git a/src/pages/license.mdx b/src/pages/license.mdx
index 1e55acd..eee4cf8 100644
--- a/src/pages/license.mdx
+++ b/src/pages/license.mdx
@@ -41,6 +41,8 @@ Restricted content on this site marked with the <ClosedAccessLink to="#content">
41 41
42- The photo of me apparing on the [home page](/) was taken by [SPOT Fotókör](https://spot.sch.bme.hu/) in 2019 for the [Critical Systems Research Group](https://ftsrg.mit.bme.hu/). 42- The photo of me apparing on the [home page](/) was taken by [SPOT Fotókör](https://spot.sch.bme.hu/) in 2019 for the [Critical Systems Research Group](https://ftsrg.mit.bme.hu/).
43 43
44- The drone shot of BME building I appearing in the [Contact](/#contact) section was taken by [Ákos Hajdu](https://hajduakos.github.io/) in 2020 for the [Critical Systems Research Group](https://ftsrg.mit.bme.hu/).
45
44- Unfortunately, some of my [publications](/#publications) appeared in closed access journal and proceedings. Even though neither me nor by colleagues received any compensation, the copyright of this content was assigned to the publisher, such as ACM or IEEE. 46- Unfortunately, some of my [publications](/#publications) appeared in closed access journal and proceedings. Even though neither me nor by colleagues received any compensation, the copyright of this content was assigned to the publisher, such as ACM or IEEE.
45 47
46 Whenever allowed by the current copyright holder, I posted the _final draft_ of the paper to this site. 48 Whenever allowed by the current copyright holder, I posted the _final draft_ of the paper to this site.
@@ -62,6 +64,7 @@ If you use only code or only content from such files, you only need to abide by
62The site also uses the following third-party code available under libre licenses: 64The site also uses the following third-party code available under libre licenses:
63 65
64- [Docusaurus](https://docusaurus.io/) static site generator, <MITLicenseLink /> 66- [Docusaurus](https://docusaurus.io/) static site generator, <MITLicenseLink />
67- [Fediverse logo proposal](<https://commons.wikimedia.org/w/index.php?title=File:Fediverse_logo_proposal_(mono_version).svg&oldid=794518552>) by [Eukombos](https://commons.wikimedia.org/wiki/User:Eukombos), <CCLicenseLink to="https://creativecommons.org/publicdomain/zero/1.0/">CC0-1.0</CCLicenseLink>
65- [Phosphor Icons](https://phosphoricons.com/), <MITLicenseLink /> 68- [Phosphor Icons](https://phosphoricons.com/), <MITLicenseLink />
66- [Recursive Sans and Mono](https://www.recursive.design/) fonts, <LicenseLink to="https://openfontlicense.org/open-font-license-official-text/">OFL-1.1</LicenseLink> 69- [Recursive Sans and Mono](https://www.recursive.design/) fonts, <LicenseLink to="https://openfontlicense.org/open-font-license-official-text/">OFL-1.1</LicenseLink>
67- [Simple Icons](https://simpleicons.org/), <CCLicenseLink to="https://creativecommons.org/publicdomain/zero/1.0/">CC0-1.0</CCLicenseLink> 70- [Simple Icons](https://simpleicons.org/), <CCLicenseLink to="https://creativecommons.org/publicdomain/zero/1.0/">CC0-1.0</CCLicenseLink>
diff --git a/src/plugins/responsiveLoaderPlugin.ts b/src/plugins/responsiveLoaderPlugin.ts
new file mode 100644
index 0000000..3dc198e
--- /dev/null
+++ b/src/plugins/responsiveLoaderPlugin.ts
@@ -0,0 +1,39 @@
1/*
2 * Copyright (c) 2016, Jeremy Stucki
3 * Copyright (c) 2024 Kristóf Marussy <kristof@marussy.com>
4 *
5 * SPDX-License-Identifier: MIT AND BSD-3-Clause
6 */
7
8import type { Plugin } from '@docusaurus/types';
9import sharp from 'responsive-loader/sharp';
10
11export default function responsiveLoaderPlugin(): Plugin {
12 return {
13 name: 'marussy-responsive-loader-plugin',
14 configureWebpack: () => ({
15 mergeStrategy: {
16 'module.rules': 'prepend',
17 },
18 // Configuration based on
19 // https://github.com/dazuaz/responsive-loader/blob/ef2c806fcd36f06f6be8a0b97e09f40c3d86d3ac/README.md
20 module: {
21 rules: [
22 {
23 test: /\.(png|jpe?g)$/,
24 use: [
25 {
26 loader: 'responsive-loader',
27 options: {
28 adapter: sharp,
29 format: 'webp',
30 },
31 },
32 ],
33 type: 'javascript/auto',
34 },
35 ],
36 },
37 }),
38 };
39}
diff --git a/src/types.d.ts b/src/types.d.ts
index e3ab6b7..a2ff976 100644
--- a/src/types.d.ts
+++ b/src/types.d.ts
@@ -1,14 +1,23 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2023 Kristóf Marussy 2 * Copyright (c) 2016, Jeremy Stucki
3 * 3 *
4 * SPDX-License-Identifier: MIT 4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 * Typings copied from
7 * https://github.com/dazuaz/responsive-loader/blob/ef2c806fcd36f06f6be8a0b97e09f40c3d86d3ac/README.md
5 */ 8 */
6 9
7// Docusaurus doesn't contain module declarations for images, 10interface ResponsiveImageOutput {
8// so we add them ourselves. 11 src: string;
9// See https://github.com/facebook/docusaurus/issues/8683 12 srcSet: string;
13 placeholder: string | undefined;
14 images: { path: string; width: number; height: number }[];
15 width: number;
16 height: number;
17 toString: () => string;
18}
10 19
11declare module '*.jpg' { 20declare module '*&rl' {
12 const path: string; 21 const src: ResponsiveImageOutput;
13 export default path; 22 export default src;
14} 23}
diff --git a/third-party b/third-party
Subproject f8a9f0428489f28dabe67e7cc01811a75b58445 Subproject 21568f2c77a591823103044a2f9e36e04732d8b
diff --git a/yarn.lock b/yarn.lock
index f9d38b2..94e5d99 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1895,6 +1895,15 @@ __metadata:
1895 languageName: node 1895 languageName: node
1896 linkType: hard 1896 linkType: hard
1897 1897
1898"@emnapi/runtime@npm:^0.45.0":
1899 version: 0.45.0
1900 resolution: "@emnapi/runtime@npm:0.45.0"
1901 dependencies:
1902 tslib: "npm:^2.4.0"
1903 checksum: 10c0/c83052b05efb7147c256bfbb69214c9642fef1dce8d7d901e0314a7b2d2dcd14e1cd75502c6565004847e552658e9913a7e58889c7dca92e240173032f1db5d5
1904 languageName: node
1905 linkType: hard
1906
1898"@fontsource-variable/recursive@npm:^5.0.17": 1907"@fontsource-variable/recursive@npm:^5.0.17":
1899 version: 5.0.17 1908 version: 5.0.17
1900 resolution: "@fontsource-variable/recursive@npm:5.0.17" 1909 resolution: "@fontsource-variable/recursive@npm:5.0.17"
@@ -1918,6 +1927,181 @@ __metadata:
1918 languageName: node 1927 languageName: node
1919 linkType: hard 1928 linkType: hard
1920 1929
1930"@img/sharp-darwin-arm64@npm:0.33.2":
1931 version: 0.33.2
1932 resolution: "@img/sharp-darwin-arm64@npm:0.33.2"
1933 dependencies:
1934 "@img/sharp-libvips-darwin-arm64": "npm:1.0.1"
1935 dependenciesMeta:
1936 "@img/sharp-libvips-darwin-arm64":
1937 optional: true
1938 conditions: os=darwin & cpu=arm64
1939 languageName: node
1940 linkType: hard
1941
1942"@img/sharp-darwin-x64@npm:0.33.2":
1943 version: 0.33.2
1944 resolution: "@img/sharp-darwin-x64@npm:0.33.2"
1945 dependencies:
1946 "@img/sharp-libvips-darwin-x64": "npm:1.0.1"
1947 dependenciesMeta:
1948 "@img/sharp-libvips-darwin-x64":
1949 optional: true
1950 conditions: os=darwin & cpu=x64
1951 languageName: node
1952 linkType: hard
1953
1954"@img/sharp-libvips-darwin-arm64@npm:1.0.1":
1955 version: 1.0.1
1956 resolution: "@img/sharp-libvips-darwin-arm64@npm:1.0.1"
1957 conditions: os=darwin & cpu=arm64
1958 languageName: node
1959 linkType: hard
1960
1961"@img/sharp-libvips-darwin-x64@npm:1.0.1":
1962 version: 1.0.1
1963 resolution: "@img/sharp-libvips-darwin-x64@npm:1.0.1"
1964 conditions: os=darwin & cpu=x64
1965 languageName: node
1966 linkType: hard
1967
1968"@img/sharp-libvips-linux-arm64@npm:1.0.1":
1969 version: 1.0.1
1970 resolution: "@img/sharp-libvips-linux-arm64@npm:1.0.1"
1971 conditions: os=linux & cpu=arm64 & libc=glibc
1972 languageName: node
1973 linkType: hard
1974
1975"@img/sharp-libvips-linux-arm@npm:1.0.1":
1976 version: 1.0.1
1977 resolution: "@img/sharp-libvips-linux-arm@npm:1.0.1"
1978 conditions: os=linux & cpu=arm & libc=glibc
1979 languageName: node
1980 linkType: hard
1981
1982"@img/sharp-libvips-linux-s390x@npm:1.0.1":
1983 version: 1.0.1
1984 resolution: "@img/sharp-libvips-linux-s390x@npm:1.0.1"
1985 conditions: os=linux & cpu=s390x & libc=glibc
1986 languageName: node
1987 linkType: hard
1988
1989"@img/sharp-libvips-linux-x64@npm:1.0.1":
1990 version: 1.0.1
1991 resolution: "@img/sharp-libvips-linux-x64@npm:1.0.1"
1992 conditions: os=linux & cpu=x64 & libc=glibc
1993 languageName: node
1994 linkType: hard
1995
1996"@img/sharp-libvips-linuxmusl-arm64@npm:1.0.1":
1997 version: 1.0.1
1998 resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.1"
1999 conditions: os=linux & cpu=arm64 & libc=musl
2000 languageName: node
2001 linkType: hard
2002
2003"@img/sharp-libvips-linuxmusl-x64@npm:1.0.1":
2004 version: 1.0.1
2005 resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.0.1"
2006 conditions: os=linux & cpu=x64 & libc=musl
2007 languageName: node
2008 linkType: hard
2009
2010"@img/sharp-linux-arm64@npm:0.33.2":
2011 version: 0.33.2
2012 resolution: "@img/sharp-linux-arm64@npm:0.33.2"
2013 dependencies:
2014 "@img/sharp-libvips-linux-arm64": "npm:1.0.1"
2015 dependenciesMeta:
2016 "@img/sharp-libvips-linux-arm64":
2017 optional: true
2018 conditions: os=linux & cpu=arm64 & libc=glibc
2019 languageName: node
2020 linkType: hard
2021
2022"@img/sharp-linux-arm@npm:0.33.2":
2023 version: 0.33.2
2024 resolution: "@img/sharp-linux-arm@npm:0.33.2"
2025 dependencies:
2026 "@img/sharp-libvips-linux-arm": "npm:1.0.1"
2027 dependenciesMeta:
2028 "@img/sharp-libvips-linux-arm":
2029 optional: true
2030 conditions: os=linux & cpu=arm & libc=glibc
2031 languageName: node
2032 linkType: hard
2033
2034"@img/sharp-linux-s390x@npm:0.33.2":
2035 version: 0.33.2
2036 resolution: "@img/sharp-linux-s390x@npm:0.33.2"
2037 dependencies:
2038 "@img/sharp-libvips-linux-s390x": "npm:1.0.1"
2039 dependenciesMeta:
2040 "@img/sharp-libvips-linux-s390x":
2041 optional: true
2042 conditions: os=linux & cpu=s390x & libc=glibc
2043 languageName: node
2044 linkType: hard
2045
2046"@img/sharp-linux-x64@npm:0.33.2":
2047 version: 0.33.2
2048 resolution: "@img/sharp-linux-x64@npm:0.33.2"
2049 dependencies:
2050 "@img/sharp-libvips-linux-x64": "npm:1.0.1"
2051 dependenciesMeta:
2052 "@img/sharp-libvips-linux-x64":
2053 optional: true
2054 conditions: os=linux & cpu=x64 & libc=glibc
2055 languageName: node
2056 linkType: hard
2057
2058"@img/sharp-linuxmusl-arm64@npm:0.33.2":
2059 version: 0.33.2
2060 resolution: "@img/sharp-linuxmusl-arm64@npm:0.33.2"
2061 dependencies:
2062 "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.1"
2063 dependenciesMeta:
2064 "@img/sharp-libvips-linuxmusl-arm64":
2065 optional: true
2066 conditions: os=linux & cpu=arm64 & libc=musl
2067 languageName: node
2068 linkType: hard
2069
2070"@img/sharp-linuxmusl-x64@npm:0.33.2":
2071 version: 0.33.2
2072 resolution: "@img/sharp-linuxmusl-x64@npm:0.33.2"
2073 dependencies:
2074 "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.1"
2075 dependenciesMeta:
2076 "@img/sharp-libvips-linuxmusl-x64":
2077 optional: true
2078 conditions: os=linux & cpu=x64 & libc=musl
2079 languageName: node
2080 linkType: hard
2081
2082"@img/sharp-wasm32@npm:0.33.2":
2083 version: 0.33.2
2084 resolution: "@img/sharp-wasm32@npm:0.33.2"
2085 dependencies:
2086 "@emnapi/runtime": "npm:^0.45.0"
2087 conditions: cpu=wasm32
2088 languageName: node
2089 linkType: hard
2090
2091"@img/sharp-win32-ia32@npm:0.33.2":
2092 version: 0.33.2
2093 resolution: "@img/sharp-win32-ia32@npm:0.33.2"
2094 conditions: os=win32 & cpu=ia32
2095 languageName: node
2096 linkType: hard
2097
2098"@img/sharp-win32-x64@npm:0.33.2":
2099 version: 0.33.2
2100 resolution: "@img/sharp-win32-x64@npm:0.33.2"
2101 conditions: os=win32 & cpu=x64
2102 languageName: node
2103 linkType: hard
2104
1921"@isaacs/cliui@npm:^8.0.2": 2105"@isaacs/cliui@npm:^8.0.2":
1922 version: 8.0.2 2106 version: 8.0.2
1923 resolution: "@isaacs/cliui@npm:8.0.2" 2107 resolution: "@isaacs/cliui@npm:8.0.2"
@@ -2816,6 +3000,15 @@ __metadata:
2816 languageName: node 3000 languageName: node
2817 linkType: hard 3001 linkType: hard
2818 3002
3003"@types/node@npm:^18.11.9":
3004 version: 18.19.24
3005 resolution: "@types/node@npm:18.19.24"
3006 dependencies:
3007 undici-types: "npm:~5.26.4"
3008 checksum: 10c0/2c26e57002f4d77494fcc156ec188b345b8a8f987b9beffae7c17197690e7ec1cd5c67a5902514fe906b91514c0958dddb4bed54d888bd911d10be7c9ed8ed93
3009 languageName: node
3010 linkType: hard
3011
2819"@types/parse-json@npm:^4.0.0": 3012"@types/parse-json@npm:^4.0.0":
2820 version: 4.0.1 3013 version: 4.0.1
2821 resolution: "@types/parse-json@npm:4.0.1" 3014 resolution: "@types/parse-json@npm:4.0.1"
@@ -4035,13 +4228,23 @@ __metadata:
4035 languageName: node 4228 languageName: node
4036 linkType: hard 4229 linkType: hard
4037 4230
4038"color-name@npm:~1.1.4": 4231"color-name@npm:^1.0.0, color-name@npm:~1.1.4":
4039 version: 1.1.4 4232 version: 1.1.4
4040 resolution: "color-name@npm:1.1.4" 4233 resolution: "color-name@npm:1.1.4"
4041 checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 4234 checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95
4042 languageName: node 4235 languageName: node
4043 linkType: hard 4236 linkType: hard
4044 4237
4238"color-string@npm:^1.9.0":
4239 version: 1.9.1
4240 resolution: "color-string@npm:1.9.1"
4241 dependencies:
4242 color-name: "npm:^1.0.0"
4243 simple-swizzle: "npm:^0.2.2"
4244 checksum: 10c0/b0bfd74c03b1f837f543898b512f5ea353f71630ccdd0d66f83028d1f0924a7d4272deb278b9aef376cacf1289b522ac3fb175e99895283645a2dc3a33af2404
4245 languageName: node
4246 linkType: hard
4247
4045"color-support@npm:^1.1.3": 4248"color-support@npm:^1.1.3":
4046 version: 1.1.3 4249 version: 1.1.3
4047 resolution: "color-support@npm:1.1.3" 4250 resolution: "color-support@npm:1.1.3"
@@ -4051,6 +4254,16 @@ __metadata:
4051 languageName: node 4254 languageName: node
4052 linkType: hard 4255 linkType: hard
4053 4256
4257"color@npm:^4.2.3":
4258 version: 4.2.3
4259 resolution: "color@npm:4.2.3"
4260 dependencies:
4261 color-convert: "npm:^2.0.1"
4262 color-string: "npm:^1.9.0"
4263 checksum: 10c0/7fbe7cfb811054c808349de19fb380252e5e34e61d7d168ec3353e9e9aacb1802674bddc657682e4e9730c2786592a4de6f8283e7e0d3870b829bb0b7b2f6118
4264 languageName: node
4265 linkType: hard
4266
4054"colord@npm:^2.9.1": 4267"colord@npm:^2.9.1":
4055 version: 2.9.3 4268 version: 2.9.3
4056 resolution: "colord@npm:2.9.3" 4269 resolution: "colord@npm:2.9.3"
@@ -4121,6 +4334,13 @@ __metadata:
4121 languageName: node 4334 languageName: node
4122 linkType: hard 4335 linkType: hard
4123 4336
4337"commondir@npm:^1.0.1":
4338 version: 1.0.1
4339 resolution: "commondir@npm:1.0.1"
4340 checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6
4341 languageName: node
4342 linkType: hard
4343
4124"compressible@npm:~2.0.16": 4344"compressible@npm:~2.0.16":
4125 version: 2.0.18 4345 version: 2.0.18
4126 resolution: "compressible@npm:2.0.18" 4346 resolution: "compressible@npm:2.0.18"
@@ -4706,6 +4926,13 @@ __metadata:
4706 languageName: node 4926 languageName: node
4707 linkType: hard 4927 linkType: hard
4708 4928
4929"detect-libc@npm:^2.0.2":
4930 version: 2.0.2
4931 resolution: "detect-libc@npm:2.0.2"
4932 checksum: 10c0/a9f4ffcd2701525c589617d98afe5a5d0676c8ea82bcc4ed6f3747241b79f781d36437c59a5e855254c864d36a3e9f8276568b6b531c28d6e53b093a15703f11
4933 languageName: node
4934 linkType: hard
4935
4709"detect-node@npm:^2.0.4": 4936"detect-node@npm:^2.0.4":
4710 version: 2.1.0 4937 version: 2.1.0
4711 resolution: "detect-node@npm:2.1.0" 4938 resolution: "detect-node@npm:2.1.0"
@@ -5395,6 +5622,17 @@ __metadata:
5395 languageName: node 5622 languageName: node
5396 linkType: hard 5623 linkType: hard
5397 5624
5625"find-cache-dir@npm:^3.3.2":
5626 version: 3.3.2
5627 resolution: "find-cache-dir@npm:3.3.2"
5628 dependencies:
5629 commondir: "npm:^1.0.1"
5630 make-dir: "npm:^3.0.2"
5631 pkg-dir: "npm:^4.1.0"
5632 checksum: 10c0/92747cda42bff47a0266b06014610981cfbb71f55d60f2c8216bc3108c83d9745507fb0b14ecf6ab71112bed29cd6fb1a137ee7436179ea36e11287e3159e587
5633 languageName: node
5634 linkType: hard
5635
5398"find-cache-dir@npm:^4.0.0": 5636"find-cache-dir@npm:^4.0.0":
5399 version: 4.0.0 5637 version: 4.0.0
5400 resolution: "find-cache-dir@npm:4.0.0" 5638 resolution: "find-cache-dir@npm:4.0.0"
@@ -5414,6 +5652,16 @@ __metadata:
5414 languageName: node 5652 languageName: node
5415 linkType: hard 5653 linkType: hard
5416 5654
5655"find-up@npm:^4.0.0":
5656 version: 4.1.0
5657 resolution: "find-up@npm:4.1.0"
5658 dependencies:
5659 locate-path: "npm:^5.0.0"
5660 path-exists: "npm:^4.0.0"
5661 checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1
5662 languageName: node
5663 linkType: hard
5664
5417"find-up@npm:^5.0.0": 5665"find-up@npm:^5.0.0":
5418 version: 5.0.0 5666 version: 5.0.0
5419 resolution: "find-up@npm:5.0.0" 5667 resolution: "find-up@npm:5.0.0"
@@ -6491,6 +6739,13 @@ __metadata:
6491 languageName: node 6739 languageName: node
6492 linkType: hard 6740 linkType: hard
6493 6741
6742"is-arrayish@npm:^0.3.1":
6743 version: 0.3.2
6744 resolution: "is-arrayish@npm:0.3.2"
6745 checksum: 10c0/f59b43dc1d129edb6f0e282595e56477f98c40278a2acdc8b0a5c57097c9eff8fe55470493df5775478cf32a4dc8eaf6d3a749f07ceee5bc263a78b2434f6a54
6746 languageName: node
6747 linkType: hard
6748
6494"is-binary-path@npm:~2.1.0": 6749"is-binary-path@npm:~2.1.0":
6495 version: 2.1.0 6750 version: 2.1.0
6496 resolution: "is-binary-path@npm:2.1.0" 6751 resolution: "is-binary-path@npm:2.1.0"
@@ -6898,7 +7153,7 @@ __metadata:
6898 languageName: node 7153 languageName: node
6899 linkType: hard 7154 linkType: hard
6900 7155
6901"json5@npm:^2.1.2, json5@npm:^2.2.3": 7156"json5@npm:^2.1.2, json5@npm:^2.2.1, json5@npm:^2.2.3":
6902 version: 2.2.3 7157 version: 2.2.3
6903 resolution: "json5@npm:2.2.3" 7158 resolution: "json5@npm:2.2.3"
6904 bin: 7159 bin:
@@ -7001,7 +7256,7 @@ __metadata:
7001 languageName: node 7256 languageName: node
7002 linkType: hard 7257 linkType: hard
7003 7258
7004"loader-utils@npm:^3.2.0": 7259"loader-utils@npm:^3.2.0, loader-utils@npm:^3.2.1":
7005 version: 3.2.1 7260 version: 3.2.1
7006 resolution: "loader-utils@npm:3.2.1" 7261 resolution: "loader-utils@npm:3.2.1"
7007 checksum: 10c0/d3e1f217d160e8e894a0385a33500d4ce14065e8ffb250f5a81ae65bc2c3baa50625ec34182ba4417b46b4ac6725aed64429e1104d6401e074af2aa1dd018394 7262 checksum: 10c0/d3e1f217d160e8e894a0385a33500d4ce14065e8ffb250f5a81ae65bc2c3baa50625ec34182ba4417b46b4ac6725aed64429e1104d6401e074af2aa1dd018394
@@ -7018,6 +7273,15 @@ __metadata:
7018 languageName: node 7273 languageName: node
7019 linkType: hard 7274 linkType: hard
7020 7275
7276"locate-path@npm:^5.0.0":
7277 version: 5.0.0
7278 resolution: "locate-path@npm:5.0.0"
7279 dependencies:
7280 p-locate: "npm:^4.1.0"
7281 checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59
7282 languageName: node
7283 linkType: hard
7284
7021"locate-path@npm:^6.0.0": 7285"locate-path@npm:^6.0.0":
7022 version: 6.0.0 7286 version: 6.0.0
7023 resolution: "locate-path@npm:6.0.0" 7287 resolution: "locate-path@npm:6.0.0"
@@ -7165,6 +7429,15 @@ __metadata:
7165 languageName: node 7429 languageName: node
7166 linkType: hard 7430 linkType: hard
7167 7431
7432"make-dir@npm:^3.0.2, make-dir@npm:^3.1.0":
7433 version: 3.1.0
7434 resolution: "make-dir@npm:3.1.0"
7435 dependencies:
7436 semver: "npm:^6.0.0"
7437 checksum: 10c0/56aaafefc49c2dfef02c5c95f9b196c4eb6988040cf2c712185c7fe5c99b4091591a7fc4d4eafaaefa70ff763a26f6ab8c3ff60b9e75ea19876f49b18667ecaa
7438 languageName: node
7439 linkType: hard
7440
7168"make-fetch-happen@npm:^11.0.3": 7441"make-fetch-happen@npm:^11.0.3":
7169 version: 11.1.1 7442 version: 11.1.1
7170 resolution: "make-fetch-happen@npm:11.1.1" 7443 resolution: "make-fetch-happen@npm:11.1.1"
@@ -7228,6 +7501,8 @@ __metadata:
7228 react: "npm:^18.2.0" 7501 react: "npm:^18.2.0"
7229 react-dom: "npm:^18.2.0" 7502 react-dom: "npm:^18.2.0"
7230 remark-smartypants: "npm:^2.1.0" 7503 remark-smartypants: "npm:^2.1.0"
7504 responsive-loader: "npm:^3.1.2"
7505 sharp: "npm:^0.33.2"
7231 simple-icons: "npm:^11.8.0" 7506 simple-icons: "npm:^11.8.0"
7232 swc-loader: "npm:^0.2.6" 7507 swc-loader: "npm:^0.2.6"
7233 terser-webpack-plugin: "npm:^5.3.10" 7508 terser-webpack-plugin: "npm:^5.3.10"
@@ -8551,7 +8826,7 @@ __metadata:
8551 languageName: node 8826 languageName: node
8552 linkType: hard 8827 linkType: hard
8553 8828
8554"p-limit@npm:^2.0.0": 8829"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0":
8555 version: 2.3.0 8830 version: 2.3.0
8556 resolution: "p-limit@npm:2.3.0" 8831 resolution: "p-limit@npm:2.3.0"
8557 dependencies: 8832 dependencies:
@@ -8587,6 +8862,15 @@ __metadata:
8587 languageName: node 8862 languageName: node
8588 linkType: hard 8863 linkType: hard
8589 8864
8865"p-locate@npm:^4.1.0":
8866 version: 4.1.0
8867 resolution: "p-locate@npm:4.1.0"
8868 dependencies:
8869 p-limit: "npm:^2.2.0"
8870 checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9
8871 languageName: node
8872 linkType: hard
8873
8590"p-locate@npm:^5.0.0": 8874"p-locate@npm:^5.0.0":
8591 version: 5.0.0 8875 version: 5.0.0
8592 resolution: "p-locate@npm:5.0.0" 8876 resolution: "p-locate@npm:5.0.0"
@@ -8858,6 +9142,15 @@ __metadata:
8858 languageName: node 9142 languageName: node
8859 linkType: hard 9143 linkType: hard
8860 9144
9145"pkg-dir@npm:^4.1.0":
9146 version: 4.2.0
9147 resolution: "pkg-dir@npm:4.2.0"
9148 dependencies:
9149 find-up: "npm:^4.0.0"
9150 checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728
9151 languageName: node
9152 linkType: hard
9153
8861"pkg-dir@npm:^7.0.0": 9154"pkg-dir@npm:^7.0.0":
8862 version: 7.0.0 9155 version: 7.0.0
8863 resolution: "pkg-dir@npm:7.0.0" 9156 resolution: "pkg-dir@npm:7.0.0"
@@ -10031,6 +10324,27 @@ __metadata:
10031 languageName: node 10324 languageName: node
10032 linkType: hard 10325 linkType: hard
10033 10326
10327"responsive-loader@npm:^3.1.2":
10328 version: 3.1.2
10329 resolution: "responsive-loader@npm:3.1.2"
10330 dependencies:
10331 "@types/node": "npm:^18.11.9"
10332 find-cache-dir: "npm:^3.3.2"
10333 json5: "npm:^2.2.1"
10334 loader-utils: "npm:^3.2.1"
10335 make-dir: "npm:^3.1.0"
10336 schema-utils: "npm:^4.0.0"
10337 peerDependencies:
10338 webpack: ^5.73.0
10339 peerDependenciesMeta:
10340 jimp:
10341 optional: true
10342 sharp:
10343 optional: true
10344 checksum: 10c0/c93b200bb51fe2968ee8092b4817db55dd55f2306d1d75fa66aa6cd2dbddf9c7f394528f9182acbc3a37489fed9b5d743b51a5275c88d31fb665195cf0f5adaf
10345 languageName: node
10346 linkType: hard
10347
10034"retext-latin@npm:^3.0.0": 10348"retext-latin@npm:^3.0.0":
10035 version: 3.1.0 10349 version: 3.1.0
10036 resolution: "retext-latin@npm:3.1.0" 10350 resolution: "retext-latin@npm:3.1.0"
@@ -10246,7 +10560,7 @@ __metadata:
10246 languageName: node 10560 languageName: node
10247 linkType: hard 10561 linkType: hard
10248 10562
10249"semver@npm:^6.3.1": 10563"semver@npm:^6.0.0, semver@npm:^6.3.1":
10250 version: 6.3.1 10564 version: 6.3.1
10251 resolution: "semver@npm:6.3.1" 10565 resolution: "semver@npm:6.3.1"
10252 bin: 10566 bin:
@@ -10388,6 +10702,75 @@ __metadata:
10388 languageName: node 10702 languageName: node
10389 linkType: hard 10703 linkType: hard
10390 10704
10705"sharp@npm:^0.33.2":
10706 version: 0.33.2
10707 resolution: "sharp@npm:0.33.2"
10708 dependencies:
10709 "@img/sharp-darwin-arm64": "npm:0.33.2"
10710 "@img/sharp-darwin-x64": "npm:0.33.2"
10711 "@img/sharp-libvips-darwin-arm64": "npm:1.0.1"
10712 "@img/sharp-libvips-darwin-x64": "npm:1.0.1"
10713 "@img/sharp-libvips-linux-arm": "npm:1.0.1"
10714 "@img/sharp-libvips-linux-arm64": "npm:1.0.1"
10715 "@img/sharp-libvips-linux-s390x": "npm:1.0.1"
10716 "@img/sharp-libvips-linux-x64": "npm:1.0.1"
10717 "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.1"
10718 "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.1"
10719 "@img/sharp-linux-arm": "npm:0.33.2"
10720 "@img/sharp-linux-arm64": "npm:0.33.2"
10721 "@img/sharp-linux-s390x": "npm:0.33.2"
10722 "@img/sharp-linux-x64": "npm:0.33.2"
10723 "@img/sharp-linuxmusl-arm64": "npm:0.33.2"
10724 "@img/sharp-linuxmusl-x64": "npm:0.33.2"
10725 "@img/sharp-wasm32": "npm:0.33.2"
10726 "@img/sharp-win32-ia32": "npm:0.33.2"
10727 "@img/sharp-win32-x64": "npm:0.33.2"
10728 color: "npm:^4.2.3"
10729 detect-libc: "npm:^2.0.2"
10730 semver: "npm:^7.5.4"
10731 dependenciesMeta:
10732 "@img/sharp-darwin-arm64":
10733 optional: true
10734 "@img/sharp-darwin-x64":
10735 optional: true
10736 "@img/sharp-libvips-darwin-arm64":
10737 optional: true
10738 "@img/sharp-libvips-darwin-x64":
10739 optional: true
10740 "@img/sharp-libvips-linux-arm":
10741 optional: true
10742 "@img/sharp-libvips-linux-arm64":
10743 optional: true
10744 "@img/sharp-libvips-linux-s390x":
10745 optional: true
10746 "@img/sharp-libvips-linux-x64":
10747 optional: true
10748 "@img/sharp-libvips-linuxmusl-arm64":
10749 optional: true
10750 "@img/sharp-libvips-linuxmusl-x64":
10751 optional: true
10752 "@img/sharp-linux-arm":
10753 optional: true
10754 "@img/sharp-linux-arm64":
10755 optional: true
10756 "@img/sharp-linux-s390x":
10757 optional: true
10758 "@img/sharp-linux-x64":
10759 optional: true
10760 "@img/sharp-linuxmusl-arm64":
10761 optional: true
10762 "@img/sharp-linuxmusl-x64":
10763 optional: true
10764 "@img/sharp-wasm32":
10765 optional: true
10766 "@img/sharp-win32-ia32":
10767 optional: true
10768 "@img/sharp-win32-x64":
10769 optional: true
10770 checksum: 10c0/4727fcf5e3e680f2f837f897c9fcff765a43a60c802ccb7064ab939b06318695e0d5d900039adb104370c1e675743bba16a514632193cbee64eae522270adc48
10771 languageName: node
10772 linkType: hard
10773
10391"shebang-command@npm:^2.0.0": 10774"shebang-command@npm:^2.0.0":
10392 version: 2.0.0 10775 version: 2.0.0
10393 resolution: "shebang-command@npm:2.0.0" 10776 resolution: "shebang-command@npm:2.0.0"
@@ -10456,6 +10839,15 @@ __metadata:
10456 languageName: node 10839 languageName: node
10457 linkType: hard 10840 linkType: hard
10458 10841
10842"simple-swizzle@npm:^0.2.2":
10843 version: 0.2.2
10844 resolution: "simple-swizzle@npm:0.2.2"
10845 dependencies:
10846 is-arrayish: "npm:^0.3.1"
10847 checksum: 10c0/df5e4662a8c750bdba69af4e8263c5d96fe4cd0f9fe4bdfa3cbdeb45d2e869dff640beaaeb1ef0e99db4d8d2ec92f85508c269f50c972174851bc1ae5bd64308
10848 languageName: node
10849 linkType: hard
10850
10459"sirv@npm:^2.0.3": 10851"sirv@npm:^2.0.3":
10460 version: 2.0.3 10852 version: 2.0.3
10461 resolution: "sirv@npm:2.0.3" 10853 resolution: "sirv@npm:2.0.3"
@@ -11007,7 +11399,7 @@ __metadata:
11007 languageName: node 11399 languageName: node
11008 linkType: hard 11400 linkType: hard
11009 11401
11010"tslib@npm:^2.0.3, tslib@npm:^2.6.0": 11402"tslib@npm:^2.0.3, tslib@npm:^2.4.0, tslib@npm:^2.6.0":
11011 version: 2.6.2 11403 version: 2.6.2
11012 resolution: "tslib@npm:2.6.2" 11404 resolution: "tslib@npm:2.6.2"
11013 checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb 11405 checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb