> ## Documentation Index
> Fetch the complete documentation index at: https://na-36-mintlify-aebde2c5.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Livepeer Community Portal

> Welcome To The Community Portal: Explore, Connect, Contribute

export const youtubeDataSeries = [{
  title: 'Watercooler Chat | April 13 2026',
  href: 'https://www.youtube.com/watch?v=7jW3HtMqwy0',
  author: 'By Livepeer',
  content: '...',
  publishedDate: 'Apr 14, 2026',
  duration: 'PT1H40M29S',
  thumbnailUrl: 'https://i.ytimg.com/vi/7jW3HtMqwy0/hqdefault_live.jpg'
}, {
  title: 'Watercooler | 7th April',
  href: 'https://www.youtube.com/watch?v=zcLpZr5zl-0',
  author: 'By Livepeer',
  content: '...',
  publishedDate: 'Apr 8, 2026',
  duration: 'PT1H25M25S',
  thumbnailUrl: 'https://i.ytimg.com/vi/zcLpZr5zl-0/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | March 30 2026',
  href: 'https://www.youtube.com/watch?v=4l8yiE842RU',
  author: 'By Livepeer',
  content: '...',
  publishedDate: 'Mar 31, 2026',
  duration: 'PT55M24S',
  thumbnailUrl: 'https://i.ytimg.com/vi/4l8yiE842RU/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | March 23 2026',
  href: 'https://www.youtube.com/watch?v=9CohiDl-qSc',
  author: 'By Livepeer',
  content: '...',
  publishedDate: 'Mar 24, 2026',
  duration: 'PT1H22M16S',
  thumbnailUrl: 'https://i.ytimg.com/vi/9CohiDl-qSc/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | March 16 2026',
  href: 'https://www.youtube.com/watch?v=4LzWGumv47g',
  author: 'By Livepeer',
  content: '...',
  publishedDate: 'Mar 17, 2026',
  duration: 'PT1H37M46S',
  thumbnailUrl: 'https://i.ytimg.com/vi/4LzWGumv47g/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | March 9 2026',
  href: 'https://www.youtube.com/watch?v=XVTnq-Z9YrY',
  author: 'By Livepeer',
  content: '...',
  publishedDate: 'Mar 10, 2026',
  duration: 'PT1H57M27S',
  thumbnailUrl: 'https://i.ytimg.com/vi/XVTnq-Z9YrY/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside (11)',
  href: 'https://www.youtube.com/watch?v=Kf2V6d90oqk',
  author: 'By Livepeer',
  content: '--- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Dec 18, 2025',
  duration: 'PT51M23S',
  thumbnailUrl: 'https://i.ytimg.com/vi/Kf2V6d90oqk/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside',
  href: 'https://www.youtube.com/watch?v=NYczXgZ_oLg',
  author: 'By Livepeer',
  content: '--- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Dec 4, 2025',
  duration: 'PT15M55S',
  thumbnailUrl: 'https://i.ytimg.com/vi/NYczXgZ_oLg/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside 📱',
  href: 'https://www.youtube.com/watch?v=CnuyKyms6qg',
  author: 'By Livepeer',
  content: '--- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Dec 4, 2025',
  duration: 'PT15M53S',
  thumbnailUrl: 'https://i.ytimg.com/vi/CnuyKyms6qg/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | December 1 2025',
  href: 'https://www.youtube.com/watch?v=LmZNEaOOb9I',
  author: 'By Livepeer',
  content: 'Tune into our weekly Watercooler Chat to discuss pressing topics from community members. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Dec 2, 2025',
  duration: 'PT40M4S',
  thumbnailUrl: 'https://i.ytimg.com/vi/LmZNEaOOb9I/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | November 26 2025',
  href: 'https://www.youtube.com/watch?v=GNC__DEpxOY',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss the most important happenings within our ecosystem. The heavy hitters of the community present their updates. Tap in! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Nov 27, 2025',
  duration: 'PT53M21S',
  thumbnailUrl: 'https://i.ytimg.com/vi/GNC__DEpxOY/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | November 24 2025',
  href: 'https://www.youtube.com/watch?v=9rZh5d_wRlI',
  author: 'By Livepeer',
  content: 'Tune into our weekly Watercooler Chat to discuss pressing topics from community members. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Nov 25, 2025',
  duration: 'PT1H5M38S',
  thumbnailUrl: 'https://i.ytimg.com/vi/9rZh5d_wRlI/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | November 17 2025',
  href: 'https://www.youtube.com/watch?v=X0z2o3b5LEo',
  author: 'By Livepeer',
  content: 'Tune into our weekly Watercooler Chat to discuss pressing topics from community members. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Nov 19, 2025',
  duration: 'PT1H36M3S',
  thumbnailUrl: 'https://i.ytimg.com/vi/X0z2o3b5LEo/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | November 12 2025',
  href: 'https://www.youtube.com/watch?v=Uw7cdZLx7kA',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss the most important happenings within our ecosystem. The heavy hitters of the community present their updates. Tap in! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Nov 13, 2025',
  duration: 'PT42M2S',
  thumbnailUrl: 'https://i.ytimg.com/vi/Uw7cdZLx7kA/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | November 10 2025',
  href: 'https://www.youtube.com/watch?v=WIhKrNWr8ZM',
  author: 'By Livepeer',
  content: 'Tune into our weekly Watercooler chat to discuss pressing topics from community members. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Nov 11, 2025',
  duration: 'PT30M41S',
  thumbnailUrl: 'https://i.ytimg.com/vi/WIhKrNWr8ZM/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | November 5 2025',
  href: 'https://www.youtube.com/watch?v=m7unu06KQD0',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss the most important happenings within our ecosystem. The heavy hitters of the community present their updates. Tap in! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Nov 8, 2025',
  duration: 'PT48M4S',
  thumbnailUrl: 'https://i.ytimg.com/vi/m7unu06KQD0/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | November 3 2025',
  href: 'https://www.youtube.com/watch?v=7IRz9M4pxkA',
  author: 'By Livepeer',
  content: 'Tune into our weekly watercooler chat to discuss pressing topics from community members. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Nov 4, 2025',
  duration: 'PT48M30S',
  thumbnailUrl: 'https://i.ytimg.com/vi/7IRz9M4pxkA/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | October 27 2025',
  href: 'https://www.youtube.com/watch?v=dIxG_c3dI18',
  author: 'By Livepeer',
  content: 'Our weekly Watercooler chat where the community comes to hang and talk all things Livepeer! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Oct 29, 2025',
  duration: 'PT50M22S',
  thumbnailUrl: 'https://i.ytimg.com/vi/dIxG_c3dI18/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | October 22 2025',
  href: 'https://www.youtube.com/watch?v=ifL4lUDtPd0',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss the most important happenings within our ecosystem. The heavy hitters of the community present their updates. Tap in! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Oct 23, 2025',
  duration: 'PT26M26S',
  thumbnailUrl: 'https://i.ytimg.com/vi/ifL4lUDtPd0/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | October 20 2025',
  href: 'https://www.youtube.com/watch?v=eZtQxsdUF1s',
  author: 'By Livepeer',
  content: 'Our weekly Watercooler chat where the community comes to hang and talk all things Livepeer! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Oct 21, 2025',
  duration: 'PT58M19S',
  thumbnailUrl: 'https://i.ytimg.com/vi/eZtQxsdUF1s/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | October 15 2025',
  href: 'https://www.youtube.com/watch?v=sNIlYf98OWU',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss the most important happenings within our ecosystem. The heavy hitters of the community present their updates. Tap in! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Oct 16, 2025',
  duration: 'PT23M12S',
  thumbnailUrl: 'https://i.ytimg.com/vi/sNIlYf98OWU/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | September 29 2025',
  href: 'https://www.youtube.com/watch?v=04HnHYDCZAI',
  author: 'By Livepeer',
  content: 'Our weekly Watercooler chat where the community comes to hang and talk all things Livepeer! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Sep 30, 2025',
  duration: 'PT57M',
  thumbnailUrl: 'https://i.ytimg.com/vi/04HnHYDCZAI/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | September 17 2025',
  href: 'https://www.youtube.com/watch?v=TOx9XDt3NA8',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss the most important happenings within our ecosystem. The heavy hitters of the community present their updates. Tap in! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Sep 18, 2025',
  duration: 'PT39M3S',
  thumbnailUrl: 'https://i.ytimg.com/vi/TOx9XDt3NA8/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | September 15 2025',
  href: 'https://www.youtube.com/watch?v=jmljw_rWI8Y',
  author: 'By Livepeer',
  content: 'Our weekly Watercooler chat where the community comes to hang and talk all things Livepeer! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Sep 16, 2025',
  duration: 'PT35M21S',
  thumbnailUrl: 'https://i.ytimg.com/vi/jmljw_rWI8Y/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | September 8 2025',
  href: 'https://www.youtube.com/watch?v=oRlASTmNIxw',
  author: 'By Livepeer',
  content: 'Our weekly Watercooler chat where the community comes to hang and talk all things Livepeer! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Sep 12, 2025',
  duration: 'PT23M1S',
  thumbnailUrl: 'https://i.ytimg.com/vi/oRlASTmNIxw/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | September 10 2025',
  href: 'https://www.youtube.com/watch?v=Pt0qwgcCpYQ',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss the most important happenings within our ecosystem. The heavy hitters of the community present their updates. Tap in! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Sep 11, 2025',
  duration: 'PT32M35S',
  thumbnailUrl: 'https://i.ytimg.com/vi/Pt0qwgcCpYQ/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | September 2 2025',
  href: 'https://www.youtube.com/watch?v=M7ZBQdA9YMQ',
  author: 'By Livepeer',
  content: 'Our weekly Watercooler chat where the community comes to hang and talk all things Livepeer! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Sep 4, 2025',
  duration: 'PT1H13M31S',
  thumbnailUrl: 'https://i.ytimg.com/vi/M7ZBQdA9YMQ/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | September 3 2025',
  href: 'https://www.youtube.com/watch?v=3GOBBKPAdOE',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss the most important happenings within our ecosystem. The heavy hitters of the community present their updates. Tap in! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Sep 4, 2025',
  duration: 'PT40M45S',
  thumbnailUrl: 'https://i.ytimg.com/vi/3GOBBKPAdOE/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | August 27 2025',
  href: 'https://www.youtube.com/watch?v=DFClX5inAuE',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss the most important happenings within our ecosystem. The heavy hitters of the community present their updates. Tap in! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Aug 28, 2025',
  duration: 'PT36M9S',
  thumbnailUrl: 'https://i.ytimg.com/vi/DFClX5inAuE/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | August 14 2025',
  href: 'https://www.youtube.com/watch?v=98ubw3scN1Y',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss the most important happenings within our ecosystem. The heavy hitters of the community present their updates. Tap in! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Aug 15, 2025',
  duration: 'PT30M6S',
  thumbnailUrl: 'https://i.ytimg.com/vi/98ubw3scN1Y/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | August 11 2025',
  href: 'https://www.youtube.com/watch?v=pfeZ4ey5Wpg',
  author: 'By Livepeer',
  content: 'Join our weekly community call where we discuss all things Livepeer. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Aug 13, 2025',
  duration: 'PT39M51S',
  thumbnailUrl: 'https://i.ytimg.com/vi/pfeZ4ey5Wpg/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | August 4 2025',
  href: 'https://www.youtube.com/watch?v=xCFzqPfSSr4',
  author: 'By Livepeer',
  content: 'Join our weekly community call where we discuss all things Livepeer. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Aug 9, 2025',
  duration: 'PT48M52S',
  thumbnailUrl: 'https://i.ytimg.com/vi/xCFzqPfSSr4/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | August 6 2025',
  href: 'https://www.youtube.com/watch?v=e7niL0WRtME',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss the most important happenings within our ecosystem. The heavy hitters of the community present their updates. Tap in! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Aug 8, 2025',
  duration: 'PT28M11S',
  thumbnailUrl: 'https://i.ytimg.com/vi/e7niL0WRtME/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | July 30 2025',
  href: 'https://www.youtube.com/watch?v=99EfhXJ2tk0',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss the most important happenings within our ecosystem. The heavy hitters of the community present their updates. Tap in! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Jul 31, 2025',
  duration: 'PT39M41S',
  thumbnailUrl: 'https://i.ytimg.com/vi/99EfhXJ2tk0/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | July 28 2025',
  href: 'https://www.youtube.com/watch?v=aNhPHRsadW0',
  author: 'By Livepeer',
  content: 'Join our weekly community call where we discuss all things Livepeer. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Jul 31, 2025',
  duration: 'PT1H49S',
  thumbnailUrl: 'https://i.ytimg.com/vi/aNhPHRsadW0/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | July 21 2025',
  href: 'https://www.youtube.com/watch?v=j18zHcHaADc',
  author: 'By Livepeer',
  content: 'Our weekly Watercooler chat where the community comes to hang and talk all things Livepeer! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Jul 25, 2025',
  duration: 'PT45M1S',
  thumbnailUrl: 'https://i.ytimg.com/vi/j18zHcHaADc/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | July 23 2025',
  href: 'https://www.youtube.com/watch?v=DhTmW8DwSzE',
  author: 'By Livepeer',
  content: 'Join our weekly Fireside where we discuss all the most important happenings in the ecosystem. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Jul 25, 2025',
  duration: 'PT46M16S',
  thumbnailUrl: 'https://i.ytimg.com/vi/DhTmW8DwSzE/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | July 14 2025',
  href: 'https://www.youtube.com/watch?v=4KhZ6O_PmFw',
  author: 'By Livepeer',
  content: 'Join our weekly Watercooler chat where our community catches up and hangs out!  --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Jul 15, 2025',
  duration: 'PT41M31S',
  thumbnailUrl: 'https://i.ytimg.com/vi/4KhZ6O_PmFw/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside with ORIGIN STØRIES and TSG Music',
  href: 'https://www.youtube.com/watch?v=k5y9fGGatac',
  author: 'By Livepeer',
  content: 'In this Fireside episode, Sean (ORIGIN STØRIES) and Almer (TSG Music) dive into the future of music livestreaming powered by AI and Livepeer.  Discover: - How AI DJs and real-time generative visuals can create always-on, interactive streams - The vision for bringing these tools to 250+ labels and curators across The District - How ComfyStream and custom workflows could unlock scalable creative experiences - Plans for a large-scale showcase during Amsterdam Dance Event  Watch to see how decentral...',
  publishedDate: 'Jul 15, 2025',
  duration: 'PT6M13S',
  thumbnailUrl: 'https://i.ytimg.com/vi/k5y9fGGatac/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside with Peter from the AI SPE',
  href: 'https://www.youtube.com/watch?v=wFSs8kfvsYA',
  author: 'By Livepeer',
  content: 'In this Fireside episode, Peter from the AI SPE shares an in-depth update on the future of real-time AI video on the Livepeer network.  Learn about: - The roadmap for Bring Your Own Container (BYOC) - enabling permissionless, customizable AI workloads. - How ComfyStream is evolving to power flexible, real-time video AI pipelines for creators and developers. - What the transition in leadership means for the AI SPE\'s focus and priorities. - How the community and advisory boards will help shape wha...',
  publishedDate: 'Jul 15, 2025',
  duration: 'PT14M34S',
  thumbnailUrl: 'https://i.ytimg.com/vi/wFSs8kfvsYA/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside - Rich and Joseph from the Livepeer Foundation',
  href: 'https://www.youtube.com/watch?v=T80q7p4Wd74',
  author: 'By Livepeer',
  content: 'In this episode of Fireside, Rich O\'Grady and Joseph Birch from the Livepeer Foundation share updates on the first phase of the Advisory Boards process.  What\'s Inside: - Why the Advisory Boards were created and how they work - Four strategic pillars shaping the future of Livepeer across network growth, governance, capital markets, and ecosystem development - Next steps: drafting tactical objectives and the roadmap - How you can get involved and share feedback  Have questions or ideas? Join the ...',
  publishedDate: 'Jul 15, 2025',
  duration: 'PT17M30S',
  thumbnailUrl: 'https://i.ytimg.com/vi/T80q7p4Wd74/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | July 9 2025',
  href: 'https://www.youtube.com/watch?v=yilIIwpMawE',
  author: 'By Livepeer',
  content: 'Livepeer\'s weekly high impact session on the most important happenings in the ecosystem. Tune in to understand where you can help our ecosystem! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Jul 11, 2025',
  duration: 'PT36M52S',
  thumbnailUrl: 'https://i.ytimg.com/vi/yilIIwpMawE/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | July 7 2025',
  href: 'https://www.youtube.com/watch?v=m63F18g2JnE',
  author: 'By Livepeer',
  content: 'Tune in for our weekly Watercooler Chat! The community discusses the pressing issues and opportunities within the ecosystem. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Jul 11, 2025',
  duration: 'PT1H1M22S',
  thumbnailUrl: 'https://i.ytimg.com/vi/m63F18g2JnE/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | June 30 2025',
  href: 'https://www.youtube.com/watch?v=6WI8SPoT5eY',
  author: 'By Livepeer',
  content: 'Tap into our weekly Watercooler Chat where we discuss the pressing topics within the community. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Jul 3, 2025',
  duration: 'PT38M16S',
  thumbnailUrl: 'https://i.ytimg.com/vi/6WI8SPoT5eY/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | July 2 2025',
  href: 'https://www.youtube.com/watch?v=WLMgzP2g4F8',
  author: 'By Livepeer',
  content: 'Our weekly Fireside highlights the biggest things happening within the Livepeer ecosystem. Watch now or tune in live every Wednesday. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Jul 3, 2025',
  duration: 'PT38M13S',
  thumbnailUrl: 'https://i.ytimg.com/vi/WLMgzP2g4F8/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | June 23 2025',
  href: 'https://www.youtube.com/watch?v=cICIrJ-d0NE',
  author: 'By Livepeer',
  content: 'Join our weekly Watercooler Chat to get into the nitty gritty of Livepeer! --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Jun 27, 2025',
  duration: 'PT1H17M39S',
  thumbnailUrl: 'https://i.ytimg.com/vi/cICIrJ-d0NE/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside | June 25 2025',
  href: 'https://www.youtube.com/watch?v=01tSLW2rO1k',
  author: 'By Livepeer',
  content: 'The cozy weekly spot to hear all the big updated in the Livepeer ecosystem.  --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Jun 27, 2025',
  duration: 'PT44M29S',
  thumbnailUrl: 'https://i.ytimg.com/vi/01tSLW2rO1k/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside with the Agent SPE team',
  href: 'https://www.youtube.com/watch?v=2qS5lDIIdbQ',
  author: 'By Livepeer',
  content: 'In this Fireside episode, we hear from Titan of the Agent SPE, who demos Sarah\'s Game, an experimental AI agent with live telepresence powered by Livepeer.  We\'re also joined by George (DeFine), who unveils the latest on DeFine\'s real-time Vtuber infrastructure, a 100 LPT/week incentive program for orchestrators, and how AI agents could unlock new demand for the Livepeer network.  Dane presents a breakthrough in ComfyUI-based 3D model generation and avatar morphing workflows. These developments ...',
  publishedDate: 'Jun 25, 2025',
  duration: 'PT23M11S',
  thumbnailUrl: 'https://i.ytimg.com/vi/2qS5lDIIdbQ/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside with the FrameWorks SPE',
  href: 'https://www.youtube.com/watch?v=DKBRp0U-RKw',
  author: 'By Livepeer',
  content: 'In this episode of the Livepeer Fireside Series, we\'re joined by Marco, better known as Stonk, a veteran node operator and engineer of the FrameWork SPE. As Livepeer evolves to support real-time AI workloads, FramWorks is here to ensure the transcoding infrastructure remains powerful, accessible, and ready to scale.  We talk about:  - Why transcoding is still essential to decentralized video  - What FrameWorks is doing to support supply-side operators  - How to build scalable and cost-efficient ...',
  publishedDate: 'Jun 25, 2025',
  duration: 'PT17M12S',
  thumbnailUrl: 'https://i.ytimg.com/vi/DKBRp0U-RKw/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside with UFO',
  href: 'https://www.youtube.com/watch?v=Oy38dI5BwiU',
  author: 'By Livepeer',
  content: 'In this Fireside Chat, Nick from UFO discusses the mission behind building a decentralized, onchain radio network for global music culture. He shares how UFO\'s Harmonic SPE is expanding Livepeer\'s reach into Farcaster and other social ecosystems, and why censorship resistance, open protocols, and creative empowerment are driving forces behind their work.  Learn how UFO is using Livepeer to build new tools for artists and curators-and why radio is making a cultural comeback in Web3.  🔗 UFO: http...',
  publishedDate: 'Jun 21, 2025',
  duration: 'PT15M38S',
  thumbnailUrl: 'https://i.ytimg.com/vi/Oy38dI5BwiU/hqdefault.jpg'
}, {
  title: 'Livepeer Fireside StreamETH',
  href: 'https://www.youtube.com/watch?v=KjSgSnqFtMc',
  author: 'By Livepeer',
  content: 'In this Fireside Chat, Pablo from StreamETH shares how their newly launched Special Purpose Entity (SPE) is helping raise visibility for Livepeer at major Ethereum events. He discusses the power of decentralized video, StreamETH\'s AI-powered tools, and what\'s ahead-including DevConnect Argentina and a new open-source CMS project.  Learn more about Livepeer: https://livepeer.org  Explore StreamETH: https://streameth.io  --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer D...',
  publishedDate: 'Jun 20, 2025',
  duration: 'PT19M30S',
  thumbnailUrl: 'https://i.ytimg.com/vi/KjSgSnqFtMc/hqdefault.jpg'
}, {
  title: 'Watercooler Chat | June 16 2025',
  href: 'https://www.youtube.com/watch?v=FbGonvuqnlI',
  author: 'By Livepeer',
  content: 'Join our weekly Watercooler chat to hear from core community members on a variety of topics. --- Connect with Livepeer on Socials: Twitter: https://twitter.com/Livepeer Discord: https://discord.gg/uaPhtyrWsF Telegram: https://t.me/livepeerorg Reddit: https://www.reddit.com/r/livepeer/ Blog: https://medium.com/livepeer-blog Forum: https://forum.livepeer.org/...',
  publishedDate: 'Jun 17, 2025',
  duration: 'PT36M44S',
  thumbnailUrl: 'https://i.ytimg.com/vi/FbGonvuqnlI/hqdefault.jpg'
}];

