diff --git a/content/@theme/components/Navbar/Navbar.tsx b/content/@theme/components/Navbar/Navbar.tsx index 6fa7debeedd..e8057087aa0 100644 --- a/content/@theme/components/Navbar/Navbar.tsx +++ b/content/@theme/components/Navbar/Navbar.tsx @@ -24,7 +24,6 @@ export function Navbar(props) { // const [isOpen, setIsOpen] = useMobileMenu(false); const themeConfig = useThemeConfig(); const { changeLanguage } = useI18n(); - const menu = themeConfig.navbar?.items; const logo = themeConfig.logo; diff --git a/content/@theme/helpers.ts b/content/@theme/helpers.ts index 7bf7f4ab06c..8ceb3ae9196 100644 --- a/content/@theme/helpers.ts +++ b/content/@theme/helpers.ts @@ -1,14 +1,53 @@ /** * Slugify function, has to match the formula used in interactive-tutorial.js */ +import { useEffect, useState } from 'react'; + +export const useThemeFromClassList = (classNames) => { + const [currentTheme, setCurrentTheme] = useState(null); + + useEffect(() => { + // Function to update the theme based on the class list + const updateTheme = () => { + for (const className of classNames) { + if (document.documentElement.classList.contains(className)) { + setCurrentTheme(className); + return; + } + } + }; + + // Initial update + updateTheme(); + + // Create an observer instance linked to the callback function + const observer = new MutationObserver(() => { + updateTheme(); + }); + + // Start observing the target node for configured mutations + observer.observe(document.documentElement, { + attributes: true, // Listen for attribute changes + attributeFilter: ['class'], // Specifically, listen only to "class" attribute changes + }); + + // Cleanup: Disconnect the observer + return () => { + observer.disconnect(); + }; + }, [classNames]); + + return currentTheme; +}; + export function slugify(s) { const unacceptable_chars = /[^A-Za-z0-9._ ]+/g; const whitespace_regex = /\s+/g; - s = s.replace(unacceptable_chars, ''); - s = s.replace(whitespace_regex, '_'); + s = s.replace(unacceptable_chars, ""); + s = s.replace(whitespace_regex, "_"); s = s.toLowerCase(); if (!s) { - s = '_'; + s = "_"; } return s; } diff --git a/content/ambassadors.page.tsx b/content/ambassadors.page.tsx new file mode 100644 index 00000000000..b4a926997f6 --- /dev/null +++ b/content/ambassadors.page.tsx @@ -0,0 +1,414 @@ +import * as React from 'react'; +import { useTranslate } from '@portal/hooks'; + +false + +const target= {prefix: ''}; // TODO: fixme + +export default function Ambassadors() { + const { translate } = useTranslate(); + + return ( +
+
+
+ background purple waves +
+
+
+
+

{translate("Become an XRP Ledger Campus Ambassador")}

+
{translate("Join the Student Cohort")}
+
+

{translate("The XRPL Campus Ambassador program engages, supports, connects, and recognizes a group of student champions of the XRPL and empowers them to further advance engagement on the ledger.")}

+ +
+
+ {/* Current Students */} +
+
+
+
+

{translate("XRPL Campus Ambassadors")}

+
{translate("Current Students")}
+
+

{translate("The XRPL Campus Ambassador program aims to elevate the impact of college students who are passionate about blockchain technology. In their role, Campus Ambassadors help educate other students about crypto and how to start building on the XRPL.")}

+
+ +
+
+
+
+ Person speaking and person taking photo +
+
+
+ +
+
+
+ {/* Benefits */} +
+ {/* flex. Col for mobile. Row for large. on large align content to the center */} +
+
+
+

{translate("Why become an XRPL Campus Ambassador?")}

+
{translate("Benefits")}
+
+

{translate("Join a global cohort of students empowering others to build on the XRPL.")}

+
+
+
+ {/* benefitslist */} +
+
+ Smiley face +
+
{translate("Exclusive Opportunities")}
+

{translate(" Get access and invitations to Ambassador-only events, conferences, and opportunities")}

+
+
+ {/* Hide on large */} +
+ Book +
+
{translate("Education")}
+

{translate("Tutorials and workshops from leading XRPL and blockchain developers")}

+
+
+
+ Gift +
+
{translate("Swag")}
+

{translate("New XRPL swag for Ambassadors and swag to share with other students")}

+
+
+ {/* Hide on large */} +
+ Medallion +
+
{translate("Mentorship")}
+

{translate("Serve as an advocate and receive support from notable members of the community")}

+
+
+
+ Up Arrow +
+
{translate("Career Acceleration")}
+

{translate("Gain hands-on experience building communities and grow your professional network in the blockchain industry")}

+
+
+ {/* Hide on large */} +
+ Dollar Sign +
+
{translate("Stipend")}
+

{translate("Receive a stipend to fund your ideas and initiatives that fuel XRPL growth on your campus")}

+
+
+
+ {/* end col 1 */} + {/* Show on large */} +
+
+ Book +
+
{translate("Education")}
+

{translate("Tutorials and workshops from leading XRPL and blockchain developers")}

+
+
+
+ Medallion +
+
{translate("Mentorship")}
+

{translate("Serve as an advocate and receive support from notable members of the community")}

+
+
+
+ Dollar Sign +
+
{translate("Stipend")}
+

{translate("Receive a stipend to fund your ideas and initiatives that fuel XRPL growth on your campus")}

+
+
+
+ {/* end col 2 */} +
+
+
+
+ {/* Eligibility */} +
+ {/* flex. Col for mobile. Row for large. on large align content to the center */} +
+
+
+

{translate("Should You Apply?")}

+
{translate("Eligibility for XRPL Campus Ambassadors")}
+
+

{translate("Students currently enrolled in an undergraduate or postgraduate program at an accredited college or university are eligible to apply.")}

+
+
+
+
+
+ Calendar +
+
{translate("A Leader")}
+

{translate("Interested in leading meetups and workshops for your local campus community")}

+
+
+ {/* Hide on large */} +
+ Book +
+
{translate("Active")}
+

{translate("An active participant in the XRPL community or interested in blockchain and crypto technologies")}

+
+
+
+ CPU +
+
{translate("Curious")}
+

{translate("Eager to learn more about technical blockchain topics and the XRPL")}

+
+
+ {/* Hide on large */} +
+ Quote Bubble +
+
{translate("Passionate")}
+

{translate("Passionate about increasing XRPL education and awareness through events, content, and classroom engagement")}

+
+
+
+ People +
+
{translate("Creative")}
+

{translate("Ability to think outside the box to grow the XRPL student community")}

+
+
+
+ {/* end col 1 */} + {/* Show on large */} +
+
+ Book +
+
{translate("Active")}
+

{translate("An active participant in the XRPL community or interested in blockchain and crypto technologies")}

+
+
+
+ Quote Bubble +
+
{translate("Passionate")}
+

{translate("Passionate about increasing XRPL education and awareness through events, content, and classroom engagement")}

+
+
+
+ {/* end col 2 */} +
+
+
+
+ {/* Current Students */} +
+ {/* Quotes */} +
+
+
+
+
+ I have learned so much through creating programs and connecting with the XRPL community. Im truly grateful for everyone's support along the way and for the opportunity to gain so much knowledge from this expierence + I have learned so much through creating programs and connecting with the XRPL community. Im truly grateful for everyone's support along the way and for the opportunity to gain so much knowledge from this expierence +
+

Derrick N.
+ Toronto Metropolitan University
+ Spring 2023 XRPL Campus Ambassador

+
+
+
+
+
+
+
+ The XRPL Campus Ambassador program really helped broaden my view of the blockchain industry with their learning resource and virtual community. Being an ambassador allowed me to meet industry professionals and likeminded peers which have given me invaluable experiences and insights. + The XRPL Campus Ambassador program really helped broaden my view of the blockchain industry with their learning resource and virtual community. Being an ambassador allowed me to meet industry professionals and likeminded peers which have given me invaluable experiences and insights. +
+

Sally Z.
+ Toronto Metropolitan University
+ Spring 2023 XRPL Campus Ambassador

+
+
+
+
+
+
+
+ Ive had the pleasure over the course of this program to speak with amazing individuals, I encourage you all to reach out to other people in this program and make as many connections as you can. You will quickly find out that by speaking with other people in this cohort you can learn just about anything if you ask the right people. + Ive had the pleasure over the course of this program to speak with amazing individuals, I encourage you all to reach out to other people in this program and make as many connections as you can. You will quickly find out that by speaking with other people in this cohort you can learn just about anything if you ask the right people. +
+

Nick D.
+ Miami University
+ Spring 2023 XRPL Campus Ambassador

+
+
+
+
+
+
+
+ {/* How it Works */} +
+ {/* flex. Col for mobile. Row for large. on large align content to the center */} +
+
+
+

{translate("Process to become a Campus Ambassador")}

+
{translate("How it Works")}
+
+

{translate("Apply now to become an XRPL Campus Ambassador.")}

+
+ +
+
+
+
+
+
+ +
+
{translate("Apply")}
+

{translate("Submit an application to be considered for the Campus Ambassador program.")}

+
+
+ {/* Hide on large */} +
+ +
+
{translate("Interview")}
+

{translate("Tell the XRPL community-led panel more about yourself and your interest in the program during an interview.")}

+
+
+
+ +
+
{translate("Join")}
+

{translate("Congrats on your new role! Join the global cohort of Ambassadors and meet with community participants during onboarding.")}

+
+
+ {/* Hide on large */} +
+ +
+
{translate("Learn")}
+

{translate("Participate in personalized learning and training sessions for Ambassadors on the XRPL and blockchain technology.")}

+
+
+
+ {/* end col 1 */} + {/* Show on large */} +
+
+ +
+
{translate("Interview")}
+

{translate("Tell the XRPL community-led panel more about yourself and your interest in the program during an interview.")}

+
+
+
+ +
+
{translate("Learn")}
+

{translate("Participate in personalized learning and training sessions for Ambassadors on the XRPL and blockchain technology.")}

+
+
+
+ {/* end col 2 */} +
+
+
+ +
+
+
+ {/* Image Block */} +
+ Ripple Conferences and two people Sitting +
+ {/* Global Community Carousel */} +
+
+
+

{translate("Join a global cohort of Student Ambassadors")}

+
{translate("Global Community")}
+
+
+
+
+
+ Ambassador locations + Ambassador locations + Ambassador locations +
+
+ Ambassador locations + Ambassador locations + Ambassador locations +
+
+ {/* Connect */} +
+ {/* flex. Col for mobile. Row for large. on large align content to the center */} +
+
+
+

{translate("Stay connected to the XRPL Campus Ambassadors")}

+
{translate("Connect")}
+
+

{translate("To stay up-to-date on the latest activity, meetups, and events of the XRPL Campus Ambassadors be sure to follow these channels:")}

+
+ +
+
+
+
+
+
+ meetup +
+
{translate("MeetUp")}
+

{translate("Attend an XRPL Meetup in your local area")}

+
+
+
+ devto +
+
{translate("Dev.to Blog")}
+

{translate("Read more about the activity of the XRPL Ambassadors")}

+
+
+
+
+
+ discord +
+
{translate("Discord")}
+

{translate("Join the conversation on the XRPL Developer Discord")}

+
+
+
+
+
+
+ +
+
+
+
+ +
+ ) +} diff --git a/content/code-samples.page.tsx b/content/code-samples.page.tsx index bb06a08cd30..1bebf3ab2c6 100644 --- a/content/code-samples.page.tsx +++ b/content/code-samples.page.tsx @@ -6,6 +6,7 @@ const langIcons = { go: require('./static/img/logos/golang.svg'), java: require('./static/img/logos/java.svg'), js: require('./static/img/logos/javascript.svg'), + php: require('./static/img/logos/php.svg'), py: require('./static/img/logos/python.svg'), http: require('./static/img/logos/globe.svg'), }; diff --git a/content/contribute.page.tsx b/content/contribute.page.tsx new file mode 100644 index 00000000000..5ddec569b39 --- /dev/null +++ b/content/contribute.page.tsx @@ -0,0 +1,528 @@ +import * as React from "react"; +import { useTranslate } from "@portal/hooks"; +import NetworkNodeLight from "./static/js/community/NetworkNodeLight.json"; +import GrantsDark from "./static/js/community/XRPLGrantsDark.json"; +import CareersDark from "./static/js/community/CareersDark.json"; +import { useLottie } from "lottie-react"; +import { useThemeFromClassList } from "./@theme/helpers"; + +// This page still needs typeform integration and animations +const platforms = [ + { name: "Twitter", id: "twitter", link: "https://twitter.com/XRPLF/" }, + { name: "Discord", id: "discord", link: "https://xrpldevs.org" }, + { + name: "YouTube", + id: "youtube", + link: "https://www.youtube.com/channel/UC6zTJdNCBI-TKMt5ubNc_Gg", + }, + { + name: "GitHub", + id: "github", + link: "https://github.com/XRPLF/xrpl-dev-portal", + imgclasses: "invertible-img", + }, + { + name: "Stack Overflow", + id: "stack-overflow", + link: "https://stackoverflow.com/questions/tagged/xrp", + }, +]; + +const contributeLedger = [ + { + href: "the-rippled-server", + title: "The Rippled Server", + desc: "Learn about the core servers that power the XRP Ledger", + }, + { + href: "run-rippled-as-a-validator", + title: "Join UNL", + desc: "Have your server vote on the consensus ledger", + }, + { + href: "install-rippled", + title: "Install & Configure", + desc: "Install and update the rippled server.", + }, + { + href: "troubleshoot-the-rippled-server", + title: "Troubleshooting", + desc: "Troubleshoot all kinds of problems with the rippled server.", + }, +]; + +export default function Contribute() { + const { translate } = useTranslate(); + //Network Node lg + const options = { + animationData: NetworkNodeLight, + loop: true, + }; + const NetNodeLg = useLottie(options); + const NetNodeLgView = NetNodeLg.View; + //Network Node sm + const NetNodeSm = useLottie(options); + const NetNodeSmView = NetNodeSm.View; + + // Grants lg + const grantsOptions = { + animationData: GrantsDark, + loop: true, + }; + const grantsAnimationLg = useLottie(grantsOptions); + const GrantsDarkAnimationLg = grantsAnimationLg.View; + // Grants Sm + const grantsAnimationSm = useLottie(grantsOptions); + const GrantsDarkAnimationSm = grantsAnimationSm.View; + //Careers lg + const careersOptions = { + animationData: CareersDark, + loop: true, + }; + const carDarkLg = useLottie(careersOptions); + const CareersDarkLg = carDarkLg.View; + //Careers sm + const carDarkSm = useLottie(careersOptions); + const CareersDarkSm = carDarkSm.View; + + return ( +
+
+
+
+ People sitting at a conference + Person speaking at a conference + Person sitting and speaking + People chatting + Person speaking at Apex +
+
+
+

