diff --git a/package-lock.json b/package-lock.json
index cc6e52546..a82a933c1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,6 +16,8 @@
"@fortawesome/free-brands-svg-icons": "^6.5.1",
"@fortawesome/free-regular-svg-icons": "^6.5.1",
"@mdx-js/react": "^3.0.0",
+ "@mui/material": "^6.1.5",
+ "@mui/styles": "^6.1.5",
"autoprefixer": "^10.4.19",
"canvas": "^2.11.2",
"clsx": "^2.0.0",
@@ -33,8 +35,9 @@
"react-bootstrap": "^2.10.4",
"react-dom": "^18.0.0",
"react-markdown": "^9.0.1",
+ "react-router": "^5.3.4",
+ "react-router-dom": "^5.3.4",
"react-slick": "^0.30.2",
- "reactjs-popup": "^2.0.6",
"request": "^2.88.2",
"rss": "^1.2.2",
"sharp": "^0.34.2",
@@ -3901,16 +3904,166 @@
"node": ">=18.0"
}
},
- "node_modules/@emnapi/runtime": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz",
- "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==",
- "license": "MIT",
+ "node_modules/@emotion/babel-plugin": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz",
+ "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/runtime": "^7.18.3",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/serialize": "^1.2.0",
+ "babel-plugin-macros": "^3.1.0",
+ "convert-source-map": "^1.5.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-root": "^1.1.0",
+ "source-map": "^0.5.7",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@emotion/cache": {
+ "version": "11.13.1",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz",
+ "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==",
+ "dependencies": {
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/sheet": "^1.4.0",
+ "@emotion/utils": "^1.4.0",
+ "@emotion/weak-memoize": "^0.4.0",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/hash": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
+ "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz",
+ "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@emotion/memoize": "^0.9.0"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="
+ },
+ "node_modules/@emotion/react": {
+ "version": "11.13.3",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz",
+ "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.12.0",
+ "@emotion/cache": "^11.13.0",
+ "@emotion/serialize": "^1.3.1",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
+ "@emotion/utils": "^1.4.0",
+ "@emotion/weak-memoize": "^0.4.0",
+ "hoist-non-react-statics": "^3.3.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/serialize": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.2.tgz",
+ "integrity": "sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==",
+ "dependencies": {
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/unitless": "^0.10.0",
+ "@emotion/utils": "^1.4.1",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@emotion/sheet": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz",
+ "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg=="
+ },
+ "node_modules/@emotion/styled": {
+ "version": "11.13.0",
+ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz",
+ "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==",
"optional": true,
+ "peer": true,
"dependencies": {
- "tslib": "^2.4.0"
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.12.0",
+ "@emotion/is-prop-valid": "^1.3.0",
+ "@emotion/serialize": "^1.3.0",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
+ "@emotion/utils": "^1.4.0"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0-rc.0",
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
+ "node_modules/@emotion/unitless": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
+ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="
+ },
+ "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz",
+ "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==",
+ "optional": true,
+ "peer": true,
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@emotion/utils": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.1.tgz",
+ "integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA=="
+ },
+ "node_modules/@emotion/weak-memoize": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
+ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg=="
+ },
"node_modules/@formspree/core": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@formspree/core/-/core-3.0.4.tgz",
@@ -3983,146 +4136,6 @@
"@hapi/hoek": "^9.0.0"
}
},
- "node_modules/@img/sharp-darwin-arm64": {
- "version": "0.34.2",
- "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.2.tgz",
- "integrity": "sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-darwin-arm64": "1.1.0"
- }
- },
- "node_modules/@img/sharp-darwin-x64": {
- "version": "0.34.2",
- "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.2.tgz",
- "integrity": "sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==",
- "cpu": [
- "x64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-darwin-x64": "1.1.0"
- }
- },
- "node_modules/@img/sharp-libvips-darwin-arm64": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz",
- "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==",
- "cpu": [
- "arm64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "darwin"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-libvips-darwin-x64": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz",
- "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==",
- "cpu": [
- "x64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "darwin"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-libvips-linux-arm": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz",
- "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==",
- "cpu": [
- "arm"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-libvips-linux-arm64": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz",
- "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==",
- "cpu": [
- "arm64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-libvips-linux-ppc64": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz",
- "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==",
- "cpu": [
- "ppc64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-libvips-linux-s390x": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz",
- "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==",
- "cpu": [
- "s390x"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
"node_modules/@img/sharp-libvips-linux-x64": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz",
@@ -4139,22 +4152,6 @@
"url": "https://opencollective.com/libvips"
}
},
- "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz",
- "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==",
- "cpu": [
- "arm64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
"node_modules/@img/sharp-libvips-linuxmusl-x64": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz",
@@ -4171,72 +4168,6 @@
"url": "https://opencollective.com/libvips"
}
},
- "node_modules/@img/sharp-linux-arm": {
- "version": "0.34.2",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.2.tgz",
- "integrity": "sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==",
- "cpu": [
- "arm"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-arm": "1.1.0"
- }
- },
- "node_modules/@img/sharp-linux-arm64": {
- "version": "0.34.2",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.2.tgz",
- "integrity": "sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-arm64": "1.1.0"
- }
- },
- "node_modules/@img/sharp-linux-s390x": {
- "version": "0.34.2",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.2.tgz",
- "integrity": "sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==",
- "cpu": [
- "s390x"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-s390x": "1.1.0"
- }
- },
"node_modules/@img/sharp-linux-x64": {
"version": "0.34.2",
"resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.2.tgz",
@@ -4259,28 +4190,6 @@
"@img/sharp-libvips-linux-x64": "1.1.0"
}
},
- "node_modules/@img/sharp-linuxmusl-arm64": {
- "version": "0.34.2",
- "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.2.tgz",
- "integrity": "sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linuxmusl-arm64": "1.1.0"
- }
- },
"node_modules/@img/sharp-linuxmusl-x64": {
"version": "0.34.2",
"resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.2.tgz",
@@ -4303,82 +4212,6 @@
"@img/sharp-libvips-linuxmusl-x64": "1.1.0"
}
},
- "node_modules/@img/sharp-wasm32": {
- "version": "0.34.2",
- "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.2.tgz",
- "integrity": "sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==",
- "cpu": [
- "wasm32"
- ],
- "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/runtime": "^1.4.3"
- },
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-win32-arm64": {
- "version": "0.34.2",
- "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.2.tgz",
- "integrity": "sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0 AND LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-win32-ia32": {
- "version": "0.34.2",
- "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.2.tgz",
- "integrity": "sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==",
- "cpu": [
- "ia32"
- ],
- "license": "Apache-2.0 AND LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-win32-x64": {
- "version": "0.34.2",
- "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.2.tgz",
- "integrity": "sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==",
- "cpu": [
- "x64"
- ],
- "license": "Apache-2.0 AND LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
"node_modules/@jest/schemas": {
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
@@ -4964,6 +4797,253 @@
"react": ">=16"
}
},
+ "node_modules/@mui/core-downloads-tracker": {
+ "version": "6.1.5",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.5.tgz",
+ "integrity": "sha512-3J96098GrC95XsLw/TpGNMxhUOnoG9NZ/17Pfk1CrJj+4rcuolsF2RdF3XAFTu/3a/A+5ouxlSIykzYz6Ee87g==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ }
+ },
+ "node_modules/@mui/material": {
+ "version": "6.1.5",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.5.tgz",
+ "integrity": "sha512-rhaxC7LnlOG8zIVYv7BycNbWkC5dlm9A/tcDUp0CuwA7Zf9B9JP6M3rr50cNKxI7Z0GIUesAT86ceVm44quwnQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.25.7",
+ "@mui/core-downloads-tracker": "^6.1.5",
+ "@mui/system": "^6.1.5",
+ "@mui/types": "^7.2.18",
+ "@mui/utils": "^6.1.5",
+ "@popperjs/core": "^2.11.8",
+ "@types/react-transition-group": "^4.4.11",
+ "clsx": "^2.1.1",
+ "csstype": "^3.1.3",
+ "prop-types": "^15.8.1",
+ "react-is": "^18.3.1",
+ "react-transition-group": "^4.4.5"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.5.0",
+ "@emotion/styled": "^11.3.0",
+ "@mui/material-pigment-css": "^6.1.5",
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ },
+ "@mui/material-pigment-css": {
+ "optional": true
+ },
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/material/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
+ },
+ "node_modules/@mui/private-theming": {
+ "version": "6.1.5",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.5.tgz",
+ "integrity": "sha512-FJqweqEXk0KdtTho9C2h6JEKXsOT7MAVH2Uj3N5oIqs6YKxnwBn2/zL2QuYYEtj5OJ87rEUnCfFic6ldClvzJw==",
+ "dependencies": {
+ "@babel/runtime": "^7.25.7",
+ "@mui/utils": "^6.1.5",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/styled-engine": {
+ "version": "6.1.5",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.5.tgz",
+ "integrity": "sha512-tiyWzMkHeWlOoE6AqomWvYvdml8Nv5k5T+LDwOiwHEawx8P9Lyja6ZwWPU6xljwPXYYPT2KBp1XvMly7dsK46A==",
+ "dependencies": {
+ "@babel/runtime": "^7.25.7",
+ "@emotion/cache": "^11.13.1",
+ "@emotion/serialize": "^1.3.2",
+ "@emotion/sheet": "^1.4.0",
+ "csstype": "^3.1.3",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.4.1",
+ "@emotion/styled": "^11.3.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/styles": {
+ "version": "6.1.5",
+ "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-6.1.5.tgz",
+ "integrity": "sha512-AhA/zgaXVg32GsNAUrt0Ojqjet7cVzQ51x4DVMaAA/ohtTh3EEyOEQZCMxhGpxJRRM/ya6fk6xiKd9xSNjr9mA==",
+ "dependencies": {
+ "@babel/runtime": "^7.25.7",
+ "@emotion/hash": "^0.9.2",
+ "@mui/private-theming": "^6.1.5",
+ "@mui/types": "^7.2.18",
+ "@mui/utils": "^6.1.5",
+ "clsx": "^2.1.1",
+ "csstype": "^3.1.3",
+ "hoist-non-react-statics": "^3.3.2",
+ "jss": "^10.10.0",
+ "jss-plugin-camel-case": "^10.10.0",
+ "jss-plugin-default-unit": "^10.10.0",
+ "jss-plugin-global": "^10.10.0",
+ "jss-plugin-nested": "^10.10.0",
+ "jss-plugin-props-sort": "^10.10.0",
+ "jss-plugin-rule-value-function": "^10.10.0",
+ "jss-plugin-vendor-prefixer": "^10.10.0",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/system": {
+ "version": "6.1.5",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.5.tgz",
+ "integrity": "sha512-vPM9ocQ8qquRDByTG3XF/wfYTL7IWL/20EiiKqByLDps8wOmbrDG9rVznSE3ZbcjFCFfMRMhtxvN92bwe/63SA==",
+ "dependencies": {
+ "@babel/runtime": "^7.25.7",
+ "@mui/private-theming": "^6.1.5",
+ "@mui/styled-engine": "^6.1.5",
+ "@mui/types": "^7.2.18",
+ "@mui/utils": "^6.1.5",
+ "clsx": "^2.1.1",
+ "csstype": "^3.1.3",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.5.0",
+ "@emotion/styled": "^11.3.0",
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ },
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/types": {
+ "version": "7.2.18",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.18.tgz",
+ "integrity": "sha512-uvK9dWeyCJl/3ocVnTOS6nlji/Knj8/tVqVX03UVTpdmTJYu/s4jtDd9Kvv0nRGE0CUSNW1UYAci7PYypjealg==",
+ "peerDependencies": {
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/utils": {
+ "version": "6.1.5",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.5.tgz",
+ "integrity": "sha512-vp2WfNDY+IbKUIGg+eqX1Ry4t/BilMjzp6p9xO1rfqpYjH1mj8coQxxDfKxcQLzBQkmBJjymjoGOak5VUYwXug==",
+ "dependencies": {
+ "@babel/runtime": "^7.25.7",
+ "@mui/types": "^7.2.18",
+ "@types/prop-types": "^15.7.13",
+ "clsx": "^2.1.1",
+ "prop-types": "^15.8.1",
+ "react-is": "^18.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/utils/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -5729,6 +5809,14 @@
"@types/node": "*"
}
},
+ "node_modules/@types/parse-json": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
+ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true
+ },
"node_modules/@types/prismjs": {
"version": "1.26.5",
"resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz",
@@ -6543,6 +6631,39 @@
"object.assign": "^4.1.0"
}
},
+ "node_modules/babel-plugin-macros": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
+ "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "cosmiconfig": "^7.0.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/babel-plugin-macros/node_modules/cosmiconfig": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+ "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/babel-plugin-polyfill-corejs2": {
"version": "0.4.13",
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz",
@@ -8032,6 +8153,15 @@
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
}
},
+ "node_modules/css-vendor": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz",
+ "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.8.3",
+ "is-in-browser": "^1.0.2"
+ }
+ },
"node_modules/css-what": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
@@ -9435,6 +9565,13 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
+ "optional": true,
+ "peer": true
+ },
"node_modules/find-up": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
@@ -10642,6 +10779,11 @@
"node": ">=10.17.0"
}
},
+ "node_modules/hyphenate-style-name": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz",
+ "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw=="
+ },
"node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -10976,6 +11118,11 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/is-in-browser": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz",
+ "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g=="
+ },
"node_modules/is-installed-globally": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
@@ -11354,6 +11501,88 @@
"node": ">=0.6.0"
}
},
+ "node_modules/jss": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz",
+ "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "csstype": "^3.0.2",
+ "is-in-browser": "^1.1.3",
+ "tiny-warning": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/jss"
+ }
+ },
+ "node_modules/jss-plugin-camel-case": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz",
+ "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "hyphenate-style-name": "^1.0.3",
+ "jss": "10.10.0"
+ }
+ },
+ "node_modules/jss-plugin-default-unit": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz",
+ "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "jss": "10.10.0"
+ }
+ },
+ "node_modules/jss-plugin-global": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz",
+ "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "jss": "10.10.0"
+ }
+ },
+ "node_modules/jss-plugin-nested": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz",
+ "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "jss": "10.10.0",
+ "tiny-warning": "^1.0.2"
+ }
+ },
+ "node_modules/jss-plugin-props-sort": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz",
+ "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "jss": "10.10.0"
+ }
+ },
+ "node_modules/jss-plugin-rule-value-function": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz",
+ "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "jss": "10.10.0",
+ "tiny-warning": "^1.0.2"
+ }
+ },
+ "node_modules/jss-plugin-vendor-prefixer": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz",
+ "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==",
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "css-vendor": "^2.0.8",
+ "jss": "10.10.0"
+ }
+ },
"node_modules/keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -16913,19 +17142,6 @@
"react-dom": ">=16.6.0"
}
},
- "node_modules/reactjs-popup": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-2.0.6.tgz",
- "integrity": "sha512-A+tt+x9wdgZiZjv0e2WzYLD3IfFwJALaRaqwrCSXGjo0iQdsry/EtBEbQXRSmQs7cHmOi5eytCiSlOm8k4C+dg==",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "react": ">=16",
- "react-dom": ">=16"
- }
- },
"node_modules/readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
@@ -18760,6 +18976,11 @@
"postcss": "^8.4.31"
}
},
+ "node_modules/stylis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
+ },
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -20241,6 +20462,17 @@
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"license": "ISC"
},
+ "node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "license": "ISC",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/yocto-queue": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz",
diff --git a/package.json b/package.json
index f8b871a20..3a76ddafa 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,8 @@
"@fortawesome/free-brands-svg-icons": "^6.5.1",
"@fortawesome/free-regular-svg-icons": "^6.5.1",
"@mdx-js/react": "^3.0.0",
+ "@mui/material": "^6.1.5",
+ "@mui/styles": "^6.1.5",
"autoprefixer": "^10.4.19",
"canvas": "^2.11.2",
"clsx": "^2.0.0",
@@ -47,8 +49,9 @@
"react-bootstrap": "^2.10.4",
"react-dom": "^18.0.0",
"react-markdown": "^9.0.1",
+ "react-router": "^5.3.4",
+ "react-router-dom": "^5.3.4",
"react-slick": "^0.30.2",
- "reactjs-popup": "^2.0.6",
"request": "^2.88.2",
"rss": "^1.2.2",
"sharp": "^0.34.2",
diff --git a/src/components/about/LargePortraitCard.tsx b/src/components/about/LargePortraitCard.tsx
index 1e952ecab..0ad6cb712 100644
--- a/src/components/about/LargePortraitCard.tsx
+++ b/src/components/about/LargePortraitCard.tsx
@@ -6,17 +6,28 @@ import React from "react";
import Avatar from "./Avatar";
export function Distinction({ person }) {
- if (person.distinctionTitle.length !== 0) {
- return person.distinctionTitle.map((distinction, index) => (
-
-
-
- {distinction}
-
-
- ));
- } else return
;
+ const HasPersonDistinction = person.distinctionTitle.length !== 0;
+
+ return (
+
+ {HasPersonDistinction ? (
+
+ {person.distinctionTitle.map((distinction, index) => (
+
+
+
+
+ {distinction}
+
+
+
+ ))}
+
+ ) : null}
+
+ );
}
+
export default function LargePortraitCard({ person }) {
return (
diff --git a/src/components/about/LargePortraitCardPage.tsx b/src/components/about/LargePortraitCardPage.tsx
new file mode 100644
index 000000000..234340813
--- /dev/null
+++ b/src/components/about/LargePortraitCardPage.tsx
@@ -0,0 +1,80 @@
+import React from 'react';
+import Layout from '@theme/Layout';
+import { useHistory, useLocation } from '@docusaurus/router';
+import { useEffect } from 'react';
+import { Route } from 'react-router-dom';
+import { About } from '@site/src/components/about'
+import LargePortraitCard from '@site/src/components/about/LargePortraitCard';
+import { getTeamByPageName } from '@site/src/components/about';
+import styles from "@site/src/components/about/styles.module.css";
+
+export default function LargePortraitCardPage() {
+ const location = useLocation();
+ const history = useHistory();
+
+ useEffect(() => {
+ if (location.state?.fromAbout) {
+ window.scrollTo({ top: location.state.scrollY ?? 0, behavior: 'auto' });
+ }
+ }, []);
+
+ const handleOverlayClick = () => {
+ const scrollY = location.state?.scrollY;
+ setTimeout(() => {
+ if (scrollY !== undefined) {
+ window.scrollTo({ top: scrollY, behavior: 'auto' });
+ }
+ }, 0);
+ history.replace('/about');
+ };
+
+ const handleClose = () => {
+ const scrollY = location.state?.scrollY;
+ if (location.state?.fromAbout) {
+ history.replace('/about');
+
+ setTimeout(() => {
+ if (scrollY !== undefined) {
+ window.scrollTo({ top: scrollY, behavior: 'auto' });
+ }
+ }, 0);
+ } else {
+ history.goBack();
+ }
+ }
+ return (
+
+
+ {
+ const { pageName } = match.params; /* extract the dynamic part from the url i.e. the pageName*/
+ const teamMembers = getTeamByPageName(pageName);
+ const person = teamMembers.find((person) => person.pageName== pageName);
+ if (!person) return null;
+
+ return (
+
+
e.stopPropagation()}
+ >
+
+
+
+
+ );
+ }}
+ />
+
+ )
+}
+
diff --git a/src/components/about/SmallPortraitCard.tsx b/src/components/about/SmallPortraitCard.tsx
index 947af9200..55ffb31a0 100644
--- a/src/components/about/SmallPortraitCard.tsx
+++ b/src/components/about/SmallPortraitCard.tsx
@@ -1,113 +1,42 @@
import styles from "./styles.module.css";
-import Popup from "reactjs-popup";
-import SocialMediaContacts from "./SocialMediaContacts";
-import { useRef, useState } from "react";
-import LargePortraitCard from "./LargePortraitCard";
+import { useHistory } from "@docusaurus/router";
import Avatar from "./Avatar";
-const contentStyle = {
- background: "white",
- borderRadius: "10px",
-};
+export function SmallPortraitCard({ person }) {
+ const history = useHistory();
-const overlayStyle = {
- backgroundColor: "var(--ifm-background-color-popup-overlay)",
- opacity: "0.4",
- width: "100%",
- height: "100%",
-};
-
-function getCenterOfViewport() {
- let horizontalCenter = Math.floor(window.innerWidth / 2);
- let verticalCenter = Math.floor(window.innerHeight / 2);
- return [horizontalCenter, verticalCenter];
-}
-
-function calculateOffsets(elementRef) {
- const rect = elementRef.current.getBoundingClientRect();
- const [xViewportCenter, yViewportCenter] = getCenterOfViewport();
- const [xCardCenter, yCardCenter] = [
- rect.left + rect.width / 2,
- rect.top + rect.height / 2,
- ];
- const offsets = [
- xViewportCenter - xCardCenter,
- yViewportCenter - yCardCenter,
- ];
- return offsets;
-}
-
-export function SmallPortraitCard({ person, setOffsets }) {
- const elementRef = useRef(null);
+ function openDialog() {
+ const completeName = person.completeName.replace(/\s+/g, '');
+ const completeNameWithoutAccents = completeName
+ .normalize("NFD")
+ .replace(/[\u0300-\u036f]/g, '');
+ history.push({
+ pathname: `/about/${completeNameWithoutAccents}`,
+ state: { fromAbout: true, scrollY: window.scrollY, },
+ });
+ }
return (
-
{
- setOffsets(calculateOffsets(elementRef));
- }}
- >
-
-
-
- {person.completeName}
-
-
-
-
- {person.position}
-
-
-
+
+
+
+
+
+ {person.completeName}
+
-
-
- );
-}
-export default function PopupPortrait({ person }) {
- const [offsets, setOffsets] = useState([0, 0]);
- let [isPopupOpen, setIsPopupOpen] = useState(false);
-
- return (
-
-
setIsPopupOpen(false)}
- trigger={
-
-
+
+
+ {person.position}
- }
- onOpen={() => {
- setIsPopupOpen(true);
- }}
- contentStyle={contentStyle}
- overlayStyle={overlayStyle}
- position={"center center"}
- offsetX={offsets[0]}
- offsetY={offsets[1]}
- >
-
- {
- setIsPopupOpen(false);
- }}
- >
-
-
+
);
}
diff --git a/src/components/about/SubTeam.tsx b/src/components/about/SubTeam.tsx
index bc3d840af..2522e3dcd 100644
--- a/src/components/about/SubTeam.tsx
+++ b/src/components/about/SubTeam.tsx
@@ -1,21 +1,16 @@
import styles from "./styles.module.css";
-import PopupPortrait from "./SmallPortraitCard";
+import { SmallPortraitCard } from "./SmallPortraitCard";
-export default function SubTeam({
- subTeamName,
- subTeam
-}) {
+export default function SubTeam({ subTeamName, subTeam }) {
return (
{subTeamName}
{subTeam.map((person, index) => (
-
+
))}
diff --git a/src/components/about/Team/team.ts b/src/components/about/Team/team.ts
index 0fcdcec07..c1d725b0a 100644
--- a/src/components/about/Team/team.ts
+++ b/src/components/about/Team/team.ts
@@ -24,6 +24,8 @@ import GabrielaMD from "@site/src/components/about/Team/Gabriela.md";
import GabrielaAvatarUrl from "@site/static/img/avatars/Gabriela.png";
import GregMD from "@site/src/components/about/Team/Greg.md";
import GregAvatarUrl from "@site/static/img/avatars/Greg.png";
+import GuyMD from "@site/src/components/about/Team/Guy.md";
+import GuyAvatarUrl from "@site/static/img/avatars/Guy.png";
import HindMD from "@site/src/components/about/Team/Hind.md";
import HindAvatarUrl from "@site/static/img/avatars/Hind.png";
import IanMD from "@site/src/components/about/Team/Ian.md";
@@ -48,6 +50,8 @@ import MeriemMD from "@site/src/components/about/Team/Meriem.md";
import MeriemAvatarUrl from "@site/static/img/avatars/Meriem.png";
import NicolasMD from "@site/src/components/about/Team/Nicolas.md";
import NicolasAvatarUrl from "@site/static/img/avatars/Nicolas.png";
+import OusemaMD from "@site/src/components/about/Team/Ousema.md";
+import OusemaAvatarUrl from "@site/static/img/avatars/Ousema.png";
import RaulMD from "@site/src/components/about/Team/Raul.md";
import RaulAvatarUrl from "@site/static/img/avatars/Raul.png";
import RomainMD from "@site/src/components/about/Team/Romain.md";
@@ -64,542 +68,540 @@ import TrungMD from "@site/src/components/about/Team/Trung.md";
import TrungAvatarUrl from "@site/static/img/avatars/Trung.png";
import YahiaMD from "@site/src/components/about/Team/Yahia.md";
import YahiaAvatarUrl from "@site/static/img/avatars/Yahia.png";
-import OusemaMD from "@site/src/components/about/Team/Ousema.md";
-import OusemaAvatarUrl from "@site/static/img/avatars/Ousema.png";
-import GuyMD from "@site/src/components/about/Team/Guy.md";
-import GuyAvatarUrl from "@site/static/img/avatars/Guy.png";
-export const coreTeam = [
- {
- completeName: "Thorsten Beier",
- firstName: "Thorsten",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/DerThorsten",
- LinkedInLink: "https://www.linkedin.com/in/thorsten-beier-95b121189/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@derthorsten",
- avatarUrl: ThorstenAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: ThorstenMD,
- },
- {
- completeName: " Andreas Trawöger",
- firstName: "Andreas",
- position: "DevOps Engineer",
- GitHubLink: "https://github.com/atrawog",
- LinkedInLink: "",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@atrawog",
- avatarUrl: AndreasAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: AndreasMD,
- },
- {
- completeName: "Denisa Checiu",
- firstName: "Denisa",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/DenisaCG",
- LinkedInLink: "https://www.linkedin.com/in/denisa-checiu-georgiana/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "DenisaCheciu",
- avatarUrl: DenisaAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "coreTeam",
- BioComponent: DenisaMD,
- },
- {
- completeName: "Joël Lamotte",
- firstName: "Joel",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/Klaim",
- LinkedInLink: "https://www.linkedin.com/in/a-jo%C3%ABl-lamotte-a5b09b85/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@Klaim",
- avatarUrl: JoelAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: JoelMD,
- },
- {
- completeName: "Florence Haudin",
- firstName: "Florence",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/HaudinFlorence",
- LinkedInLink: "https://www.linkedin.com/in/florence-haudin-fr/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@HaudinFlorence",
- avatarUrl: FlorenceAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: FlorenceMD,
- },
- {
- completeName: "Nicolas Brichet",
- firstName: "Nicolas",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/brichet",
- LinkedInLink: "https://www.linkedin.com/in/nicolas-brichet-a26369150/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@brichet",
- avatarUrl: NicolasAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "coreTeam",
- BioComponent: NicolasMD,
- },
- {
- completeName: "Isabel Paredes",
- firstName: "Isabel",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/ihuicatl",
- LinkedInLink: "https://www.linkedin.com/in/isabel-paredes/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@IsabelParedes",
- avatarUrl: IsabelAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "coreTeam",
- BioComponent: IsabelMD,
- },
- {
- completeName: "Gabriela Vives",
- firstName: "Gabriela",
- position: "User Experience Researcher and Designer",
- GitHubLink: "https://github.com/GabrielaVives",
- LinkedInLink: "https://www.linkedin.com/in/gabriela-vives-831ba853/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@GabrielaVives",
- avatarUrl: GabrielaAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: GabrielaMD,
- },
- {
- completeName: "Hind Montassif",
- firstName: "Hind",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/Hind-M",
- LinkedInLink: "https://www.linkedin.com/in/hindmontassif/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@Hind-M",
- avatarUrl: HindAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: HindMD,
- },
- {
- completeName: "Julien Jerphanion",
- firstName: "Julien",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/jjerphan",
- LinkedInLink: "https://www.linkedin.com/in/jjerphan/",
- BlueskyLink:"https://bsky.app/profile/jjerphan.xyz",
- MastodonLink:"https://fosstodon.org/@jjerphan",
- GitHubName: "@jjerphan",
- avatarUrl: JulienAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: JulienMD,
- },
- {
- completeName: "Anutosh Bhat",
- firstName: "Anutosh",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/anutosh491",
- LinkedInLink: "https://www.linkedin.com/in/anutosh-bhat-66ba961a8/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@anutosh491",
- avatarUrl: AnutoshAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: AnutoshMD,
- },
- {
- completeName: "Greg Mooney",
- firstName: "Greg",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/gjmooney",
- LinkedInLink: "https://www.linkedin.com/in/gjmooney/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@gjmooney",
- avatarUrl: GregAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: GregMD,
- },
- {
- completeName: "Ian Thomas",
- firstName: "Ian",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/ianthomas23",
- LinkedInLink: "https://www.linkedin.com/in/ian-thomas-796814240/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@ianthomas23",
- avatarUrl: IanAvatarUrl,
- distinctionTitle: ["OpenUK Honours List 2025"],
- distinctionLink: ["https://openuk.uk/honours/"],
- subTeamName: "coreTeam",
- BioComponent: IanMD,
- },
- {
- completeName: "Meriem Ben Ismail",
- firstName: "Meriem",
- position: " Scientific Software Developer",
- GitHubLink: "https://github.com/Meriem-BenIsmail",
- LinkedInLink: "https://www.linkedin.com/in/meriem-ben-ismail-163042230/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@Meriem-BenIsmail",
- avatarUrl: MeriemAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: MeriemMD,
- },
- {
- completeName: "Alexis Placet",
- firstName: "Alexis",
- position: " Scientific Software Developer",
- GitHubLink: "https://github.com/Alex-PLACET",
- LinkedInLink: "https://www.linkedin.com/in/alexisplacet/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@Alex-PLACET",
- avatarUrl: AlexisAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: AlexisMD,
- },
- {
- completeName: "Anastasiia Sliusar",
- firstName: "Anastasiia",
- position: " Scientific Software Developer",
- GitHubLink: "https://github.com/AnastasiaSliusar",
- LinkedInLink: "https://www.linkedin.com/in/anastasiiasliusar-bellis/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@AnastasiaSliusar",
- avatarUrl: AnastasiiaAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: AnastasiiaMD,
- },
- {
- completeName: "Arjun Verma",
- firstName: "Arjun",
- position: " Scientific Software Development Intern",
- GitHubLink: "https://github.com/arjxn-py",
- LinkedInLink:
- "https://www.linkedin.com/in/arjun-verma-758608226/",
- BlueskyLink:"https://bsky.app/profile/arjxn-py.bsky.social",
- MastodonLink:"https://mastodon.social/@arjxnpy",
- GitHubName: "@arjxn-py",
- avatarUrl: ArjunAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: ArjunMD,
- },
- {
- completeName: "Sandrine Pataut",
- firstName: "Sandrine",
- position: " Scientific Software Developer",
- GitHubLink: "https://github.com/SandrineP",
- LinkedInLink:
- "https://www.linkedin.com/in/sandrinepataut/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@SandrineP",
- avatarUrl: SandrineAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: SandrineMD,
- },
- {
- completeName: "Raúl Cumplido",
- firstName: "Raúl",
- position: " Scientific Software Developer",
- GitHubLink: "https://github.com/raulcd",
- LinkedInLink:
- "https://www.linkedin.com/in/raulcumplido/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@raulcd",
- avatarUrl: RaulAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: RaulMD,
- },
- {
- completeName: "Antoine Prouvost",
- firstName: "Antoine",
- position: " Scientific Software Developer",
- GitHubLink: "https://github.com/AntoinePrv",
- LinkedInLink: "https://www.linkedin.com/in/antoine-prouvost-0667b6a4/",
- BlueskyLink:"https://bsky.app/profile/antoineprv.bsky.social",
- MastodonLink:"",
- GitHubName: "@AntoinePrv",
- avatarUrl: AntoinePrvAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: AntoinePrvMD,
- },
- {
- completeName: "Yahia Heni",
- firstName: "Yahia",
- position: " Scientific Software Development Intern",
- GitHubLink: "https://github.com/Yahiewi",
- LinkedInLink:
- "https://www.linkedin.com/in/yahia-heni/",
- GitHubName: "@Yahiewi",
- avatarUrl: YahiaAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: YahiaMD,
- },
- {
- completeName: "Ousema Bouaneni",
- firstName: "Ousema",
- position: " Scientific Software Development Intern",
- GitHubLink: "https://github.com/ousema-bouaneni",
- LinkedInLink:
- "https://www.linkedin.com/in/ousema-bouaneni/",
- GitHubName: "@ousema-bouaneni",
- avatarUrl: OusemaAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: OusemaMD,
- },
- {
- completeName: "Guy Mushiata Kibulu",
- firstName: "Guy",
- position: "Scientific Software Development Intern",
- GitHubLink: "https://github.com/Gauss-Taylor-Euler",
- LinkedInLink:
- "https://www.linkedin.com/in/guy-mushiata-kibulu-189646336/",
- GitHubName: "@Gauss-Taylor-Euler",
- avatarUrl: GuyAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "coreTeam",
- BioComponent: GuyMD,
- }
-];
+export const teams = {
+ coreTeam: [
+ {
+ completeName: "Thorsten Beier",
+ pageName: "ThorstenBeier",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/DerThorsten",
+ LinkedInLink: "https://www.linkedin.com/in/thorsten-beier-95b121189/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@derthorsten",
+ avatarUrl: ThorstenAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: ThorstenMD,
+ },
+ {
+ completeName: " Andreas Trawöger",
+ pageName: "AndreasTrawoger",
+ position: "DevOps Engineer",
+ GitHubLink: "https://github.com/atrawog",
+ LinkedInLink: "",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@atrawog",
+ avatarUrl: AndreasAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: AndreasMD,
+ },
+ {
+ completeName: "Denisa Checiu",
+ pageName: "DenisaCheciu",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/DenisaCG",
+ LinkedInLink: "https://www.linkedin.com/in/denisa-checiu-georgiana/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "DenisaCheciu",
+ avatarUrl: DenisaAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "coreTeam",
+ BioComponent: DenisaMD,
+ },
+ {
+ completeName: "Joël Lamotte",
+ pageName: "JoelLamotte",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/Klaim",
+ LinkedInLink: "https://www.linkedin.com/in/a-jo%C3%ABl-lamotte-a5b09b85/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@Klaim",
+ avatarUrl: JoelAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: JoelMD,
+ },
+ {
+ completeName: "Florence Haudin",
+ pageName: "FlorenceHaudin",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/HaudinFlorence",
+ LinkedInLink: "https://www.linkedin.com/in/florence-haudin-fr/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@HaudinFlorence",
+ avatarUrl: FlorenceAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: FlorenceMD,
+ },
+ {
+ completeName: "Nicolas Brichet",
+ pageName: "NicolasBrichet",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/brichet",
+ LinkedInLink: "https://www.linkedin.com/in/nicolas-brichet-a26369150/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@brichet",
+ avatarUrl: NicolasAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "coreTeam",
+ BioComponent: NicolasMD,
+ },
+ {
+ completeName: "Isabel Paredes",
+ pageName: "IsabelParedes",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/ihuicatl",
+ LinkedInLink: "https://www.linkedin.com/in/isabel-paredes/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@IsabelParedes",
+ avatarUrl: IsabelAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "coreTeam",
+ BioComponent: IsabelMD,
+ },
+ {
+ completeName: "Gabriela Vives",
+ pageName: "GabrielaVives",
+ position: "User Experience Researcher and Designer",
+ GitHubLink: "https://github.com/GabrielaVives",
+ LinkedInLink: "https://www.linkedin.com/in/gabriela-vives-831ba853/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@GabrielaVives",
+ avatarUrl: GabrielaAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: GabrielaMD,
+ },
+ {
+ completeName: "Hind Montassif",
+ pageName: "HindMontassif",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/Hind-M",
+ LinkedInLink: "https://www.linkedin.com/in/hindmontassif/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@Hind-M",
+ avatarUrl: HindAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: HindMD,
+ },
+ {
+ completeName: "Julien Jerphanion",
+ pageName: "JulienJerphanion",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/jjerphan",
+ LinkedInLink: "https://www.linkedin.com/in/jjerphan/",
+ BlueskyLink: "https://bsky.app/profile/jjerphan.xyz",
+ MastodonLink: "https://fosstodon.org/@jjerphan",
+ GitHubName: "@jjerphan",
+ avatarUrl: JulienAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: JulienMD,
+ },
+ {
+ completeName: "Anutosh Bhat",
+ pageName: "AnutoshBhat",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/anutosh491",
+ LinkedInLink: "https://www.linkedin.com/in/anutosh-bhat-66ba961a8/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@anutosh491",
+ avatarUrl: AnutoshAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: AnutoshMD,
+ },
+ {
+ completeName: "Greg Mooney",
+ pageName: "GregMooney",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/gjmooney",
+ LinkedInLink: "https://www.linkedin.com/in/gjmooney/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@gjmooney",
+ avatarUrl: GregAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: GregMD,
+ },
+ {
+ completeName: "Ian Thomas",
+ pageName: "IanThomas",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/ianthomas23",
+ LinkedInLink: "https://www.linkedin.com/in/ian-thomas-796814240/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@ianthomas23",
+ avatarUrl: IanAvatarUrl,
+ distinctionTitle: ["OpenUK Honours List 2025"],
+ distinctionLink: ["https://openuk.uk/honours/"],
+ subTeamName: "coreTeam",
+ BioComponent: IanMD,
+ },
+ {
+ completeName: "Meriem Ben Ismail",
+ pageName: "MeriemBenIsmail",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/Meriem-BenIsmail",
+ LinkedInLink: "https://www.linkedin.com/in/meriem-ben-ismail-163042230/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@Meriem-BenIsmail",
+ avatarUrl: MeriemAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: MeriemMD,
+ },
+ {
+ completeName: "Alexis Placet",
+ pageName: "AlexisPlacet",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/Alex-PLACET",
+ LinkedInLink: "https://www.linkedin.com/in/alexisplacet/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@Alex-PLACET",
+ avatarUrl: AlexisAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: AlexisMD,
+ },
+ {
+ completeName: "Anastasiia Sliusar",
+ pageName: "AnastasiiaSliusar",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/AnastasiaSliusar",
+ LinkedInLink: "https://www.linkedin.com/in/anastasiiasliusar-bellis/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@AnastasiaSliusar",
+ avatarUrl: AnastasiiaAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: AnastasiiaMD,
+ },
+ {
+ completeName: "Arjun Verma",
+ pageName: "ArjunVerma",
+ position: " Scientific Software Development Intern",
+ GitHubLink: "https://github.com/arjxn-py",
+ LinkedInLink:
+ "https://www.linkedin.com/in/arjun-verma-758608226/",
+ BlueskyLink: "https://bsky.app/profile/arjxn-py.bsky.social",
+ MastodonLink: "https://mastodon.social/@arjxnpy",
+ GitHubName: "@arjxn-py",
+ avatarUrl: ArjunAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: ArjunMD,
+ },
+ {
+ completeName: "Sandrine Pataut",
+ pageName: "SandrinePataut",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/SandrineP",
+ LinkedInLink:
+ "https://www.linkedin.com/in/sandrinepataut/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@SandrineP",
+ avatarUrl: SandrineAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: SandrineMD,
+ },
+ {
+ completeName: "Raúl Cumplido",
+ pageName: "RaulCumplido",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/raulcd",
+ LinkedInLink:
+ "https://www.linkedin.com/in/raulcumplido/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@raulcd",
+ avatarUrl: RaulAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: RaulMD,
+ },
+ {
+ completeName: "Antoine Prouvost",
+ pageName: "AntoineProuvost",
+ position: " Scientific Software Developer",
+ GitHubLink: "https://github.com/AntoinePrv",
+ LinkedInLink: "https://www.linkedin.com/in/antoine-prouvost-0667b6a4/",
+ BlueskyLink: "https://bsky.app/profile/antoineprv.bsky.social",
+ MastodonLink: "",
+ GitHubName: "@AntoinePrv",
+ avatarUrl: AntoinePrvAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: AntoinePrvMD,
+ },
+ {
+ completeName: "Yahia Heni",
+ pageName: "YahiaHeni",
+ position: " Scientific Software Development Intern",
+ GitHubLink: "https://github.com/Yahiewi",
+ LinkedInLink:
+ "https://www.linkedin.com/in/yahia-heni/",
+ GitHubName: "@Yahiewi",
+ avatarUrl: YahiaAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: YahiaMD,
+ },
+ {
+ completeName: "Ousema Bouaneni",
+ pageName: "OusemaBouaneni",
+ position: " Scientific Software Development Intern",
+ GitHubLink: "https://github.com/ousema-bouaneni",
+ LinkedInLink:
+ "https://www.linkedin.com/in/ousema-bouaneni/",
+ GitHubName: "@ousema-bouaneni",
+ avatarUrl: OusemaAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: OusemaMD,
+ },
+ {
+ completeName: "Guy Mushiata Kibulu",
+ pageName: "GuyMushiataKibulu",
+ position: "Scientific Software Development Intern",
+ GitHubLink: "https://github.com/Gauss-Taylor-Euler",
+ LinkedInLink:
+ "https://www.linkedin.com/in/guy-mushiata-kibulu-189646336/",
+ GitHubName: "@Gauss-Taylor-Euler",
+ avatarUrl: GuyAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "coreTeam",
+ BioComponent: GuyMD,
+ }
+ ],
-export const QSCollaboratorsTeam = [
- {
- completeName: "Johan Mabille",
- firstName: "Johan",
- position: "Technical Director",
- GitHubLink: "https://github.com/JohanMabille",
- LinkedInLink: "https://www.linkedin.com/in/johan-mabille/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@JohanMabille",
- avatarUrl: JohanAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "QSCollaboratorsTeam",
- BioComponent: JohanMD,
- },
- {
- completeName: "Serge Guelton",
- firstName: "Serge",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/serge-sans-paille",
- LinkedInLink: "",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@serge-sans-paille",
- avatarUrl: SergeAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "QSCollaboratorsTeam",
- BioComponent: SergeMD,
- },
- {
- completeName: "Romain Menegaux",
- firstName: "Romain",
- position: "Scientific Software Developer",
- GitHubLink: "https://github.com/rmenegaux",
- LinkedInLink: "https://www.linkedin.com/in/romain-menegaux-88a147134/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@trmenegaux",
- avatarUrl: RomainAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "QSCollaboratorsTeam",
- BioComponent: RomainMD
- },
- {
- completeName: "Antoine Pitrou",
- firstName: "Antoine",
- position: "Senior Software Developer",
- GitHubLink: "https://github.com/pitrou",
- LinkedInLink:
- "https://www.linkedin.com/in/pitrou/",
- BlueskyLink: "https://bsky.app/profile/pitrou.bsky.social",
- MastodonLink:"",
- GitHubName: "@pitrou",
- avatarUrl: AntoineAvatarUrl,
- distinctionTitle: ["Python Software Foundation Fellow"],
- distinctionLink: ["https://www.python.org/psf/fellows-roster/"],
- subTeamName: "QSCollaboratorsTeam",
- BioComponent: AntoineMD,
- },
- {
- completeName: "Marion Chaffaut",
- firstName: "Marion",
- position: "Chief Financial Officer",
- GitHubLink: "https://github.com/MarionChaff",
- LinkedInLink: "https://www.linkedin.com/in/marion-chaffaut/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@MarionChaff",
- avatarUrl: MarionAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "QSCollaboratorsTeam",
- BioComponent: MarionMD,
- },
-];
+ QSCollaboratorsTeam: [
+ {
+ completeName: "Johan Mabille",
+ pageName: "JohanMabille",
+ position: "Technical Director",
+ GitHubLink: "https://github.com/JohanMabille",
+ LinkedInLink: "https://www.linkedin.com/in/johan-mabille/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@JohanMabille",
+ avatarUrl: JohanAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "QSCollaboratorsTeam",
+ BioComponent: JohanMD,
+ },
+ {
+ completeName: "Serge Guelton",
+ pageName: "SergeGuelton",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/serge-sans-paille",
+ LinkedInLink: "",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@serge-sans-paille",
+ avatarUrl: SergeAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "QSCollaboratorsTeam",
+ BioComponent: SergeMD,
+ },
+ {
+ completeName: "Romain Menegaux",
+ pageName: "RomainMenegaux",
+ position: "Scientific Software Developer",
+ GitHubLink: "https://github.com/rmenegaux",
+ LinkedInLink: "https://www.linkedin.com/in/romain-menegaux-88a147134/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@trmenegaux",
+ avatarUrl: RomainAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "QSCollaboratorsTeam",
+ BioComponent: RomainMD
+ },
+ {
+ completeName: "Antoine Pitrou",
+ pageName: "AntoinePitrou",
+ position: "Senior Software Developer",
+ GitHubLink: "https://github.com/pitrou",
+ LinkedInLink:
+ "https://www.linkedin.com/in/pitrou/",
+ BlueskyLink: "https://bsky.app/profile/pitrou.bsky.social",
+ MastodonLink: "",
+ GitHubName: "@pitrou",
+ avatarUrl: AntoineAvatarUrl,
+ distinctionTitle: ["Python Software Foundation Fellow"],
+ distinctionLink: ["https://www.python.org/psf/fellows-roster/"],
+ subTeamName: "QSCollaboratorsTeam",
+ BioComponent: AntoineMD,
+ },
+ {
+ completeName: "Marion Chaffaut",
+ pageName: "MarionChaffaut",
+ position: "Chief Financial Officer",
+ GitHubLink: "https://github.com/MarionChaff",
+ LinkedInLink: "https://www.linkedin.com/in/marion-chaffaut/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@MarionChaff",
+ avatarUrl: MarionAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "QSCollaboratorsTeam",
+ BioComponent: MarionMD,
+ },
+ ],
-export const leadershipTeam = [
- {
- completeName: "Sylvain Corlay",
- firstName: "Sylvain",
- position: "Chief Executive Officer",
- GitHubLink: "https://github.com/SylvainCorlay",
- LinkedInLink: "https://www.linkedin.com/sylvaincorlay/?locale=en_US",
- BlueskyLink: "https://bsky.app/profile/sylvaincorlay.bsky.social",
- MastodonLink: "https://mastodon.social/@SylvainCorlay",
- GitHubName: "@SylvainCorlay",
- avatarUrl: SylvainAvatarUrl,
- distinctionTitle: ["ACM Software System Award"],
- distinctionLink: ["https://awards.acm.org/award_winners/corlay_8324973"],
- subTeamName: "LeadershipTeam",
- BioComponent: SylvainMD,
- },
- {
- completeName: "Martin Renou",
- firstName: "Martin",
- position: "Technical Director",
- GitHubLink: "https://github.com/martinRenou",
- LinkedInLink: "https://www.linkedin.com/in/martin-renou",
- BlueskyLink:"https://bsky.app/profile/martinrenou.bsky.social",
- MastodonLink:"",
- GitHubName: "@martinRenou",
- avatarUrl: MartinAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "LeadershipTeam",
- BioComponent: MartinMD,
- },
- {
- completeName: "Jeremy Tuloup",
- firstName: "Jeremy",
- position: "Technical Director",
- GitHubLink: "https://github.com/jtpio",
- LinkedInLink: "https://www.linkedin.com/in/jtuloup/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@jtpio",
- avatarUrl: JeremyAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "LeadershipTeam",
- BioComponent: JeremyMD,
- },
- {
- completeName: "Afshin Darian",
- firstName: "Darian",
- position: "Technical Director",
- GitHubLink: "https://github.com/afshin",
- LinkedInLink: "https://www.linkedin.com/in/afshindarian/",
- BlueskyLink:"",
- MastodonLink:"",
- GitHubName: "@afshin",
- avatarUrl: DarianAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "LeadershipTeam",
- BioComponent: DarianMD,
- },
- {
- completeName: "David Brochart",
- firstName: "David",
- position: "Technical Director",
- GitHubLink: "https://github.com/davidbrochart",
- LinkedInLink: "https://www.linkedin.com/in/david-brochart-4208721/",
- BlueskyLink:"https://bsky.app/profile/davidbrochart.bsky.social",
- MastodonLink:"https://mastodon.top/@davidbrochart",
- GitHubName: "@davidbrochart",
- avatarUrl: DavidAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "LeadershipTeam",
- BioComponent: DavidMD,
- },
- {
- completeName: "Matthias Meschede",
- firstName: "Matthias",
- position: "Chief Operating Officer",
- GitHubLink: "https://github.com/mmesch",
- LinkedInLink: "https://www.linkedin.com/in/mmesch/",
- BlueskyLink:"",
- MastodonLink:"https://fosstodon.org/@mattodon",
- GitHubName: "@mmesch",
- avatarUrl: MatthiasAvatarUrl,
- distinctionTitle: [],
- distinctionLink: [],
- subTeamName: "LeadershipTeam",
- BioComponent: MatthiasMD,
- },
- {
- completeName: "Le Duc Trung",
- firstName: "Trung",
- position: "Technical Director",
- GitHubLink: "https://github.com/trungleduc",
- LinkedInLink: "https://www.linkedin.com/in/ductrung-le/",
- BlueskyLink:"https://bsky.app/profile/trungleduc.bsky.social",
- MastodonLink:"",
- GitHubName: "@trungleduc",
- avatarUrl: TrungAvatarUrl,
- distinctionTitle: ["Jupyter Distinguished Contributor"],
- distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
- subTeamName: "LeadershipTeam",
- BioComponent: TrungMD,
- },
-];
+ leadershipTeam: [
+ {
+ completeName: "Sylvain Corlay",
+ pageName: "SylvainCorlay",
+ position: "Chief Executive Officer",
+ GitHubLink: "https://github.com/SylvainCorlay",
+ LinkedInLink: "https://www.linkedin.com/sylvaincorlay/?locale=en_US",
+ BlueskyLink: "https://bsky.app/profile/sylvaincorlay.bsky.social",
+ MastodonLink: "https://mastodon.social/@SylvainCorlay",
+ GitHubName: "@SylvainCorlay",
+ avatarUrl: SylvainAvatarUrl,
+ distinctionTitle: ["ACM Software System Award"],
+ distinctionLink: ["https://awards.acm.org/award_winners/corlay_8324973"],
+ subTeamName: "LeadershipTeam",
+ BioComponent: SylvainMD,
+ },
+ {
+ completeName: "Martin Renou",
+ pageName: "MartinRenou",
+ position: "Technical Director",
+ GitHubLink: "https://github.com/martinRenou",
+ LinkedInLink: "https://www.linkedin.com/in/martin-renou",
+ BlueskyLink: "https://bsky.app/profile/martinrenou.bsky.social",
+ MastodonLink: "",
+ GitHubName: "@martinRenou",
+ avatarUrl: MartinAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "LeadershipTeam",
+ BioComponent: MartinMD,
+ },
+ {
+ completeName: "Jeremy Tuloup",
+ pageName: "JeremyTuloup",
+ position: "Technical Director",
+ GitHubLink: "https://github.com/jtpio",
+ LinkedInLink: "https://www.linkedin.com/in/jtuloup/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@jtpio",
+ avatarUrl: JeremyAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "LeadershipTeam",
+ BioComponent: JeremyMD,
+ },
+ {
+ completeName: "Afshin Darian",
+ pageName: "AfshinDarian",
+ position: "Technical Director",
+ GitHubLink: "https://github.com/afshin",
+ LinkedInLink: "https://www.linkedin.com/in/afshindarian/",
+ BlueskyLink: "",
+ MastodonLink: "",
+ GitHubName: "@afshin",
+ avatarUrl: DarianAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "LeadershipTeam",
+ BioComponent: DarianMD,
+ },
+ {
+ completeName: "David Brochart",
+ pageName: "DavidBrochart",
+ position: "Technical Director",
+ GitHubLink: "https://github.com/davidbrochart",
+ LinkedInLink: "https://www.linkedin.com/in/david-brochart-4208721/",
+ BlueskyLink: "https://bsky.app/profile/davidbrochart.bsky.social",
+ MastodonLink: "https://mastodon.top/@davidbrochart",
+ GitHubName: "@davidbrochart",
+ avatarUrl: DavidAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "LeadershipTeam",
+ BioComponent: DavidMD,
+ },
+ {
+ completeName: "Matthias Meschede",
+ pageName: "MatthiasMeschede",
+ position: "Chief Operating Officer",
+ GitHubLink: "https://github.com/mmesch",
+ LinkedInLink: "https://www.linkedin.com/in/mmesch/",
+ BlueskyLink: "",
+ MastodonLink: "https://fosstodon.org/@mattodon",
+ GitHubName: "@mmesch",
+ avatarUrl: MatthiasAvatarUrl,
+ distinctionTitle: [],
+ distinctionLink: [],
+ subTeamName: "LeadershipTeam",
+ BioComponent: MatthiasMD,
+ },
+ {
+ completeName: "Le Duc Trung",
+ pageName: "LeDucTrung",
+ position: "Technical Director",
+ GitHubLink: "https://github.com/trungleduc",
+ LinkedInLink: "https://www.linkedin.com/in/ductrung-le/",
+ BlueskyLink: "https://bsky.app/profile/trungleduc.bsky.social",
+ MastodonLink: "",
+ GitHubName: "@trungleduc",
+ avatarUrl: TrungAvatarUrl,
+ distinctionTitle: ["Jupyter Distinguished Contributor"],
+ distinctionLink: ["https://jupyter.org/about#distinguished-contributors"],
+ subTeamName: "LeadershipTeam",
+ BioComponent: TrungMD,
+ },
+ ]
+}
diff --git a/src/components/about/index.tsx b/src/components/about/index.tsx
index 2a307e33b..8fe977970 100644
--- a/src/components/about/index.tsx
+++ b/src/components/about/index.tsx
@@ -1,12 +1,23 @@
import styles from "./styles.module.css";
-import { coreTeam, QSCollaboratorsTeam, leadershipTeam } from "./Team/team";
+import { teams } from "./Team/team";
import FourValues from "./FourValues";
import SubTeam from "./SubTeam";
import LinkToContact from "../home/LinkToContact";
+export function getTeamByPageName(name: string) {
+ for (const [teamName, members] of Object.entries(teams)) {
+ const person = members.find((person) => person.pageName === name);
+ if (person) {
+ return members;
+ }
+ }
+ return null;
+}
+
+
export function About() {
return (
-
+
@@ -14,6 +25,7 @@ export function About() {
+
@@ -24,19 +36,17 @@ export function About() {
+
diff --git a/src/components/about/styles.module.css b/src/components/about/styles.module.css
index 3fc532e17..3a1f74a0a 100644
--- a/src/components/about/styles.module.css
+++ b/src/components/about/styles.module.css
@@ -1,6 +1,28 @@
+.modal_overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: rgba(0, 0, 0, 0.3);
+ z-index: 1000;
+}
+
+.modal_content {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ background-color: white;
+ border: 1px solid #ccc;
+ box-shadow: 0 8px 16px rgba(0,0,0,0.2);
+ border-radius: 20px;
+ z-index: 4000;
+}
+
.small_portrait_card {
width: 279px;
- height: 400px;
+ height: 320px;
background-color: white;
color: var(--ifm-color-primary-p2);
border-radius: 8px;
@@ -11,11 +33,10 @@
.small_portrait_card:hover {
border: solid 1px gray;
- cursor: pointer;
- text-decoration: #0000EE underline;
+ cursor: pointer;
+ text-decoration: #0000ee underline;
}
-
.value_text p {
font-family: var(--ifm-font-family-roboto);
font-size: 14px;
@@ -51,7 +72,7 @@ div .row {
line-height: 24px;
letter-spacing: 0.15px;
margin: var(--ifm-spacing-xs) 0;
- width: 100%
+ width: 100%;
}
.small_card_position {
@@ -135,6 +156,19 @@ div .join_the_team_text {
padding-right: 5px;
}
+.card {
+ border: 1px solid #ccc;
+ padding: 16px;
+ margin: 16px;
+ cursor: pointer;
+ border-radius: 8px;
+ transition: box-shadow 0.2s;
+}
+
+.small_portrait_card:hover {
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
+}
+
@media only screen and (max-width: 996px) {
/*Mobile*/
.value_card {
@@ -163,16 +197,6 @@ div .join_the_team_text {
padding: 0;
}
- .large_portrait_card {
- width: 100%;
- height: 100%;
- padding: var(--ifm-spacing-xl) var(--ifm-spacing-xl);
- }
-
- .large_portrait_card p {
- text-align: justify;
- }
-
.subteam_container {
margin: var(--ifm-spacing-3xl) var(--ifm-spacing-2xl);
}
@@ -195,6 +219,24 @@ div .join_the_team_text {
}
}
+@media only screen and (max-width: 500px) {
+ /*Mobile*/
+ .large_portrait_card {
+ width: 90vw;
+ overflow: auto;
+ padding: var(--ifm-spacing-xl) var(--ifm-spacing-xl);
+ }
+}
+
+@media (min-width: 500px) and (max-width: 996px) {
+ /*Tablet*/
+ .large_portrait_card {
+ width: 80vw;
+ overflow: auto;
+ padding: var(--ifm-spacing-xl) var(--ifm-spacing-xl);
+ }
+}
+
@media only screen and (min-width: 996px) {
/*Desktop*/
.value_card {
@@ -219,7 +261,7 @@ div .join_the_team_text {
}
.large_portrait_card {
- width: 1000px;
+ width: 920px;
padding: var(--ifm-spacing-xl) var(--ifm-spacing-2xl);
}
diff --git a/src/components/careers/Interviews.tsx b/src/components/careers/Interviews.tsx
index 6b3c33734..42b5ac7d0 100644
--- a/src/components/careers/Interviews.tsx
+++ b/src/components/careers/Interviews.tsx
@@ -8,7 +8,7 @@ export default function Interviews({ details, description }) {
Use a dialog pop to display the LargePortraitCard.
+