export const FlexContainer = ({children, direction = "row", gap = "var(--lp-spacing-4)", align = "flex-start", justify = "flex-start", wrap = false, marginTop = "", marginBottom = "", style = {}, className = "", ...rest}) => {
  return <div className={className} style={{
    display: "flex",
    flexDirection: direction,
    gap: gap,
    alignItems: align,
    justifyContent: justify,
    flexWrap: wrap ? "wrap" : "nowrap",
    ...marginTop ? {
      marginTop
    } : {},
    ...marginBottom ? {
      marginBottom
    } : {},
    ...style
  }} {...rest}>
      {children}
    </div>;
};

export const CustomCardTitle = ({icon, title, variant = "card", iconSize, style = {}, className = "", ...rest}) => {
  const variants = {
    card: {
      display: 'flex',
      alignItems: 'center',
      gap: "var(--lp-spacing-2)",
      marginBottom: "var(--lp-spacing-3)",
      color: 'var(--lp-color-text-primary)',
      fontSize: '1rem',
      fontWeight: 600
    },
    accordion: {
      display: 'inline-flex',
      alignItems: 'center',
      gap: "var(--lp-spacing-2)"
    },
    tab: {
      display: 'inline-flex',
      alignItems: 'center',
      gap: '0.4rem',
      fontSize: '0.875rem'
    }
  };
  const sizes = {
    card: 20,
    accordion: 18,
    tab: 14
  };
  const size = iconSize || sizes[variant] || 20;
  const baseStyle = variants[variant] || variants.card;
  return variant === 'card' ? <div className={className} style={{
    ...baseStyle,
    ...style
  }} {...rest}>
      {typeof icon === 'string' ? <Icon icon={icon} size={size} color="var(--lp-color-accent)" /> : icon}
      {title}
    </div> : <span className={className} style={{
    ...baseStyle,
    ...style
  }} {...rest}>
      {typeof icon === 'string' ? <Icon icon={icon} size={size} color="var(--lp-color-accent)" /> : icon}
      {title}
    </span>;
};