+ {translate("Open for Business, ")} +
+ {translate("Driven to Innovate")} +

+
+ {translate("The XRPL Community")} +
+
+
+
+ {/* Join conversation */} +
+
+

+ {translate("Find the community on the platforms below")} +

+
+ {translate("Join the Conversation")} +
+
+
+ {platforms.map((plat) => ( + +
+
+ (logo) +
+

{plat.name}

+
+
 
+
+ ))} +
+
+ {/* Contribute */} +
+
+
+ {NetNodeLgView} +
+
+
+

+ {translate("Run an XRP Ledger network node")} +

+
+ {translate("Contribute to Consensus")} +
+
+
{NetNodeSmView}
+
+ {contributeLedger.map((cc) => ( +
+ + {cc.title} + +

{cc.desc}

+
+ ))} +
+
+
+
+ {/* Grants */} +
+
+
+
+

+ {translate("Apply for funding to build your XRPL project")} +

+
{translate("XRPL Grants")}
+
+

+ {translate( + "The XRPL Grants program funds select open-source projects that solve problems and grow the XRP Ledger community." + )} +

+
+
{GrantsDarkAnimationLg}
+ + {translate("Apply for a Grant")} + +
+
+
+
+
+ {translate("Awarded in a single grant")} +
+ $10K - $200K +
+
+
+ {translate("Distributed to grant recipients")} +
+ $6.0M +
+
+
+ {translate("Open-source projects funded ")} +
+ 50+ +
+
+ {GrantsDarkAnimationSm} + + {translate("Learn More")} + +
+
+
+
+ {/* Blog */} +
+
+
+ Bubbles with people inside +
+
+
+

