Spaces:
Runtime error
Runtime error
| import React from 'react'; | |
| import ReactDOM from 'react-dom'; | |
| import PropTypes from 'prop-types'; | |
| import appTarget from '../app-target'; | |
| import styles from './credits.css'; | |
| import { getInitialDarkMode } from '../../lib/tw-theme-hoc.jsx'; | |
| // import fosshostLogo from './fosshost-light.png'; | |
| import UserData from './users'; | |
| /* eslint-disable react/jsx-no-literals */ | |
| document.documentElement.lang = 'en'; | |
| const User = ({ image, text, href }) => ( | |
| <a | |
| href={href} | |
| target="_blank" | |
| rel="noreferrer" | |
| className={styles.user} | |
| > | |
| <img | |
| className={styles.userImage} | |
| src={image} | |
| width="60" | |
| height="60" | |
| /> | |
| <div className={styles.userInfo}> | |
| {text} | |
| </div> | |
| </a> | |
| ); | |
| User.propTypes = { | |
| image: PropTypes.string.isRequired, | |
| text: PropTypes.string.isRequired, | |
| href: PropTypes.string | |
| }; | |
| const UserList = ({ users }) => ( | |
| <div className={styles.users}> | |
| {users.map((data, index) => ( | |
| <User | |
| key={index} | |
| {...data} | |
| /> | |
| ))} | |
| </div> | |
| ); | |
| UserList.propTypes = { | |
| users: PropTypes.arrayOf(PropTypes.object) | |
| }; | |
| const Credits = () => ( | |
| <main className={styles.main}> | |
| <header className={styles.headerContainer}> | |
| <h1 className={styles.headerText}> | |
| PenguinMod Credits | |
| </h1> | |
| </header> | |
| <section> | |
| <h1>PenguinMod</h1> | |
| </section> | |
| <section> | |
| <h2>Thank you</h2> | |
| <p> | |
| Without TurboWarp, PenguinMod may have never existed. | |
| Thank you to everyone who worked on Scratch and TurboWarp, | |
| you have made many people finally be able to make whatever they can imagine. | |
| </p> | |
| <a href="https://scratch.mit.edu/donate"> | |
| Donate to support Scratch. | |
| </a> | |
| <br></br><br></br> | |
| <a href="https://github.com/sponsors/GarboMuffin"> | |
| Donate to support TurboWarp. | |
| </a> | |
| <h2>Contributors</h2> | |
| <p> | |
| PenguinMod is made by a small bunch of developers. | |
| A list is below, but you can also check <a href="https://github.com/orgs/PenguinMod/people">our GitHub</a> incase this one is out of date. | |
| </p> | |
| <UserList users={UserData.pmDevelopers} /> | |
| <p><i>The list order is randomized on each refresh.</i></p> | |
| <p>There are even community members who have helped develop PenguinMod. People like <i>you!</i></p> | |
| <UserList users={UserData.pmPullRequestDevelopers} /> | |
| <p><i>The list order is randomized on each refresh.</i></p> | |
| </section> | |
| <section> | |
| <h2>GitHub Pages</h2> | |
| <p>We currently use <a href="https://pages.github.com/">GitHub Pages</a> to host PenguinMod.</p> | |
| <a href="https://pages.github.com/"> | |
| <img | |
| src="https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/collections/github-pages-examples/github-pages-examples.png" | |
| width="160" | |
| height="160" | |
| /> | |
| </a> | |
| <h2>Domain Provider</h2> | |
| <p> | |
| <a href="https://penguinmod.com">penguinmod.com</a> (and any subdomains) are currently | |
| provided by <a href="https://github.com/enderhacker">enderhacker</a>. | |
| <br></br> | |
| <a href="https://github.com/enderhacker"> | |
| <img src="https://avatars.githubusercontent.com/u/61245488?v=4" style={{ width: "128px" }}></img> | |
| </a> | |
| </p> | |
| <h2>Server Host</h2> | |
| <p> | |
| PenguinMod's Project Sharing server is currently hosted by <a href="https://github.com/ianyourgod">ianyourgod</a>. | |
| <br></br> | |
| <a href="https://github.com/ianyourgod"> | |
| <img src="https://avatars.githubusercontent.com/u/104151459?v=4" style={{ width: "128px" }}></img> | |
| </a> | |
| </p> | |
| <p> | |
| The PenguinMod Server API is maintained by many people. | |
| A list is below, but you can also check <a href="https://github.com/PenguinMod/PenguinMod-IntermediateBackendApi/graphs/contributors">the GitHub repository</a> incase this one is out of date. | |
| </p> | |
| <UserList users={UserData.pmApiDevelopers} /> | |
| <p><i>The list order is randomized on each refresh.</i></p> | |
| <h2>Costumes</h2> | |
| <p> | |
| All PenguinMod costumes are downloaded or created from: | |
| <ul> | |
| <li><a href="https://publicdomainvectors.org/">https://publicdomainvectors.org/</a></li> | |
| <li><a href="https://discord.gg/NZ9MBMYTZh">User-submissions from the PenguinMod Discord Server</a></li> | |
| <li>The PenguinMod Developers</li> | |
| </ul> | |
| All costumes exclusive to PenguinMod are included under Public Domain licenses or licenses such as MIT and CC0. | |
| </p> | |
| <p>This is the current list of user-submitted costume creators:</p> | |
| <UserList users={UserData.pmCostumeSubmittors} /> | |
| <p><i>The list order is randomized on each refresh.</i></p> | |
| <h2>Sound Effects</h2> | |
| <p> | |
| All PenguinMod sounds are downloaded or created from: | |
| <ul> | |
| <li><a href="https://freesound.org/">https://freesound.org/</a></li> | |
| <li><a href="https://archive.org/">https://archive.org/</a></li> | |
| <li><a href="https://discord.gg/NZ9MBMYTZh">User-submissions from the PenguinMod Discord Server</a></li> | |
| <li>The PenguinMod Developers</li> | |
| </ul> | |
| All sounds exclusive to PenguinMod are included under Public Domain licenses or licenses such as MIT and CC0. | |
| </p> | |
| <p>This is the current list of user-submitted sound creators:</p> | |
| <UserList users={UserData.pmSoundSubmittors} /> | |
| <p><i>The list order is randomized on each refresh.</i></p> | |
| <h2>Accounts</h2> | |
| <p> | |
| Login is managed | |
| by <a href="https://auth.itinerary.eu.org/">Scratch Auth</a> created | |
| by <a href="https://scratch.mit.edu/users/Looky1173/">Looky1173</a>. | |
| (thanks for adding us to the user list!) | |
| <br /> | |
| <br /> | |
| <i> | |
| "Scratch Auth" is not actually affiliated with Scratch, | |
| the Scratch Team, or the Scratch Foundation. | |
| </i> | |
| <br /> | |
| <br /> | |
| <i> | |
| PenguinMod is also not owned or managed by Looky1173, please only comment on his profile | |
| <br /> | |
| if the Scratch Auth page tells you that it failed, not if PenguinMod fails to load. | |
| </i> | |
| </p> | |
| </section> | |
| <section> | |
| <h1>PenguinMod & TurboWarp</h1> | |
| </section> | |
| <section> | |
| <h2>Extensions</h2> | |
| <p><i> | |
| If you are an extension developer who wants their extension removed from PenguinMod's extensions list, | |
| contact us as soon as you can. We'll get it removed as soon as we are able to. | |
| </i></p> | |
| <p> | |
| We use some MIT licensed extensions from TurboWarp as they are really useful! | |
| Check out the full list of TurboWarp extensions <a href="https://extensions.turbowarp.org/">here</a>, | |
| but we still need to credit these people! | |
| Check them out below: | |
| </p> | |
| <UserList users={UserData.extensionDevelopers} /> | |
| <p><i>The list order is randomized on each refresh.</i></p> | |
| <p> | |
| PenguinMod also has a few people who made and submitted extensions too! | |
| This list may get outdated sometimes, but here they are listed below: | |
| </p> | |
| <UserList users={UserData.pmExtensionDevelopers} /> | |
| <p><i>The list order is randomized on each refresh.</i></p> | |
| </section> | |
| <section> | |
| <h2>Addons</h2> | |
| <p> | |
| Addons are mostly taken from <a href="https://scratchaddons.com/">Scratch Addons</a>, | |
| but we hope to have some PenguinMod addons in the future. | |
| Here are the developers that made the current addons available. | |
| </p> | |
| <UserList users={UserData.addonDevelopers} /> | |
| <p><i>The list order is randomized on each refresh.</i></p> | |
| </section> | |
| <section> | |
| <h1>TurboWarp</h1> | |
| </section> | |
| <section> | |
| <p> | |
| The TurboWarp project is made possible by the work of many volunteers. | |
| <br></br> | |
| You can check out TurboWarp's individual credits <a href="https://turbowarp.org/credits.html">here</a>. | |
| <br></br> | |
| <a href="https://github.com/sponsors/GarboMuffin"> | |
| Donate to support TurboWarp. | |
| </a> | |
| </p> | |
| </section> | |
| {/* RIP Fosshost */} | |
| {/* <section> | |
| <h2>Fosshost</h2> | |
| <p> | |
| The TurboWarp project is proudly hosted by <a href="https://fosshost.org/">Fosshost</a> who provide free computing resources to the open source community. | |
| </p> | |
| <p> | |
| <a href="https://fosshost.org/donate"> | |
| Donate to support Fosshost. | |
| </a> | |
| </p> | |
| <a href="https://fosshost.org/"> | |
| <img | |
| src={fosshostLogo} | |
| width="250" | |
| height="125" | |
| /> | |
| </a> | |
| </section> */} | |
| <section> | |
| <h2>Scratch</h2> | |
| <p> | |
| TurboWarp is based on the work of the <a href="https://scratch.mit.edu/credits">Scratch contributors</a> but is not endorsed by Scratch in any way. | |
| </p> | |
| <p> | |
| <a href="https://scratch.mit.edu/donate"> | |
| Donate to support Scratch. | |
| </a> | |
| </p> | |
| </section> | |
| <section> | |
| <h2>Translators</h2> | |
| <p> | |
| More than 100 people have helped translate TurboWarp and its addons into many languages — | |
| far more than we could hope to list here. | |
| </p> | |
| <p> | |
| PenguinMod is also (very very slowly) getting translated into other languages, in the future | |
| hopefully the same number of languages can be supported. It'll take a while until we get there though. | |
| </p> | |
| <p>Contributors:</p> | |
| <UserList users={UserData.pmTranslators} /> | |
| <p><i>The list order is randomized on each refresh.</i></p> | |
| </section> | |
| <section> | |
| <p> | |
| <i> | |
| Individual contributors are listed in no particular order. | |
| The order is randomized each visit. | |
| </i> | |
| </p> | |
| </section> | |
| </main> | |
| ); | |
| document.body.setAttribute('theme', getInitialDarkMode() ? 'dark' : 'light'); | |
| ReactDOM.render(( | |
| <Credits /> | |
| ), appTarget); | |