export const YouTubeVideo = ({embedUrl, url, title = "", author = "", hint = "", caption, className = "", style = {}, ...rest}) => {
  const toEmbedUrl = value => {
    if (!value || typeof value !== "string") return "";
    const source = value.trim();
    if (!source) return "";
    try {
      const parsed = new URL(source);
      const host = parsed.hostname.replace(/^www\./, "");
      if (host === "youtube.com" || host === "youtube-nocookie.com") {
        if (parsed.pathname.startsWith("/embed/")) return source;
        const videoId = parsed.pathname.startsWith("/shorts/") ? parsed.pathname.split("/").filter(Boolean)[1] : parsed.searchParams.get("v");
        if (!videoId) return "";
        const params = new URLSearchParams(parsed.search);
        params.delete("v");
        const query = params.toString();
        return `https://www.youtube.com/embed/${videoId}${query ? `?${query}` : ""}`;
      }
      if (host === "youtu.be") {
        const videoId = parsed.pathname.split("/").filter(Boolean)[0];
        if (!videoId) return "";
        const query = parsed.searchParams.toString();
        return `https://www.youtube.com/embed/${videoId}${query ? `?${query}` : ""}`;
      }
    } catch (_err) {
      return "";
    }
    return "";
  };
  const resolvedEmbedUrl = toEmbedUrl(embedUrl || url);
  if (!resolvedEmbedUrl) {
    return null;
  }
  const isValidYouTubeUrl = resolvedEmbedUrl.includes("youtube.com/embed/");
  if (!isValidYouTubeUrl) {
    console.warn("Invalid YouTube embed URL:", embedUrl || url);
    return null;
  }
  const buildCaption = () => {
    if (caption) return caption;
    if (!author && !title) return null;
    return <span style={{
      display: "flex",
      flexDirection: "column",
      alignItems: "center",
      textAlign: "center",
      lineHeight: 1.2
    }}>
        <span>
          {author && <>
              <Icon icon="microphone" size={16} /> <strong>{author}</strong>
            </>}
          {author && title ? `${" "} • ${title}` : title}
        </span>
      </span>;
  };
  const captionContent = buildCaption();
  return <Frame className={className} style={style} {...hint ? {
    hint
  } : {}} {...captionContent ? {
    caption: captionContent
  } : {}} {...rest}>
      <iframe className="w-full aspect-video rounded-xl" src={resolvedEmbedUrl} title={title || author || "YouTube Video"} allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />
    </Frame>;
};