+ {translate( + "Showcase your XRPL project, application or product" + )} +

+
+ {translate("XRPL Community Spotlight")} +
+
+

+ {translate( + 'Get featured on the Developer Reflections blog or Blockchain Use Cases page, and explore XRPL community highlights.' + )} +

+
+ Bubbles with people inside +
+ +
+
+
+ {/* Events */} +
+
+
+ {/* Large. 3 image in col */} +
+
+ People standing at Apex +

+ {translate("Welcome to Apex 2021")} +

+
+
+ People standing in a circle +

+ {translate("XRPL Community Meetup")} +

+
+
+ Blue and pink card +

+ {translate("XRPL Hackathon 2022")} +

+
+
+
+
+
+

+ {translate( + "Check out global events across the XRPL community" + )} +

+
{translate("XRPL Events")}
+
+

+ {translate( + "Meet the XRPL community at meetups, hackathons, conferences, and more across global regions." + )} +

+ {/* Mobile. 3 inline images. */} +
+
+ People standing at Apex +
{translate("Welcome to Apex 2021")}
+
+
+ People standing in a circle +
{translate("XRPL Community Meetup")}
+
+
+ Blue and pink card +
{translate("XRPL Hackathon 2022")}
+
+
+ +
+
+
+ + {/* Careers */} +
+
+
{CareersDarkLg}
+
+
+

+ {translate( + "Discover your next career opportunity in the XRPL community" + )} +

+
{translate("XRPL Careers")}
+
+

+ {translate( + "Teams across the XRPL community are looking for talented individuals to help build their next innovation." + )} +

+
{CareersDarkSm}
+ +
+
+
+ {/* XRPL Design Assets */} +
+
+
+
+

+ {translate("Review guidelines for using XRPL design assets")} +

+
{translate("XRPL Assets")}
+
+

+ {translate( + "Just like the technology itself, XRPL assets are open source and available for anyone to use. Check out this helpful framework for using XRPL visuals. " + )} +

+
+
+ Preview of xrpl community design assets webpages +
+
+ +
+
+
+ Preview of xrpl community design assets webpages +
+
+
+
+
+
+ default-alt-text + default-alt-text +
+
+

+ {translate( + "A community-driven resource for all things XRPL.org" + )} +

+
+ {translate("Contribute to XRPL.org")} +
+
+

+ {translate( + "Thank you for your interest in contributing to XRPL.org. This website was created as an XRPL community resource and is meant to be a living, breathing source of truth for XRP Ledger resources. This portal is open-source and anyone can suggest changes." + )} +

+ + {translate("Read Contributor Guidelines")} + +
+
+
+
+
+ ); +} diff --git a/content/declaration.d.ts b/content/declaration.d.ts new file mode 100644 index 00000000000..d7b6917d585 --- /dev/null +++ b/content/declaration.d.ts @@ -0,0 +1,5 @@ +declare module "*.svg" { + const content: any; + export default content; + } + \ No newline at end of file diff --git a/content/dev-tools.page.tsx b/content/dev-tools.page.tsx new file mode 100644 index 00000000000..0996e0f5327 --- /dev/null +++ b/content/dev-tools.page.tsx @@ -0,0 +1,300 @@ +import * as React from "react"; +import { useTranslate } from "@portal/hooks"; +const explorers_tools = [ + { + id: "xrp-explorer", + title: "XRPL Explorer", + description: + "View validations of new ledger versions in real-time, or chart the location of servers in the XRP Ledger.", + href: "https://livenet.xrpl.org", + img: require("img/dev-tools/explorer.png"), + }, + { + id: "bithomp-explorer", + title: "Bithomp Explorer", + description: + "Explore public ledger data including accounts' transaction history and known names.", + href: "https://bithomp.com/", + img: require("img/dev-tools/bithomp.png"), + }, + { + id: "xrpscan", + title: "XRPScan", + description: + "Explore ledger activity, view amendment voting in real-time, and get account information. API access is also available.", + href: "https://xrpscan.com/", + img: require("img/dev-tools/xrpscan.png"), + }, + { + id: "token-list", + title: "Token List", + description: + "See all tokens issued in the XRP Ledger and use preset tools to issue custom tokens at the click of a button.", + href: "https://xumm.community/tokens", + img: require("img/dev-tools/tokenlist.png"), + }, +]; + +const api_access_tools = [ + { + id: "websocket", + title: "WebSocket Tool", + description: + "Send sample requests and get responses from the rippled API. ", + href: "websocket-api-tool", + img: require("img/dev-tools/websocket-tool.png"), + }, + { + id: "rpc", + title: "RPC Tool", + description: + "Print raw information about an XRP Ledger account, transaction, or ledger.", + href: "xrp-ledger-rpc-tool", + img: require("img/dev-tools/rpc-tool.png"), + }, + { + id: "technical-explorer", + title: "Technical Explorer", + description: "Browse API objects from the ledger with real-time updates. ", + href: "https://explorer.xrplf.org/", + img: require("img/dev-tools/technical-explorer.png"), + }, + { + id: "faucets", + title: "Faucets", + description: + "Get credentials and test-XRP for XRP Ledger Testnet or Devnet.", + href: "xrp-testnet-faucet", + img: require("img/dev-tools/faucets.png"), + }, + { + id: "trasaction-sender", + title: "Transaction Sender", + description: + "Test how your code handles various XRP Ledger transactions by sending them over the Testnet to the address.", + href: "tx-sender", + img: require("img/dev-tools/transaction-sender.png"), + }, +]; + +const other = [ + { + id: "domain", + title: "Domain Verification Checker", + description: "Verify your validator's domain.", + href: "validator-domain-verifier", + img: require("img/dev-tools/domain-checker.png"), + }, + { + id: "xrp-ledger", + title: "xrp-ledger.toml Checker", + description: "Verify that your xrp-ledger.toml file is set up properly.", + href: "xrp-ledger-toml-checker", + img: require("img/dev-tools/toml-checker.png"), + }, + { + id: "binary-visualizer", + title: "Binary Visualizer", + description: + "Parse the XRP Ledger's native binary format with a visual representation breaking down the raw structure into its parts.", + href: "https://richardah.github.io/xrpl-binary-visualizer/", + img: require("img/dev-tools/binary-visualizer.png"), + }, + { + id: "token-metadata-lookup", + title: "Token Metadata Lookup", + description: + "Query known information about any token issued on the XRP Ledger.", + href: "https://xrplmeta.org/", + img: require("img/dev-tools/token-metadata.png"), + }, +]; + +export default function DevTools() { + const { translate } = useTranslate(); + + return ( +
+
+
+
+
+

+ {translate( + "Use the developer tools to test, explore, and validate XRP Ledger\n API requests and behavior." + )} +

+

{translate("Dev Tools")}

+
+
+
+
+
+
+
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+
+
+

{translate("Explorers")}

+ +
+
+

{translate("API Access")}

+ +
+
+

{translate("Other")}

+ +
+
+
+
+
+
+ default-alt-text + default-alt-text +
+

+ {translate("Have an Idea For a Tool?")} +

+

+ {translate( + "Contribute to the XRP Ledger community by submitting your idea for a tool or open a pull request if you've developed a tool." + )} +

+ + {translate("Open a pull Request")} + +
+
+
+
+
+ ); +} diff --git a/content/developer-funding.page.tsx b/content/developer-funding.page.tsx new file mode 100644 index 00000000000..018f89eb444 --- /dev/null +++ b/content/developer-funding.page.tsx @@ -0,0 +1,414 @@ +import * as React from "react"; +import { useTranslate } from "@portal/hooks"; + +false; + +const target = { prefix: "" }; // TODO: fixme + +export default function Funding() { + const { translate } = useTranslate(); + + return ( +
+
+
+ default-alt-text +
+
+
+
+

