aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docusaurus.config.ts10
-rw-r--r--package.json2
-rw-r--r--src/components/landing/sections/Hero.tsx2
-rw-r--r--src/components/landing/sections/Publications.module.css9
-rw-r--r--src/components/landing/sections/Publications.tsx74
-rw-r--r--src/components/landing/sections/Research.tsx2
-rw-r--r--src/components/landing/sections/Resume.module.css10
-rw-r--r--src/components/landing/sections/Resume.tsx21
-rw-r--r--src/components/licenses.module.css30
-rw-r--r--src/components/licenses.tsx92
-rw-r--r--src/css/custom.css3
-rw-r--r--src/pages/license.mdx67
-rw-r--r--src/theme/Footer/Copyright.jsx44
-rw-r--r--src/theme/Footer/Copyright.module.css15
-rw-r--r--src/theme/NavbarItem/NavbarNavLink.jsx1
-rw-r--r--yarn.lock224
16 files changed, 540 insertions, 66 deletions
diff --git a/docusaurus.config.ts b/docusaurus.config.ts
index 26aea29..a6b8903 100644
--- a/docusaurus.config.ts
+++ b/docusaurus.config.ts
@@ -9,6 +9,7 @@ import type { PluginOptions as ClassicThemeOptions } from '@docusaurus/theme-cla
9import type { UserThemeConfig } from '@docusaurus/theme-common'; 9import type { UserThemeConfig } from '@docusaurus/theme-common';
10import type { Config } from '@docusaurus/types'; 10import type { Config } from '@docusaurus/types';
11import { Config as SwcConfig } from '@swc/core'; 11import { Config as SwcConfig } from '@swc/core';
12import smartypants from 'remark-smartypants';
12 13
13export default { 14export default {
14 title: 'Kristóf Marussy', 15 title: 'Kristóf Marussy',
@@ -16,7 +17,12 @@ export default {
16 baseUrl: '/', 17 baseUrl: '/',
17 staticDirectories: ['third-party/static', 'static'], 18 staticDirectories: ['third-party/static', 'static'],
18 plugins: [ 19 plugins: [
19 '@docusaurus/plugin-content-pages', 20 [
21 '@docusaurus/plugin-content-pages',
22 {
23 remarkPlugins: [[smartypants, { dashes: 'oldschool' }]],
24 },
25 ],
20 '@docusaurus/plugin-sitemap', 26 '@docusaurus/plugin-sitemap',
21 './src/plugins/swcMinifyPlugin.ts', 27 './src/plugins/swcMinifyPlugin.ts',
22 './src/plugins/thirdPartyContentPlugin.ts', 28 './src/plugins/thirdPartyContentPlugin.ts',
@@ -68,7 +74,7 @@ export default {
68 { 74 {
69 label: 'CV', 75 label: 'CV',
70 to: 'pathname:///cv.pdf', 76 to: 'pathname:///cv.pdf',
71 } 77 },
72 ], 78 ],
73 }, 79 },
74 footer: { 80 footer: {
diff --git a/package.json b/package.json
index 4dfdd65..f2a8dfc 100644
--- a/package.json
+++ b/package.json
@@ -33,12 +33,14 @@
33 "@docusaurus/theme-classic": "^3.1.1", 33 "@docusaurus/theme-classic": "^3.1.1",
34 "@docusaurus/theme-common": "^3.1.1", 34 "@docusaurus/theme-common": "^3.1.1",
35 "@fontsource-variable/recursive": "^5.0.17", 35 "@fontsource-variable/recursive": "^5.0.17",
36 "@mdx-js/react": "^3.0.1",
36 "@phosphor-icons/react": "2.0.15", 37 "@phosphor-icons/react": "2.0.15",
37 "@swc/core": "^1.4.8", 38 "@swc/core": "^1.4.8",
38 "clsx": "^2.1.0", 39 "clsx": "^2.1.0",
39 "prop-types": "^15.8.1", 40 "prop-types": "^15.8.1",
40 "react": "^18.2.0", 41 "react": "^18.2.0",
41 "react-dom": "^18.2.0", 42 "react-dom": "^18.2.0",
43 "remark-smartypants": "^2.1.0",
42 "simple-icons": "^11.8.0", 44 "simple-icons": "^11.8.0",
43 "swc-loader": "^0.2.6", 45 "swc-loader": "^0.2.6",
44 "terser-webpack-plugin": "^5.3.10", 46 "terser-webpack-plugin": "^5.3.10",
diff --git a/src/components/landing/sections/Hero.tsx b/src/components/landing/sections/Hero.tsx
index 4974285..2773b9b 100644
--- a/src/components/landing/sections/Hero.tsx
+++ b/src/components/landing/sections/Hero.tsx
@@ -2,6 +2,8 @@
2 * SPDX-FileCopyrightText: 2023-2024 Kristóf Marussy 2 * SPDX-FileCopyrightText: 2023-2024 Kristóf Marussy
3 * 3 *
4 * SPDX-License-Identifier: MIT AND CC-BY-4.0 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.
5 */ 7 */
6 8
7import Link from '@docusaurus/Link'; 9import Link from '@docusaurus/Link';
diff --git a/src/components/landing/sections/Publications.module.css b/src/components/landing/sections/Publications.module.css
index c9a39ba..9ef368b 100644
--- a/src/components/landing/sections/Publications.module.css
+++ b/src/components/landing/sections/Publications.module.css
@@ -12,15 +12,6 @@
12 white-space: nowrap; 12 white-space: nowrap;
13} 13}
14 14
15.link--license {
16 --ifm-link-color: var(--ifm-color-secondary-contrast-foreground);
17 --ifm-link-hover-color: var(--ifm-link-color);
18}
19
20[data-theme='dark'] .link--license {
21 --ifm-link-color: var(--ifm-color-emphasis-500);
22}
23
24.link--lower { 15.link--lower {
25 text-transform: lowercase; 16 text-transform: lowercase;
26} 17}
diff --git a/src/components/landing/sections/Publications.tsx b/src/components/landing/sections/Publications.tsx
index 90c058e..068ec49 100644
--- a/src/components/landing/sections/Publications.tsx
+++ b/src/components/landing/sections/Publications.tsx
@@ -1,22 +1,16 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2023-2024 Kristóf Marussy 2 * SPDX-FileCopyrightText: 2023-2024 Kristóf Marussy
3 * 3 *
4 * SPDX-License-Identifier: MIT 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.
5 */ 7 */
6 8
7import Link from '@docusaurus/Link'; 9import Link from '@docusaurus/Link';
8import { 10import { ArrowSquareOut, File, Package, Play } from '@phosphor-icons/react';
9 ArrowSquareOut,
10 Certificate,
11 File,
12 Lock,
13 Package,
14 Play,
15} from '@phosphor-icons/react';
16import clsx from 'clsx'; 11import clsx from 'clsx';
17 12
18import { 13import {
19 CreativeCommonsIcon,
20 DBLPIcon, 14 DBLPIcon,
21 GoogleScholarIcon, 15 GoogleScholarIcon,
22 MTMTIcon, 16 MTMTIcon,
@@ -26,6 +20,11 @@ import {
26import Section from '@site/src/components/landing/Section'; 20import Section from '@site/src/components/landing/Section';
27import Subtitle from '@site/src/components/landing/Subtitle'; 21import Subtitle from '@site/src/components/landing/Subtitle';
28import authorizedLinks from '@site/src/components/landing/sections/authorizedLinks'; 22import authorizedLinks from '@site/src/components/landing/sections/authorizedLinks';
23import {
24 CCLicenseLink,
25 ClosedAccessLink,
26 LicenseLink,
27} from '@site/src/components/licenses';
29 28
30import styles from './Publications.module.css'; 29import styles from './Publications.module.css';
31 30
@@ -101,59 +100,40 @@ function ClosedAccess({
101 url: string; 100 url: string;
102 authorizedURL?: string | undefined; 101 authorizedURL?: string | undefined;
103}) { 102}) {
104 const label = (
105 <>
106 <Lock weight="bold" aria-hidden="true" className={styles.link__icon} />
107 <span className="sr-only">Closed Access: </span>
108 {publisher}
109 </>
110 );
111 if (authorizedURL !== undefined) {
112 // Must allow referrer for the ACM Author-Izer to work.
113 return (
114 <Link
115 to={authorizedURL}
116 rel="nofollow noopener"
117 referrerPolicy="no-referrer-when-downgrade"
118 className={clsx(styles.link, styles['link--license'])}
119 >
120 {label}
121 </Link>
122 );
123 }
124 return ( 103 return (
125 <Link 104 <ClosedAccessLink
126 to={url} 105 to={authorizedURL ?? url}
127 rel="nofollow noopener noreferrer" 106 rel="nofollow noopener noreferrer"
128 className={clsx(styles.link, styles['link--license'])} 107 {...(authorizedURL === undefined
108 ? {
109 rel: 'nofollow noopener noreferrer',
110 }
111 : {
112 // Must allow referrer for the ACM Author-Izer to work.
113 rel: 'nofollow noopener',
114 referrerPolicy: 'no-referrer-when-downgrade',
115 })}
116 label="Closed Access"
129 > 117 >
130 {label} 118 {publisher}
131 </Link> 119 </ClosedAccessLink>
132 ); 120 );
133} 121}
134 122
135function OpenAccess({ license }: { license: string }) { 123function OpenAccess({ license }: { license: string }) {
136 const url = `https://creativecommons.org/licenses/${license}/4.0/`; 124 const url = `https://creativecommons.org/licenses/${license}/4.0/`;
137 return ( 125 return (
138 <Link to={url} className={clsx(styles.link, styles['link--license'])}> 126 <CCLicenseLink to={url} label="Open Access">
139 <CreativeCommonsIcon className={styles.link__icon} hidden />
140 <span className="sr-only">Open Access: </span>
141 CC-{license.toUpperCase()}-4.0 127 CC-{license.toUpperCase()}-4.0
142 </Link> 128 </CCLicenseLink>
143 ); 129 );
144} 130}
145 131
146function ArtifactLicense({ license, url }: { license: string; url: string }) { 132function ArtifactLicense({ license, url }: { license: string; url: string }) {
147 return ( 133 return (
148 <Link to={url} className={clsx(styles.link, styles['link--license'])}> 134 <LicenseLink to={url} label="Artifact license">
149 <Certificate
150 weight="bold"
151 aria-hidden="true"
152 className={styles.link__icon}
153 />
154 <span className="sr-only">Artifact license: </span>
155 {license} 135 {license}
156 </Link> 136 </LicenseLink>
157 ); 137 );
158} 138}
159 139
diff --git a/src/components/landing/sections/Research.tsx b/src/components/landing/sections/Research.tsx
index ea6f076..a295419 100644
--- a/src/components/landing/sections/Research.tsx
+++ b/src/components/landing/sections/Research.tsx
@@ -2,6 +2,8 @@
2 * SPDX-FileCopyrightText: 2023 Kristóf Marussy 2 * SPDX-FileCopyrightText: 2023 Kristóf Marussy
3 * 3 *
4 * SPDX-License-Identifier: MIT AND CC-BY-4.0 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.
5 */ 7 */
6 8
7import clsx from 'clsx'; 9import clsx from 'clsx';
diff --git a/src/components/landing/sections/Resume.module.css b/src/components/landing/sections/Resume.module.css
index fb576a1..3293add 100644
--- a/src/components/landing/sections/Resume.module.css
+++ b/src/components/landing/sections/Resume.module.css
@@ -129,6 +129,16 @@
129 color: var(--ifm-color-emphasis-500); 129 color: var(--ifm-color-emphasis-500);
130} 130}
131 131
132.cv__muted-link {
133 white-space: nowrap;
134 --ifm-link-color: var(--ifm-color-secondary-contrast-foreground);
135 --ifm-link-hover-color: var(--ifm-link-color);
136}
137
138[data-theme='dark'] .cv__muted-link {
139 --ifm-link-color: var(--ifm-color-emphasis-500);
140}
141
132.cv__activities { 142.cv__activities {
133 margin: 1em 0; 143 margin: 1em 0;
134} 144}
diff --git a/src/components/landing/sections/Resume.tsx b/src/components/landing/sections/Resume.tsx
index 6e2bc69..bac2bde 100644
--- a/src/components/landing/sections/Resume.tsx
+++ b/src/components/landing/sections/Resume.tsx
@@ -2,6 +2,8 @@
2 * SPDX-FileCopyrightText: 2023-2024 Kristóf Marussy 2 * SPDX-FileCopyrightText: 2023-2024 Kristóf Marussy
3 * 3 *
4 * SPDX-License-Identifier: MIT AND CC-BY-4.0 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.
5 */ 7 */
6 8
7import Link from '@docusaurus/Link'; 9import Link from '@docusaurus/Link';
@@ -40,13 +42,18 @@ function Education() {
40 </Link> 42 </Link>
41 </p> 43 </p>
42 <p className={styles.cv__muted}> 44 <p className={styles.cv__muted}>
43 <Lock 45 <Link
44 weight="bold" 46 to="/license#restricted-content"
45 aria-hidden="true" 47 className={styles['cv__muted-link']}
46 className={styles['thesis-rights__icon']} 48 >
47 /> 49 <Lock
48 Some poritions may be exclusively licensed to their original 50 weight="bold"
49 publishers 51 aria-hidden="true"
52 className={styles['thesis-rights__icon']}
53 />
54 Some poritions may be exclusively licensed to their original
55 publishers
56 </Link>
50 </p> 57 </p>
51 <div className={styles['thesis-links']}> 58 <div className={styles['thesis-links']}>
52 <Link 59 <Link
diff --git a/src/components/licenses.module.css b/src/components/licenses.module.css
new file mode 100644
index 0000000..ac6c4cc
--- /dev/null
+++ b/src/components/licenses.module.css
@@ -0,0 +1,30 @@
1/*
2 * SPDX-FileCopyrightText: 2024 Kristóf Marussy
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7.link {
8 white-space: nowrap;
9 --ifm-link-color: var(--ifm-color-secondary-contrast-foreground);
10 --ifm-link-hover-color: var(--ifm-link-color);
11}
12
13[data-theme='dark'] .link {
14 --ifm-link-color: var(--ifm-color-emphasis-500);
15}
16
17.icon {
18 vertical-align: text-top;
19 width: 1em;
20 height: 1em;
21 margin-right: 0.125rem;
22}
23
24.text {
25 color: var(--ifm-color-secondary-contrast-foreground);
26}
27
28[data-theme='dark'] .text {
29 color: var(--ifm-color-emphasis-500);
30}
diff --git a/src/components/licenses.tsx b/src/components/licenses.tsx
new file mode 100644
index 0000000..85b0cb2
--- /dev/null
+++ b/src/components/licenses.tsx
@@ -0,0 +1,92 @@
1/*
2 * SPDX-FileCopyrightText: 2024 Kristóf Marussy
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7import Link, { type Props as LinkProps } from '@docusaurus/Link';
8import { Certificate, Lock } from '@phosphor-icons/react';
9
10import { CreativeCommonsIcon } from '@site/src/components/icons';
11
12import styles from './licenses.module.css';
13
14export type LicenseLinkProps = LinkProps & { label?: string };
15
16export function LicenseLink({ children, label, ...props }: LicenseLinkProps) {
17 return (
18 <Link className={styles.link} {...props}>
19 <Certificate weight="bold" aria-hidden="true" className={styles.icon} />
20 <span className="sr-only">{label ?? 'License'}: </span>
21 {children}
22 </Link>
23 );
24}
25
26export function MITLicenseLink() {
27 return <LicenseLink to="https://spdx.org/licenses/MIT.html">MIT</LicenseLink>;
28}
29
30export function CCLicenseLink({ children, label, ...props }: LicenseLinkProps) {
31 return (
32 <Link className={styles.link} {...props}>
33 <CreativeCommonsIcon className={styles.icon} hidden />
34 <span className="sr-only">{label ?? 'Creative Commons license'}: </span>
35 {children}
36 </Link>
37 );
38}
39
40export function CCBYLicenseLink() {
41 return (
42 <CCLicenseLink to="https://creativecommons.org/licenses/by/4.0/">
43 CC-BY-4.0
44 </CCLicenseLink>
45 );
46}
47
48export function ClosedAccessLink({
49 children,
50 label,
51 ...props
52}: LicenseLinkProps) {
53 return (
54 <Link className={styles.link} {...props}>
55 <Lock weight="bold" aria-hidden="true" className={styles.icon} />
56 <span className="sr-only">{label ?? 'Closed access'}: </span>
57 {children}
58 </Link>
59 );
60}
61
62export type SpanProps = React.DetailedHTMLProps<
63 React.HTMLAttributes<HTMLSpanElement>,
64 HTMLSpanElement
65>;
66
67export function LicenseText({ children, ...props }: SpanProps) {
68 return (
69 <span className={styles.text} {...props}>
70 <Certificate weight="bold" aria-hidden="true" className={styles.icon} />
71 {children}
72 </span>
73 );
74}
75
76export function CCLicenseText({ children, ...props }: SpanProps) {
77 return (
78 <span className={styles.text} {...props}>
79 <CreativeCommonsIcon className={styles.icon} hidden />
80 {children}
81 </span>
82 );
83}
84
85export function ClosedAccessText({ children, ...props }: SpanProps) {
86 return (
87 <span className={styles.text} {...props}>
88 <Lock weight="bold" aria-hidden="true" className={styles.icon} />
89 {children}
90 </span>
91 );
92}
diff --git a/src/css/custom.css b/src/css/custom.css
index 64fb73c..2141aa3 100644
--- a/src/css/custom.css
+++ b/src/css/custom.css
@@ -52,7 +52,8 @@
52 'CRSV' var(--crsv); 52 'CRSV' var(--crsv);
53} 53}
54 54
55i { 55i,
56em {
56 font-style: normal; 57 font-style: normal;
57 --slnt: -15; 58 --slnt: -15;
58 --crsv: 1; 59 --crsv: 1;
diff --git a/src/pages/license.mdx b/src/pages/license.mdx
new file mode 100644
index 0000000..1e55acd
--- /dev/null
+++ b/src/pages/license.mdx
@@ -0,0 +1,67 @@
1---
2title: License
3SPDX-FileCopyrightText: 2024 Kristóf Marussy
4SPDX-License-Identifier: CC-BY-4.0
5---
6
7import {
8 CCBYLicenseLink,
9 CCLicenseLink,
10 CCLicenseText,
11 ClosedAccessLink,
12 ClosedAccessText,
13 LicenseLink,
14 LicenseText,
15 MITLicenseLink,
16} from '../components/licenses';
17
18# Licenses for this site
19
20## Content
21
22Unless otherwise marked, content on this site is <CCBYLicenseLink /> licensed.
23
24The site uses the following marking scheme for content licenses:
25
26- <CCLicenseText>The Creative Commons icon</CCLicenseText> denotes content with a
27 [Creative Commons](https://creativecommons.org/) license. These are the license
28 applied for most open access scholarly literature.
29- <LicenseText>The license icon</LicenseText> denotes content with other [libre licenses](https://opendefinition.org/od/2.1/en/).
30- <ClosedAccessText>The lock icon</ClosedAccessText> denotes restricted content I
31 have the rights for to post but not to license for re-use. This includes material
32 kindly provided to me for posting by others and author drafts of papers published
33 in closed access journals or proceedings.
34
35You're in general free to re-use content with Creative Commons or other libre licenses as long as you abide by the terms of the linked license.
36However, re-using restricted content will need prior permission from the copyright holder.
37
38### Restricted content
39
40Restricted content on this site marked with the <ClosedAccessLink to="#content">lock icon</ClosedAccessLink> includes the following:
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/).
43
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.
45
46 Whenever allowed by the current copyright holder, I posted the _final draft_ of the paper to this site.
47 For papers published by ACM, I also created a link with the [Author-Izer](https://www.acm.org/publications/authors/acm-author-izer-service) to the _version of record_ of the paper. Such links only work if your browser sends my site as the [HTTP referer](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer) to ACM.
48
49- My [PhD thesis](pathname:///phd-thesis.pdf) and its [extended abstract](pathname:///phd-thesis-booklet.pdf) also incorporates content whose copyright was assigned to a publisher. I'm also required to add the following disclaimer:
50
51 > &ldquo;In reference to IEEE copyrighted material which is used with permission in this thesis, the IEEE does not endorse any of Budapest University of Technology and Economics&rsquo; products or services. Internal or personal use of this material is permitted. If interested in reprinting/republishing IEEE copyrighted material for advertising or promotional purposes or for creating new collective works for resale or redistribution, please go to http://www.ieee.org/publications_standards/publications/rights/rights_link.html to learn how to obtain a License from RightsLink. If applicable, University Microfilms and/or ProQuest Library, or the Archives of Canada may supply single copies of the dissertation.&rdquo;
52
53## Code
54
55Code for this site is available at https://git.marussy.com/blog/ under the <MITLicenseLink /> license.
56Files with [restricted content](#restricted-content) were replaced by placeholders or omitted entirely.
57
58I follow the [REUSE Specification – Version 3.0](https://reuse.software/spec/) to declare copyright and licensing for each individual file.
59In particular, files which contain _both code and content_ (e.g., content inside complex JSX components) have the [SPDX License identifier](https://spdx.org/ids) `MIT AND CC-BY-4.0` to signify that they are both <MITLicenseLink /> and <CCBYLicenseLink />.
60If you use only code or only content from such files, you only need to abide by the _corresponding license_ (<MITLicenseLink /> or <CCBYLicenseLink />, respectively).
61
62The site also uses the following third-party code available under libre licenses:
63
64- [Docusaurus](https://docusaurus.io/) static site generator, <MITLicenseLink />
65- [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>
67- [Simple Icons](https://simpleicons.org/), <CCLicenseLink to="https://creativecommons.org/publicdomain/zero/1.0/">CC0-1.0</CCLicenseLink>
diff --git a/src/theme/Footer/Copyright.jsx b/src/theme/Footer/Copyright.jsx
new file mode 100644
index 0000000..58afe0f
--- /dev/null
+++ b/src/theme/Footer/Copyright.jsx
@@ -0,0 +1,44 @@
1/*
2 * Copyright (c) Facebook, Inc. and its affiliates.
3 * Copyright (c) 2024 Kristóf Marussy <kristof@marussy.com>
4 *
5 * SPDX-License-Identifier: MIT
6 *
7 * This file was derived from
8 * https://github.com/facebook/docusaurus/blob/c745021b01a8b88d34e1d772278d7171ad8acdf5/packages/docusaurus-theme-classic/src/theme/Footer/Copyright/index.tsx
9 * via the `swizzle` mechanism of Docusaurus.
10 *
11 * It was modified to embed JSX content directly in the footer.
12 */
13
14import Link from '@docusaurus/Link';
15import React from 'react';
16
17import { CCLicenseLink, LicenseLink } from '@site/src/components/licenses';
18
19import styles from './Copyright.module.css';
20
21export default function FooterCopyright({ copyright }) {
22 return (
23 <div className="footer__copyright">
24 Most content on this site is{' '}
25 <CCLicenseLink
26 to="/license#content"
27 rel="license"
28 className={styles.link}
29 >
30 CC-BY-4.0
31 </CCLicenseLink>
32 . The{' '}
33 <Link to="https://git.marussy.com/blog/" className={styles.link}>
34 code for this site
35 </Link>{' '}
36 is{' '}
37 <LicenseLink to="/license#code" rel="license" className={styles.link}>
38 MIT
39 </LicenseLink>
40 .<br />
41 <span dangerouslySetInnerHTML={{ __html: copyright }} />
42 </div>
43 );
44}
diff --git a/src/theme/Footer/Copyright.module.css b/src/theme/Footer/Copyright.module.css
new file mode 100644
index 0000000..8bae599
--- /dev/null
+++ b/src/theme/Footer/Copyright.module.css
@@ -0,0 +1,15 @@
1/*
2 * SPDX-FileCopyrightText: 2024 Kristóf Marussy
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7.link {
8 --ifm-link-color: var(--ifm-footer-link-color);
9 --ifm-link-hover-color: var(--ifm-footer-link-hover-color);
10}
11
12[data-theme='dark'] .link {
13 /* Make links stand out from the text even in dark mode. */
14 --ifm-link-color: var(--ifm-color-emphasis-500);
15}
diff --git a/src/theme/NavbarItem/NavbarNavLink.jsx b/src/theme/NavbarItem/NavbarNavLink.jsx
index cb151ea..81de931 100644
--- a/src/theme/NavbarItem/NavbarNavLink.jsx
+++ b/src/theme/NavbarItem/NavbarNavLink.jsx
@@ -19,6 +19,7 @@ import isInternalUrl from '@docusaurus/isInternalUrl';
19import { isRegexpStringMatch } from '@docusaurus/theme-common'; 19import { isRegexpStringMatch } from '@docusaurus/theme-common';
20import IconExternalLink from '@theme/Icon/ExternalLink'; 20import IconExternalLink from '@theme/Icon/ExternalLink';
21import { useActiveSection } from '@site/src/components/ActiveSectionProvider'; 21import { useActiveSection } from '@site/src/components/ActiveSectionProvider';
22
22export default function NavbarNavLink({ 23export default function NavbarNavLink({
23 activeBasePath, 24 activeBasePath,
24 activeBaseRegex, 25 activeBaseRegex,
diff --git a/yarn.lock b/yarn.lock
index 53ea20b..94f4b2f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2057,6 +2057,18 @@ __metadata:
2057 languageName: node 2057 languageName: node
2058 linkType: hard 2058 linkType: hard
2059 2059
2060"@mdx-js/react@npm:^3.0.1":
2061 version: 3.0.1
2062 resolution: "@mdx-js/react@npm:3.0.1"
2063 dependencies:
2064 "@types/mdx": "npm:^2.0.0"
2065 peerDependencies:
2066 "@types/react": ">=16"
2067 react: ">=16"
2068 checksum: 10c0/d210d926ef488d39ad65f04d821936b668eadcdde3b6421e94ec4200ca7ad17f17d24c5cbc543882586af9f08b10e2eea715c728ce6277487945e05c5199f532
2069 languageName: node
2070 linkType: hard
2071
2060"@nodelib/fs.scandir@npm:2.1.5": 2072"@nodelib/fs.scandir@npm:2.1.5":
2061 version: 2.1.5 2073 version: 2.1.5
2062 resolution: "@nodelib/fs.scandir@npm:2.1.5" 2074 resolution: "@nodelib/fs.scandir@npm:2.1.5"
@@ -2791,6 +2803,15 @@ __metadata:
2791 languageName: node 2803 languageName: node
2792 linkType: hard 2804 linkType: hard
2793 2805
2806"@types/nlcst@npm:^1.0.0":
2807 version: 1.0.4
2808 resolution: "@types/nlcst@npm:1.0.4"
2809 dependencies:
2810 "@types/unist": "npm:^2"
2811 checksum: 10c0/27c60d3330a0f2f94b12f16b55947bf1e87ffdf63c80daa0b9e1eb28811df2051e43a1f6813a54b838b86e7dddced53ae53910354bb6645f130a3968518d5b38
2812 languageName: node
2813 linkType: hard
2814
2794"@types/node@npm:*, @types/node@npm:^20.11.28": 2815"@types/node@npm:*, @types/node@npm:^20.11.28":
2795 version: 20.11.28 2816 version: 20.11.28
2796 resolution: "@types/node@npm:20.11.28" 2817 resolution: "@types/node@npm:20.11.28"
@@ -2954,6 +2975,13 @@ __metadata:
2954 languageName: node 2975 languageName: node
2955 linkType: hard 2976 linkType: hard
2956 2977
2978"@types/unist@npm:^2":
2979 version: 2.0.10
2980 resolution: "@types/unist@npm:2.0.10"
2981 checksum: 10c0/5f247dc2229944355209ad5c8e83cfe29419fa7f0a6d557421b1985a1500444719cc9efcc42c652b55aab63c931813c88033e0202c1ac684bcd4829d66e44731
2982 languageName: node
2983 linkType: hard
2984
2957"@types/unist@npm:^2.0.0": 2985"@types/unist@npm:^2.0.0":
2958 version: 2.0.9 2986 version: 2.0.9
2959 resolution: "@types/unist@npm:2.0.9" 2987 resolution: "@types/unist@npm:2.0.9"
@@ -3423,6 +3451,13 @@ __metadata:
3423 languageName: node 3451 languageName: node
3424 linkType: hard 3452 linkType: hard
3425 3453
3454"array-iterate@npm:^2.0.0":
3455 version: 2.0.1
3456 resolution: "array-iterate@npm:2.0.1"
3457 checksum: 10c0/756c08334f95e290f03ab2141b034514af1311ef7b62f15b0f5ea6f8f3033ee9cc6a8f1c3e9ff4803d4d723cf992aa61460acf5fce884936972db966b1da287d
3458 languageName: node
3459 linkType: hard
3460
3426"array-union@npm:^2.1.0": 3461"array-union@npm:^2.1.0":
3427 version: 2.1.0 3462 version: 2.1.0
3428 resolution: "array-union@npm:2.1.0" 3463 resolution: "array-union@npm:2.1.0"
@@ -6484,6 +6519,13 @@ __metadata:
6484 languageName: node 6519 languageName: node
6485 linkType: hard 6520 linkType: hard
6486 6521
6522"is-buffer@npm:^2.0.0":
6523 version: 2.0.5
6524 resolution: "is-buffer@npm:2.0.5"
6525 checksum: 10c0/e603f6fced83cf94c53399cff3bda1a9f08e391b872b64a73793b0928be3e5f047f2bcece230edb7632eaea2acdbfcb56c23b33d8a20c820023b230f1485679a
6526 languageName: node
6527 linkType: hard
6528
6487"is-ci@npm:^3.0.1": 6529"is-ci@npm:^3.0.1":
6488 version: 3.0.1 6530 version: 3.0.1
6489 resolution: "is-ci@npm:3.0.1" 6531 resolution: "is-ci@npm:3.0.1"
@@ -7193,6 +7235,7 @@ __metadata:
7193 "@docusaurus/tsconfig": "npm:^3.1.1" 7235 "@docusaurus/tsconfig": "npm:^3.1.1"
7194 "@docusaurus/types": "npm:^3.1.1" 7236 "@docusaurus/types": "npm:^3.1.1"
7195 "@fontsource-variable/recursive": "npm:^5.0.17" 7237 "@fontsource-variable/recursive": "npm:^5.0.17"
7238 "@mdx-js/react": "npm:^3.0.1"
7196 "@phosphor-icons/react": "npm:2.0.15" 7239 "@phosphor-icons/react": "npm:2.0.15"
7197 "@swc/core": "npm:^1.4.8" 7240 "@swc/core": "npm:^1.4.8"
7198 "@types/babel__core": "npm:^7.20.5" 7241 "@types/babel__core": "npm:^7.20.5"
@@ -7203,6 +7246,7 @@ __metadata:
7203 prop-types: "npm:^15.8.1" 7246 prop-types: "npm:^15.8.1"
7204 react: "npm:^18.2.0" 7247 react: "npm:^18.2.0"
7205 react-dom: "npm:^18.2.0" 7248 react-dom: "npm:^18.2.0"
7249 remark-smartypants: "npm:^2.1.0"
7206 simple-icons: "npm:^11.8.0" 7250 simple-icons: "npm:^11.8.0"
7207 swc-loader: "npm:^0.2.6" 7251 swc-loader: "npm:^0.2.6"
7208 terser-webpack-plugin: "npm:^5.3.10" 7252 terser-webpack-plugin: "npm:^5.3.10"
@@ -8283,6 +8327,15 @@ __metadata:
8283 languageName: node 8327 languageName: node
8284 linkType: hard 8328 linkType: hard
8285 8329
8330"nlcst-to-string@npm:^3.0.0":
8331 version: 3.1.1
8332 resolution: "nlcst-to-string@npm:3.1.1"
8333 dependencies:
8334 "@types/nlcst": "npm:^1.0.0"
8335 checksum: 10c0/949f4dd3843ddc3e0ea34581ce72157ba2ad7f08c3a845249423c99c6884282f9d89cf2d0abed732e41a6aaf7210d676f31dc02e9f51f173f0fe2f3edc9936ce
8336 languageName: node
8337 linkType: hard
8338
8286"no-case@npm:^3.0.4": 8339"no-case@npm:^3.0.4":
8287 version: 3.0.4 8340 version: 3.0.4
8288 resolution: "no-case@npm:3.0.4" 8341 resolution: "no-case@npm:3.0.4"
@@ -8656,6 +8709,17 @@ __metadata:
8656 languageName: node 8709 languageName: node
8657 linkType: hard 8710 linkType: hard
8658 8711
8712"parse-latin@npm:^5.0.0":
8713 version: 5.0.1
8714 resolution: "parse-latin@npm:5.0.1"
8715 dependencies:
8716 nlcst-to-string: "npm:^3.0.0"
8717 unist-util-modify-children: "npm:^3.0.0"
8718 unist-util-visit-children: "npm:^2.0.0"
8719 checksum: 10c0/7da3059ffd71217233c0a65be75696b16297aa7eda4a5dd5a2c96d32738002afd81ce084821ab8f8e3e2724b719d2124ae0fff8383000989b2fda08dec8454fe
8720 languageName: node
8721 linkType: hard
8722
8659"parse-numeric-range@npm:^1.3.0": 8723"parse-numeric-range@npm:^1.3.0":
8660 version: 1.3.0 8724 version: 1.3.0
8661 resolution: "parse-numeric-range@npm:1.3.0" 8725 resolution: "parse-numeric-range@npm:1.3.0"
@@ -9874,6 +9938,17 @@ __metadata:
9874 languageName: node 9938 languageName: node
9875 linkType: hard 9939 linkType: hard
9876 9940
9941"remark-smartypants@npm:^2.1.0":
9942 version: 2.1.0
9943 resolution: "remark-smartypants@npm:2.1.0"
9944 dependencies:
9945 retext: "npm:^8.1.0"
9946 retext-smartypants: "npm:^5.2.0"
9947 unist-util-visit: "npm:^5.0.0"
9948 checksum: 10c0/a8f306de1d33c55b99dd0521de139d9a986770de9930f49c221249a38c1931a6bf25412b2f789c43cfbbe1cdcafd045096255d2454c6ab5ea9c9efcf6a88bdb5
9949 languageName: node
9950 linkType: hard
9951
9877"remark-stringify@npm:^11.0.0": 9952"remark-stringify@npm:^11.0.0":
9878 version: 11.0.0 9953 version: 11.0.0
9879 resolution: "remark-stringify@npm:11.0.0" 9954 resolution: "remark-stringify@npm:11.0.0"
@@ -9975,6 +10050,53 @@ __metadata:
9975 languageName: node 10050 languageName: node
9976 linkType: hard 10051 linkType: hard
9977 10052
10053"retext-latin@npm:^3.0.0":
10054 version: 3.1.0
10055 resolution: "retext-latin@npm:3.1.0"
10056 dependencies:
10057 "@types/nlcst": "npm:^1.0.0"
10058 parse-latin: "npm:^5.0.0"
10059 unherit: "npm:^3.0.0"
10060 unified: "npm:^10.0.0"
10061 checksum: 10c0/c4cf0798ebdb5d9fa2862ced646ac3361969be3e76a2925cfb39e5fd92b687ff2b1fc2b0140309d0c7e712e80b75f362867207d3487892b3d1710ed61920157e
10062 languageName: node
10063 linkType: hard
10064
10065"retext-smartypants@npm:^5.2.0":
10066 version: 5.2.0
10067 resolution: "retext-smartypants@npm:5.2.0"
10068 dependencies:
10069 "@types/nlcst": "npm:^1.0.0"
10070 nlcst-to-string: "npm:^3.0.0"
10071 unified: "npm:^10.0.0"
10072 unist-util-visit: "npm:^4.0.0"
10073 checksum: 10c0/446e7649f3886e79aa5ed3f625e4f2cd2001b592123b576e358284f4ac5835f17bc851220b64938e08e854095c77cbdb184a850ae416493284f423c5d200a9ed
10074 languageName: node
10075 linkType: hard
10076
10077"retext-stringify@npm:^3.0.0":
10078 version: 3.1.0
10079 resolution: "retext-stringify@npm:3.1.0"
10080 dependencies:
10081 "@types/nlcst": "npm:^1.0.0"
10082 nlcst-to-string: "npm:^3.0.0"
10083 unified: "npm:^10.0.0"
10084 checksum: 10c0/3bd8ff275f37b917fbae412a393d0a2fbff87f6c5d5dd387e7c949a627a33dddb88ea803e965cc943b3bb404aedaa931d08072b495941e0fd5f54c2757419be2
10085 languageName: node
10086 linkType: hard
10087
10088"retext@npm:^8.1.0":
10089 version: 8.1.0
10090 resolution: "retext@npm:8.1.0"
10091 dependencies:
10092 "@types/nlcst": "npm:^1.0.0"
10093 retext-latin: "npm:^3.0.0"
10094 retext-stringify: "npm:^3.0.0"
10095 unified: "npm:^10.0.0"
10096 checksum: 10c0/aec880d16feeb47b2d21dd639c5f2717424a4d6b2f4fe21521159572f610caa02f376a75fcc8d35fa6ac91f2dc44f76a7da2be4e1f41976f707cbdf48bd4e63f
10097 languageName: node
10098 linkType: hard
10099
9978"retry@npm:^0.12.0": 10100"retry@npm:^0.12.0":
9979 version: 0.12.0 10101 version: 0.12.0
9980 resolution: "retry@npm:0.12.0" 10102 resolution: "retry@npm:0.12.0"
@@ -10971,6 +11093,13 @@ __metadata:
10971 languageName: node 11093 languageName: node
10972 linkType: hard 11094 linkType: hard
10973 11095
11096"unherit@npm:^3.0.0":
11097 version: 3.0.1
11098 resolution: "unherit@npm:3.0.1"
11099 checksum: 10c0/cc08d9fa55e380604bd2991d75f1ae0f8e0a3cca140ae2cc88a9faaec6f844c7affd3cffb6afc4508c07940582ce4beda8df8ddc8161cef1dbcec5c56bc04077
11100 languageName: node
11101 linkType: hard
11102
10974"unicode-canonical-property-names-ecmascript@npm:^2.0.0": 11103"unicode-canonical-property-names-ecmascript@npm:^2.0.0":
10975 version: 2.0.0 11104 version: 2.0.0
10976 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" 11105 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0"
@@ -11009,6 +11138,21 @@ __metadata:
11009 languageName: node 11138 languageName: node
11010 linkType: hard 11139 linkType: hard
11011 11140
11141"unified@npm:^10.0.0":
11142 version: 10.1.2
11143 resolution: "unified@npm:10.1.2"
11144 dependencies:
11145 "@types/unist": "npm:^2.0.0"
11146 bail: "npm:^2.0.0"
11147 extend: "npm:^3.0.0"
11148 is-buffer: "npm:^2.0.0"
11149 is-plain-obj: "npm:^4.0.0"
11150 trough: "npm:^2.0.0"
11151 vfile: "npm:^5.0.0"
11152 checksum: 10c0/da9195e3375a74ab861a65e1d7b0454225d17a61646697911eb6b3e97de41091930ed3d167eb11881d4097c51deac407091d39ddd1ee8bf1fde3f946844a17a7
11153 languageName: node
11154 linkType: hard
11155
11012"unified@npm:^11.0.0, unified@npm:^11.0.3": 11156"unified@npm:^11.0.0, unified@npm:^11.0.3":
11013 version: 11.0.4 11157 version: 11.0.4
11014 resolution: "unified@npm:11.0.4" 11158 resolution: "unified@npm:11.0.4"
@@ -11051,6 +11195,15 @@ __metadata:
11051 languageName: node 11195 languageName: node
11052 linkType: hard 11196 linkType: hard
11053 11197
11198"unist-util-is@npm:^5.0.0":
11199 version: 5.2.1
11200 resolution: "unist-util-is@npm:5.2.1"
11201 dependencies:
11202 "@types/unist": "npm:^2.0.0"
11203 checksum: 10c0/a2376910b832bb10653d2167c3cd85b3610a5fd53f5169834c08b3c3a720fae9043d75ad32d727eedfc611491966c26a9501d428ec62467edc17f270feb5410b
11204 languageName: node
11205 linkType: hard
11206
11054"unist-util-is@npm:^6.0.0": 11207"unist-util-is@npm:^6.0.0":
11055 version: 6.0.0 11208 version: 6.0.0
11056 resolution: "unist-util-is@npm:6.0.0" 11209 resolution: "unist-util-is@npm:6.0.0"
@@ -11060,6 +11213,16 @@ __metadata:
11060 languageName: node 11213 languageName: node
11061 linkType: hard 11214 linkType: hard
11062 11215
11216"unist-util-modify-children@npm:^3.0.0":
11217 version: 3.1.1
11218 resolution: "unist-util-modify-children@npm:3.1.1"
11219 dependencies:
11220 "@types/unist": "npm:^2.0.0"
11221 array-iterate: "npm:^2.0.0"
11222 checksum: 10c0/8a74fb4b48f7442680c32ab8562c443f0366ae0e2c8b3c6ad2323a72c36447dfc1df2eeaebf5457efeb682cff64de4fb09655b49aa11d0915719f50dba349730
11223 languageName: node
11224 linkType: hard
11225
11063"unist-util-position-from-estree@npm:^2.0.0": 11226"unist-util-position-from-estree@npm:^2.0.0":
11064 version: 2.0.0 11227 version: 2.0.0
11065 resolution: "unist-util-position-from-estree@npm:2.0.0" 11228 resolution: "unist-util-position-from-estree@npm:2.0.0"
@@ -11088,6 +11251,15 @@ __metadata:
11088 languageName: node 11251 languageName: node
11089 linkType: hard 11252 linkType: hard
11090 11253
11254"unist-util-stringify-position@npm:^3.0.0":
11255 version: 3.0.3
11256 resolution: "unist-util-stringify-position@npm:3.0.3"
11257 dependencies:
11258 "@types/unist": "npm:^2.0.0"
11259 checksum: 10c0/14550027825230528f6437dad7f2579a841780318569851291be6c8a970bae6f65a7feb24dabbcfce0e5e68cacae85bf12cbda3f360f7c873b4db602bdf7bb21
11260 languageName: node
11261 linkType: hard
11262
11091"unist-util-stringify-position@npm:^4.0.0": 11263"unist-util-stringify-position@npm:^4.0.0":
11092 version: 4.0.0 11264 version: 4.0.0
11093 resolution: "unist-util-stringify-position@npm:4.0.0" 11265 resolution: "unist-util-stringify-position@npm:4.0.0"
@@ -11097,6 +11269,25 @@ __metadata:
11097 languageName: node 11269 languageName: node
11098 linkType: hard 11270 linkType: hard
11099 11271
11272"unist-util-visit-children@npm:^2.0.0":
11273 version: 2.0.2
11274 resolution: "unist-util-visit-children@npm:2.0.2"
11275 dependencies:
11276 "@types/unist": "npm:^2.0.0"
11277 checksum: 10c0/d43d80f35b6845a37d6a52ff8b9065401e779c30ba7323e83fb54b980007483027db955ae6a34904754b8b1b5e7d764d921546251b85096203ca5116c1b05596
11278 languageName: node
11279 linkType: hard
11280
11281"unist-util-visit-parents@npm:^5.1.1":
11282 version: 5.1.3
11283 resolution: "unist-util-visit-parents@npm:5.1.3"
11284 dependencies:
11285 "@types/unist": "npm:^2.0.0"
11286 unist-util-is: "npm:^5.0.0"
11287 checksum: 10c0/f6829bfd8f2eddf63a32e2c302cd50978ef0c194b792c6fe60c2b71dfd7232415a3c5941903972543e9d34e6a8ea69dee9ccd95811f4a795495ed2ae855d28d0
11288 languageName: node
11289 linkType: hard
11290
11100"unist-util-visit-parents@npm:^6.0.0": 11291"unist-util-visit-parents@npm:^6.0.0":
11101 version: 6.0.1 11292 version: 6.0.1
11102 resolution: "unist-util-visit-parents@npm:6.0.1" 11293 resolution: "unist-util-visit-parents@npm:6.0.1"
@@ -11107,6 +11298,17 @@ __metadata:
11107 languageName: node 11298 languageName: node
11108 linkType: hard 11299 linkType: hard
11109 11300
11301"unist-util-visit@npm:^4.0.0":
11302 version: 4.1.2
11303 resolution: "unist-util-visit@npm:4.1.2"
11304 dependencies:
11305 "@types/unist": "npm:^2.0.0"
11306 unist-util-is: "npm:^5.0.0"
11307 unist-util-visit-parents: "npm:^5.1.1"
11308 checksum: 10c0/56a1f49a4d8e321e75b3c7821d540a45165a031dd06324bb0e8c75e7737bc8d73bdddbf0b0ca82000f9708a4c36861c6ebe88d01f7cf00e925f5d75f13a3a017
11309 languageName: node
11310 linkType: hard
11311
11110"unist-util-visit@npm:^5.0.0": 11312"unist-util-visit@npm:^5.0.0":
11111 version: 5.0.0 11313 version: 5.0.0
11112 resolution: "unist-util-visit@npm:5.0.0" 11314 resolution: "unist-util-visit@npm:5.0.0"
@@ -11255,6 +11457,16 @@ __metadata:
11255 languageName: node 11457 languageName: node
11256 linkType: hard 11458 linkType: hard
11257 11459
11460"vfile-message@npm:^3.0.0":
11461 version: 3.1.4
11462 resolution: "vfile-message@npm:3.1.4"
11463 dependencies:
11464 "@types/unist": "npm:^2.0.0"
11465 unist-util-stringify-position: "npm:^3.0.0"
11466 checksum: 10c0/c4ccf9c0ced92d657846fd067fefcf91c5832cdbe2ecc431bb67886e8c959bf7fc05a9dbbca5551bc34c9c87a0a73854b4249f65c64ddfebc4d59ea24a18b996
11467 languageName: node
11468 linkType: hard
11469
11258"vfile-message@npm:^4.0.0": 11470"vfile-message@npm:^4.0.0":
11259 version: 4.0.2 11471 version: 4.0.2
11260 resolution: "vfile-message@npm:4.0.2" 11472 resolution: "vfile-message@npm:4.0.2"
@@ -11265,6 +11477,18 @@ __metadata:
11265 languageName: node 11477 languageName: node
11266 linkType: hard 11478 linkType: hard
11267 11479
11480"vfile@npm:^5.0.0":
11481 version: 5.3.7
11482 resolution: "vfile@npm:5.3.7"
11483 dependencies:
11484 "@types/unist": "npm:^2.0.0"
11485 is-buffer: "npm:^2.0.0"
11486 unist-util-stringify-position: "npm:^3.0.0"
11487 vfile-message: "npm:^3.0.0"
11488 checksum: 10c0/c36bd4c3f16ec0c6cbad0711ca99200316bbf849d6b07aa4cb5d9062cc18ae89249fe62af9521926e9659c0e6bc5c2c1da0fe26b41fb71e757438297e1a41da4
11489 languageName: node
11490 linkType: hard
11491
11268"vfile@npm:^6.0.0, vfile@npm:^6.0.1": 11492"vfile@npm:^6.0.0, vfile@npm:^6.0.1":
11269 version: 6.0.1 11493 version: 6.0.1
11270 resolution: "vfile@npm:6.0.1" 11494 resolution: "vfile@npm:6.0.1"