export const Starfield = ({density = 1.1, className = "", style = {}, ...rest}) => {
  const canvasRef = useRef(null);
  const readThemeColor = (tokenName, fallback) => {
    if (typeof window === "undefined") return fallback;
    const value = getComputedStyle(document.documentElement).getPropertyValue(tokenName).trim();
    return value || fallback;
  };
  const brightenHex = (hexColor, amount) => {
    const normalized = String(hexColor || "").replace("#", "");
    const expanded = normalized.length === 3 ? normalized.split("").map(char => `${char}${char}`).join("") : normalized;
    if (!(/^[0-9a-fA-F]{6}$/).test(expanded)) {
      return hexColor;
    }
    const channels = expanded.match(/.{2}/g).map(chunk => Number.parseInt(chunk, 16));
    const adjusted = channels.map(channel => Math.max(0, Math.min(255, Math.round(channel + (255 - channel) * amount))));
    return `#${adjusted.map(channel => channel.toString(16).padStart(2, "0")).join("")}`;
  };
  const isDarkMode = () => {
    if (typeof window === "undefined") return false;
    return document.documentElement.classList.contains("dark") || window.matchMedia("(prefers-color-scheme: dark)").matches;
  };
  const getColorPalette = () => {
    const accent = readThemeColor("--accent", "#5DD662");
    const accentDark = readThemeColor("--accent-dark", accent);
    return isDarkMode() ? [accent, accent, accentDark, brightenHex(accent, 0.18)] : [brightenHex(accent, 0.22), brightenHex(accent, 0.22), brightenHex(accent, 0.38), brightenHex(accent, 0.52)];
  };
  const SIZE_BUCKETS = [{
    scale: 0.3,
    weight: 0.50
  }, {
    scale: 0.5,
    weight: 0.20
  }, {
    scale: 0.9,
    weight: 0.15
  }, {
    scale: 1.3,
    weight: 0.10
  }, {
    scale: 1.8,
    weight: 0.05
  }];
  const pickScale = () => {
    const r = Math.random();
    let acc = 0;
    for (const b of SIZE_BUCKETS) {
      acc += b.weight;
      if (r <= acc) return b.scale;
    }
    return 0.25;
  };
  useEffect(() => {
    const canvas = canvasRef.current;
    if (!canvas || typeof window === "undefined" || typeof document === "undefined" || typeof Image === "undefined") {
      return;
    }
    const ctx = canvas.getContext("2d");
    if (!ctx) {
      console.warn("[Starfield] Canvas 2D context unavailable");
      return;
    }
    let rafId;
    let stars = [];
    let tintedCache = new Map();
    let cancelled = false;
    const COLORS = Array.isArray(getColorPalette()) ? getColorPalette().filter(Boolean) : [];
    if (COLORS.length === 0) {
      console.warn("[Starfield] Missing color palette");
      return;
    }
    const logo = new Image();
    logo.src = "/snippets/assets/logos/Livepeer-Logo-Symbol-Light.svg";
    const makeTinted = color => {
      if (tintedCache.has(color)) return tintedCache.get(color);
      const off = document.createElement("canvas");
      const octx = off.getContext("2d");
      if (!octx) {
        return null;
      }
      const base = 32;
      off.width = base;
      off.height = base;
      octx.clearRect(0, 0, base, base);
      octx.drawImage(logo, 0, 0, base, base);
      octx.globalCompositeOperation = "source-in";
      octx.fillStyle = color;
      octx.fillRect(0, 0, base, base);
      octx.globalCompositeOperation = "source-over";
      tintedCache.set(color, off);
      return off;
    };
    const resize = () => {
      const dpr = window.devicePixelRatio || 1;
      const rect = canvas.getBoundingClientRect();
      if (!rect.width || !rect.height) {
        return;
      }
      canvas.width = rect.width * dpr;
      canvas.height = rect.height * dpr;
      ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
      const count = Math.floor(rect.width * rect.height / 16000 * density);
      stars = Array.from({
        length: count
      }).map(() => {
        const color = COLORS[Math.floor(Math.random() * COLORS.length)];
        return {
          x: Math.random() * rect.width,
          y: Math.random() * rect.height,
          scale: pickScale(),
          base: Math.random() * 0.45 + 0.25,
          speed: Math.random() * 0.015 + 0.003,
          phase: Math.random() * Math.PI * 2,
          color,
          rotation: Math.random() * Math.PI * 2,
          rotSpeed: Math.random() * 0.002 - 0.001
        };
      });
    };
    const draw = () => {
      ctx.clearRect(0, 0, canvas.width, canvas.height);
      for (const s of stars) {
        s.phase += s.speed;
        s.rotation += s.rotSpeed;
        const alpha = s.base + Math.sin(s.phase) * 0.25;
        const size = 10 * s.scale;
        ctx.globalAlpha = Math.max(0, Math.min(1, alpha));
        const tinted = makeTinted(s.color);
        if (!tinted) {
          continue;
        }
        ctx.save();
        ctx.translate(s.x, s.y);
        ctx.rotate(s.rotation);
        ctx.drawImage(tinted, -size / 2, -size / 2, size, size);
        ctx.restore();
      }
      rafId = requestAnimationFrame(draw);
    };
    logo.onload = () => {
      if (cancelled) {
        return;
      }
      const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
      resize();
      if (prefersReducedMotion) {
        draw();
        return;
      }
      draw();
      window.addEventListener("resize", resize);
    };
    logo.onerror = () => {
      console.warn("[Starfield] Failed to load logo asset");
    };
    return () => {
      cancelled = true;
      cancelAnimationFrame(rafId);
      window.removeEventListener("resize", resize);
      logo.onload = null;
      logo.onerror = null;
    };
  }, [density]);
  return <canvas ref={canvasRef} aria-hidden="true" className={className} style={{
    position: "absolute",
    inset: 0,
    width: "100%",
    height: "100%",
    pointerEvents: "none",
    zIndex: 0,
    ...style
  }} {...rest} />;
};

