diff --git a/public/about/image1.png b/public/about/image1.png index 1deeb0d..bb9c3fb 100644 Binary files a/public/about/image1.png and b/public/about/image1.png differ diff --git a/public/core-contributors/cat.png b/public/core-contributors/cat.png new file mode 100644 index 0000000..3db64d3 Binary files /dev/null and b/public/core-contributors/cat.png differ diff --git a/public/core-contributors/coinmandeer.png b/public/core-contributors/coinmandeer.png new file mode 100644 index 0000000..e6dd37e Binary files /dev/null and b/public/core-contributors/coinmandeer.png differ diff --git a/public/core-contributors/mf.png b/public/core-contributors/mf.png new file mode 100644 index 0000000..0213a94 Binary files /dev/null and b/public/core-contributors/mf.png differ diff --git a/public/core-contributors/michael-parenti.png b/public/core-contributors/michael-parenti.png new file mode 100644 index 0000000..b91d557 Binary files /dev/null and b/public/core-contributors/michael-parenti.png differ diff --git a/public/core-contributors/michael.png b/public/core-contributors/michael.png new file mode 100644 index 0000000..3624eae Binary files /dev/null and b/public/core-contributors/michael.png differ diff --git a/public/core-contributors/mykola-siusko.png b/public/core-contributors/mykola-siusko.png new file mode 100644 index 0000000..82c5177 Binary files /dev/null and b/public/core-contributors/mykola-siusko.png differ diff --git a/public/core-contributors/odd.png b/public/core-contributors/odd.png new file mode 100644 index 0000000..6eefaa7 Binary files /dev/null and b/public/core-contributors/odd.png differ diff --git a/public/core-contributors/robert.png b/public/core-contributors/robert.png new file mode 100644 index 0000000..83880f5 Binary files /dev/null and b/public/core-contributors/robert.png differ diff --git a/public/events/masonry/1.png b/public/events/masonry/1.png new file mode 100644 index 0000000..905124f Binary files /dev/null and b/public/events/masonry/1.png differ diff --git a/public/events/masonry/1.webp b/public/events/masonry/1.webp new file mode 100644 index 0000000..a8a1e92 Binary files /dev/null and b/public/events/masonry/1.webp differ diff --git a/public/events/masonry/2.png b/public/events/masonry/2.png new file mode 100644 index 0000000..3e6d822 Binary files /dev/null and b/public/events/masonry/2.png differ diff --git a/public/events/masonry/2.webp b/public/events/masonry/2.webp new file mode 100644 index 0000000..67711fb Binary files /dev/null and b/public/events/masonry/2.webp differ diff --git a/public/events/masonry/3.png b/public/events/masonry/3.png new file mode 100644 index 0000000..ff9a6c4 Binary files /dev/null and b/public/events/masonry/3.png differ diff --git a/public/events/masonry/3.webp b/public/events/masonry/3.webp new file mode 100644 index 0000000..c711b96 Binary files /dev/null and b/public/events/masonry/3.webp differ diff --git a/public/events/masonry/4.png b/public/events/masonry/4.png new file mode 100644 index 0000000..75781d4 Binary files /dev/null and b/public/events/masonry/4.png differ diff --git a/public/events/masonry/4.webp b/public/events/masonry/4.webp new file mode 100644 index 0000000..5a26a3e Binary files /dev/null and b/public/events/masonry/4.webp differ diff --git a/public/events/masonry/5.png b/public/events/masonry/5.png new file mode 100644 index 0000000..f26c9cf Binary files /dev/null and b/public/events/masonry/5.png differ diff --git a/public/events/masonry/5.webp b/public/events/masonry/5.webp new file mode 100644 index 0000000..25ba17b Binary files /dev/null and b/public/events/masonry/5.webp differ diff --git a/public/events/masonry/6.png b/public/events/masonry/6.png new file mode 100644 index 0000000..ad1aaf3 Binary files /dev/null and b/public/events/masonry/6.png differ diff --git a/public/events/masonry/6.webp b/public/events/masonry/6.webp new file mode 100644 index 0000000..c516f03 Binary files /dev/null and b/public/events/masonry/6.webp differ diff --git a/public/events/masonry/7.png b/public/events/masonry/7.png new file mode 100644 index 0000000..0fa5aff Binary files /dev/null and b/public/events/masonry/7.png differ diff --git a/public/events/masonry/7.webp b/public/events/masonry/7.webp new file mode 100644 index 0000000..56c798b Binary files /dev/null and b/public/events/masonry/7.webp differ diff --git a/public/events/masonry/8.png b/public/events/masonry/8.png new file mode 100644 index 0000000..68b5390 Binary files /dev/null and b/public/events/masonry/8.png differ diff --git a/public/events/masonry/8.webp b/public/events/masonry/8.webp new file mode 100644 index 0000000..bc40740 Binary files /dev/null and b/public/events/masonry/8.webp differ diff --git a/public/events/masonry/9.png b/public/events/masonry/9.png new file mode 100644 index 0000000..127a212 Binary files /dev/null and b/public/events/masonry/9.png differ diff --git a/public/events/masonry/9.webp b/public/events/masonry/9.webp new file mode 100644 index 0000000..e8c39a2 Binary files /dev/null and b/public/events/masonry/9.webp differ diff --git a/public/hp-bg-redesign.webp b/public/hp-bg-redesign.webp new file mode 100644 index 0000000..0d0b6de Binary files /dev/null and b/public/hp-bg-redesign.webp differ diff --git a/public/icons/signal.svg b/public/icons/signal.svg new file mode 100644 index 0000000..cc07d87 --- /dev/null +++ b/public/icons/signal.svg @@ -0,0 +1,13 @@ + + \ No newline at end of file diff --git a/public/membersLogo/0xbow.png b/public/membersLogo/0xbow.png new file mode 100644 index 0000000..895efef Binary files /dev/null and b/public/membersLogo/0xbow.png differ diff --git a/public/membersLogo/CryptoCanal.png b/public/membersLogo/CryptoCanal.png new file mode 100644 index 0000000..2caf305 Binary files /dev/null and b/public/membersLogo/CryptoCanal.png differ diff --git a/public/membersLogo/ETHRome.png b/public/membersLogo/ETHRome.png new file mode 100644 index 0000000..304593b Binary files /dev/null and b/public/membersLogo/ETHRome.png differ diff --git a/public/membersLogo/GCC.png b/public/membersLogo/GCC.png new file mode 100644 index 0000000..ce46cb2 Binary files /dev/null and b/public/membersLogo/GCC.png differ diff --git a/public/membersLogo/LunarDAO.png b/public/membersLogo/LunarDAO.png new file mode 100644 index 0000000..c8eeb5e Binary files /dev/null and b/public/membersLogo/LunarDAO.png differ diff --git a/public/membersLogo/MolochDAO.png b/public/membersLogo/MolochDAO.png new file mode 100644 index 0000000..e25efe9 Binary files /dev/null and b/public/membersLogo/MolochDAO.png differ diff --git a/public/membersLogo/Urbe.png b/public/membersLogo/Urbe.png new file mode 100644 index 0000000..aa84b42 Binary files /dev/null and b/public/membersLogo/Urbe.png differ diff --git a/public/membersLogo/codex.svg b/public/membersLogo/codex.svg new file mode 100644 index 0000000..42573d6 --- /dev/null +++ b/public/membersLogo/codex.svg @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/public/membersLogo/dyne.png b/public/membersLogo/dyne.png new file mode 100644 index 0000000..0c7e484 Binary files /dev/null and b/public/membersLogo/dyne.png differ diff --git a/public/membersLogo/gnosisdao.png b/public/membersLogo/gnosisdao.png new file mode 100644 index 0000000..08ab987 Binary files /dev/null and b/public/membersLogo/gnosisdao.png differ diff --git a/public/membersLogo/hopr.svg b/public/membersLogo/hopr.svg new file mode 100644 index 0000000..51389c7 --- /dev/null +++ b/public/membersLogo/hopr.svg @@ -0,0 +1,36 @@ + \ No newline at end of file diff --git a/public/membersLogo/intmax.png b/public/membersLogo/intmax.png new file mode 100644 index 0000000..c72b5b4 Binary files /dev/null and b/public/membersLogo/intmax.png differ diff --git a/public/membersLogo/kernel.png b/public/membersLogo/kernel.png new file mode 100644 index 0000000..e68be24 Binary files /dev/null and b/public/membersLogo/kernel.png differ diff --git a/public/membersLogo/labyrinth.png b/public/membersLogo/labyrinth.png new file mode 100644 index 0000000..ddda23b Binary files /dev/null and b/public/membersLogo/labyrinth.png differ diff --git a/public/membersLogo/logos.svg b/public/membersLogo/logos.svg new file mode 100644 index 0000000..a7abf1e --- /dev/null +++ b/public/membersLogo/logos.svg @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/public/membersLogo/moros.png b/public/membersLogo/moros.png new file mode 100644 index 0000000..c662849 Binary files /dev/null and b/public/membersLogo/moros.png differ diff --git a/public/membersLogo/namada.png b/public/membersLogo/namada.png new file mode 100644 index 0000000..e843a8d Binary files /dev/null and b/public/membersLogo/namada.png differ diff --git a/public/membersLogo/nomos.svg b/public/membersLogo/nomos.svg new file mode 100644 index 0000000..0be3653 --- /dev/null +++ b/public/membersLogo/nomos.svg @@ -0,0 +1,4716 @@ + \ No newline at end of file diff --git a/public/membersLogo/polis.png b/public/membersLogo/polis.png new file mode 100644 index 0000000..b2996b6 Binary files /dev/null and b/public/membersLogo/polis.png differ diff --git a/public/membersLogo/ssummit.png b/public/membersLogo/ssummit.png new file mode 100644 index 0000000..056521b Binary files /dev/null and b/public/membersLogo/ssummit.png differ diff --git a/public/membersLogo/tokendynamics.png b/public/membersLogo/tokendynamics.png new file mode 100644 index 0000000..391b4d1 Binary files /dev/null and b/public/membersLogo/tokendynamics.png differ diff --git a/public/membersLogo/waku.svg b/public/membersLogo/waku.svg new file mode 100644 index 0000000..a6e9062 --- /dev/null +++ b/public/membersLogo/waku.svg @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/public/membersLogo/zcash.png b/public/membersLogo/zcash.png new file mode 100644 index 0000000..dfe16b0 Binary files /dev/null and b/public/membersLogo/zcash.png differ diff --git a/public/review.png b/public/review.png new file mode 100644 index 0000000..41954b9 Binary files /dev/null and b/public/review.png differ diff --git a/public/scripts/text-scramble.js b/public/scripts/text-scramble.js new file mode 100644 index 0000000..bcebb80 --- /dev/null +++ b/public/scripts/text-scramble.js @@ -0,0 +1,105 @@ +function applyScrambleEffect() { + const glitchTextOnceElements = document.querySelectorAll('.glitch-text'); + const glitchTextRepeatElements = document.querySelectorAll('.glitch-text-interval'); + const glitchTextHoverElements = document.querySelectorAll('.glitch-text-hover'); + + const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + + function animateScramble(element, text, duration = 1000) { + const chars = []; + element.innerHTML = ''; + const preScrambleWidth = element.offsetWidth; + element.style.width = `${preScrambleWidth}px`; + + for (let t = 0; t < text.length; t++) { + const span = document.createElement('span'); + span.innerHTML = text[t] === ' ' ? ' ' : text[t]; + chars[t] = span; + span.style.display = 'inline-block'; + element.appendChild(span); + } + + const rand = Math.random; + const SECONDS = 1000; + const FPS = 30; + const animationLength = duration; + + function animate3(k) { + const kk = k * text.length; + for (let i = 0; i < text.length; i++) { + if (kk < i) { + chars[i].innerHTML = charset[Math.floor(rand() * charset.length)]; + } else { + chars[i].innerHTML = text[i] === ' ' ? ' ' : text[i]; + } + } + } + + let start = Date.now(); + function animate() { + const current = Date.now(); + const time = current - start; + const k = time / animationLength; + + if (k < 1) { + setTimeout(animate, SECONDS / FPS); + animate3(k); + } else { + for (let i = 0; i < text.length; i++) { + chars[i].innerHTML = text[i] === ' ' ? ' ' : text[i]; + } + element.style.width = 'auto'; + element.isAnimating = false; + } + } + + animate(); + } + + // Use IntersectionObserver for once-only animation + const observer = new IntersectionObserver((entries, observer) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + const element = entry.target; + const text = element.innerText; + animateScramble(element, text); + observer.unobserve(element); + } + }); + }, { + threshold: 0.1 + }); + + glitchTextOnceElements.forEach((element) => { + observer.observe(element); + }); + + glitchTextRepeatElements.forEach((element) => { + const text = element.innerText; + + animateScramble(element, text); + + const intervalId = setInterval(() => { + if (!element.isAnimating) { + animateScramble(element, text); + } + }, 5000); + }); + + // Hover functionality for `.glitch-text-hover` elements + glitchTextHoverElements.forEach((element) => { + const text = element.innerText; + + element.addEventListener('mouseenter', () => { + // Only start the animation if it isn't already in progress + if (!element.isAnimating) { + element.isAnimating = true; + animateScramble(element, text, 800); + } + }); + + // No need for 'mouseleave' as the animation will complete even if the mouse leaves + }); +} + +document.addEventListener('DOMContentLoaded', applyScrambleEffect); diff --git a/public/testimonials/amit-chaudary.jpg b/public/testimonials/amit-chaudary.jpg new file mode 100644 index 0000000..68a383b Binary files /dev/null and b/public/testimonials/amit-chaudary.jpg differ diff --git a/public/testimonials/andreea.jpg b/public/testimonials/andreea.jpg new file mode 100644 index 0000000..53dae85 Binary files /dev/null and b/public/testimonials/andreea.jpg differ diff --git a/public/testimonials/cryptocanal.jpg b/public/testimonials/cryptocanal.jpg new file mode 100644 index 0000000..b87ce27 Binary files /dev/null and b/public/testimonials/cryptocanal.jpg differ diff --git a/public/testimonials/hack-guru.jpg b/public/testimonials/hack-guru.jpg new file mode 100644 index 0000000..9585b2e Binary files /dev/null and b/public/testimonials/hack-guru.jpg differ diff --git a/public/testimonials/jaromil.png b/public/testimonials/jaromil.png new file mode 100644 index 0000000..eaae0d8 Binary files /dev/null and b/public/testimonials/jaromil.png differ diff --git a/public/testimonials/lunar-dao.jpg b/public/testimonials/lunar-dao.jpg new file mode 100644 index 0000000..8c3f8ab Binary files /dev/null and b/public/testimonials/lunar-dao.jpg differ diff --git a/public/testimonials/matteo-tambussi.jpg b/public/testimonials/matteo-tambussi.jpg new file mode 100644 index 0000000..f308320 Binary files /dev/null and b/public/testimonials/matteo-tambussi.jpg differ diff --git a/public/testimonials/pie-man.jpg b/public/testimonials/pie-man.jpg new file mode 100644 index 0000000..07722f8 Binary files /dev/null and b/public/testimonials/pie-man.jpg differ diff --git a/src/components/AboutFooter.astro b/src/components/AboutFooter.astro index 199f1f9..8a1a148 100644 --- a/src/components/AboutFooter.astro +++ b/src/components/AboutFooter.astro @@ -2,114 +2,157 @@ import * as config from "../config.yaml"; import core from "../core.json"; import contributors from "../contributors.json"; -import { getPersonByGH } from "../lib/core.js"; -import PeopleCarousel from "../components/PeopleCarousel.astro"; +import SpeakerGrid from "./SpeakerGrid.astro"; +import SliderTestimonial from "./SliderTestimonial.astro"; +import MembersGrid from "./MembersGrid.astro"; +import { fade } from "astro:transitions"; -function findPerson(src) { - const p = core.people.find((p) => - src.refs?.twitter - ? p.refs?.twitter === src.refs.twitter - : src.refs?.bsky - ? p.refs.bsky === src.refs.bsky - : {} - ); - if (p) { - p.ct = src; - } - return p; -} +// Accept sectionsConfig as a prop +const { + sectionsConfig = [ + { name: "community", visible: true, order: 1 }, + { name: "socialLinks", visible: true, order: 2 }, + { name: "speakers", visible: true, order: 3 }, + { name: "core contributors", visible: true, order: 4 }, + { name: "contributors", visible: true, order: 5 }, + { name: "testimonials", visible: true, order: 6 }, + { name: "membersGrid", visible: true, order: 7 }, + { name: "communityPartners", visible: true, order: 8 }, + ], +} = Astro.props; -function personLink(person) { - return person.refs?.twitter - ? `https://twitter.com/${person.refs.twitter}` - : person.refs?.bsky - ? `https://bsky.app/profile/${person.refs.bsky}` - : "#"; -} +// Function to sort sections by order +const sortedSections = sectionsConfig + .filter((section) => section.visible) + .sort((a, b) => a.order - b.order); --- - -
+ )} -+ We cultivate and foster a culture of privacy in web3 making data free + and public. +
++ Check our annual reports, infographics, privacy awards, newsletter, and + guidelines. +
+
+ By developing free and open tools,
we empower people to make informed
+ decisions:
+
+ {person.refs.twitter && `@${person.refs.twitter}`} + {person.refs.bsky && ` | bsky: ${person.refs.bsky}`} + {person.refs.linkedin && ` | LinkedIn: ${person.refs.linkedin}`} + {person.refs.github && ` | GitHub: ${person.refs.github}`} + {person.refs.matrix && ` | Matrix: ${person.refs.matrix}`} + {person.refs.email && ` | Email: ${person.refs.email}`} +
+ )} ++ Sponsors are our value-aligned partners who help us maintain + financial sustainability. They support our mission by contributing + to all our activities, whether it's a research project, an event, + a merchandise release. +
++ Zcash / + Firo / + Firn / + Privacy Scaling Exploration / + Railgun / + ENS / + Navio (ex Navcoin) / + Panther / + AragonTKResearch / + Secret Network / + Waku +
++ For members who want to be more involved in the governance of our + initiative, we offer the opportunity to participate in the + decisions and voting on our plans and other topics. +
++ Members are our chosen collaborators for mutual support and + growth. Rather than one-time deals for individual events or + projects, we strive for consistent collaboration to achieve + lasting impact. +
++ Ensure visibility at all our events [Congresses, Summits & + Hackathons] +
++ Connect with the right builders to test or develop your beta + projects or services. +
+Grow impact through strategic, targeted communications.
+Participate in speaking engagements and mentorship roles.
++ Reach and interact with specific, highly-relevant audiences. +
++ "{testimonials[currentTestimonial].reviewText}" +
++ {person.refs.twitter && `@${person.refs.twitter}`} + {person.refs.email && ` | Email: ${person.refs.email}`} + {person.refs.bsky && ` | bsky: ${person.refs.bsky}`} + {person.refs.linkedin && ` | LinkedIn: ${person.refs.linkedin}`} + {person.refs.github && ` | GitHub: ${person.refs.github}`} + {person.refs.matrix && ` | Matrix: ${person.refs.matrix}`} + {person.refs.email && ` | Email: ${person.refs.email}`} +
+ + + ++ {person.refs.designation && `${person.refs.designation}`} + +
+ )} +
{genHeading(title)}