+ {translate("XRPL Developer Funding Programs")} +

+
{translate("Project Resources")}
+
+
+
+
+
+
+

+ {translate( + "Explore funding opportunities for developers and teams" + )} +

+
{translate("Funding Overview")}
+
+

+ {translate( + "If you’re a software developer or team looking to build your next project or venture on the XRP Ledger (XRPL), there are a number of opportunities to fund your next innovation." + )} +

+
+
+ {/* Hackathons */} +
+ {/* flex. Col for mobile. Row for large. on large align content to the center */} +
+
+
+

{translate("XRPL Hackathons")}

+
{translate("Join an Event")}
+
+

+ {translate( + "Hackathons are open to all developers to explore and invent a project on the XRP Ledger. Visit the events page for updates on upcoming hackathons." + )} +

+ +
+
+
+ {/* funding list */} +
+
+ default-alt-text +
+
{translate("Best for")}
+

+ {translate( + "Software developers and teams building directly on the XRP Ledger" + )} +

+
+
+ {/* Hide on large */} +
+ default-alt-text +
+
{translate("Required")}
+

{translate("Some coding experience")}

+
+
+
+ default-alt-text +
+
{translate("Level")}
+

{translate("XRPL beginner to advanced developers")}

+
+
+ {/* Hide on large */} +
+ default-alt-text +
+
{translate("Funding Levels")}
+

{translate("Prize money and awards")}

+
+
+
+ {/* end col 1 */} + {/* Show on large */} +
+
+
+ default-alt-text +
+
{translate("Required")}
+

{translate("Some coding experience")}

+
+
+
+
+ default-alt-text +
+
{translate("Funding Levels")}
+

{translate("Prize money and awards")}

+
+
+
+ {/* end col 2 */} +
+
+
+ + {translate("See Upcoming Events")} + +
+
+
+ {/* Eligibility */} +
+ {/* flex. Col for mobile. Row for large. on large align content to the center */} +
+
+
+

{translate("XRPL Grants")}

+
+ {translate("Fund Your Project")} +
+
+

+ {translate( + "Developer grants for projects that contribute to the growing XRP Ledger community." + )} +

+
+ + {translate("Past awardees include:")} + +
+
+ +
+
+
+ {/* funding list */} +
+
+ default-alt-text +
+
{translate("Best for")}
+

+ {translate( + "Software developers, teams, and start-ups building directly on the XRP Ledger" + )} +

+
+
+ {/* Hide on large */} +
+ default-alt-text +
+
{translate("Required")}
+

+ {translate("Coding experience")} + + {translate(" Github repository ")} + + {translate(" Project narrative/description ")} + + {translate(" At least one developer on the core team ")} + + {translate(" Budget and milestones")} +

+
+
+
+ default-alt-text +
+
{translate("Level")}
+

+ {translate("XRPL intermediate to advanced developers")} +

+
+
+ {/* Hide on large */} +
+ default-alt-text +
+
{translate("Funding Levels")}
+

{translate("$10,000 - $200,000")}

+
+
+
+ {/* end col 1 */} + {/* Show on large */} +
+
+
+ default-alt-text +
+
{translate("Required")}
+

+ {translate("Coding experience")}{" "} + + {translate("Github repository")}{" "} + + {translate("Project narrative/description")}{" "} + + {translate( + "At least one developer on the core team" + )}{" "} + + {translate("Budget and milestones")} +

+
+
+
+
+ default-alt-text +
+
{translate("Funding Levels")}
+

{translate("$10,000 - $200,000")}

+
+
+
+ {/* end col 2 */} +
+
+ +
+
+ {/* Accelerator */} +
+ {/* flex. Col for mobile. Row for large. on large align content to the center */} +
+
+
+

{translate("XRPL Accelerator")}

+
+ {translate("Advance your project")} +
+
+

+ {translate( + "12-week program for entrepreneurs building on the XRP Ledger to scale their projects into thriving businesses." + )} +

+ +
+
+
+ {/* funding list */} +
+
+ default-alt-text +
+
{translate("Best for")}
+

+ {translate( + "Start-ups building scalable products on XRPL that can capture a large market opportunity" + )} +

+
+
+ {/* Hide on large */} +
+ default-alt-text +
+
{translate("Required")}
+

+ {" "} + {translate("Strong founding team")} +
+ {" "} + {translate("Bold, ambitious vision")} +
+ {" "} + {translate("Ideally an MVP and monetization strategy")} +

+
+
+
+ default-alt-text +
+
{translate("Level")}
+

+ {" "} + {translate("XRPL advanced developers")} +
+ {" "} + {translate("Business acumen")} +

+
+
+ {/* Hide on large */} +
+ default-alt-text +
+
{translate("Funding Levels")}
+

+ {translate( + "$50,000 (grant) + pitch for venture funding" + )} +

+
+
+
+ {/* end col 1 */} + {/* Show on large */} +
+
+
+ default-alt-text +
+
{translate("Required")}
+

+ {" "} + {translate("Strong founding team")} +
+ {" "} + {translate("Bold, ambitious vision")} +
+ {" "} + {translate( + "Ideally an MVP and monetization strategy" + )} +

+
+
+
+
+ default-alt-text +
+
{translate("Funding Levels")}
+

+ {translate( + "$50,000 (grant) + pitch for venture funding" + )} +