export const BlinkingIcon = ({icon = 'terminal', size = 16, color, className = '', style = {}, ...rest}) => {
  const resolvedColor = color || 'var(--lp-color-accent)';
  return <span className={className} style={{
    display: 'inline-flex',
    ...style
  }} {...rest}>
      <style>{`
        @keyframes blink {
          0%, 100% { opacity: 1; }
          50% { opacity: 0.3; }
        }
        @media (prefers-reduced-motion: reduce) {
          * { animation: none !important; }
        }
      `}</style>
      <span style={{
    display: 'inline-flex',
    animation: 'blink 3s ease-in-out infinite'
  }}>
        <Icon icon={icon} size={size} color={resolvedColor} />
      </span>
    </span>;
};

export const CustomDivider = ({color = "var(--lp-color-border-default)", middleText = "", spacing = "default", style = {}, className = "", ...rest}) => {
  const spacingPresets = {
    default: {
      margin: "24px 0"
    },
    overlap: {
      margin: "-1rem 0 -1rem 0"
    },
    tight: {
      margin: "0 0 -1rem 0"
    },
    section: {
      margin: "0 0 -2rem 0"
    },
    sectionOverlap: {
      margin: "-1rem 0 -2rem 0"
    },
    deepOverlap: {
      margin: "-1rem 0 -1.5rem 0"
    }
  };
  const spacingStyle = spacingPresets[spacing] || spacingPresets.default;
  return <div role="separator" aria-orientation="horizontal" className={className} style={{
    display: "flex",
    alignItems: "center",
    ...spacingStyle,
    fontSize: style?.fontSize || "16px",
    height: "fit-content",
    ...style
  }} {...rest}>
      <span style={{
    marginRight: "var(--lp-spacing-px-8)",
    opacity: 0.2
  }}>
        <Icon icon="/snippets/assets/logos/Livepeer-Logo-Symbol-Theme.svg" />
      </span>
      <div style={{
    flex: 1,
    height: "1px",
    background: "var(--lp-color-border-default)",
    opacity: 0.4
  }}></div>
      {middleText && <>
          <Icon icon="circle" size={2} />
          <span style={{
    margin: "0 8px",
    fontWeight: "bold",
    color: color,
    opacity: 0.7
  }}>
            {middleText}
          </span>
          <Icon icon="circle" size={2} />
        </>}
      <div style={{
    flex: 1,
    height: "1px",
    background: "var(--lp-color-border-default)",
    opacity: 0.4
  }}></div>
      <span style={{
    marginLeft: "var(--lp-spacing-px-8)",
    opacity: 0.2
  }}>
        <span style={{
    display: "inline-block",
    transform: "scaleX(-1)"
  }}>
          <Icon icon="/snippets/assets/logos/Livepeer-Logo-Symbol-Theme.svg" />
        </span>
      </span>
    </div>;
};

