import * as React from "react"; import { useState, useRef, useEffect } from "react"; import { useTranslate, usePageSharedData } from "@portal/hooks"; import moment from "moment"; import { BlogFooter } from "@theme/components/Footer/BlogFooter"; export const frontmatter = { seo: { title: "XRP Ledger Community Blog", description: "Browse the XRP Ledger Community Blog.", }, }; const target = { prefix: "" }; // TODO: fixme const categories = { general: "General", release_notes: "Release Notes", advisories: "Advisories", amendments: "Amendments", development: "Development", developer_reflections: "Developer Reflections", gateway_bulletins: "Gateway Bulletins", features: "Features", security: "Security", }; export default function Index() { const { translate } = useTranslate(); const { blogPosts } = usePageSharedData("blog-posts"); const heroPost = blogPosts[0]; const otherPosts = blogPosts.slice(1); const defaultSelectedCategories = new Set(Object.keys(categories)); const [selectedCategories, setSelectedCategories] = useState( defaultSelectedCategories ); const [cards, setCards] = useState(otherPosts); const toggleCategory = (category) => { const newSelectedCategories = new Set(selectedCategories); if (newSelectedCategories.has(category)) { newSelectedCategories.delete(category); } else { newSelectedCategories.add(category); } setSelectedCategories(newSelectedCategories); }; const filteredCards = cards.filter((card) => selectedCategories.has(card.category_id) ); const [open, setOpen] = useState(false); return (
background purple waves
{translate("XRPL Community")}

{translate("XRPL Blog")}

{/* Banner */}
{/* Banner Image */}
blog hero
{/* Text */}

{translate(`${moment(heroPost.date).format("MMM")}`)} {translate(` ${moment(heroPost.date).format("DD YYYY")}`)}

{translate(`${heroPost.category}`)}

{translate(`${heroPost.title}`)}

{translate(`${heroPost.description}`)}

{/* Other Blog Posts*/}
{/* Filters Desktop*/}

Filter by Category:

{Object.keys(categories).map((item) => (
toggleCategory(item)} defaultChecked />
))}
{/* End Desktop Filters */} {/* Filters Mobile */}

Filter by:

{open && (
{Object.keys(categories).map((item, i) => (
toggleCategory(item)} defaultChecked />
))}
)}
{/* End Filters Mobile */}
{/* Cards */}
{filteredCards.map((card, i) => (
card block

{translate(card.category)}

{moment(translate(card.date)).format("MMM DD, YYYY")}

{translate(card.title)}

{translate(card.description)}

))}
); }