+
+
+
+ {/* end col 2 */} +
+
+
+ + {translate("View XRPL Accelerator")} + +
+
+
+
+ default-alt-text +
+
+
+ ); +} diff --git a/content/events.page.tsx b/content/events.page.tsx new file mode 100644 index 00000000000..6c73195e312 --- /dev/null +++ b/content/events.page.tsx @@ -0,0 +1,868 @@ +import { useState, useMemo } from "react"; +import * as React from "react"; +import { useTranslate } from "@portal/hooks"; +const moment = require('moment'); + + +function categorizeDates(arr) { + const past = []; + const upcoming = []; + const today = moment().startOf('day'); // set the time to midnight + + arr.forEach((obj) => { + const endDate = moment(obj.end_date, "MMMM D, YYYY"); // parse the 'end_date' string into a moment object + if (endDate.isBefore(today)) { + obj.type = `${obj.type}-past`; + past.push(obj); + } else { + obj.type = `${obj.type}-upcoming`; + upcoming.push(obj); + } + }); + + return { past, upcoming }; +} + +const events = [ + { + name: "Hackathon: 2021", + description: + "Explore the exciting project submissions from the fall 2021 XRPL Hackathon that focused on the NFT and Hooks smart contract functionalities on the ledger.", + type: "hackathon", + link: "https://xrpl-hackathon-2021.devpost.com/project-gallery", + location: "Virtual", + date: "September 13-October 6, 2021", + image: "Hackathons.png", + end_date: "October 6, 2021", + }, + + { + name: "XRPL Community Meetup: San Diego", + description: + "The first official Meetup hosted by the XRPL Community. Community members in Southern California gathered around a firepit and shared their experiences with the XRPL.", + type: "meetup", + link: "https://www.meetup.com/xrpl-community/events/281806645/", + location: "San Diego, CA", + date: "Saturday, November 20, 2021", + image: "event-meetup-san-diego@2x.jpg", + end_date: "November 20, 2021", + }, + + { + name: "XRPL Community Meetup: Atlanta", + description: + "The inaugural Meetup in the Southeast region of the United States got community members excited to meet like-minded individuals in their area.", + type: "meetup", + link: "https://www.meetup.com/xrpl-community/events/281980446/", + location: "Atlanta, GA", + date: "Saturday, November 27, 2021", + image: "event-meetup-alanta@2x.jpg", + end_date: "November 27, 2021", + }, + + { + name: "XRPL Community Meetup: San Francisco", + description: + "Community members in the Bay Area with diverse backgrounds in technology and beyond met in downtown San Francisco.", + type: "meetup", + link: "https://www.meetup.com/xrpl-community/events/281806676/", + location: "San Francisco, CA", + date: "Monday, November 29, 2021", + image: "event-meetup-san-francisco@2x.jpg", + end_date: "November 29, 2021", + }, + + { + name: "XRPL Community Meetup: Miami", + description: + "One of the biggest Meetups held so far, this was the first of an ongoing series of local XRPL Community Meetup events in Miami. ", + type: "meetup", + link: "https://www.meetup.com/xrpl-community/events/281829463/", + location: "Miami, FL ", + date: "Thursday, December 9, 2021", + image: "event-meetup-miami@2x.jpg", + end_date: "December 8, 2022", + }, + + { + name: "XRPL Community Meetup: Nashville", + description: + "Nashville-based members of the XRPL Community came together to network, learn, share ideas, and form new partnerships. ", + type: "meetup", + link: "https://www.meetup.com/xrp-ledger-nashville-community/events/282538189/", + location: "Nashville, TN", + date: "Saturday, December 18, 2021", + image: "event-meetup-nashville@2x.jpg", + end_date: "December 18, 2022", + }, + + { + name: "NYC Meetup/Hackathon XRPL Celebration", + id: "upcoming-xrpl-new-york", + description: + "The NYC/XRP community and Dev Null Productions cordially invites you to attend our 10th meetup, being held in celebration of the on-going XRPL Hackathon, at the unique and artistic TALS studio in Midtown Manhattan.", + type: "meetup", + link: "https://www.meetup.com/NYC-XRP/events/284485901/", + location: "NYC, NY", + date: "March 30, 2022", + image: "event-meetup-new-york@2x.jpg", + end_date: "March 30, 2022", + }, + + { + name: "XRPL Community Meetup: London", + id: "upcoming-xrpl-london", + description: + "Join for an evening of programming and networking with members of the XRPL Community in London, co-organised by Peerkat - the NFT platform for creators on the XRPL.", + type: "meetup", + link: "https://www.meetup.com/xrp-ledger-london-community/events/283536458/", + location: "IDEALondon", + date: "March 31, 2022", + image: "event-meetup-london.png", + end_date: "March 31, 2022", + }, + + { + name: "XRPL Community Meetup: Toronto", + id: "upcoming-xrpl-toronto", + description: + "Join us for our first Toronto meetup with an evening of programming and networking with other members of the XRP Ledger Community with special guests from the XUMM Wallet and ARK PLATES teams!", + type: "meetup", + link: "https://www.meetup.com/xrpl-toronto-community-meetup/events/284177188/", + location: "Toronto", + date: "March 31, 2022", + image: "event-meetup-toronto@2x.jpg", + end_date: "March 31, 2022", + }, + + { + name: "XRPL Community Meetup: San Diego", + id: "upcoming-xrpl-san-diego", + description: + "Get together with other San Diego-based members of the XRP Ledger Community to network and discuss all things XRPL! Join us for our second San Diego XRPL Meetup.", + type: "meetup", + link: "https://www.meetup.com/xrp-ledger-san-diego-community/events/284663355/", + location: "San Diego, CA", + date: "April 1st 2022", + image: "event-meetup-san-diego@2x.jpg", + end_date: "April 1, 2022", + }, + + { + name: "XRPL Community Meetup: Irvine LA", + id: "upcoming-xrpl-irvine", + description: + "Get together with other LA-based members of the XRP Ledger Community to network and discuss all things XRPL.", + type: "meetup", + link: "https://www.meetup.com/xrp-ledger-la-community-meetup/events/284824635/", + location: "UC Irvine, CA", + date: "April 3rd 2022", + image: "event-meetup-irvine@2x.jpg", + end_date: "April 2, 2022", + }, + + { + name: "XRPL Community Meetup: Miami #2", + id: "upcoming-xrpl-miami-2", + description: + "We're excited to host our second Miami meetup for XRP Ledger community members on April 6th from 6-8pm, featuring Marco Neri, Developer Advocate at Ripple, who will join us to give a presentation on the XRP Ledger.", + type: "meetup", + link: "https://www.meetup.com/xrp-ledger-miami-community/events/284463736/", + location: "The LAB Miami, FL", + date: "April 6th 2022", + image: "event-meetup-miami@2x.jpg", + end_date: "April 6, 2022", + }, + + { + name: "Hackathon:New Year, New NFT", + id: "upcoming-xrpl-hackathon-new-year", + description: + "Build Functional NFTs that span across a full range of use cases.", + type: "hackathon", + link: "https://xrplnft2022.devpost.com/", + location: "Virtual", + date: "January 31 - March 14, 2022", + image: "Hackathons.png", + end_date: "March 14, 2022", + }, + + { + name: "Hackathon: Creating Real World Impact", + description: + "Build apps to improve lives in the real world using any of the SDKs and APIs for the XRP Ledger.", + type: "hackathon", + link: "https://xrplimpact.devpost.com/", + location: "Virtual", + date: "May 26 - Jul 11, 2022", + image: "Hackathons.png", + end_date: "July 11, 2022", + }, + + { + name: "Conference:Apex 2021", + description: + "View sessions from the Apex 2021 stages in Las Vegas and Tallinn.", + type: "conference", + link: "https://www.youtube.com/playlist?list=PLJQ55Tj1hIVZgnreb8ODgxJW032M9Z2XZ", + location: "Las Vegas, Tallinn", + date: "September 29-30, 2021", + image: "Conference.png", + end_date: "September 30, 2022", + }, + + { + name: "Hackathon:NFT Launch Party", + description: + "Build Functional NFTs that span across a full range of use cases.", + type: "hackathon", + link: "https://xrplnft.devpost.com/", + location: "Virtual", + date: "Oct 31 - Dec 12, 2022", + image: "Hackathons.png", + end_date: "December 12, 2022", + }, + { + name: "XRPL Zone @ Consensus", + description: + "XRPL Zone: your all-in-one location for creating and collaborating on XRP Ledger (XRPL) projects.", + type: "zone", + link: "https://xrplzone-consensus.splashthat.com/", + location: "Austin, Texas", + date: "April 27, 2023", + image: "XRPLZone.png", + end_date: "April 27, 2023", + }, + { + name: "XRPL Developer AMAs", + description: + "A chat with Crossmark about wallet development on the XRP Ledger!", + type: "ama", + link: "https://discord.com/invite/xrpl", + location: "XRPL Developers Discord", + date: "April 14, 2023", + image: "AMAs.png", + end_date: "April 14, 2023", + }, + { + name: "NFTs with xrp.cafe", + description: + "A cozy discussion with xrp.cafe about NFTs and the future of NFT infrastructure on the XRP Ledger.", + type: "ama", + link: "https://dev.to/ripplexdev/xrpcafe-ama-on-xrpl-developers-discord-36gp", + location: "XRPL Developers Discord", + date: "January 1, 2023", + image: "AMAs.png", + end_date: "January 1, 2023", + }, + { + name: "Community Calls #1", + description: + "An open discussion about the development of XLS-20 and NFTs on the XRP Ledger.", + type: "cc", + link: "https://youtu.be/KpSt0PFT2QM", + location: "XRPL Developers Discord", + date: "June 02, 2022", + image: "CommunityCalls.png", + end_date: "June 02, 2022", + }, + { + name: "Community Calls #2", + description: "A community call about XRPL amendments with Chris McKay.", + type: "cc", + link: "https://youtu.be/oNJ1Qqns2Gw", + location: "XRPL Developers Discord", + date: "August 8, 2022", + image: "CommunityCalls.png", + end_date: "August 8, 2022", + }, + { + name: "AMAs: POS and Crypto Payments with FriiPay", + description: + "A discussion with FriiPay about payment rails and POS integrations through the XRP Ledger", + type: "ama", + link: "https://dev.to/ripplexdev/xrpl-developer-ama-pos-and-crypto-payments-with-friipay-13hm", + location: "XRPL Developers Discord", + date: "February 15, 2023", + image: "AMAs.png", + end_date: "February 15, 2023", + }, + { + name: "AMAs: On-chain Data with Bithomp", + description: + "A discuss with Bithomp about data infrastructure and their NFT integrations in one of the most popular explorers on the XRP Ledger.", + type: "ama", + link: "https://dev.to/ripplexdev/xrpl-developer-ama-bithomp-4a8d", + location: "XRPL Developers Discord", + date: "March 15, 2023", + image: "AMAs.png", + end_date: "March 15, 2023", + }, + { + name: "XRPL Community Meetup: Madrid", + description: + "Get together with other Madrid-based members of the XRP Ledger community to network and discuss all things XRPL.", + type: "meetup", + link: "https://www.meetup.com/xrp-ledger-espana-madrid-y-barcelona/events/292597878", + location: "Madrid", + date: "April 29, 2023", + image: "Madrid.png", + end_date: "April 29, 2023", + }, + { + name: "APEX 2023: The XRPL Developer Summit", + description: + "Apex XRPL Developer Summit is the annual event where developers, contributors, and thought leaders come together to learn, build, share, network, and celebrate all things XRP Ledger.", + type: "conference", + link: "http://apexdevsummit.com", + location: "Amsterdam", + date: "September 6 - 8, 2023", + image: "Conference.png", + end_date: "September 8, 2023", + }, + { + name: "Community Calls #3", + description: + "An open chat with the XRP Ledger community about NFTs and the EVM sidechain testnet.", + type: "cc", + link: "https://discord.com/invite/xrpl", + location: "XRPL Developers Discord", + date: "March 30, 2023", + image: "CommunityCalls.png", + end_date: "March 30, 2023", + }, + { + name: "XRPL Roundtable: XRPL @ Consensus", + description: + "A roundtable chat with those who represented the XRP Ledger at Consensus 2023.", + type: "ama", + link: "https://twitter.com/RippleXDev", + location: "Twitter Spaces", + date: "June 24, 2023", + image: "AMAs.png", + end_date: "June 24, 2023", + }, + { + name: "XRPL BUIDLERS BOOTCAMP", + description: + "First XRPL Ideathon in Japan Held Ahead of Crypto Event IVS Crypto.", + type: "hackathon", + link: "https://lu.ma/xrpl_builders_bootcamp", + location: "Tokyo", + date: "June 25, 2023", + image: "Hackathons.png", + end_date: "June 25, 2023", + }, + { + name: "XRPL Workshop at WebX Asia", + description: + "Workshop with XRP Ledger co-developer David Schwartz and leading Japanese XRPL developers.", + type: "conference", + link: "https://lu.ma/mn90h3h9", + location: "Tokyo", + date: "July 26, 2023", + image: "Conference.png", + end_date: "July 26, 2023", + }, + { + name: "XRPL Summer Hackathon", + description: + "The XRPL Hackathon is all about supporting innovative projects and getting developers from diverse backgrounds to explore creative ideas and transition from centralized systems to the exciting world of blockchain. Bring your innovative projects to life and get a chance to secure up to $10,000 in funding.", + type: "hackathon", + link: "https://dorahacks.io/hackathon/xrpl-hackathon", + location: "Online", + date: "June 5, 2023 - July 30, 2023", + image: "Hackathons.png", + end_date: "July 30, 2023", + }, + { + name: "AMAs: XRPL Developer AMAs", + description: + "A chat with Matt Mankins from Lorem Labs to discuss Kudos for Code and his recent XRPL Accelerator acceptance.", + type: "ama", + link: "http://xrpldevs.org/", + location: "XRPL Developers Discord", + date: "July 18, 2023", + image: "AMAs.png", + end_date: "July 18, 2023", + }, + { + name: "Q3 2023 Ripple XRP Meetup", + description: + "Join your fellow Ripple XRP Enthusiasts for a 90-minute discussion. Topics: XRP, Flare, XRPL, Ripple (Company), General Crypto QA.", + type: "meetup", + link: "https://www.meetup.com/ripple-xrp-community/events/292740612", + location: "Online", + date: "July 13, 2023", + image: "Virtual-Event.png", + end_date: "July 13, 2023", + }, + { + name: "XRPL Toronto Meetup", + description: + "Prepare for an evening of XRPL Toronto Meetup – a celebration of discovery and connection. Join enthusiasts, innovators, and developers for inspiring talks, conversations, and learning. All are welcome, from seasoned developers to curious newcomers.", + type: "meetup", + link: "https://www.meetup.com/xrpl-toronto-community-meetup/events/294766059", + location: "Downtown Toronto", + date: "August 14, 2023", + image: "event-meetup-toronto@2x.jpg", + end_date: "August 14, 2023", + }, + { + name: "XRPL London Meetup (Accelerator Edition)", + description: + "Join us for a Happy Hour hosted by the XRPL Accelerator Team! Connect with fellow start-ups in the blockchain space and gain insights into cutting-edge projects and founders.", + type: "meetup", + link: "https://lu.ma/xrplacceleratorhappyhour", + location: "Central London", + date: "September 04, 2023", + image: "event-meetup-london.png", + end_date: "September 04, 2023", + }, + { + name: "XRPL Accelerator Demo Day", + description: + "​​Join us for our very first XRPL Accelerator Demo Day in London. Witness pitches from nine portfolio startups, engage in Q&A sessions, and network with founders and investors. ", + type: "conference", + link: "https://lu.ma/xrplaccelerator", + location: "Central London and Online", + date: "September 05, 2023", + image: "Conference.png", + end_date: "September 05, 2023", + }, + { + name: "XRPL Hackathon - Apex 2023", + description: + "Join the XRPL Hackathon - APEX 2023, a week before the XRP Ledger's annual developer conference. Explore the Future of Finance and Web3 tracks, collaborate, learn, and compete for 10K USD in prizes.", + type: "hackathon", + link: "https://lu.ma/4h3bqfw1", + location: "Delft, Netherlands ", + date: "August 30, 2023 - August 31, 2023", + image: "Hackathons.png", + end_date: "August 31, 2023", + }, + { + name: "XRPL Grants Info Session: Financial Inclusion Focused", + description: + "Join us for a live information session and Q&A on applying to XRPL Grants Wave 7. This session will provide a general overview of the XRPL Grants application for Wave 7, with a focus on Financial Inclusion projects.", + type: "info-session", + link: "https://www.youtube.com/watch?v=TgLaAXTZY7Q", + location: "Virtual - Zoom", + date: "September 05, 2023", + image: "InfoSessions.png", + end_date: "September 05, 2023", + }, + { + name: "XRPL South Korea Meetup - XCCESS", + description: + "We are excited to introduce the XRP Ledger XCCESS - an exclusive meetup bringing together the brightest minds, innovators, and enthusiasts from South Korea's blockchain industry. Join us for an engaging experience during the Korea Blockchain Week.", + type: "meetup", + link: "https://lu.ma/xrplxccess", + location: "South Korea - JBK Tower", + date: "September 06, 2023", + image: "SouthKoreaMeetup.png", + end_date: "September 06, 2023", + }, + { + name: "XRPL Grants Info Session: Decentralized Exchange (DEX) Focused", + description: + "Watch the recorded information session and Q&A on applying to XRPL Grants Wave 7. This session will provide a general overview of the XRPL Grants application for Wave 7, with a focus on Decentralized Exchange (DEX) projects.", + type: "info-session", + link: "https://www.youtube.com/watch?v=BbGu0QC5WEE", + location: "Virtual - Zoom", + date: "September 06, 2023", + image: "InfoSessions.png", + end_date: "September 06, 2023", + }, + { + name: "XRPL Developers Discord AMA: Edge Wallet", + description: + "Join us for a live chat on Discord and learn more about Edge Wallet and how they are building on the XRP Ledger.", + type: "ama", + link: "http://xrpldevs.org/", + location: "XRPL Developers Discord", + date: "October 13, 2023", + image: "AMAs.png", + end_date: "October 13, 2023", + }, + + { + name: "XRPL Developers Reddit AMA: Real World Assets", + description: + "Join us for a live chat on Reddit and learn more about how developers are building real world assets with confidence on the XRP Ledger.", + type: "ama", + link: "https://xrplresources.org/rwa-ama?utm_source=web&utm_medium=web&utm_campaign=bwc", + location: "Virtual - Reddit", + date: "October 17, 2023", + image: "AMAs.png", + end_date: "October 17, 2023", + }, +]; + +export default function Events() { + const { translate } = useTranslate(); + const { past, upcoming } = useMemo(() => categorizeDates(events), []); + + const [upcomingFilters, setUpcomingFilters] = useState({ + conference: true, + meetup: true, + hackathon: true, + ama: true, + cc: true, + zone: true, + "info-session": true, + }); + + const [pastFilters, setPastFilters] = useState({ + conference: true, + meetup: true, + hackathon: true, + ama: true, + cc: true, + zone: true, + "info-session": true, + }); + + const filteredUpcoming = useMemo(() => { + return upcoming.filter( + (event) => upcomingFilters[event.type.split("-")[0]] + ); + }, [upcoming, upcomingFilters]); + + const filteredPast = useMemo(() => { + return past.filter((event) => pastFilters[event.type.split("-")[0]]); + }, [past, pastFilters]); + + const handleUpcomingFilterChange = (event) => { + const { name, checked } = event.target; + setUpcomingFilters((prevFilters) => ({ + ...prevFilters, + [name.replace('-upcoming','')]: checked, + })); + }; + + const handlePastFilterChange = (event) => { + const { name, checked } = event.target; + setPastFilters((prevFilters) => ({ + ...prevFilters, + [name.replace('-past','')]: checked, + })); + }; + + return ( +
+
+
+ default-alt-text +
+
+
+
+

+ {translate("Find the XRPL Community Around the World")} +

+
{translate("Events")}
+
+
+
+
+
+
+ default-alt-text +
+
+
+

+ {translate("The XRPL Developer Summit")} +

+
{translate("Save the Date")}
+
+

+ {translate( + "Apex is back and headed to Amsterdam. Apex XRPL Developer Summit is the annual event where developers, contributors, and thought leaders come together to learn, build, share, network, and celebrate all things XRP Ledger." + )} +

+
+ Location: Amsterdam +
+
+ Date: September 6-8, 2023 +
+ +
+
+
+ {/* Upcoming Events */} +
+
+

+ {translate( + "Check out meetups, hackathons, and other events hosted by the XRPL Community" + )} +

+
{translate("Upcoming Events")}
+
+
+
Filter By:
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ {/* # Available Types - conference, hackathon, ama, cc, zone, meetup, info-session */} +
+ {filteredUpcoming.map((event) => ( + +
+
{event.name}
+
+
+

{event.description}

+
+
+ + {event.location} + + {event.date} +
+
+ ))} +
+
+ {/* Past Events */} +
+
+

+ {translate("Explore past community-hosted events")} +

+
{translate("Past Events")}
+
+
+
Filter By:
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ {filteredPast.map((event) => ( + +
+
{event.name}
+
+
+

{event.description}

+
+
+ + {event.location} + + {event.date} +
+
+ ))} +
+
+
+
+ ); +} diff --git a/content/filterCodeSamples.js b/content/filterCodeSamples.js new file mode 100644 index 00000000000..a9deb7b6b25 --- /dev/null +++ b/content/filterCodeSamples.js @@ -0,0 +1,85 @@ +const fs = require('fs'); +const path = require('path'); +const MarkdownIt = require('markdown-it'); +const { JSDOM } = require('jsdom'); + +const csDir = 'content/_code-samples/'; +const skipDirs = ['node_modules', '.git', '__pycache__']; +const wordsToCaps = ['xrp']; + +const markdown = new MarkdownIt(); +let net, tls; +if (typeof window === 'undefined') { + net = require('net'); + tls = require('tls'); +} + +const toTitleCase = (s) => { + const words = s.split(/_|[^\w']/); + return words + .filter((word) => word) + .map((word) => (wordsToCaps.includes(word) ? word.toUpperCase() : word.charAt(0).toUpperCase() + word.slice(1))) + .join(' ') + .replace("'S", "'s") + .replace(" A ", " a "); +}; + +let langs = []; + +const sortfunc = (cs) => { + if (cs.title.includes('Intro') || cs.title.includes('Quickstart')) { + return ` ${cs.title}`; + } + return cs.title; +}; + +const allCodeSamples = () => { + const cses = []; + + const walkDir = (dirPath) => { + const filenames = fs.readdirSync(dirPath); + + for (const skip of skipDirs) { + const index = filenames.indexOf(skip); + if (index > -1) filenames.splice(index, 1); + } + + filenames.forEach((file) => { + const fullPath = path.join(dirPath, file); + + if (fs.statSync(fullPath).isDirectory()) { + walkDir(fullPath); + } else if (file === 'README.md') { + const md = fs.readFileSync(fullPath, 'utf-8'); + const html = markdown.render(md); + const dom = new JSDOM(html); + const document = dom.window.document; + + const h = document.querySelector('h1, h2, h3'); + const p = document.querySelector('p'); + + const cs = { + path: dirPath, + title: h ? h.textContent : toTitleCase(path.basename(dirPath)), + description: p ? p.textContent : '', + href: dirPath, + // you can fill the 'langs' array as per your logic + langs: [], + }; + + // Add unique names to list for sorting + if (!langs.includes(cs.langs)) { + langs.push(cs.langs); + } + + cses.push(cs); + } + }); + }; + + walkDir(csDir); + + return cses.sort((a, b) => sortfunc(a).localeCompare(sortfunc(b))); +}; + +export { allCodeSamples, langs as allLangs }; \ No newline at end of file diff --git a/content/history.page.tsx b/content/history.page.tsx new file mode 100644 index 00000000000..bd2575d30f2 --- /dev/null +++ b/content/history.page.tsx @@ -0,0 +1,247 @@ +import * as React from "react"; +import { useTranslate } from "@portal/hooks"; + +export default function History() { + const { translate } = useTranslate(); + const [openSections, setOpenSections] = React.useState({}); + + const toggleSection = (sectionId) => { + setOpenSections({ + ...openSections, + [sectionId]: !openSections[sectionId], + }); + }; + + return ( +
+
+
+ default-alt-text +
+
+
+
+

+ {translate("Provide a Better Alternative to Bitcoin")} +

+
{translate("XRPL's Origin")}
+
+
+
+
+
+

+ {translate( + "In 2011, three engineers—David Schwartz, Jed McCaleb, and Arthur Britto—began developing the XRP Ledger (XRPL). Fascinated by Bitcoin, they set out to create a better version that improved upon its limitations—with the goal of creating a digital asset that was more sustainable and built specifically for payments." + )} +

+

+ {translate( + "The XRP Ledger first launched in June 2012. Shortly thereafter, they were joined by Chris Larsen, and the group started the Company NewCoin in September 2012 (quickly renamed OpenCoin and now named Ripple)." + )} +

+

+ {translate( + "The XRPL founders gifted 80 billion XRP, the platform’s native currency, to the company. Ripple has since put the majority in escrow." + )} +

+
+
+
+ default-alt-text +
+
+
+
+
+
+
+
+

+ {translate("2011 XRP Ledger Development")} +

+
2011
+
+

+ {translate( + "In early 2011, three developers—David Schwartz, Jed McCaleb, and Arthur Britto—were fascinated with Bitcoin but observed the waste inherent in mining. They sought to create a more sustainable system for sending value (an idea outlined in a " + )} + + {translate( + "May 2011 forum post: “Bitcoin without mining”" + )} + + {")."} +

+ toggleSection("section-1")} + > + Read More + +
+

+ {translate( + "Their initial observations about the high energy consumption and scalability issues that would plague Bitcoin proved prescient. In 2019, estimates suggest Bitcoin mining used more energy than the entire country of Portugal. Moreover, their initial read indicated that significant problems could arise if any miner obtained (or miners colluded to obtain) greater than 50% of the mining power. That risk persists with Bitcoin (and Ethereum) today as mining power has consolidated in China." + )} +

+
+
+
+
+
+
+
+

+ {translate("XRPL Launches its Native Currency, XRP")} +

+
2012
+
+

+ {translate( + "The trio of developers continued the work to build a distributed ledger that improved upon these fundamental limitations of Bitcoin, originally naming the code Ripple. The ledger included a digital asset that would originally be called “ripples” (XRP as the currency code) to follow the same naming convention as Bitcoin (BTC). At the time, the name Ripple stood for the open-source project, the unique consensus ledger (Ripple Consensus Ledger), transaction protocol (Ripple Transaction Protocol or RTXP), the network (Ripple network), and the digital asset (known as “ripples”)." + )} +

+ toggleSection("section-2")} + > + Read More + +
+

+ {translate( + "In practice, this approach led to many broad uses of “Ripple.” For clarity, the community simply started calling the digital asset by its currency code, “XRP.”" + )} +

+

+ {translate( + "By June 2012, Schwartz, McCaleb, and Britto finished code development, and the Ledger was complete." + )} +

+

+ {translate( + "Once the XRP Ledger was live, 80% of the XRP was gifted to a new company that set out to build use cases for the digital asset—initially called NewCoin and renamed quickly to OpenCoin." + )} +

+

+ {translate( + "Chris Larsen was the CEO of OpenCoin, and at the company's founding, Jed was co-founder and CTO, David Schwartz was the Chief Cryptography Officer, and Arthur Britto an advisor." + )} +

+
+
+
+
+
+
+
+

+ {translate("OpenCoin Rebranded to Ripple Labs")} +

+
2013
+
+

+ {translate( + "Since the early days, OpenCoin set out to revolutionize the global financial system. Despite the revolutionary ideals of many of Bitcoin’s early believers, Larsen never thought blockchain technology should be used to overthrow the existing financial system. He believed that history’s most transformative innovations have always relied on the great ideas that came before them—not displacing them." + )} +

+ toggleSection("section-3")} + > + Read More + +
+