export const P = ({children, icon, iconSize = 16, iconColor, align = "left", gap = "var(--lp-spacing-2)", className = "", style = {}, ...rest}) => {
  const resolvedIconColor = iconColor || "var(--p-icon-color)";
  const containerStyle = {
    display: icon ? "flex" : "block",
    alignItems: "center",
    gap: icon ? gap : 0,
    justifyContent: align === "center" ? "center" : align === "right" ? "flex-end" : "flex-start",
    textAlign: align
  };
  const paragraphStyle = {
    margin: 0,
    color: "var(--lp-color-text-secondary)",
    opacity: 1
  };
  return <div className={className} style={{
    ...containerStyle,
    ...style
  }} {...rest}>
      {icon && <Icon icon={icon} size={iconSize} color={resolvedIconColor} />}
      <p style={paragraphStyle}>{children}</p>
    </div>;
};

export const H5 = ({children, icon, iconSize = 18, iconColor, align = "left", gap = "var(--lp-spacing-2)", className = "", style = {}, ...rest}) => {
  const resolvedIconColor = iconColor || "var(--lp-color-accent)";
  const containerStyle = {
    display: icon ? "flex" : "block",
    alignItems: "center",
    gap: icon ? gap : 0,
    justifyContent: align === "center" ? "center" : align === "right" ? "flex-end" : "flex-start",
    textAlign: align,
    marginBottom: "var(--lp-spacing-2)"
  };
  const headingStyle = {
    margin: 0,
    fontSize: "1.125rem",
    fontWeight: "bold",
    color: "var(--lp-color-text-primary)",
    opacity: 1
  };
  return <div className={className} style={{
    ...containerStyle,
    ...style
  }} {...rest}>
      {icon && <Icon icon={icon} size={iconSize} color={resolvedIconColor} />}
      <h5 style={headingStyle}>{children}</h5>
    </div>;
};

export const H3 = ({children, icon, iconSize = 24, iconColor, align = "left", gap = "var(--lp-spacing-2)", className = "", style = {}, ...rest}) => {
  const resolvedIconColor = iconColor || "var(--lp-color-accent)";
  const containerStyle = {
    display: icon ? "flex" : "block",
    alignItems: "center",
    gap: icon ? gap : 0,
    justifyContent: align === "center" ? "center" : align === "right" ? "flex-end" : "flex-start",
    textAlign: align,
    marginBottom: "var(--lp-spacing-3)"
  };
  const headingStyle = {
    margin: 0,
    fontSize: "1.5rem",
    fontWeight: "bold",
    color: "var(--lp-color-text-primary)",
    opacity: 1
  };
  return <div className={className} style={{
    ...containerStyle,
    ...style
  }} {...rest}>
      {icon && <Icon icon={icon} size={iconSize} color={resolvedIconColor} />}
      <h3 style={headingStyle}>{children}</h3>
    </div>;
};

export const H2 = ({children, icon, iconSize = 28, iconColor, align = "left", gap = "var(--lp-spacing-3)", className = "", style = {}, ...rest}) => {
  const resolvedIconColor = iconColor || "var(--lp-color-accent)";
  const containerStyle = {
    display: icon ? "flex" : "block",
    alignItems: "center",
    gap: icon ? gap : 0,
    justifyContent: align === "center" ? "center" : align === "right" ? "flex-end" : "flex-start",
    textAlign: align,
    marginBottom: "var(--lp-spacing-4)"
  };
  const headingStyle = {
    margin: 0,
    fontSize: "1.875rem",
    fontWeight: "bold",
    color: "var(--lp-color-text-primary)",
    opacity: 1
  };
  return <div className={className} style={{
    ...containerStyle,
    ...style
  }} {...rest}>
      {icon && <Icon icon={icon} size={iconSize} color={resolvedIconColor} />}
      <h2 style={headingStyle}>{children}</h2>
    </div>;
};