+ {translate( + "In early conversations with potential customers, the team was asked about the differences between the Ripple project and OpenCoin company. With the community starting to refer to the digital asset as XRP, company leaders decided to rebrand the company to Ripple Labs, which has been shortened over time to “Ripple.”" + )} +

+

+ {translate( + "Today, Ripple has created a use case leveraging the XRP Ledger and XRP for liquidity management in its cross-border payments business. Ripple also remains a stakeholder and contributor to the broader XRPL community." + )} +

+
+
+
+
+
+
+
+

+ {translate("XRPL Foundation Launched")} +

+
2020
+
+

+ + {translate("Founded")} + + {translate( + " September 24, 2020, the XRPL Foundation is an independent and nonprofit entity with a mission to accelerate the development and adoption of the decentralized XRP Ledger. The Foundation received an initial donation of over $6.5M from Coil, Ripple, and Gatehub to fund the Foundation’s work in service of the growing number of developers and other " + )} + + {translate("global blockchain community")} + + {translate(" members building on the XRP Ledger.")} +

+
+
+
+
+
+
+
+ ); +} diff --git a/content/impact.page.tsx b/content/impact.page.tsx new file mode 100644 index 00000000000..0d35a674115 --- /dev/null +++ b/content/impact.page.tsx @@ -0,0 +1,320 @@ +import * as React from "react"; +import { useTranslate } from "@portal/hooks"; +import mapDark from "./static/js/impact/mapDark.json" +import mapLight from "./static/js/impact/mapLight.json" +import { useLottie } from "lottie-react"; +import { useThemeFromClassList } from "./@theme/helpers"; + +export default function Impact() { + const theme = useThemeFromClassList(['dark', 'light']) + const { translate } = useTranslate(); + const options = React.useMemo(() => { + return { + animationData: theme === 'dark' ? mapDark : mapLight, + loop: true + }; + },[theme]) + const { View } = useLottie(options); + return ( +
+
+
+ default-alt-text +
+
+
+
+

+ {translate("Today’s Value, Tomorrow’s Vision")} +

+
+ {translate("XRPL Today, XRPL Tomorrow")} +
+
+
+
+
+ default-alt-text +
+ {/* World map */} +
+
+
+ {translate("Building for the Future")} +
+

+ {translate("Consensus protocol is efficient and sustainable")} +

+
+ {translate( + "For more than 272 million migrants worldwide, sending and receiving money across borders is expensive, unreliable and complex." + )} +
+

+ {`${translate( + "Open and decentralized, blockchain and crypto are seeing an increase in adoption across the financial services industry, from retail and institutional investment to " + )} `} + {translate("commercial use cases")} + {` ${translate("like CBDCs, NFTs, and cross-border payments.")}`} +

+
+
+ {/* Large */} +
+ {/*
+
*/} + {View} +
+
+
+ {/* Video sidebar */} +
+
+
+