export const H1 = ({children, icon, iconSize = 32, iconColor, align = "left", gap = "var(--lp-spacing-3)", className = "", style = {}, ...rest}) => {
  const resolvedIconColor = iconColor || "var(--lp-color-accent)";
  const containerStyle = {
    display: icon ? "flex" : "block",
    alignItems: "center",
    gap: icon ? gap : 0,
    justifyContent: align === "center" ? "center" : align === "right" ? "flex-end" : "flex-start",
    textAlign: align
  };
  const headingStyle = {
    margin: "2rem 0 1rem 0",
    fontSize: "2.5rem",
    fontWeight: "bold",
    lineHeight: "1.2",
    color: "var(--lp-color-text-primary)",
    opacity: 1
  };
  return <div className={className} style={{
    ...containerStyle,
    ...style
  }} {...rest}>
      {icon && <Icon icon={icon} size={iconSize} color={resolvedIconColor} />}
      <h1 style={headingStyle}>{children}</h1>
    </div>;
};

export const latestWatercooler = youtubeDataSeries.find(v => v.title.toLowerCase().includes('watercooler'));
export const latestWatercoolerEmbedUrl = latestWatercooler ? `https://www.youtube.com/embed/${latestWatercooler.href.split('v=')[1]?.split('&')[0]}` : '';

<HeroSectionContainer>
  <HeroImageBackgroundComponent>
    <Starfield />
  </HeroImageBackgroundComponent>

  <HeroContentContainer>
    <LogoHeroContainer height="20px" />

    <PortalHeroContent
      title="Community"
      subtitle="Connect – Participate – Contribute"
      refCardLink={
      <Card
        title="Join the Community"
        href="https://discord.gg/livepeer"
        icon="discord"
        arrow
        horizontal
      />
    }
      overview={
      <>
      The Livepeer Community is a diverse and vibrant group of individuals and organisations that are passionate about the Livepeer Real-time Video AI Network.
      </>
    }
    >
      <YouTubeVideo embedUrl={latestWatercoolerEmbedUrl} title={<CustomCardTitle variant="tab" icon="arrow-up-right" title={<a href="https://discord.com/events/423160867534929930/1394387788568203274" className="lp-link-underline">Join the weekly Watercooler Chat on Discord</a>} />} />
    </PortalHeroContent>
  </HeroContentContainer>
</HeroSectionContainer>

<PortalContentContainer>
  <PortalCardsHeader title="Community Portal">
    <BlinkingIcon icon="circle-play" size={20} />
  </PortalCardsHeader>

  <Columns cols={2}>
    <Card title="Join the Discord" icon="discord" href="https://discord.livepeer.org" arrow>
      The Livepeer Discord is the primary communication platform for the Livepeer community. Get Involved!
    </Card>

    <Card title="Join the Forum" icon="comment-question" href="https://forum.livepeer.org" arrow>
      The Livepeer Forum is a great place to ask questions, share ideas, and connect with other members of the Livepeer community.
    </Card>

    <Card title="Governance & Foundation" icon="building-columns" href="/v2/community/ecosystem/governance" arrow>
      How governance works, the SPE process, Workstreams, and the Livepeer Foundation.
    </Card>

    <Card title="Follow Livepeer on X" icon="twitter" href="https://x.com/livepeer" arrow>
      Follow, like, share & comment on the latest news and updates from Livepeer on X.
    </Card>

    <Card title="Follow the YouTube Channel" icon="youtube" href="https://www.youtube.com/@livepeer" arrow>
      From product updates to community hangouts, you can find it all on the Livepeer YouTube Channel.
    </Card>

    <Card title="Subscribe to the Livepeer Blog" icon="pencil-line" href="https://blog.livepeer.org/" arrow>
      Read the latest news and updates from Livepeer on the official Livepeer Blog.
    </Card>

    <Card title="Events" icon="calendar" href="https://luma.com/livepeer" arrow>
      View and subscribe to Livepeer in-person and online events and community streams on Luma.
    </Card>

    <Card title="Star the Livepeer Github" icon="github" href="https://github.com/livepeer" arrow>
      The Livepeer codebase is open-source and available on GitHub. Explor the code, raise issues or contribute to help shape the future of Livepeer.
    </Card>

    <Card title="Visit the Livepeer Explorer" icon="chart-line" href="https://explorer.livepeer.org/" arrow>
      The Explorer allows users to monitor network activity, track performance, view proposals and participate in the network's governance and staking processes.
    </Card>

    {/* <Card
            title="Join the Watercooler Chat"
            icon="calendar"
            href="https://discord.com/events/423160867534929930/1394387788568203274"
            arrow
          >
        Join the weekly Livepeer Watercooler, a weekly community meeting hosted on Discord where you can ask questions, share ideas, and connect with other members of the Livepeer community.
        </Card> */}

    <Card title="Livepeer Telegram (official)" icon="telegram" href="https://t.me/livepeerorg" arrow>
      The official Livepeer Telegram group is a great place to ask questions, share ideas, and connect with other members of the Livepeer community.
    </Card>

    <Card title="Livepeer Reddit (unofficial)" icon="reddit" href="https://www.reddit.com/r/livepeer/" arrow>
      The Livepeer Reddit is an unofficial community-run forum for discussion and sharing.
    </Card>

    {/* <Card
            title="Join the Livepeer Watercooler"
            icon="messages"
            href="https://www.youtube.com/@livepeer"
            arrow
          >
        Join the Livepeer Watercooler, a weekly community meeting where you can ask questions, share ideas, and connect with other members of the Livepeer community.
        </Card> */}
  </Columns>

  {/* <PortalSectionHeader title="? Community Portal: Map" icon="map-location">
      <FlexContainer direction="column">
    <H5>**Definition**</H5>
    Community is...
        <br/>
    <H5>**Quick Intro**</H5>
    Get Situated
      </FlexContainer>
    </PortalSectionHeader> */}
</PortalContentContainer>
