From 1be672b9c7be211bbfd8467e3538c339e6d37cb8 Mon Sep 17 00:00:00 2001 From: Patricio Marroquin <55117912+patricio0312rev@users.noreply.github.com> Date: Fri, 17 Nov 2023 05:59:02 -0500 Subject: [PATCH] feat: add tables, footnotes, striketroughs, and tasklists support for articles (#439) --- .../seeders/fixtures/articles/articles.json | 12 +- package.json | 1 + pnpm-lock.yaml | 1067 +++++++++-------- resources/css/_article.css | 32 + resources/css/_general.css | 6 +- .../Articles/Components/ArticleContent.tsx | 14 +- 6 files changed, 610 insertions(+), 522 deletions(-) diff --git a/database/seeders/fixtures/articles/articles.json b/database/seeders/fixtures/articles/articles.json index 811934043..4d4195681 100644 --- a/database/seeders/fixtures/articles/articles.json +++ b/database/seeders/fixtures/articles/articles.json @@ -7,7 +7,7 @@ "platform_id": null, "name": "Pussy Riot - Bringing About Radical Change with NFTs", "slug": "pussy-riot-bringing-about-radical-change-with-nfts", - "body": "_**Welcome back to another Discovery of the Day! MSQ is the New Homepage for the Decentralized Web, so we have everything from DeFi and NFTs to Blockchain Games and Wallets for you to check out! From Monday to Friday, we bring you some of our top picks from across the cryptosphere and serve it up to you in the most fun and entertaining way imaginable! Today we feature the world's most notorious activist collective. That's right, it's _the_ legendary Pussy Riot!**_\n\n## The Motherland's Troubled Past\n\nCzar Nicholas II, Grigori Yefimovich Rasputin, Vladimir Lenin, Joseph Stalin...there's little doubt that Mother Russia is home to a wealth of history and culture. However, much of the country's past is blood-soaked and characterized by significant amounts of human suffering. The Russian Revolution, the five-year plans for the development of the USSR under Stalin, the [Kyshtym Disaster](https://en.wikipedia.org/wiki/Kyshtym_disaster) (bet you didn't know about this one), the Chernobyl disaster (although this was actually Ukraine, it was once part of the USSR)...and that just spans the last few decades.\n\n
\n\n![](https://i.imgur.com/SbWw39p.jpg)\n\n
\n\nUncle Joe, as he was affectionately known, was responsible for the deaths of millions of his own people\n\n
\n\n
\n\nAfter the Cold War and the fall of communism, Boris Yeltsin became the first democratically elected leader of Russia in 1991. Eight years later, under immense pressure, Yeltsin resigned and chose [Vladimir Putin](https://en.wikipedia.org/wiki/Vladimir_Putin) as his successor. Putin served as President of Russia from 1999 to 2008 and reclaimed the position in 2012. In 2021, he still holds power. Putin has been criticized for silencing and imprisoning opponents, mismanaging the COVID-19 pandemic, vehemently opposing same-sex marriage and dismantling the rights of members of the LGBTQ+ community. As a result, many have come to see the Russian strongman as a tyrant hellbent on maintaining control and crushing dissident voices by any means necessary.\n\n
\n\n![](https://i.imgur.com/JbLi6L6.jpg)\n\n
\n\nVladimir Putin, current President of the Russian Federation\n\n
\n\n
\n\n## Straight Outta Russia\n\n
\n\n![](https://i.ibb.co/31pzb39/Pussy-Riot-by-Igor-Mukhin.jpg)\n\n
\n\nPussy Riot circa 2012 (Photo credit: [Igor Mukhin](https://twitter.com/igormoukhin))\n\n
\n\n
\n\nFebruary 21st, 2012\u2014Five women swaddled in long winter overcoats determinedly made their way into the [Cathedral of Christ the Saviour](https://en.wikipedia.org/wiki/Cathedral_of_Christ_the_Saviour) and ascended the pulpit. Situated along the Moscow River and just hundreds of meters from the Kremlin, this site is long considered the seat of the Russian Orthodoxy. Somewhat befitting this momentous event was the debut of [Tchaikovsky's](https://en.wikipedia.org/wiki/Pyotr_Ilyich_Tchaikovsky) *1812 Overture* some 130 years earlier.\n\nCoats tossed aside revealing colorful clothing and donning their signature\u2014and potentially [cat pee stained](https://youtu.be/7xd0WlrSEik?t=2m40s)\u2014balaclavas, [Pussy Riot](https://en.wikipedia.org/wiki/Pussy_Riot) set in motion a chain of events that would lead to their imprisonment and cement them as champions of free speech.\n\nWhile dancing and singing 'Mother Mary, drive Putin away,' the five were promptly bum-rushed and escorted from the pulpit. Their 'Punk Prayer' was viewed by many as a direct attack on the Orthodox Church. [Reportedly](https://www.levada.ru/sites/default/files/2012_eng.pdf), only about 19% of Russians saw this performance as a protest against Pres. [Vladimir Putin](https://en.wikipedia.org/wiki/Vladimir_Putin) at the time.\n\nThree of the five were ultimately arrested and charged with 'hooliganism motivated by religious hatred,' denied bail, and held for more than four months without a court hearing. They were subsequently sentenced to two years imprisonment in a women's labor camp.\n\n![](youtube:PN5inCayfnM)\n\nSince their release at the end of 2013, *Pussy Riot* has toured around the world and performed at major festivals including Glastonbury, Roskilde, Sziget, Riot Fest, Rock al Parque, Banksy's Dismaland, Nova Rock, and Festival of Dangerous Ideas at [The Sydney Opera House](https://www.sydneyoperahouse.com/). Their favorite topics are gender fluidity, feminism, LGBTQ+ rights, decentralization and anti-authoritarianism and politics of self. *Pussy Riot* served as grand marshals of Toronto gay pride, and performed at Prides in Los Angeles, New York, Vienna, Stockholm, Boston, and so on.\n\n> 'Feminist, explicitly anti-Putin, protesting the banning of gay pride and the Orthodox church\u2019s support of the president...symbol of defiance in the face of freedoms lost.' - Guardian named *Pussy Riot* among the best art of the 21st century\n\n## _'This eth goes directly to buying gasoline'_\n\n[Pu$$y Riot NFTs](https://pussyriot.love) is a collection of 333 NFTs on the [Ethereum](https://ethereum.org) Blockchain. This collection entitled *Virgin Mary, Please Become A Feminist,* features *Pussy Riot's* hand-drawn artwork overlaid across a digitized copy of Nadia's 2012 prison sentencing documents and is inspired by their shared love for rebellion, plants, cows, and psychedelics. Also featured are several collaborations with NFT artist [Trippy](https://twitter.com/NFTrippy). Proceeds support victims of domestic violence in Russia, currently incarcerated political prisoners, and *Pussy Riot's* own ongoing activism and art.\n\n
\n\n![](https://i.ibb.co/jzZFZWP/pussy-riot-nfts.gif)\n\n
\n\n> '*Pussy Riot* is one of the most radical and important activist musical groups of all time. Their fearless blending of art and confrontation is a constant inspiration' ~ [Rage Against The Machine](https://en.wikipedia.org/wiki/Rage_Against_the_Machine)'s Tom Morello on *Pussy Riot*\n\n## Riotous Stats\n\nAll 333 Pu$$y Riot NFTs have been minted, but you can still find them on the secondary market via [OpenSea](https://opensea.io/collection/pussyriotacab).\n\n* **Smart Contract** - [0xd455550af4a7558b0beec5eaec2cc415c4ff4039](https://etherscan.io/token/0xd455550af4a7558b0beec5eaec2cc415c4ff4039)\n\n_Please Note: Stats are accurate at the time of writing, but be sure to check the original source for the most current information._\n\n* **Available Items** - 333\n* **Owners** - 311\n\n
\n\n![](https://i.ibb.co/jMs3czJ/virgin-mary.png)\n\n
\n\nBe sure to follow *Pussy Riot* on [Twitter](https://twitter.com/pussyrrriot) and join them on [Discord](https://discord.gg/YQGUE4xWcF) so that you receive all the latest updates and developments regarding this legendary radical activist group and their ongoing efforts to bring justice to the disenfranchised.\n\nThat wraps it up for this Discovery of the Day. *Pussy Riot* proves that NFTs can play an instrumental role in bringing about social change and funding endeavors that protect the rights and freedoms of people the world over. Remember, when you mint or purchase an NFT, you could very well be changing the life of more than one individual. In fact, you could very well play an instrumental role in making life better for just about everybody.\n\n> *For updates on new NFT drops, NFT news, and more, make sure you follow [OurVillage](https://ourvillage.substack.com/) on SubStack, and don't forget to follow [Farmer Joe](https://twitter.com/HelloFarmerJoe) and [Lumberjack Larry](https://twitter.com/LumberjackLar)* on Twitter.\n\n---\n\n*We will be hosting giveaways for eligible members on the [MSQ Discord](https://discord.gg/eesCgQWw7n) every Friday at 3PM EST. Make sure you join our growing NFT community so you can stay on top of news, the latest drops, and everything non-fungible.*", + "body": "_**Welcome back to another Discovery of the Day! MSQ is the New Homepage for the Decentralized Web, so we have everything from DeFi and NFTs to Blockchain Games and Wallets for you to check out! From Monday to Friday, we bring you some of our top picks from across the cryptosphere and serve it up to you in the most fun and entertaining way imaginable! Today we feature the world's most notorious activist collective. That's right, it's _the_ legendary Pussy Riot!**_\n\n## Table of Contents\n\n| # | Title |\n|---|------------------------------------------------|\n| 1 | [Introduction](#introduction) |\n| 2 | [The Motherland's Troubled Past](#the-motherlands-troubled-past) |\n| 3 | [Straight Outta Russia](#straight-outta-russia) |\n| 4 | [_'This eth goes directly to buying gasoline'_](#this-eth-goes-directly-to-buying-gasoline) |\n| 5 | [Riotous Stats](#riotous-stats) |\n\n## The Motherland's Troubled Past\n\nCzar Nicholas II, Grigori Yefimovich Rasputin, Vladimir Lenin, Joseph Stalin...there's little doubt that Mother Russia is home to a wealth of history and culture. However, much of the country's past is blood-soaked and characterized by significant amounts of human suffering. The Russian Revolution, the five-year plans for the development of the USSR under Stalin, the [Kyshtym Disaster](https://en.wikipedia.org/wiki/Kyshtym_disaster) (bet you didn't know about this one), the Chernobyl disaster (although this was actually Ukraine, it was once part of the USSR)...and that just spans the last few decades.\n\n
\n\n![](https://i.imgur.com/SbWw39p.jpg)\n\n
\n\nUncle Joe, as he was affectionately known, was responsible for the deaths of millions of his own people\n\n
\n\n
\n\nAfter the Cold War and the fall of communism, Boris Yeltsin became the first democratically elected leader of Russia in 1991. Eight years later, under immense pressure, Yeltsin resigned and chose [Vladimir Putin](https://en.wikipedia.org/wiki/Vladimir_Putin) as his successor. Putin served as President of Russia from 1999 to 2008 and reclaimed the position in 2012. In 2021, he still holds power. Putin has been criticized for silencing and imprisoning opponents, mismanaging the COVID-19 pandemic, vehemently opposing same-sex marriage and dismantling the rights of members of the LGBTQ+ community. As a result, many have come to see the Russian strongman as a tyrant hellbent on maintaining control and crushing dissident voices by any means necessary.\n\n
\n\n![](https://i.imgur.com/JbLi6L6.jpg)\n\n
\n\nVladimir Putin, current President of the Russian Federation\n\n
\n\n
\n\n## Straight Outta Russia\n\n
\n\n![](https://i.ibb.co/31pzb39/Pussy-Riot-by-Igor-Mukhin.jpg)\n\n
\n\nPussy Riot circa 2012 (Photo credit: [Igor Mukhin](https://twitter.com/igormoukhin))\n\n
\n\n
\n\nFebruary 21st, 2012\u2014Five women swaddled in long winter overcoats determinedly made their way into the [Cathedral of Christ the Saviour](https://en.wikipedia.org/wiki/Cathedral_of_Christ_the_Saviour) and ascended the pulpit. Situated along the Moscow River and just hundreds of meters from the Kremlin, this site is long considered the seat of the Russian Orthodoxy. Somewhat befitting this momentous event was the debut of [Tchaikovsky's](https://en.wikipedia.org/wiki/Pyotr_Ilyich_Tchaikovsky) *1812 Overture* some 130 years earlier.\n\nCoats tossed aside revealing colorful clothing and donning their signature\u2014and potentially [cat pee stained](https://youtu.be/7xd0WlrSEik?t=2m40s)\u2014balaclavas, [Pussy Riot](https://en.wikipedia.org/wiki/Pussy_Riot) set in motion a chain of events that would lead to their imprisonment and cement them as champions of free speech.\n\nWhile dancing and singing 'Mother Mary, drive Putin away,' the five were promptly bum-rushed and escorted from the pulpit. Their 'Punk Prayer' was viewed by many as a direct attack on the Orthodox Church. [Reportedly](https://www.levada.ru/sites/default/files/2012_eng.pdf), only about 19% of Russians saw this performance as a protest against Pres. [Vladimir Putin](https://en.wikipedia.org/wiki/Vladimir_Putin) at the time.\n\nThree of the five were ultimately arrested and charged with 'hooliganism motivated by religious hatred,' denied bail, and held for more than four months without a court hearing. They were subsequently sentenced to two years imprisonment in a women's labor camp.\n\n![](youtube:PN5inCayfnM)\n\nSince their release at the end of 2013, *Pussy Riot* has toured around the world and performed at major festivals including Glastonbury, Roskilde, Sziget, Riot Fest, Rock al Parque, Banksy's Dismaland, Nova Rock, and Festival of Dangerous Ideas at [The Sydney Opera House](https://www.sydneyoperahouse.com/). Their favorite topics are gender fluidity, feminism, LGBTQ+ rights, decentralization and anti-authoritarianism and politics of self. *Pussy Riot* served as grand marshals of Toronto gay pride, and performed at Prides in Los Angeles, New York, Vienna, Stockholm, Boston, and so on.\n\n> 'Feminist, explicitly anti-Putin, protesting the banning of gay pride and the Orthodox church\u2019s support of the president...symbol of defiance in the face of freedoms lost.' - Guardian named *Pussy Riot* among the best art of the 21st century\n\n## _'This eth goes directly to buying gasoline'_\n\n[Pu$$y Riot NFTs](https://pussyriot.love) is a collection of 333 NFTs on the [Ethereum](https://ethereum.org) Blockchain. This collection entitled *Virgin Mary, Please Become A Feminist,* features *Pussy Riot's* hand-drawn artwork overlaid across a digitized copy of Nadia's 2012 prison sentencing documents and is inspired by their shared love for rebellion, plants, cows, and psychedelics. Also featured are several collaborations with NFT artist [Trippy](https://twitter.com/NFTrippy). Proceeds support victims of domestic violence in Russia, currently incarcerated political prisoners, and *Pussy Riot's* own ongoing activism and art.\n\n
\n\n![](https://i.ibb.co/jzZFZWP/pussy-riot-nfts.gif)\n\n
\n\n> '*Pussy Riot* is one of the most radical and important activist musical groups of all time. Their fearless blending of art and confrontation is a constant inspiration' ~ [Rage Against The Machine](https://en.wikipedia.org/wiki/Rage_Against_the_Machine)'s Tom Morello on *Pussy Riot*\n\n## Riotous Stats\n\nAll 333 Pu$$y Riot NFTs have been minted, but you can still find them on the secondary market via [OpenSea](https://opensea.io/collection/pussyriotacab).\n\n* **Smart Contract** - [0xd455550af4a7558b0beec5eaec2cc415c4ff4039](https://etherscan.io/token/0xd455550af4a7558b0beec5eaec2cc415c4ff4039)\n\n_Please Note: Stats are accurate at the time of writing, but be sure to check the original source for the most current information._\n\n* **Available Items** - 333\n* **Owners** - 311\n\n
\n\n![](https://i.ibb.co/jMs3czJ/virgin-mary.png)\n\n
\n\nBe sure to follow *Pussy Riot* on [Twitter](https://twitter.com/pussyrrriot) and join them on [Discord](https://discord.gg/YQGUE4xWcF) so that you receive all the latest updates and developments regarding this legendary radical activist group and their ongoing efforts to bring justice to the disenfranchised.\n\nThat wraps it up for this Discovery of the Day. *Pussy Riot* proves that NFTs can play an instrumental role in bringing about social change and funding endeavors that protect the rights and freedoms of people the world over. Remember, when you mint or purchase an NFT, you could very well be changing the life of more than one individual. In fact, you could very well play an instrumental role in making life better for just about everybody.\n\n> *For updates on new NFT drops, NFT news, and more, make sure you follow [OurVillage](https://ourvillage.substack.com/) on SubStack, and don't forget to follow [Farmer Joe](https://twitter.com/HelloFarmerJoe) and [Lumberjack Larry](https://twitter.com/LumberjackLar)* on Twitter.\n\n---\n\n*We will be hosting giveaways for eligible members on the [MSQ Discord](https://discord.gg/eesCgQWw7n) every Friday at 3PM EST. Make sure you join our growing NFT community so you can stay on top of news, the latest drops, and everything non-fungible.*", "is_featured": false, "published_at": "2021-11-10 14:45:00", "created_at": "2021-11-10 07:54:31", @@ -75,7 +75,7 @@ "platform_id": null, "name": "Solana Bananas - Fruity Fresh Generative NFTs", "slug": "solana-bananas-fruity-fresh-generative-nfts", - "body": "***Join us as we bring you another epic Discovery of the Day! There's an entire universe of projects to check out in the wider cryptoverse, and we're doing our best to bring you some of the most promising ones around! If it has a great community, amazing developers and some awesome features, then we want to know about it! Without further ado, today we present: Solana Bananas!***\n\n## A Banana Republic?\n\nDictators, despots, authoritarians, tyrants...call 'em whatever you want, but there have been a bunch of 'em over the years. Those that presided over economies that depended almost exclusively on the exportation of agricultural goods, particularly coffee or bananas, were the undisputed leaders of what became known as *Banana Republics.* Yes, trouble in paradise, [Far Cry](https://en.wikipedia.org/wiki/Far_Cry_(video_game)) 1 without the trigens, tropical travesties\u2014you get the idea.\n\nWhat does this have to do with our Discovery of the Day? Everything and nothing of course. [Solana Bananas](https://solanabananas.com/) is an NFT collection of 1,500 flavorsome fruits hanging in the plantations of the [Solana](https://solana.com/) Blockchain. Each of these entirely unique bananas is algorithmically generated and stored with proof of ownership on Solana's fast, efficient and secure Blockchain. As an added bonus, when a user mints a Solana Banana, they will have the chance to mint an ultra rare Banana like the treasured *Golden Banana*, or a *Zombie Banana*.\n\nEvery Banana is made up from over 130 different attributes including background color, facial expression, hairstyle, eyewear, skin color, apparel, clothing and so on. Certain attributes are rarer than others, but regardless of what a user receives, there will only ever be 1,500 Solana Bananas.\n\nSolana Bananas wants to give back to the world, which is exactly why 10% of all proceeds will go directly towards the [Dian Fossey Gorilla Fund](https://gorillafund.org/). As an organization that protects critically endangered mountain gorillas through research, training, community outreach, and constant on-the-ground presence in Rwanda, the Dian Fossey Gorilla Fund needs sufficient support to ensure their work is carried out unimpeded. Solana Bananas believe this cause to be very much aligned with their values and the theme behind their lively NFT project.\n\nAnd now let's take a look at some of these brilliant Bananas up-close:\n\n![](https://i.imgur.com/Ob8Nd3x.png)\n\n> Snake Banana Skin is here to chew gum and retain his ripeness...and he's all outta ripeness\n\n![](https://i.imgur.com/XhnHpuq.png)\n\n> Hours in the Miami sun left Bert Banana feeling uncharacteristically red\n\n![](https://i.imgur.com/jTv6C4D.png)\n\n> Bullish Blue Banana brazenly binges barbital brands\n\n## Ba Na Na Naaaaa...Ba Na Na Naaaaa (It's Beethoven)\n\nForgive the onomatopoeia, it's nearly impossible for me to write such a Potassium-rich post like this without making a pun or two. So the Solana Bananas Roadmap (which you can also view in their [Discord](https://discord.gg/hMQPFTZ2)) is detailed below for your convenience. Q3 of 2021 has come and gone, but it seems like there's a fair amount planned for the coming months and all the way into the second quarter of 2022. Very nice stuff. Anyway, see for yourself:\n\n![](https://i.imgur.com/kK9nHPP.png)\n\n![](https://i.imgur.com/sDl3AAV.png)\n\nIt's important to keep in mind that, unlike many other projects that feature several thousand generative NFTs, Solana Bananas is limited to a mere 1,500. This means fewer owners, greater rarity and, if all goes according to plan, higher value as the months and years roll by. From what I can tell, the project is moving along at a healthy pace and has a suitably strong community behind it.\n\n## Stats\n\nSolana Bananas is currently sold out, so if you want to pick one up, you'll need to head over to their [Solanart page](https://solanart.io/collections/solanabananas) and buy one there. Now how about some stats?\n\n*Please Note: Stats are accurate at the time of writing, but be sure to check the original source for the most current information.*\n\n- **Total Items** - 264/1,500\n- **Total Owners** - 196\n\nWell, what can I tell you? Solana Bananas is a delightfully quirky NFT project with some fun features and a unique approach within the ever-expanding world of Non-Fungible Tokens. Be sure to check out their [website](https://solanabananas.com/), follow them on [Twitter](https://twitter.com/SolanaBananas) and join their [Discord](https://discord.gg/hMQPFTZ2) for all the latest news from the bunch (I can't help myself, OK?) That's it for now NFT fans! Until we meet again, stay safe and stay awesome!\n\n![](https://i.imgur.com/ZboJXj8.png)\n\n> For updates on new NFT drops, NFT news, and more, make sure you follow [OurVillage](https://ourvillage.substack.com/) on SubStack, and don\u2019t forget to follow [Farmer Joe](https://twitter.com/HelloFarmerJoe) and [Lumberjack Larry](https://twitter.com/LumberjackLar) on Twitter.\n\n*We will be hosting giveaways for eligible members on the [MSQ Discord](https://discord.com/invite/d6Es4qRNAQ) every Friday at 3PM ET. Be sure to join our growing NFT community so you can stay on top of news, new drops, and everything non-fungible.*", + "body": "***Join us as we bring you another epic Discovery of the Day! There's an entire universe of projects to check out in the wider cryptoverse, and we're doing our best to bring you some of the most promising ones around! If it has a great community, amazing developers and some awesome features, then we want to know about it! Without further ado, today we present: Solana Bananas!***\n\n## Testing tables\n\n| Name#1 | Name#2 | Name#3 | Name#4 | Name#5 | Name#6 | Name#7 |\n|----------------------------------|---------------------------------------------|----------------------------------|--------------------------------------|----------------------------------|----------------------------------|----------------------------------|\n| Lorem ipsum dolor sit amet | [Link](http://www.dashbrd.com) | Lorem ipsum dolor sit amet | 10,000,000 | Lorem ipsum dolor sit amet | Lorem ipsum dolor sit amet | Lorem ipsum dolor sit amet |\n| Lorem ipsum dolor sit amet | [Link](http://www.dashbrd.com) | Lorem ipsum dolor sit amet | 10,000,000 | Lorem ipsum dolor sit amet | Lorem ipsum dolor sit amet | Lorem ipsum dolor sit amet |\n| Lorem ipsum dolor sit amet | [Link](http://www.dashbrd.com) | Lorem ipsum dolor sit amet | 10,000,000 | Lorem ipsum dolor sit ame | Lorem ipsum dolor sit amet | Lorem ipsum dolor sit amet |\n\n## A Banana Republic?\n\nDictators, despots, authoritarians, tyrants...call 'em whatever you want, but there have been a bunch of 'em over the years. Those that presided over economies that depended almost exclusively on the exportation of agricultural goods, particularly coffee or bananas, were the undisputed leaders of what became known as *Banana Republics.* Yes, trouble in paradise, [Far Cry](https://en.wikipedia.org/wiki/Far_Cry_(video_game)) 1 without the trigens, tropical travesties\u2014you get the idea.\n\nWhat does this have to do with our Discovery of the Day? Everything and nothing of course. [Solana Bananas](https://solanabananas.com/) is an NFT collection of 1,500 flavorsome fruits hanging in the plantations of the [Solana](https://solana.com/) Blockchain. Each of these entirely unique bananas is algorithmically generated and stored with proof of ownership on Solana's fast, efficient and secure Blockchain. As an added bonus, when a user mints a Solana Banana, they will have the chance to mint an ultra rare Banana like the treasured *Golden Banana*, or a *Zombie Banana*.\n\nEvery Banana is made up from over 130 different attributes including background color, facial expression, hairstyle, eyewear, skin color, apparel, clothing and so on. Certain attributes are rarer than others, but regardless of what a user receives, there will only ever be 1,500 Solana Bananas.\n\nSolana Bananas wants to give back to the world, which is exactly why 10% of all proceeds will go directly towards the [Dian Fossey Gorilla Fund](https://gorillafund.org/). As an organization that protects critically endangered mountain gorillas through research, training, community outreach, and constant on-the-ground presence in Rwanda, the Dian Fossey Gorilla Fund needs sufficient support to ensure their work is carried out unimpeded. Solana Bananas believe this cause to be very much aligned with their values and the theme behind their lively NFT project.\n\nAnd now let's take a look at some of these brilliant Bananas up-close:\n\n![](https://i.imgur.com/Ob8Nd3x.png)\n\n> Snake Banana Skin is here to chew gum and retain his ripeness...and he's all outta ripeness\n\n![](https://i.imgur.com/XhnHpuq.png)\n\n> Hours in the Miami sun left Bert Banana feeling uncharacteristically red\n\n![](https://i.imgur.com/jTv6C4D.png)\n\n> Bullish Blue Banana brazenly binges barbital brands\n\n## Ba Na Na Naaaaa...Ba Na Na Naaaaa (It's Beethoven)\n\nForgive the onomatopoeia, it's nearly impossible for me to write such a Potassium-rich post like this without making a pun or two. So the Solana Bananas Roadmap (which you can also view in their [Discord](https://discord.gg/hMQPFTZ2)) is detailed below for your convenience. Q3 of 2021 has come and gone, but it seems like there's a fair amount planned for the coming months and all the way into the second quarter of 2022. Very nice stuff. Anyway, see for yourself:\n\n![](https://i.imgur.com/kK9nHPP.png)\n\n![](https://i.imgur.com/sDl3AAV.png)\n\nIt's important to keep in mind that, unlike many other projects that feature several thousand generative NFTs, Solana Bananas is limited to a mere 1,500. This means fewer owners, greater rarity and, if all goes according to plan, higher value as the months and years roll by. From what I can tell, the project is moving along at a healthy pace and has a suitably strong community behind it.\n\n## Stats\n\nSolana Bananas is currently sold out, so if you want to pick one up, you'll need to head over to their [Solanart page](https://solanart.io/collections/solanabananas) and buy one there. Now how about some stats?\n\n*Please Note: Stats are accurate at the time of writing, but be sure to check the original source for the most current information.*\n\n- **Total Items** - 264/1,500\n- **Total Owners** - 196\n\nWell, what can I tell you? Solana Bananas is a delightfully quirky NFT project with some fun features and a unique approach within the ever-expanding world of Non-Fungible Tokens. Be sure to check out their [website](https://solanabananas.com/), follow them on [Twitter](https://twitter.com/SolanaBananas) and join their [Discord](https://discord.gg/hMQPFTZ2) for all the latest news from the bunch (I can't help myself, OK?) That's it for now NFT fans! Until we meet again, stay safe and stay awesome!\n\n![](https://i.imgur.com/ZboJXj8.png)\n\n> For updates on new NFT drops, NFT news, and more, make sure you follow [OurVillage](https://ourvillage.substack.com/) on SubStack, and don\u2019t forget to follow [Farmer Joe](https://twitter.com/HelloFarmerJoe) and [Lumberjack Larry](https://twitter.com/LumberjackLar) on Twitter.\n\n*We will be hosting giveaways for eligible members on the [MSQ Discord](https://discord.com/invite/d6Es4qRNAQ) every Friday at 3PM ET. Be sure to join our growing NFT community so you can stay on top of news, new drops, and everything non-fungible.*", "is_featured": false, "published_at": "2021-10-19 14:45:00", "created_at": "2021-10-19 06:23:30", @@ -92,7 +92,7 @@ "platform_id": null, "name": "Wannabes Music Club - NFTs that Rock", "slug": "wannabes-music-club-nfts-that-rock", - "body": "Join us as we take a look at our Discovery of the Day! Whether its their art, their exciting communities, or the unique things planned in their projects, there is definitely something here to grab your interest. Today we are taking a look at the Wannabes Music Club.\n\n## I Wannabe a Rockstar\n\nIf I had to pick between listening to Nickelback or being a part of the Wannabe Music Club I would choose the latter. This project features 10,027 unique NFTs representing characters from a fictional music community. \n\nThe art itself is vibrant and these avatars aren't just a piece of art, they are your backstage pass to the entire Wannabes community. \n\n![](https://media.discordapp.net/attachments/872015112565833758/872015487071047700/IMG_6945.JPG?width=1200&height=1200)\n\nIn addition the representation of a diverse mix of characters, gender, and identity really shine through the art.\n\n![](https://media.discordapp.net/attachments/872015112565833758/872151899409891348/IMG_6935.JPG?width=1209&height=1209)\n\nWe've seen a lot of communities pop up which tie their membership to NFTs but Wannabes also ties their membership to a love and appreciation for music. It is embedded into the art and into the roadmap for the project itself. \n\n## The Long and Winding Road\n\nEvery piece of art in the Wannabes collection comes with full commercial usage rights. By being a part of the community, members can expect these perks:\n* Meetings and masterclasses with established musicians. \n* Community Album Release\n* Metaverse Music Festival\n* Mine the $VIBE token with your Wannabe\n* Play a co-op visual novel game. \n\n![](https://i.imgur.com/GVzVvCC.jpg)\n\nIn addition to all of the above, the team will also be donating $25,000 to the Fender Foudation, Save the Music and Education Through Music charities. Other parts of their roadmap include a community grant fund, liquidity pools for the $VIBE token, and a DAO to manage it all. \n\n\n\n\n\n## Stats\n* Total Items: 10,027\n* Mint Price: TBD\n* Release: August 5, 2021 at 6PM EST\n\nAt the time of this writing, Wannabes Music Club avatars have not been released but you can learn more on their [official website](https://wannabesmusic.club/). \n\n\n\n---\n\n\n*For updates on new NFT drops, NFT news, and more, make sure you follow [OurVillage on SubStack](https://ourvillage.substack.com\n) and don\u2019t forget to follow [Farmer Joe](https://twitter.com/HelloFarmerJoe) and [Lumberjack Larry](https://twitter.com/LumberjackLar).*\n\nWe will be hosting giveaways on the [MSQ Discord](https://MSQ.io/discord) every Tuesday and Friday at 3PM EST. Make sure you join our growing NFT community so you can stay on top of news, new drops, and everything non-fungible.", + "body": "Join us as we take a look at our Discovery of the Day! Whether its their art, their exciting communities, or the unique things planned in their projects, there is definitely something here to grab your interest. Today we are taking a look at the Wannabes Music Club.\n\n## Testing tables\n\n| Header 1 | Header 2 | Header 3 | Header 4 | Header 5 | Header 6 | Header 7 | Header 8 | Header 9 | Header 10 | Header 11 | Header 12 | Header 13 | Header 14 |\n|----------|----------|----------|----------|----------|----------|----------|----------|----------|-----------|-----------|-----------|-----------|-----------|\n| Data 1 | Data 2 | Data 3 | Data 4 | Data 5 | Data 6 | Data 7 | Data 8 | Data 9 | Data 10 | Data 11 | Data 12 | Data 13 | Data 14 |\n| Value A | Value B | Value C | Value D | Value E | Value F | Value G | Value H | Value I | Value J | Value K | Value L | Value M | Value N |\n| 123 | 456 | 789 | 321 | 654 | 987 | 123 | 456 | 789 | 101 | 202 | 303 | 404 | 505 |\n\n## I Wannabe a Rockstar\n\nIf I had to pick between listening to Nickelback or being a part of the Wannabe Music Club I would choose the latter. This project features 10,027 unique NFTs representing characters from a fictional music community. \n\nThe art itself is vibrant and these avatars aren't just a piece of art, they are your backstage pass to the entire Wannabes community. \n\n![](https://media.discordapp.net/attachments/872015112565833758/872015487071047700/IMG_6945.JPG?width=1200&height=1200)\n\nIn addition the representation of a diverse mix of characters, gender, and identity really shine through the art.\n\n![](https://media.discordapp.net/attachments/872015112565833758/872151899409891348/IMG_6935.JPG?width=1209&height=1209)\n\nWe've seen a lot of communities pop up which tie their membership to NFTs but Wannabes also ties their membership to a love and appreciation for music. It is embedded into the art and into the roadmap for the project itself. \n\n## The Long and Winding Road\n\nEvery piece of art in the Wannabes collection comes with full commercial usage rights. By being a part of the community, members can expect these perks:\n* Meetings and masterclasses with established musicians. \n* Community Album Release\n* Metaverse Music Festival\n* Mine the $VIBE token with your Wannabe\n* Play a co-op visual novel game. \n\n![](https://i.imgur.com/GVzVvCC.jpg)\n\nIn addition to all of the above, the team will also be donating $25,000 to the Fender Foudation, Save the Music and Education Through Music charities. Other parts of their roadmap include a community grant fund, liquidity pools for the $VIBE token, and a DAO to manage it all. \n\n\n\n\n\n## Stats\n* Total Items: 10,027\n* Mint Price: TBD\n* Release: August 5, 2021 at 6PM EST\n\nAt the time of this writing, Wannabes Music Club avatars have not been released but you can learn more on their [official website](https://wannabesmusic.club/). \n\n\n\n---\n\n\n*For updates on new NFT drops, NFT news, and more, make sure you follow [OurVillage on SubStack](https://ourvillage.substack.com\n) and don\u2019t forget to follow [Farmer Joe](https://twitter.com/HelloFarmerJoe) and [Lumberjack Larry](https://twitter.com/LumberjackLar).*\n\nWe will be hosting giveaways on the [MSQ Discord](https://MSQ.io/discord) every Tuesday and Friday at 3PM EST. Make sure you join our growing NFT community so you can stay on top of news, new drops, and everything non-fungible.", "is_featured": false, "published_at": "2021-08-03 15:42:15", "created_at": "2021-08-03 15:47:27", @@ -126,7 +126,7 @@ "platform_id": null, "name": "NFTs, Naming Words and DAOs - Nouns", "slug": "nfts-naming-words-and-daos-nouns", - "body": "_**Welcome Blockchain fans! MSQ just moved into Open Beta, meaning you can now sign up, create a profile, and enjoy the full splendor of the New Homepage for the Decentralized Web! From Monday to Friday we bring you our Discovery of the Day, a series of special articles featuring some of our top picks from across the cryptosphere. Be it DeFi, NFTs, Blockchain games or otherwise, we cover all the important stuff you need to know! Today we bring you a project that promises one new NFT every single day...forever!? How can that be? Let's find out! This is...Nouns!**_\n\n## A Naming Word\n\nI don't know if you guys are aware (I'm not sure how you'd know this), but I'm actually qualified to teach and lecture English. Yup, whether it's the poetic works of Romantics like [Percy Bysshe Shelley](https://en.wikipedia.org/wiki/Percy_Bysshe_Shelley) (who wrote my favorite poem, [Ozymandias](https://www.poetryfoundation.org/poems/46565/ozymandias) and was married to [Mary Shelley](https://en.wikipedia.org/wiki/Mary_Shelley), author of [Frankenstein](https://en.wikipedia.org/wiki/Frankenstein)) or the dour narratives of authors like [Aldous Huxley](https://en.wikipedia.org/wiki/Aldous_Huxley), I can tell you all about that...but not today.\n\nNaturally, that's more the literary side of English. Then there's the language aspect to consider. Now something you may or may not know is the **9 Parts of Speech**. They are:\n\n> 1. Articles - **a/an** *(indefinite)* and the *(definite)*\n> 2. Interjections - **Wow!**, **Oh!**, **Woah!**, **Yikes!** and so on\n> 3. Prepositions - **at**, **in**, **upon**, **beneath**, **within**, **outside**, **on top** and so on\n> 4. Conjunctions - **so**, **because**, **then**, **yet**, **but**, **and**, **or** and so on\n> 5. Adverbs - **longingly**, **quickly**, **eagerly**, **lazily** and so on\n> 6. Verbs - **dodge**, **dip**, **duck**, **dive**, and...[**dodge**](https://www.youtube.com/watch?v=18ASBsQfXnw)\n> 7. Adjectives - **coarse**, **strong**, **red**, **terrific** and so on\n> 8. Pronouns - **he**, **they**, **she**, **him**, **it**, **them** and so on\n\n![](https://i.imgur.com/ehltRi2.gif)\n\n> Patches O'Houlihan knows his stuff!\n\nSo what's the last Part of Speech you ask? Why, it's the big kahuna of the English language (and maybe every language for that matter). The subject, the object, the idea, the place...\n\n## Nouns\n\nThere are many, many nouns in the English language, but something tells me that in the not-too-distant future, [Nouns](https://nouns.wtf/), 'an experimental attempt to improve the formation of on-chain avatar communities,' may one day dwarf this number if what they say is indeed factual. In many respects, Nouns builds on the model established by legendary NFT project [Cryptopunks](https://www.larvalabs.com/cryptopunks) in that it attempts to bootstrap identity, community, governance and a treasury that can be accessed and used by the community itself.\n\nSo how does it all work? Well, here's a rundown of the mechanics that underpin Nouns:\n\n- All Nouns artwork is in the public domain\n- One (1) Noun is trustlessly auctioned forever on an indefinite basis\n- 100% of the proceeds from Nouns auctions are trustlessly sent to the Nouns DAO treasury\n- Once an auction has been settled, the next begins immediately\n- Every single Noun is a member of Nouns DAO\n- The Nouns DAO uses a fork of [Compound Governance](https://compound.finance/governance)\n- 1 Noun = 1 Vote\n- The treasury is controlled exclusively by Nouns via governance\n- The artwork is generative and stored directly on-chain rather than [IPFS](https://ipfs.io/)\n- There are *no explicit rules* for attribute scarcity, all Nouns are equally rare\n- 'Nounders' receive rewards in the form of Nouns (10% of supply for the first 5 years)\n\nWith regards to the creation of Nouns, they are generated randomly based on [Ethereum](https://ethereum.org/) block hashes. No 'if' statements or any other rules serve to govern Noun scarcity, meaning that all Nouns are equally rare. At time of writing, Nouns are generated from 2 different backgrounds, 30 different body types, 137 accessories, 234 distinct heads, and 21 different kinds of glasses.\n\n> If you would like to experiment with off-chain Noun generation, you may do so via the [Nouns Playground](https://nouns.wtf/playground)\n\n![](https://i.imgur.com/aggg7cG.png)\n\n### Nouns DAO\n\nThe Nouns DAO makes of a fork of Compound Governance and functions as the main means by which governance occurs within the Nouns ecosystem. As aforementioned, 100% of all ETH proceeds from daily Noun auctions go directly towards the Nouns DAO treasury. Each and every Noun is a permanent member of Nouns DAO and is therefore entitled to one vote in all matters concerning governance. Noun votes cannot be transferred, meaning that if a Noun is sold, the vote goes long with it. However, they can be delegated, meaning that your vote can be assigned to someone else as long as you retain ownership of your Noun.\n\nOf course you must be wondering what a Noun looks like up close (unless you've seen one before of course). Fear not, here's a few Nouns I generated using the Noun Playground:\n\n![](https://i.imgur.com/iD8KHw4.png)\n\n> This colorful trashcan is inclusive and open-minded...\n\n![](https://i.imgur.com/Y8RXASC.png)\n\n> Strawberry, meet Moon. Oh, and don't forget your life jacket!\n\n![](https://i.imgur.com/RlFZ7vD.png)\n\n> 0_0\n\n## On-Chain Artwork\n\nAll Nouns are stored directly on the Ethereum Blockchain and do not make use of pointers to other networks such as IPFS. The reason for this is because Noun parts are compressed and stored on-chain through the use of a custom run-length encoding (RLE) which is a kind of lossless compression.\n\nThe compressed parts are efficiently converted into a single base64 encoded SVG image on-chain. To achieve this, each individual part is decoded into an intermediate format before being converted into a series of SVG rects using batched, on-chain string concatenation. Upon generating the entire SVG, it is subsequently base64 encoded.\n\nIf you didn't really understand that, don't worry...all you need to know is that Nouns are all unique and stored directly on Ethereum.\n\n![](https://i.imgur.com/pWV3yV4.gif)\n\n## Nounder's Reward\n\n'Nounders' consists of the ten builders that brought Nouns to life. Herewith their Twitter tags:\n\n![](https://i.imgur.com/0HSfzTI.png)\n\nSince all the funds received from Noun auctions go towards the Nouns DAO, the Nounders decided to compensate themselves with Nouns. Every tenth Noun for the first five years of the project (Nouns designated #0, #10, #20, #30 and so on) will be automatically sent to the Nounder's multisig so that they may be vested and shared among the founding members of the project.\n\n> An important note: Nounder distributions don't interfere with the cadence of 24 hour auctions. Again, Nouns are sent directly to the Nounder's multisig, and auctions continue according to schedule with the next available Noun ID.\n\n## SharkDAO\n\n[SharkDAO](https://sharkdao.community/) actually started out as a group of strangers from the internet that wanted to pool their resources together and acquire Nouns. Since the DAO began on August 9th 2021, SharkDao has acquired a total of 5 Nouns, brought together over 400 sharks and raised close to 1,000 ETH. As their official website states, they exist to 'evolve the Web3 ecosystem.'\n\n![](https://i.imgur.com/Sf1aOMa.png)\n\n> The Basics of how SharkDAO works\n\nYou can learn more about becoming a member of SharkDAO by joining their [Discord](https://discord.com/invite/8aThDGXHqH) and following them on [Twitter](https://mobile.twitter.com/sharkdao)\n\n## Proper Nouns\n\nAs you can tell, Nouns is a serious project that is here for the long haul. Feel free to follow them on [Twitter](https://twitter.com/nounsdao) and join their [Discord](https://discord.com/invite/nouns) so that you can stay informed regarding the project's progress and get to know the wider Nouns community a little better!\n\nThat wraps up this Discovery of the Day. If you haven't already, be sure to sign up for a MSQ account and check out all the other content we have available for you. Take care and see you again soon!\n\n![](https://i.imgur.com/KZ1ZYKN.png)\n\n*For updates on new NFT drops, NFT news, and more, make sure you follow [OurVillage](https://ourvillage.substack.com/) on SubStack, and don\u2019t forget to follow [Farmer Joe](https://twitter.com/HelloFarmerJoe) and [Lumberjack Larry](https://twitter.com/LumberjackLar)* on Twitter.\n\n*We will be hosting giveaways for eligible members on the [MSQ Discord](https://discord.com/invite/d6Es4qRNAQ) every Friday at 7PM UTC. Make sure you join our growing NFT community so you can stay on top of news, the latest drops, and everything non-fungible.*", + "body": "_**Welcome Blockchain fans! MSQ just moved into Open Beta, meaning you can now sign up, create a profile, and enjoy the full splendor of the New Homepage for the Decentralized Web! From Monday to Friday we bring you our Discovery of the Day, a series of special articles featuring some of our top picks from across the cryptosphere. Be it DeFi, NFTs, Blockchain games or otherwise, we cover all the important stuff you need to know! Today we bring you a project that promises one new NFT every single day...forever!? How can that be? Let's find out! This is...Nouns!**_\n\n## Table of Contents\n\n| No. | Section |\n|---:|----------------------------------------------|\n| 1 | [Introduction](#introduction) |\n| 2 | [A Naming Word](#a-naming-word) |\n| 3 | [Nouns](#nouns) |\n| 4 | [Nouns DAO](#nouns-dao) |\n| 5 | [On-Chain Artwork](#on-chain-artwork) |\n| 6 | [Nounder's Reward](#nounders-reward) |\n| 7 | [SharkDAO](#sharkdao) |\n| 8 | [Proper Nouns](#proper-nouns) |\n\n## A Naming Word\n\nI don't know if you guys are aware (I'm not sure how you'd know this), but I'm actually qualified to teach and lecture English. Yup, whether it's the poetic works of Romantics like [Percy Bysshe Shelley](https://en.wikipedia.org/wiki/Percy_Bysshe_Shelley) (who wrote my favorite poem, [Ozymandias](https://www.poetryfoundation.org/poems/46565/ozymandias) and was married to [Mary Shelley](https://en.wikipedia.org/wiki/Mary_Shelley), author of [Frankenstein](https://en.wikipedia.org/wiki/Frankenstein)) or the dour narratives of authors like [Aldous Huxley](https://en.wikipedia.org/wiki/Aldous_Huxley), I can tell you all about that...but not today.\n\nNaturally, that's more the literary side of English. Then there's the language aspect to consider. Now something you may or may not know is the **9 Parts of Speech**. They are:\n\n> 1. Articles - **a/an** *(indefinite)* and the *(definite)*\n> 2. Interjections - **Wow!**, **Oh!**, **Woah!**, **Yikes!** and so on\n> 3. Prepositions - **at**, **in**, **upon**, **beneath**, **within**, **outside**, **on top** and so on\n> 4. Conjunctions - **so**, **because**, **then**, **yet**, **but**, **and**, **or** and so on\n> 5. Adverbs - **longingly**, **quickly**, **eagerly**, **lazily** and so on\n> 6. Verbs - **dodge**, **dip**, **duck**, **dive**, and...[**dodge**](https://www.youtube.com/watch?v=18ASBsQfXnw)\n> 7. Adjectives - **coarse**, **strong**, **red**, **terrific** and so on\n> 8. Pronouns - **he**, **they**, **she**, **him**, **it**, **them** and so on\n\n![](https://i.imgur.com/ehltRi2.gif)\n\n> Patches O'Houlihan knows his stuff!\n\nSo what's the last Part of Speech you ask? Why, it's the big kahuna of the English language (and maybe every language for that matter). The subject, the object, the idea, the place...\n\n## Nouns\n\nThere are many, many nouns in the English language, but something tells me that in the not-too-distant future, [Nouns](https://nouns.wtf/), 'an experimental attempt to improve the formation of on-chain avatar communities,' may one day dwarf this number if what they say is indeed factual. In many respects, Nouns builds on the model established by legendary NFT project [Cryptopunks](https://www.larvalabs.com/cryptopunks) in that it attempts to bootstrap identity, community, governance and a treasury that can be accessed and used by the community itself.\n\nSo how does it all work? Well, here's a rundown of the mechanics that underpin Nouns:\n\n- All Nouns artwork is in the public domain\n- One (1) Noun is trustlessly auctioned forever on an indefinite basis\n- 100% of the proceeds from Nouns auctions are trustlessly sent to the Nouns DAO treasury\n- Once an auction has been settled, the next begins immediately\n- Every single Noun is a member of Nouns DAO\n- The Nouns DAO uses a fork of [Compound Governance](https://compound.finance/governance)\n- 1 Noun = 1 Vote\n- The treasury is controlled exclusively by Nouns via governance\n- The artwork is generative and stored directly on-chain rather than [IPFS](https://ipfs.io/)\n- There are *no explicit rules* for attribute scarcity, all Nouns are equally rare\n- 'Nounders' receive rewards in the form of Nouns (10% of supply for the first 5 years)\n\nWith regards to the creation of Nouns, they are generated randomly based on [Ethereum](https://ethereum.org/) block hashes. No 'if' statements or any other rules serve to govern Noun scarcity, meaning that all Nouns are equally rare. At time of writing, Nouns are generated from 2 different backgrounds, 30 different body types, 137 accessories, 234 distinct heads, and 21 different kinds of glasses.\n\n> If you would like to experiment with off-chain Noun generation, you may do so via the [Nouns Playground](https://nouns.wtf/playground)\n\n![](https://i.imgur.com/aggg7cG.png)\n\n### Nouns DAO\n\nThe Nouns DAO makes of a fork of Compound Governance and functions as the main means by which governance occurs within the Nouns ecosystem. As aforementioned, 100% of all ETH proceeds from daily Noun auctions go directly towards the Nouns DAO treasury. Each and every Noun is a permanent member of Nouns DAO and is therefore entitled to one vote in all matters concerning governance. Noun votes cannot be transferred, meaning that if a Noun is sold, the vote goes long with it. However, they can be delegated, meaning that your vote can be assigned to someone else as long as you retain ownership of your Noun.\n\nOf course you must be wondering what a Noun looks like up close (unless you've seen one before of course). Fear not, here's a few Nouns I generated using the Noun Playground:\n\n![](https://i.imgur.com/iD8KHw4.png)\n\n> This colorful trashcan is inclusive and open-minded...\n\n![](https://i.imgur.com/Y8RXASC.png)\n\n> Strawberry, meet Moon. Oh, and don't forget your life jacket!\n\n![](https://i.imgur.com/RlFZ7vD.png)\n\n> 0_0\n\n## On-Chain Artwork\n\nAll Nouns are stored directly on the Ethereum Blockchain and do not make use of pointers to other networks such as IPFS. The reason for this is because Noun parts are compressed and stored on-chain through the use of a custom run-length encoding (RLE) which is a kind of lossless compression.\n\nThe compressed parts are efficiently converted into a single base64 encoded SVG image on-chain. To achieve this, each individual part is decoded into an intermediate format before being converted into a series of SVG rects using batched, on-chain string concatenation. Upon generating the entire SVG, it is subsequently base64 encoded.\n\nIf you didn't really understand that, don't worry...all you need to know is that Nouns are all unique and stored directly on Ethereum.\n\n![](https://i.imgur.com/pWV3yV4.gif)\n\n## Nounder's Reward\n\n'Nounders' consists of the ten builders that brought Nouns to life. Herewith their Twitter tags:\n\n![](https://i.imgur.com/0HSfzTI.png)\n\nSince all the funds received from Noun auctions go towards the Nouns DAO, the Nounders decided to compensate themselves with Nouns. Every tenth Noun for the first five years of the project (Nouns designated #0, #10, #20, #30 and so on) will be automatically sent to the Nounder's multisig so that they may be vested and shared among the founding members of the project.\n\n> An important note: Nounder distributions don't interfere with the cadence of 24 hour auctions. Again, Nouns are sent directly to the Nounder's multisig, and auctions continue according to schedule with the next available Noun ID.\n\n## SharkDAO\n\n[SharkDAO](https://sharkdao.community/) actually started out as a group of strangers from the internet that wanted to pool their resources together and acquire Nouns. Since the DAO began on August 9th 2021, SharkDao has acquired a total of 5 Nouns, brought together over 400 sharks and raised close to 1,000 ETH. As their official website states, they exist to 'evolve the Web3 ecosystem.'\n\n![](https://i.imgur.com/Sf1aOMa.png)\n\n> The Basics of how SharkDAO works\n\nYou can learn more about becoming a member of SharkDAO by joining their [Discord](https://discord.com/invite/8aThDGXHqH) and following them on [Twitter](https://mobile.twitter.com/sharkdao)\n\n## Proper Nouns\n\nAs you can tell, Nouns is a serious project that is here for the long haul. Feel free to follow them on [Twitter](https://twitter.com/nounsdao) and join their [Discord](https://discord.com/invite/nouns) so that you can stay informed regarding the project's progress and get to know the wider Nouns community a little better!\n\nThat wraps up this Discovery of the Day. If you haven't already, be sure to sign up for a MSQ account and check out all the other content we have available for you. Take care and see you again soon!\n\n![](https://i.imgur.com/KZ1ZYKN.png)\n\n*For updates on new NFT drops, NFT news, and more, make sure you follow [OurVillage](https://ourvillage.substack.com/) on SubStack, and don\u2019t forget to follow [Farmer Joe](https://twitter.com/HelloFarmerJoe) and [Lumberjack Larry](https://twitter.com/LumberjackLar)* on Twitter.\n\n*We will be hosting giveaways for eligible members on the [MSQ Discord](https://discord.com/invite/d6Es4qRNAQ) every Friday at 7PM UTC. Make sure you join our growing NFT community so you can stay on top of news, the latest drops, and everything non-fungible.*", "is_featured": false, "published_at": "2021-11-26 15:45:00", "created_at": "2021-11-26 00:14:27", @@ -143,7 +143,7 @@ "platform_id": null, "name": "'Look Mom! No Artist!' - the dudes NFTs", "slug": "look-mom-no-artist-the-dudes-nfts", - "body": "***Greetings MSQ friends! How's it going? You know what time it is...that's right, it's another killer Discovery of the Day! MSQ just moved into its Open Beta, meaning you can sign up for a profile and start exploring all the site has to offer right now! From Monday to Friday we bring you some of the best projects from across the cryptosphere. Whether it's NFTs, DeFi or Blockchain games, you'll find it all right here! Today we bring you a project featuring NFTs that respond to your actions! It's...the dudes!***\n\n## thedude\n\nThe world of NFTs has been nothing short of a godsend for countless talented artists, allowing them to pursue their lifelong dreams and showcase their artistic abilities to audiences across the world...\n\nBut what about all the exceptionally talented programmers?\n\nWell, today we're excited to share a story about an incredibly gifted programmer who goes by the name of [thedude](https://twitter.com/thedudesnft) with you. Now this person is responsible for creating completely code generated NFT profile picture collections with ***'No designer, just code.'*** Wild, right?\n\nThus far, thedude has created several PFP collections using his creative approach: [the dudes](https://opensea.io/collection/thedudes), [the duds](https://opensea.io/collection/theduds), [the abstract dudes](https://opensea.io/collection/the-abstract-dudes) and [the dudes factory](https://opensea.io/collection/the-dudes-factory).\n\nAll of this has been created by one person (yup, thedude) who has been coding interactive web apps since he was 15! So it seems he's always had a knack for this stuff, and it's very clear that he's...one busy dude!\n\n![](https://i.imgur.com/nE2JWoK.gif)\n\n> When in doubt... [just play it](https://www.youtube.com/watch?v=dQw4w9WgXcQ) cool\n\n### the dudes, the duds & the abstract duds\n\n[the dudes](https://opensea.io/collection/thedudes) is the first interactive fully code generated NFT collection to appear on the [Ethereum](https://ethereum.org/) Blockchain. In essence, the dudes is the genesis collection of the overall project. And don't forget\u2014no designer worked on this...it's nothing more than a few lines of code that generates random ugly dudes (they're not ugly actually, they're kinda sweet and endearing!)\n\nAll traits are assigned inside the smart contract itself while each rarity score is defined on the chain. There are a total of 21,600 unique dudes, but only 512 will ever be made available to claim. That...isn't a whole lot. If anything, that means the dudes are extremely rare, so owning one really is something special!\n\nWhen I first saw these guys, I couldn't believe they were the random product of some algorithm! It's quite bizarre to say the least, and of course, very impressive as well! Feast your eyes on some of these 'ugly' dudes below *(also, can we have a word count for how many times I've mentioned the word 'dude' in this article!?)*\n\n![alt text](https://i.imgur.com/fU3HRbk.png)\n\n> the dudes\n\nNext up we have ['the duds.'](https://opensea.io/collection/theduds) Now these guys were airdropped by the creator of 'the dudes.' The intriguing part about this collection is that they slowly reveal themselves as time passes. After 07/28/2022, they will show their faces fully. Take a look at their current state below \ud83d\udc40\n\n![](https://i.imgur.com/GfFxqYv.png)\n\n> the duds\n\nAnd finally we have ['the abstract dudes'](https://opensea.io/collection/the-abstract-dudes) which are derivatives of the original ['the dudes'](https://opensea.io/collection/thedudes) and well...it's in the name! They look super abstract! The original 'the dudes' smart contract was used to create these pieces. This collection served as the proof of concept that revealed the potential possibilities of harnessing the dudes' DNA.\n\n![](https://i.imgur.com/6tEIDCm.png)\n\n> the abstract dudes\n\nOne aspect that makes this project truly special is that every single NFT is interactive. If you visit the dudes' [OpenSea](https://opensea.io/collection/thedudes) page, you can click on any dude to 'agitate' it, or you can move your mouse around and watch its gaze follow your cursor. Now that's some really funky stuff!\n\n![](https://i.imgur.com/TWrelYb.gif)\n\n### the pixels\n\nNow let's move on to thedude's latest endeavor: the pixels. This collection consists of 5,120 'the pixels' that live on the [Ethereum](https://ethereum.org/en/) Blockchain. A unique element of the pixels is that they constantly change and evolve\u2014this is possible because the traits are embedded into the smart contract, allowing it to delegate other contracts to manipulate each pixel.\n\nThe contract has a feature enabled called 'the pixel inc,' granting the NFTs the ability to adopt different traits for special occasions such as Halloween and Christmas. I swear, each project made by thedude just gets cooler and cooler! Kudos for the totally genius innovation...whoever you are!\n\n![](https://i.imgur.com/kw1vnVD.gif)\n\n> the pixels\n\n### the dudes DAO\n\nWe've established that the dudes are awesome, but do you want to know something that's even *more* awesome? Everyone who owns one of these NFTs from any one of these collections is part of something bigger: **'our dudes DAO.'**\n\n100% of all existing royalties are owned by the DAO. Its primary role is a simple one\u2014to encourage the growth of the dudes brand and project as a whole.\n\n> A decentralized autonomous organization is an organization represented by rules encoded as a computer program that is transparent, controlled by the organization members and not influenced by a central government.\n\n## the dudes roadmap\n\nthe dudes project is actually split into two separate roadmaps: the Dude development roadmap, and the Community development roadmap.\n\nThe Dude roadmap focuses on airdrops, collaborations with other projects, staking and more. You can view the collaborations that the dudes have engaged in so far via [the dudes factory](https://opensea.io/collection/the-dudes-factory)\n\n![](https://i.imgur.com/QRnekpt.png)\n\n> 'Our dude development roadmap is centered around delivering project value to our holders...'\n\nNow the Community roadmap is a little different\u2014simply put, the DAO votes on suggestions provided by the community via the shared Trello board, which can be viewed [here](https://trello.com/invite/b/SilI1mJf/3017d49963aeb65364dd8a81d42442d2/dude-owners-community-board)\n\n![](https://i.imgur.com/oh9bSY6.png)\n\n## the dudes statistics\n\nUnfortunately all of the collections we have showcased today are sold out \ud83d\ude2d But not to worry! You can still grab yourself one of these unique interactive NFTs on the dudes' various OpenSea pages:\n\n* [the dudes](https://opensea.io/collection/thedudes)\n* [the duds](https://opensea.io/collection/theduds)\n* [the abstract dudes](https://opensea.io/collection/the-abstract-dudes)\n* [the pixels](https://opensea.io/collection/the-pixels-inc)\n\nI don't know about you, but the innovation within this project and the pure creative genius thedude possesses is seriously phenomenal! I'm intrigued to learn more and see what thedude ends up creating in the future! I highly recommend you follow the dudes over on [Twitter](https://twitter.com/thedudesnft) and join their [Discord](https://discord.gg/wM7HSMDV4B) so that you can keep up to date with all the latest details and collections being released by thedude!\n\nAnd that brings us to the conclusion of yet another seriously wicked MSQ Discovery of the Day! If you haven't signed up for a profile yet, make sure you do so as soon as possible so that you never miss a thing. And don't forget to tell all your friends and family to sign up too! Thanks for your time and enthusiasm, it means the world to us! See you all again soon...take care!\n\n![](https://i.imgur.com/27T1cEi.png)\n\n*For updates on new NFT drops, NFT news, and more, make sure you follow [OurVillage](https://ourvillage.substack.com/) on SubStack, and don\u2019t forget to follow [Farmer Joe](https://twitter.com/HelloFarmerJoe) and [Lumberjack Larry](https://twitter.com/LumberjackLar)* on Twitter.\n\n*Join the [MSQ Discord](https://discord.com/invite/d6Es4qRNAQ) and participate in weekly and holiday events when they become available! Make sure you join our growing NFT community so you can stay on top of news, the latest drops, and everything non-fungible.*", + "body": "***Greetings MSQ friends! How's it going? You know what time it is...that's right, it's another killer Discovery of the Day! MSQ just moved into its Open Beta, meaning you can sign up for a profile and start exploring all the site has to offer right now! From Monday to Friday we bring you some of the best projects from across the cryptosphere. Whether it's NFTs, DeFi or Blockchain games, you'll find it all right here! Today we bring you a project featuring NFTs that respond to your actions! It's...the dudes!***\n\n## Table of Contents\n\n| No. | Section |\n|----:|-------------------------------------------|\n| 1 | [Introduction](#introduction) |\n| 2 | [thedude](#thedude) |\n| 3 | [the dudes, the duds & the abstract duds](#the-dudes-the-duds--the-abstract-duds) |\n| 4 | [the pixels](#the-pixels) |\n| 5 | [the dudes DAO](#the-dudes-dao) |\n| 6 | [the dudes roadmap](#the-dudes-roadmap) |\n| 6.1| - [Dude development roadmap](#dude-development-roadmap) |\n| 6.2| - [Community development roadmap](#community-development-roadmap) |\n| 7 | [the dudes statistics](#the-dudes-statistics) |\n| 8 | [Conclusion](#conclusion) |\n\n## thedude\n\nThe world of NFTs has been nothing short of a godsend for countless talented artists, allowing them to pursue their lifelong dreams and showcase their artistic abilities to audiences across the world...\n\nBut what about all the exceptionally talented programmers?\n\nWell, today we're excited to share a story about an incredibly gifted programmer who goes by the name of [thedude](https://twitter.com/thedudesnft) with you. Now this person is responsible for creating completely code generated NFT profile picture collections with ***'No designer, just code.'*** Wild, right?\n\nThus far, thedude has created several PFP collections using his creative approach: [the dudes](https://opensea.io/collection/thedudes), [the duds](https://opensea.io/collection/theduds), [the abstract dudes](https://opensea.io/collection/the-abstract-dudes) and [the dudes factory](https://opensea.io/collection/the-dudes-factory).\n\nAll of this has been created by one person (yup, thedude) who has been coding interactive web apps since he was 15! So it seems he's always had a knack for this stuff, and it's very clear that he's...one busy dude!\n\n![](https://i.imgur.com/nE2JWoK.gif)\n\n> When in doubt... [just play it](https://www.youtube.com/watch?v=dQw4w9WgXcQ) cool\n\n### the dudes, the duds & the abstract duds\n\n[the dudes](https://opensea.io/collection/thedudes) is the first interactive fully code generated NFT collection to appear on the [Ethereum](https://ethereum.org/) Blockchain. In essence, the dudes is the genesis collection of the overall project. And don't forget\u2014no designer worked on this...it's nothing more than a few lines of code that generates random ugly dudes (they're not ugly actually, they're kinda sweet and endearing!)\n\nAll traits are assigned inside the smart contract itself while each rarity score is defined on the chain. There are a total of 21,600 unique dudes, but only 512 will ever be made available to claim. That...isn't a whole lot. If anything, that means the dudes are extremely rare, so owning one really is something special!\n\nWhen I first saw these guys, I couldn't believe they were the random product of some algorithm! It's quite bizarre to say the least, and of course, very impressive as well! Feast your eyes on some of these 'ugly' dudes below *(also, can we have a word count for how many times I've mentioned the word 'dude' in this article!?)*\n\n![alt text](https://i.imgur.com/fU3HRbk.png)\n\n> the dudes\n\nNext up we have ['the duds.'](https://opensea.io/collection/theduds) Now these guys were airdropped by the creator of 'the dudes.' The intriguing part about this collection is that they slowly reveal themselves as time passes. After 07/28/2022, they will show their faces fully. Take a look at their current state below \ud83d\udc40\n\n![](https://i.imgur.com/GfFxqYv.png)\n\n> the duds\n\nAnd finally we have ['the abstract dudes'](https://opensea.io/collection/the-abstract-dudes) which are derivatives of the original ['the dudes'](https://opensea.io/collection/thedudes) and well...it's in the name! They look super abstract! The original 'the dudes' smart contract was used to create these pieces. This collection served as the proof of concept that revealed the potential possibilities of harnessing the dudes' DNA.\n\n![](https://i.imgur.com/6tEIDCm.png)\n\n> the abstract dudes\n\nOne aspect that makes this project truly special is that every single NFT is interactive. If you visit the dudes' [OpenSea](https://opensea.io/collection/thedudes) page, you can click on any dude to 'agitate' it, or you can move your mouse around and watch its gaze follow your cursor. Now that's some really funky stuff!\n\n![](https://i.imgur.com/TWrelYb.gif)\n\n### the pixels\n\nNow let's move on to thedude's latest endeavor: the pixels. This collection consists of 5,120 'the pixels' that live on the [Ethereum](https://ethereum.org/en/) Blockchain. A unique element of the pixels is that they constantly change and evolve\u2014this is possible because the traits are embedded into the smart contract, allowing it to delegate other contracts to manipulate each pixel.\n\nThe contract has a feature enabled called 'the pixel inc,' granting the NFTs the ability to adopt different traits for special occasions such as Halloween and Christmas. I swear, each project made by thedude just gets cooler and cooler! Kudos for the totally genius innovation...whoever you are!\n\n![](https://i.imgur.com/kw1vnVD.gif)\n\n> the pixels\n\n### the dudes DAO\n\nWe've established that the dudes are awesome, but do you want to know something that's even *more* awesome? Everyone who owns one of these NFTs from any one of these collections is part of something bigger: **'our dudes DAO.'**\n\n100% of all existing royalties are owned by the DAO. Its primary role is a simple one\u2014to encourage the growth of the dudes brand and project as a whole.\n\n> A decentralized autonomous organization is an organization represented by rules encoded as a computer program that is transparent, controlled by the organization members and not influenced by a central government.\n\n## the dudes roadmap\n\nthe dudes project is actually split into two separate roadmaps: the Dude development roadmap, and the Community development roadmap.\n\nThe Dude roadmap focuses on airdrops, collaborations with other projects, staking and more. You can view the collaborations that the dudes have engaged in so far via [the dudes factory](https://opensea.io/collection/the-dudes-factory)\n\n![](https://i.imgur.com/QRnekpt.png)\n\n> 'Our dude development roadmap is centered around delivering project value to our holders...'\n\nNow the Community roadmap is a little different\u2014simply put, the DAO votes on suggestions provided by the community via the shared Trello board, which can be viewed [here](https://trello.com/invite/b/SilI1mJf/3017d49963aeb65364dd8a81d42442d2/dude-owners-community-board)\n\n![](https://i.imgur.com/oh9bSY6.png)\n\n## the dudes statistics\n\nUnfortunately all of the collections we have showcased today are sold out \ud83d\ude2d But not to worry! You can still grab yourself one of these unique interactive NFTs on the dudes' various OpenSea pages:\n\n* [the dudes](https://opensea.io/collection/thedudes)\n* [the duds](https://opensea.io/collection/theduds)\n* [the abstract dudes](https://opensea.io/collection/the-abstract-dudes)\n* [the pixels](https://opensea.io/collection/the-pixels-inc)\n\nI don't know about you, but the innovation within this project and the pure creative genius thedude possesses is seriously phenomenal! I'm intrigued to learn more and see what thedude ends up creating in the future! I highly recommend you follow the dudes over on [Twitter](https://twitter.com/thedudesnft) and join their [Discord](https://discord.gg/wM7HSMDV4B) so that you can keep up to date with all the latest details and collections being released by thedude!\n\nAnd that brings us to the conclusion of yet another seriously wicked MSQ Discovery of the Day! If you haven't signed up for a profile yet, make sure you do so as soon as possible so that you never miss a thing. And don't forget to tell all your friends and family to sign up too! Thanks for your time and enthusiasm, it means the world to us! See you all again soon...take care!\n\n![](https://i.imgur.com/27T1cEi.png)\n\n*For updates on new NFT drops, NFT news, and more, make sure you follow [OurVillage](https://ourvillage.substack.com/) on SubStack, and don\u2019t forget to follow [Farmer Joe](https://twitter.com/HelloFarmerJoe) and [Lumberjack Larry](https://twitter.com/LumberjackLar)* on Twitter.\n\n*Join the [MSQ Discord](https://discord.com/invite/d6Es4qRNAQ) and participate in weekly and holiday events when they become available! Make sure you join our growing NFT community so you can stay on top of news, the latest drops, and everything non-fungible.*", "is_featured": false, "published_at": "2021-12-03 15:45:00", "created_at": "2021-12-03 00:13:57", @@ -160,7 +160,7 @@ "platform_id": null, "name": "The Role of Crypto in Nigeria", "slug": "the-role-of-crypto-in-nigeria", - "body": "***If you look up Bitcoin on [Google Trends](https://trends.google.com/trends/explore?q=bitcoin/), you will see that Nigeria is usually ranked the number one country by search interest. But why is this happening if the Nigerian government recently announced a crackdown on Crypto?***\n\n## Nigeria's Crises\n\nNigeria is a country plagued by social unrest and rampant inflation.\n\nIn October 2020, the most populous African nation saw massive [public demonstrations](https://www.bbc.com/news/world-africa-54678345/) against police brutality. After authorities tore into protesters with tear gas and water cannons, 69 people were killed and many more horribly injured.\n\nThe Nigerian government reacted by freezing the bank accounts of organizations that were helping protesters. They also froze the accounts of people speaking out against government policies.\n\nThe majority of goods purchased in Nigeria are imported. In 2019, Nigeria's [imported goods](https://oec.world/en/profile/country/nga/) accounted for $52.5 billion, making it the 50th largest trade destination in the world.\n\nThe Nigerian currency is the Naira, which is highly volatile. Throughout 2021, the inflation rate has hovered around 18%. To hedge against this, Nigerians prefer to pay for their imported goods with US Dollars. However, US Dollars are hard to come by.\n\n![](https://i.imgur.com/EzZLZyt.jpg)\n\n> Money printer go brrrr!\n\n## Crypto to the Rescue!\n\nAccording to the Bitcoin trading platform [Paxful](https://paxful.com/), Nigeria is now second only to the US for Bitcoin trading. The Dollar volume of crypto received by users in Nigeria in May 2021 was $2.4 billion, up from $684 million in December 2020.\n\n![](https://i.imgur.com/pIBNZYF.png)\n\nDespite talks of regulating and banning cryptocurrencies in Nigeria, the market keeps going from strength to strength. Distrustful of banks that can freeze your account, Nigerians are using cryptocurrencies to feed their families, run their businesses and educate their children.\n\nThe young and educated population along with increased internet adoption has helped to facilitate the exponential adoption of Bitcoin. The borderless nature of Bitcoin makes it a viable option for making both local and international payments. [Cryptofully.com](https://www.cryptofully.com/) is a great example in this case. Cryptofully allows people to send money to Nigeria using Peer-2-Peer (P2P) networking. The crypto is then converted into Naira. Using the Cryptofully app, users can send and receive crypto, pay bills and earn rewards.\n\nNigerians are also taking advantage of the Decentralized Finance (DeFi) Industry and using DeFi loans to run their businesses. Being unbanked is no longer a barrier to raising capital and running a business in Nigeria.\n\n![](https://i.imgur.com/h98e5nX.jpg)\n\n[Xend Finance](https://xend.finance/) is a Nigerian DeFi start-up that enables credit unions to access DeFi for their members by using decentralized stablecoins such as DAI and BUSD. Members can take out loans and earn interest on their savings. In a country that has seen 3 massive currency devaluations over the last 3 years, projects such as Xend Finance offer hope and a way out of poverty for many Nigerians. \n\n> *'We target non-crypto users, financially underserved users and users in unstable economies that need their assets to be protected by any means necessary. We are the answers to their prayers'* - Ugochukwu Aronu, CEO and founder of Xend Finance\n\n## Foreign 'Intervention' (The Good Kind)\n\nOne cryptocurrency that has set its sights firmly on the African market is [Electroneum](https://electroneum.com/), a mobile-based digital payments platform powered by Blockchain. It enables people to send transactions anywhere in the world quickly and affordably. Users can also top-up their mobile phones and pay utility bills using the native coin, ETN. The Nigerian market is a perfect fit for Electroneum. Users are generally young mobile phone users who are keen to adopt new technologies.\n\n![](https://i.imgur.com/BUh6oud.png)\n\nThe Nigerian government has announced plans to release its own digital currency later in 2021. However, it remains to be seen if this is embraced as enthusiastically as independent cryptocurrencies.", + "body": "***If you look up Bitcoin on [Google Trends](https://trends.google.com/trends/explore?q=bitcoin/), you will see that Nigeria is usually ranked the number one country by search interest. But why is this happening if the Nigerian government recently announced a crackdown on Crypto?***\n\n## Table of Contents\n\n| No. | Section |\n|----:|-----------------------------------------------|\n| 1 | [Introduction](#introduction) |\n| 2 | [Nigeria's Crises](#nigerias-crises) |\n| 3 | [Crypto to the Rescue!](#crypto-to-the-rescue)|\n| 4 | [Foreign 'Intervention' (The Good Kind)](#foreign-intervention-the-good-kind) |\n\n## Nigeria's Crises\n\nNigeria is a country plagued by social unrest and rampant inflation.\n\nIn October 2020, the most populous African nation saw massive [public demonstrations](https://www.bbc.com/news/world-africa-54678345/) against police brutality. After authorities tore into protesters with tear gas and water cannons, 69 people were killed and many more horribly injured.\n\nThe Nigerian government reacted by freezing the bank accounts of organizations that were helping protesters. They also froze the accounts of people speaking out against government policies.\n\nThe majority of goods purchased in Nigeria are imported. In 2019, Nigeria's [imported goods](https://oec.world/en/profile/country/nga/) accounted for $52.5 billion, making it the 50th largest trade destination in the world.\n\nThe Nigerian currency is the Naira, which is highly volatile. Throughout 2021, the inflation rate has hovered around 18%. To hedge against this, Nigerians prefer to pay for their imported goods with US Dollars. However, US Dollars are hard to come by.\n\n![](https://i.imgur.com/EzZLZyt.jpg)\n\n> Money printer go brrrr!\n\n## Crypto to the Rescue!\n\nAccording to the Bitcoin trading platform [Paxful](https://paxful.com/), Nigeria is now second only to the US for Bitcoin trading. The Dollar volume of crypto received by users in Nigeria in May 2021 was $2.4 billion, up from $684 million in December 2020.\n\n![](https://i.imgur.com/pIBNZYF.png)\n\nDespite talks of regulating and banning cryptocurrencies in Nigeria, the market keeps going from strength to strength. Distrustful of banks that can freeze your account, Nigerians are using cryptocurrencies to feed their families, run their businesses and educate their children.\n\nThe young and educated population along with increased internet adoption has helped to facilitate the exponential adoption of Bitcoin. The borderless nature of Bitcoin makes it a viable option for making both local and international payments. [Cryptofully.com](https://www.cryptofully.com/) is a great example in this case. Cryptofully allows people to send money to Nigeria using Peer-2-Peer (P2P) networking. The crypto is then converted into Naira. Using the Cryptofully app, users can send and receive crypto, pay bills and earn rewards.\n\nNigerians are also taking advantage of the Decentralized Finance (DeFi) Industry and using DeFi loans to run their businesses. Being unbanked is no longer a barrier to raising capital and running a business in Nigeria.\n\n![](https://i.imgur.com/h98e5nX.jpg)\n\n[Xend Finance](https://xend.finance/) is a Nigerian DeFi start-up that enables credit unions to access DeFi for their members by using decentralized stablecoins such as DAI and BUSD. Members can take out loans and earn interest on their savings. In a country that has seen 3 massive currency devaluations over the last 3 years, projects such as Xend Finance offer hope and a way out of poverty for many Nigerians. \n\n> *'We target non-crypto users, financially underserved users and users in unstable economies that need their assets to be protected by any means necessary. We are the answers to their prayers'* - Ugochukwu Aronu, CEO and founder of Xend Finance\n\n## Foreign 'Intervention' (The Good Kind)\n\nOne cryptocurrency that has set its sights firmly on the African market is [Electroneum](https://electroneum.com/), a mobile-based digital payments platform powered by Blockchain. It enables people to send transactions anywhere in the world quickly and affordably. Users can also top-up their mobile phones and pay utility bills using the native coin, ETN. The Nigerian market is a perfect fit for Electroneum. Users are generally young mobile phone users who are keen to adopt new technologies.\n\n![](https://i.imgur.com/BUh6oud.png)\n\nThe Nigerian government has announced plans to release its own digital currency later in 2021. However, it remains to be seen if this is embraced as enthusiastically as independent cryptocurrencies.", "is_featured": true, "published_at": "2021-08-16 15:00:00", "created_at": "2021-08-16 08:51:01", diff --git a/package.json b/package.json index 216431da9..405493923 100644 --- a/package.json +++ b/package.json @@ -149,6 +149,7 @@ "rehype-external-links": "^3.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.0", + "remark-gfm": "^4.0.0", "remark-rehype": "^11.0.0", "sortablejs": "^1.15.0", "string-hash": "^1.1.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac4c8d38f..e607e377f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -103,6 +103,9 @@ dependencies: rehype-stringify: specifier: ^10.0.0 version: 10.0.0 + remark-gfm: + specifier: ^4.0.0 + version: 4.0.0 remark-rehype: specifier: ^11.0.0 version: 11.0.0 @@ -359,10 +362,10 @@ devDependencies: version: 9.0.2(react@18.2.0) storybook: specifier: next - version: 7.5.0-alpha.3 + version: 7.6.0-alpha.4 storybook-react-i18next: specifier: ^2.0.9 - version: 2.0.9(@storybook/components@7.5.2)(@storybook/manager-api@7.5.2)(@storybook/preview-api@7.5.2)(@storybook/types@7.5.3)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.1)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0) + version: 2.0.9(@storybook/components@7.5.3)(@storybook/manager-api@7.5.3)(@storybook/preview-api@7.5.3)(@storybook/types@7.5.3)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.1)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0) swiper: specifier: ^9.4.1 version: 9.4.1 @@ -463,6 +466,11 @@ packages: resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==} engines: {node: '>=6.9.0'} + /@babel/compat-data@7.23.3: + resolution: {integrity: sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core@7.23.3: resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} engines: {node: '>=6.9.0'} @@ -507,14 +515,14 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: true /@babel/helper-compilation-targets@7.22.15: @@ -557,8 +565,8 @@ packages: semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.23.3): - resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} + /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.3): + resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: @@ -593,7 +601,7 @@ packages: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: true /@babel/helper-module-imports@7.22.15: @@ -602,20 +610,6 @@ packages: dependencies: '@babel/types': 7.23.3 - /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.3): - resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} @@ -633,7 +627,7 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -674,7 +668,7 @@ packages: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: true /@babel/helper-split-export-declaration@7.22.6: @@ -701,7 +695,7 @@ packages: dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 dev: true /@babel/helpers@7.23.2: @@ -736,8 +730,8 @@ packages: dependencies: '@babel/types': 7.23.3 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.23.3): - resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -746,8 +740,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.23.3): - resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 @@ -755,7 +749,18 @@ packages: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.3) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.3) + dev: true + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.3): @@ -860,8 +865,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -870,8 +875,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1003,8 +1008,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1013,8 +1018,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-generator-functions@7.22.15(@babel/core@7.23.3): - resolution: {integrity: sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==} + /@babel/plugin-transform-async-generator-functions@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1026,8 +1031,8 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1038,8 +1043,8 @@ packages: '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1048,8 +1053,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.23.0(@babel/core@7.23.3): - resolution: {integrity: sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==} + /@babel/plugin-transform-block-scoping@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1058,8 +1063,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1069,8 +1074,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.23.3): - resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} + /@babel/plugin-transform-class-static-block@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 @@ -1081,8 +1086,8 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-classes@7.22.15(@babel/core@7.23.3): - resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} + /@babel/plugin-transform-classes@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1099,8 +1104,8 @@ packages: globals: 11.12.0 dev: true - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1110,8 +1115,8 @@ packages: '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-destructuring@7.23.0(@babel/core@7.23.3): - resolution: {integrity: sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==} + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1120,8 +1125,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1131,8 +1136,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1141,8 +1146,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.23.3): - resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} + /@babel/plugin-transform-dynamic-import@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1152,8 +1157,8 @@ packages: '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1163,8 +1168,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.23.3): - resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} + /@babel/plugin-transform-export-namespace-from@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1185,8 +1190,8 @@ packages: '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.23.3): - resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} + /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1195,8 +1200,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1207,8 +1212,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.23.3): - resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} + /@babel/plugin-transform-json-strings@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1218,8 +1223,8 @@ packages: '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1228,8 +1233,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.23.3): - resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} + /@babel/plugin-transform-logical-assignment-operators@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1239,8 +1244,8 @@ packages: '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1249,14 +1254,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.23.0(@babel/core@7.23.3): - resolution: {integrity: sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==} + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.3 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.3) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1267,32 +1272,44 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.3 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.3) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-systemjs@7.23.0(@babel/core@7.23.3): - resolution: {integrity: sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==} + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.3 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.3) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 dev: true - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.3 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.3) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1307,8 +1324,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1317,8 +1334,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.23.3): - resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} + /@babel/plugin-transform-nullish-coalescing-operator@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1328,8 +1345,8 @@ packages: '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.23.3): - resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} + /@babel/plugin-transform-numeric-separator@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1339,22 +1356,22 @@ packages: '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.23.3): - resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} + /@babel/plugin-transform-object-rest-spread@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.20 + '@babel/compat-data': 7.23.3 '@babel/core': 7.23.3 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.3) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1364,8 +1381,8 @@ packages: '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.23.3): - resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} + /@babel/plugin-transform-optional-catch-binding@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1375,8 +1392,8 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-optional-chaining@7.23.0(@babel/core@7.23.3): - resolution: {integrity: sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==} + /@babel/plugin-transform-optional-chaining@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1387,8 +1404,8 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.23.3): - resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1397,8 +1414,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1408,8 +1425,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.23.3): - resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} + /@babel/plugin-transform-private-property-in-object@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1421,8 +1438,8 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1451,8 +1468,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.23.3): - resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1462,8 +1479,8 @@ packages: regenerator-transform: 0.15.2 dev: true - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1472,8 +1489,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1482,8 +1499,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1493,8 +1510,8 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1503,8 +1520,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1513,8 +1530,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1536,8 +1553,8 @@ packages: '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.3) dev: true - /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.23.3): - resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1546,8 +1563,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1557,8 +1574,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1568,8 +1585,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.23.3): - resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1579,27 +1596,28 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/preset-env@7.22.20(@babel/core@7.23.3): - resolution: {integrity: sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==} + /@babel/preset-env@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.20 + '@babel/compat-data': 7.23.3 '@babel/core': 7.23.3 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.23.3) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.23.3) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.3) '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.3) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.3) '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.3) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.3) '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.23.3) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.3) '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.3) '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) @@ -1611,59 +1629,58 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.3) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.3) '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.3) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-async-generator-functions': 7.22.15(@babel/core@7.23.3) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-block-scoping': 7.23.0(@babel/core@7.23.3) - '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.23.3) - '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.23.3) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-destructuring': 7.23.0(@babel/core@7.23.3) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.23.3) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.23.3) - '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.23.3) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.23.3) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.23.3) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-modules-amd': 7.23.0(@babel/core@7.23.3) - '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.3) - '@babel/plugin-transform-modules-systemjs': 7.23.0(@babel/core@7.23.3) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.3) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-async-generator-functions': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-block-scoping': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-class-static-block': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-dynamic-import': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-export-namespace-from': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-json-strings': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-logical-assignment-operators': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.3) '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.23.3) - '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.23.3) - '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.23.3) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.23.3) - '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.3) - '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.3) - '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.23.3) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.23.3) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.3) - '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.23.3) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-numeric-separator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-object-rest-spread': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-optional-catch-binding': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-private-property-in-object': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.3) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.3) - '@babel/types': 7.23.0 - babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.23.3) - babel-plugin-polyfill-corejs3: 0.8.4(@babel/core@7.23.3) - babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.23.3) + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.3) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.3) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.3) core-js-compat: 3.33.0 semver: 6.3.1 transitivePeerDependencies: @@ -1689,7 +1706,7 @@ packages: dependencies: '@babel/core': 7.23.3 '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.0 + '@babel/types': 7.23.3 esutils: 2.0.3 dev: true @@ -3710,13 +3727,13 @@ packages: - encoding - supports-color - /@storybook/builder-manager@7.5.0-alpha.3: - resolution: {integrity: sha512-HN0pAZQkEHBfGdkWzlb/NT8mkWP7r3DeVAwXORovkxN5F3Tepl/HMsp+X2/bF2/K9N3YPwgYScHAuiqt5jdblA==} + /@storybook/builder-manager@7.6.0-alpha.4: + resolution: {integrity: sha512-qPpldvvzQNMj2zsniCo/v9xDH047IvAAtNfYoKQsszJvtug2HsvpJIC/JqfJTy+8mXE4QHbkNbshl6iuAPTiDg==} dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 7.5.0-alpha.3 - '@storybook/manager': 7.5.0-alpha.3 - '@storybook/node-logger': 7.5.0-alpha.3 + '@storybook/core-common': 7.6.0-alpha.4 + '@storybook/manager': 7.6.0-alpha.4 + '@storybook/node-logger': 7.6.0-alpha.4 '@types/ejs': 3.1.3 '@types/find-cache-dir': 3.2.1 '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.18.20) @@ -3772,54 +3789,43 @@ packages: - supports-color dev: true - /@storybook/channels@7.5.0-alpha.3: - resolution: {integrity: sha512-DUYU0TGRRZQFzwvj+60QYKdUjm7eIfafrBLCkE+YrI+kc5awqoEI/Y8KYy9z/9YU53KtYrckT74BwdVOmLLqiQ==} + /@storybook/channels@7.5.3: + resolution: {integrity: sha512-dhWuV2o2lmxH0RKuzND8jxYzvSQTSmpE13P0IT/k8+I1up/rSNYOBQJT6SalakcNWXFAMXguo/8E7ApmnKKcEw==} dependencies: - '@storybook/client-logger': 7.5.0-alpha.3 - '@storybook/core-events': 7.5.0-alpha.3 + '@storybook/client-logger': 7.5.3 + '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 qs: 6.11.2 telejson: 7.2.0 tiny-invariant: 1.3.1 - dev: true - /@storybook/channels@7.5.2: - resolution: {integrity: sha512-3SgqWq9NS0XX1QxK3riuaOLrReHWwVhI63u6q1ryDD3SttpmAezZETibOAtzDuk2FKgsyHTmAlmcGQf4ZxhOJA==} + /@storybook/channels@7.6.0-alpha.4: + resolution: {integrity: sha512-6rkrHZ6twZwHdVnIdB79Pbn2g+3o1NpxG1hcfHPI2cuZqfJ5W9PnKifbmIYqkkySpW5VBnECjHX2gpx5og0X9Q==} dependencies: - '@storybook/client-logger': 7.5.2 - '@storybook/core-events': 7.5.2 + '@storybook/client-logger': 7.6.0-alpha.4 + '@storybook/core-events': 7.6.0-alpha.4 '@storybook/global': 5.0.0 qs: 6.11.2 telejson: 7.2.0 tiny-invariant: 1.3.1 dev: true - /@storybook/channels@7.5.3: - resolution: {integrity: sha512-dhWuV2o2lmxH0RKuzND8jxYzvSQTSmpE13P0IT/k8+I1up/rSNYOBQJT6SalakcNWXFAMXguo/8E7ApmnKKcEw==} - dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 - '@storybook/global': 5.0.0 - qs: 6.11.2 - telejson: 7.2.0 - tiny-invariant: 1.3.1 - - /@storybook/cli@7.5.0-alpha.3: - resolution: {integrity: sha512-t+LLefdxdhm3HkcfMHPBqFgGaOZB0EGzTP5z4YAGPr4GeduhdNzooclKm1YlcoTFebFU0pGGjssPND1NH6Nw5A==} + /@storybook/cli@7.6.0-alpha.4: + resolution: {integrity: sha512-i9HwBdDbS+Im++5R8VEwNtIHn6BoTuVwtGTlIUw+cFE7Xdy0hCoDV+aGWaAfPO6sRw4yyeetiXMG7DMiXcIzog==} hasBin: true dependencies: '@babel/core': 7.23.3 - '@babel/preset-env': 7.22.20(@babel/core@7.23.3) - '@babel/types': 7.23.0 + '@babel/preset-env': 7.23.3(@babel/core@7.23.3) + '@babel/types': 7.23.3 '@ndelangen/get-tarball': 3.0.9 - '@storybook/codemod': 7.5.0-alpha.3 - '@storybook/core-common': 7.5.0-alpha.3 - '@storybook/core-events': 7.5.0-alpha.3 - '@storybook/core-server': 7.5.0-alpha.3 - '@storybook/csf-tools': 7.5.0-alpha.3 - '@storybook/node-logger': 7.5.0-alpha.3 - '@storybook/telemetry': 7.5.0-alpha.3 - '@storybook/types': 7.5.0-alpha.3 + '@storybook/codemod': 7.6.0-alpha.4 + '@storybook/core-common': 7.6.0-alpha.4 + '@storybook/core-events': 7.6.0-alpha.4 + '@storybook/core-server': 7.6.0-alpha.4 + '@storybook/csf-tools': 7.6.0-alpha.4 + '@storybook/node-logger': 7.6.0-alpha.4 + '@storybook/telemetry': 7.6.0-alpha.4 + '@storybook/types': 7.6.0-alpha.4 '@types/semver': 7.5.3 '@yarnpkg/fslib': 2.10.3 '@yarnpkg/libzip': 2.3.0 @@ -3836,7 +3842,7 @@ packages: get-port: 5.1.1 giget: 1.1.3 globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.22.20) + jscodeshift: 0.14.0(@babel/preset-env@7.23.3) leven: 3.1.0 ora: 5.4.1 prettier: 2.8.8 @@ -3856,37 +3862,31 @@ packages: - utf-8-validate dev: true - /@storybook/client-logger@7.5.0-alpha.3: - resolution: {integrity: sha512-QJ0FLVcqFKPR2BVWVujKbSQbyTUKiHkS3dUsAmwE5ldYWDACgueZpgMnYV+IVxLAn28+wcO3puTnF/FxcS7WGw==} + /@storybook/client-logger@7.5.3: + resolution: {integrity: sha512-vUFYALypjix5FoJ5M/XUP6KmyTnQJNW1poHdW7WXUVSg+lBM6E5eAtjTm0hdxNNDH8KSrdy24nCLra5h0X0BWg==} dependencies: '@storybook/global': 5.0.0 - dev: true - /@storybook/client-logger@7.5.2: - resolution: {integrity: sha512-7YgLItlmiYDzWYexTaRNuHhtFarh9krsI+8l7Yjn9ryoHSTJUcTWx+yPJm1II+PQR8v/x5UgsxzultjgEurfRQ==} + /@storybook/client-logger@7.6.0-alpha.4: + resolution: {integrity: sha512-wHBwRMBEunUo5hKHUfMpekdzFOy6+i75tf041RVoldVpsmcaCSm5aTFJX6UfEEMKGpVZlkLF/9Q8N9PaxtwLBQ==} dependencies: '@storybook/global': 5.0.0 dev: true - /@storybook/client-logger@7.5.3: - resolution: {integrity: sha512-vUFYALypjix5FoJ5M/XUP6KmyTnQJNW1poHdW7WXUVSg+lBM6E5eAtjTm0hdxNNDH8KSrdy24nCLra5h0X0BWg==} - dependencies: - '@storybook/global': 5.0.0 - - /@storybook/codemod@7.5.0-alpha.3: - resolution: {integrity: sha512-dW3q4TdkQCpnPO1Q/GmvjPeMqQEQGeW5qwdX5j1y5iXKeULoxxulWjXGgKU0WjQQzwW48ShVI3oa88GJakL2EA==} + /@storybook/codemod@7.6.0-alpha.4: + resolution: {integrity: sha512-rpyhnjkG7ebdICm8Ql48/1P/PRwhKCA4jHbon7dxwQvIG/ksnXAenPSjda9+IHcxkZ8zquBuYBNsK7AgYcC/Rw==} dependencies: '@babel/core': 7.23.3 - '@babel/preset-env': 7.22.20(@babel/core@7.23.3) - '@babel/types': 7.23.0 + '@babel/preset-env': 7.23.3(@babel/core@7.23.3) + '@babel/types': 7.23.3 '@storybook/csf': 0.1.1 - '@storybook/csf-tools': 7.5.0-alpha.3 - '@storybook/node-logger': 7.5.0-alpha.3 - '@storybook/types': 7.5.0-alpha.3 + '@storybook/csf-tools': 7.6.0-alpha.4 + '@storybook/node-logger': 7.6.0-alpha.4 + '@storybook/types': 7.6.0-alpha.4 '@types/cross-spawn': 6.0.3 cross-spawn: 7.0.3 globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.22.20) + jscodeshift: 0.14.0(@babel/preset-env@7.23.3) lodash: 4.17.21 prettier: 2.8.8 recast: 0.23.4 @@ -3894,29 +3894,6 @@ packages: - supports-color dev: true - /@storybook/components@7.5.2(@types/react-dom@18.2.15)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-OP+o6AoxoQDbqjk/jdQ1arlc1T8601eCL+rS1dJY9EtAFq7Z0LEFtafhEW/Lx8FotfVGjfCNptH9ODhHU6e5Jw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.15)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.15)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.5.2 - '@storybook/csf': 0.1.1 - '@storybook/global': 5.0.0 - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - use-resize-observer: 9.1.0(react-dom@18.2.0)(react@18.2.0) - util-deprecate: 1.0.2 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - dev: true - /@storybook/components@7.5.3(@types/react-dom@18.2.15)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-M3+cjvEsDGLUx8RvK5wyF6/13LNlUnKbMgiDE8Sxk/v/WPpyhOAIh/B8VmrU1psahS61Jd4MTkFmLf1cWau1vw==} peerDependencies: @@ -3946,20 +3923,20 @@ packages: '@storybook/preview-api': 7.5.3 dev: true - /@storybook/core-common@7.5.0-alpha.3: - resolution: {integrity: sha512-SpcuRMECcSUSNLc/g79KlhGBOhN1/8JI5sKAn6287/0czhWd+bz2TPLGM73wVicBIOrWqYXHOvKdVE4AZBathA==} + /@storybook/core-common@7.5.3: + resolution: {integrity: sha512-WGMwjtVUxUzFwQz7Mgs0gLuNebIGNV55dCdZgurx2/y6QOkJ2v8D0b3iL+xKMV4B5Nwoc2DsM418Y+Hy3UQd+w==} dependencies: - '@storybook/core-events': 7.5.0-alpha.3 - '@storybook/node-logger': 7.5.0-alpha.3 - '@storybook/types': 7.5.0-alpha.3 + '@storybook/core-events': 7.5.3 + '@storybook/node-logger': 7.5.3 + '@storybook/types': 7.5.3 '@types/find-cache-dir': 3.2.1 - '@types/node': 16.18.60 + '@types/node': 18.18.9 '@types/node-fetch': 2.6.6 '@types/pretty-hrtime': 1.0.1 chalk: 4.1.2 esbuild: 0.18.20 esbuild-register: 3.5.0(esbuild@0.18.20) - file-system-cache: 2.4.4 + file-system-cache: 2.3.0 find-cache-dir: 3.3.2 find-up: 5.0.0 fs-extra: 11.1.1 @@ -3975,14 +3952,13 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: true - /@storybook/core-common@7.5.3: - resolution: {integrity: sha512-WGMwjtVUxUzFwQz7Mgs0gLuNebIGNV55dCdZgurx2/y6QOkJ2v8D0b3iL+xKMV4B5Nwoc2DsM418Y+Hy3UQd+w==} + /@storybook/core-common@7.6.0-alpha.4: + resolution: {integrity: sha512-mu8cY/0IWT+NxtiUwF7niR+1d4gC6J0WPwnS/yB036wx1Px3fewjPZqo2SBqWyOEfNfq8t74l3xk6gWbxHZhcA==} dependencies: - '@storybook/core-events': 7.5.3 - '@storybook/node-logger': 7.5.3 - '@storybook/types': 7.5.3 + '@storybook/core-events': 7.6.0-alpha.4 + '@storybook/node-logger': 7.6.0-alpha.4 + '@storybook/types': 7.6.0-alpha.4 '@types/find-cache-dir': 3.2.1 '@types/node': 18.18.9 '@types/node-fetch': 2.6.6 @@ -4006,44 +3982,39 @@ packages: transitivePeerDependencies: - encoding - supports-color - - /@storybook/core-events@7.5.0-alpha.3: - resolution: {integrity: sha512-twCguQtJiwLgS37Sz4s6Jdoz2S+yQAyb6LFuwYSAfkSOb7bYa4Oi2V+agqhAB10cak6lqQM+V1W2OVg9ZUYnWA==} - dependencies: - ts-dedent: 2.2.0 dev: true - /@storybook/core-events@7.5.2: - resolution: {integrity: sha512-DV8bFEFVKDEvaH87KYPXDE0YEV+Y9yjFv2xxmC9pF8l+MWCtVW72RBLhB+gU5NM1bkHrRDNb0lOJfVGKlhxOog==} + /@storybook/core-events@7.5.3: + resolution: {integrity: sha512-DFOpyQ22JD5C1oeOFzL8wlqSWZzrqgDfDbUGP8xdO4wJu+FVTxnnWN6ZYLdTPB1u27DOhd7TzjQMfLDHLu7kbQ==} dependencies: ts-dedent: 2.2.0 - dev: true - /@storybook/core-events@7.5.3: - resolution: {integrity: sha512-DFOpyQ22JD5C1oeOFzL8wlqSWZzrqgDfDbUGP8xdO4wJu+FVTxnnWN6ZYLdTPB1u27DOhd7TzjQMfLDHLu7kbQ==} + /@storybook/core-events@7.6.0-alpha.4: + resolution: {integrity: sha512-JnLkKAZBsuNvWPysbjQJ2i5G1it5afzeN/wtQMG4dofUCbxvmDDUdjFkPqriLOp1YPdgpdhAl3MLGpWz4mqqDQ==} dependencies: ts-dedent: 2.2.0 + dev: true - /@storybook/core-server@7.5.0-alpha.3: - resolution: {integrity: sha512-IYYniLZgTf/yH6iC9HCFjBjuwPXTp9bX4BaeBweAFcB8MAJFOE/JmhfZR0vv1yMTI3YY9Utn+KG5Vh3tvDfUVw==} + /@storybook/core-server@7.6.0-alpha.4: + resolution: {integrity: sha512-RNMiKTdPHidxPU2C/kXTRJuVr5dlMG6rJZjL+I2sLjmskIk9lXR5dr34jdsbfcsNYVH13tRs41FXU5DJY/UnWg==} dependencies: '@aw-web-design/x-default-browser': 1.4.126 '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 7.5.0-alpha.3 - '@storybook/channels': 7.5.0-alpha.3 - '@storybook/core-common': 7.5.0-alpha.3 - '@storybook/core-events': 7.5.0-alpha.3 + '@storybook/builder-manager': 7.6.0-alpha.4 + '@storybook/channels': 7.6.0-alpha.4 + '@storybook/core-common': 7.6.0-alpha.4 + '@storybook/core-events': 7.6.0-alpha.4 '@storybook/csf': 0.1.1 - '@storybook/csf-tools': 7.5.0-alpha.3 + '@storybook/csf-tools': 7.6.0-alpha.4 '@storybook/docs-mdx': 0.1.0 '@storybook/global': 5.0.0 - '@storybook/manager': 7.5.0-alpha.3 - '@storybook/node-logger': 7.5.0-alpha.3 - '@storybook/preview-api': 7.5.0-alpha.3 - '@storybook/telemetry': 7.5.0-alpha.3 - '@storybook/types': 7.5.0-alpha.3 + '@storybook/manager': 7.6.0-alpha.4 + '@storybook/node-logger': 7.6.0-alpha.4 + '@storybook/preview-api': 7.6.0-alpha.4 + '@storybook/telemetry': 7.6.0-alpha.4 + '@storybook/types': 7.6.0-alpha.4 '@types/detect-port': 1.3.3 - '@types/node': 16.18.60 + '@types/node': 18.18.9 '@types/pretty-hrtime': 1.0.1 '@types/semver': 7.5.3 better-opn: 3.0.2 @@ -4061,7 +4032,6 @@ packages: prompts: 2.4.2 read-pkg-up: 7.0.1 semver: 7.5.4 - serve-favicon: 2.5.0 telejson: 7.2.0 tiny-invariant: 1.3.1 ts-dedent: 2.2.0 @@ -4084,36 +4054,36 @@ packages: transitivePeerDependencies: - supports-color - /@storybook/csf-tools@7.5.0-alpha.3: - resolution: {integrity: sha512-D7rk9mcyUXjJikmcmDghe4oJQXim7uKh2rxJP66lW1jD2Z5prkFzKbsYLbG57HGuly4ik4yox+Pd4r6w6QcCNQ==} + /@storybook/csf-tools@7.5.3: + resolution: {integrity: sha512-676C3ISn7FQJKjb3DBWXhjGN2OQEv4s71dx+5D0TlmswDCOOGS8dYFjP8wVx51+mAIE8CROAw7vLHLtVKU7SwQ==} dependencies: '@babel/generator': 7.23.0 '@babel/parser': 7.23.0 '@babel/traverse': 7.23.2 '@babel/types': 7.23.0 '@storybook/csf': 0.1.1 - '@storybook/types': 7.5.0-alpha.3 + '@storybook/types': 7.5.3 fs-extra: 11.1.1 recast: 0.23.4 ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color - dev: true - /@storybook/csf-tools@7.5.3: - resolution: {integrity: sha512-676C3ISn7FQJKjb3DBWXhjGN2OQEv4s71dx+5D0TlmswDCOOGS8dYFjP8wVx51+mAIE8CROAw7vLHLtVKU7SwQ==} + /@storybook/csf-tools@7.6.0-alpha.4: + resolution: {integrity: sha512-9HoOhnNbbLO0Ws+IVZ61Lq4m1FnvRt2JKfChyEECjmi9Nk6YMYNScebTISFR/gu2PFKgM1OdwzwaEqn/wt9wfA==} dependencies: - '@babel/generator': 7.23.0 - '@babel/parser': 7.23.0 - '@babel/traverse': 7.23.2 - '@babel/types': 7.23.0 + '@babel/generator': 7.23.3 + '@babel/parser': 7.23.3 + '@babel/traverse': 7.23.3 + '@babel/types': 7.23.3 '@storybook/csf': 0.1.1 - '@storybook/types': 7.5.3 + '@storybook/types': 7.6.0-alpha.4 fs-extra: 11.1.1 recast: 0.23.4 ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color + dev: true /@storybook/csf@0.0.1: resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} @@ -4156,31 +4126,6 @@ packages: '@storybook/preview-api': 7.5.3 dev: true - /@storybook/manager-api@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-WX8GjBkITRQzhQ08WEAVjdDW8QqqIQhWOpFzXUYCxCNzt1eSALI31QQ+M1/MYymw+TOkotC/SMcn/puIAm4rdA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@storybook/channels': 7.5.2 - '@storybook/client-logger': 7.5.2 - '@storybook/core-events': 7.5.2 - '@storybook/csf': 0.1.1 - '@storybook/global': 5.0.0 - '@storybook/router': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.2 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - semver: 7.5.4 - store2: 2.14.2 - telejson: 7.2.0 - ts-dedent: 2.2.0 - dev: true - /@storybook/manager-api@7.5.3(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-d8mVLr/5BEG4bAS2ZeqYTy/aX4jPEpZHdcLaWoB4mAM+PAL9wcWsirUyApKtDVYLITJf/hd8bb2Dm2ok6E45gA==} peerDependencies: @@ -4205,32 +4150,32 @@ packages: telejson: 7.2.0 ts-dedent: 2.2.0 - /@storybook/manager@7.5.0-alpha.3: - resolution: {integrity: sha512-kgGopw1a2j8Z7Xv20HUlll6BqacVCRyRMDNRhVN7Bj+KeRV/C6gROGHgrYbMxusNdV1PyTRf+dIfsqdD9CQNlw==} + /@storybook/manager@7.6.0-alpha.4: + resolution: {integrity: sha512-WKYwtkl9+UMtlx4uUe1TO1kcwJAfx6Svr5iRtTYkECRkIulwV1gc9eHhOhsBx0TlfOL3Z6++7acMbwAnnyJXZA==} dev: true /@storybook/mdx2-csf@1.1.0: resolution: {integrity: sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==} - /@storybook/node-logger@7.5.0-alpha.3: - resolution: {integrity: sha512-dtZYYJBmsK8rPPeVqK/q4gIQ0VokdMnST74zp0vlDoEmmGmdtEh3IL3UEb/uoEk7r/sg4V/8eLsxUXi0csTk8A==} - dev: true - /@storybook/node-logger@7.5.3: resolution: {integrity: sha512-7ZZDw/q3hakBj1FngsBjaHNIBguYAWojp7R1fFTvwkeunCi21EUzZjRBcqp10kB6BP3/NLX32bIQknsCWD76rQ==} + /@storybook/node-logger@7.6.0-alpha.4: + resolution: {integrity: sha512-rOZq9nsb/BC3tzovVWdWhEyQDd/QZDneoAn80107lw1or6j96otnXIlOc6HIwCIxKGN/12TUMdd1u5K4z3qlZQ==} + dev: true + /@storybook/postinstall@7.5.3: resolution: {integrity: sha512-r+H3xGMu2A9yOSsygc3bDFhku8wpOZF3SqO19B7eAML12viHwUtYfyGL74svw4TMcKukyQ+KPn5QsSG+4bjZMg==} - /@storybook/preview-api@7.5.0-alpha.3: - resolution: {integrity: sha512-gkzXxPTPLbqamtmg9R0BKfeI912SqnhWRbiIABW1PO8mYhiugxc+KLqr1hZqZ7MlmksyB5MJNOLsVc4W+AKrCw==} + /@storybook/preview-api@7.5.3: + resolution: {integrity: sha512-LNmEf7oBRnZ1wG3bQ+P+TO29+NN5pSDJiAA6FabZBrtIVm+psc2lxBCDQvFYyAFzQSlt60toGKNW8+RfFNdR5Q==} dependencies: - '@storybook/channels': 7.5.0-alpha.3 - '@storybook/client-logger': 7.5.0-alpha.3 - '@storybook/core-events': 7.5.0-alpha.3 + '@storybook/channels': 7.5.3 + '@storybook/client-logger': 7.5.3 + '@storybook/core-events': 7.5.3 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/types': 7.5.0-alpha.3 + '@storybook/types': 7.5.3 '@types/qs': 6.9.8 dequal: 2.0.3 lodash: 4.17.21 @@ -4239,17 +4184,16 @@ packages: synchronous-promise: 2.0.17 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - dev: true - /@storybook/preview-api@7.5.2: - resolution: {integrity: sha512-rpmHR/09UBSnorDBTcE7JgHUQjZLO146NCI+vbI7Pqfb4QX/8lhwkFr4cuHRAR16mv6DAJbDVoPETO0Z/CH9aw==} + /@storybook/preview-api@7.6.0-alpha.4: + resolution: {integrity: sha512-IJa59daKgyeRQ3q07llaCTJeEDBJhHNY4wmev0FiB4+vkGfAz9i81nHs0tv1+yCzVTW710nSjOr+wjKoGHgxXw==} dependencies: - '@storybook/channels': 7.5.2 - '@storybook/client-logger': 7.5.2 - '@storybook/core-events': 7.5.2 + '@storybook/channels': 7.6.0-alpha.4 + '@storybook/client-logger': 7.6.0-alpha.4 + '@storybook/core-events': 7.6.0-alpha.4 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/types': 7.5.2 + '@storybook/types': 7.6.0-alpha.4 '@types/qs': 6.9.8 dequal: 2.0.3 lodash: 4.17.21 @@ -4260,24 +4204,6 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview-api@7.5.3: - resolution: {integrity: sha512-LNmEf7oBRnZ1wG3bQ+P+TO29+NN5pSDJiAA6FabZBrtIVm+psc2lxBCDQvFYyAFzQSlt60toGKNW8+RfFNdR5Q==} - dependencies: - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 - '@storybook/csf': 0.1.1 - '@storybook/global': 5.0.0 - '@storybook/types': 7.5.3 - '@types/qs': 6.9.8 - dequal: 2.0.3 - lodash: 4.17.21 - memoizerific: 1.11.3 - qs: 6.11.2 - synchronous-promise: 2.0.17 - ts-dedent: 2.2.0 - util-deprecate: 1.0.2 - /@storybook/preview@7.5.3: resolution: {integrity: sha512-Hf90NlLaSrdMZXPOHDCMPjTywVrQKK0e5CtzqWx/ZQz91JDINxJD+sGj2wZU+wuBtQcTtlsXc9OewlJ+9ETwIw==} dev: true @@ -4358,19 +4284,6 @@ packages: - supports-color dev: true - /@storybook/router@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jlh48TVUlqvGkU8MnkVp9SrCHomWGtQGx1WMK94NMyOPVPTLWzM6LjIybgmHz0MTe4lpzmbiIOfSlU3pPX054w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@storybook/client-logger': 7.5.2 - memoizerific: 1.11.3 - qs: 6.11.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@storybook/router@7.5.3(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-/iNYCFore7R5n6eFHbBYoB0P2/sybTVpA+uXTNUd3UEt7Ro6CEslTaFTEiH2RVQwOkceBp/NpyWon74xZuXhMg==} peerDependencies: @@ -4383,12 +4296,12 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@storybook/telemetry@7.5.0-alpha.3: - resolution: {integrity: sha512-mMsIipyuAcTcW9+SwFYQJyGhRFVwTq/5OWo9ZK7kRlsGgfXXNFgnng5BYVMc26sYSqnRf2nC88Sj0hjN5YJuIw==} + /@storybook/telemetry@7.6.0-alpha.4: + resolution: {integrity: sha512-EtXWo4xPEsMrQl+enoaH4JXsAM7rCqDN97dzQGcMVu3RYrkQ/UayVjWU64HulqVit+zYy89ZFcNic9hKrm2Qyg==} dependencies: - '@storybook/client-logger': 7.5.0-alpha.3 - '@storybook/core-common': 7.5.0-alpha.3 - '@storybook/csf-tools': 7.5.0-alpha.3 + '@storybook/client-logger': 7.6.0-alpha.4 + '@storybook/core-common': 7.6.0-alpha.4 + '@storybook/csf-tools': 7.6.0-alpha.4 chalk: 4.1.2 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 @@ -4407,20 +4320,6 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/theming@7.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-DZBTcYErSYvmTYsGz7lKtiIcBe8flBw5Ojp52r3O4GcRYG4AbuUwwVvehz+O1cWaS+UW3HavrcgapERH7ZHd1A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 7.5.2 - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@storybook/theming@7.5.3(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Cjmthe1MAk0z4RKCZ7m72gAD8YD0zTAH97z5ryM1Qv84QXjiCQ143fGOmYz1xEQdNFpOThPcwW6FEccLHTkVcg==} peerDependencies: @@ -4434,31 +4333,22 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@storybook/types@7.5.0-alpha.3: - resolution: {integrity: sha512-4y9jD9R72ipNihl4vWuZZDzytW/+il3jq6snTNaCsjxtm3F4PSKpI354mAk/l7Dc/oC8O56uGlrAtEfgt14nSw==} - dependencies: - '@storybook/channels': 7.5.0-alpha.3 - '@types/babel__core': 7.20.3 - '@types/express': 4.17.18 - file-system-cache: 2.4.4 - dev: true - - /@storybook/types@7.5.2: - resolution: {integrity: sha512-RDKHo6WUES+4nt7uZMfankjxdpYX2EI2GpJ2n2RPcnhzmb/ub1huNTjbzDEYMqY24SppljZeIN57m3Ar6L6f9A==} + /@storybook/types@7.5.3: + resolution: {integrity: sha512-iu5W0Kdd6nysN5CPkY4GRl+0BpxRTdSfBIJak7mb6xCIHSB5t1tw4BOuqMQ5EgpikRY3MWJ4gY647QkWBX3MNQ==} dependencies: - '@storybook/channels': 7.5.2 + '@storybook/channels': 7.5.3 '@types/babel__core': 7.20.3 '@types/express': 4.17.18 file-system-cache: 2.3.0 - dev: true - /@storybook/types@7.5.3: - resolution: {integrity: sha512-iu5W0Kdd6nysN5CPkY4GRl+0BpxRTdSfBIJak7mb6xCIHSB5t1tw4BOuqMQ5EgpikRY3MWJ4gY647QkWBX3MNQ==} + /@storybook/types@7.6.0-alpha.4: + resolution: {integrity: sha512-/h+YXp02WCP2w+DktLbrgjE8aVrM9Pp4gtHDxzqgn9lUqMyf9LN8beeserMeGGj4xgSnwE+7YsSWDV+TUEYHUA==} dependencies: - '@storybook/channels': 7.5.3 + '@storybook/channels': 7.6.0-alpha.4 '@types/babel__core': 7.20.3 '@types/express': 4.17.18 file-system-cache: 2.3.0 + dev: true /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.3): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} @@ -4879,13 +4769,6 @@ packages: /@types/find-cache-dir@3.2.1: resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} - /@types/fs-extra@11.0.1: - resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} - dependencies: - '@types/jsonfile': 6.1.3 - '@types/node': 18.18.9 - dev: true - /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: @@ -4940,12 +4823,6 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/jsonfile@6.1.3: - resolution: {integrity: sha512-/yqTk2SZ1wIezK0hiRZD7RuSf4B3whFxFamB1kGStv+8zlWScTMcHanzfc0XKWs5vA1TkHeckBlOyM8jxU8nHA==} - dependencies: - '@types/node': 18.18.9 - dev: true - /@types/lodash@4.14.201: resolution: {integrity: sha512-y9euML0cim1JrykNxADLfaG0FgD1g/yTHwUs/Jg9ZIU7WKj2/4IW9Lbb1WZbvck78W/lfGXFfe+u2EGfIJXdLQ==} @@ -4988,10 +4865,6 @@ packages: '@types/node': 18.18.9 form-data: 4.0.0 - /@types/node@16.18.60: - resolution: {integrity: sha512-ZUGPWx5vKfN+G2/yN7pcSNLkIkXEvlwNaJEd4e0ppX7W2S8XAkdc/37hM4OUNJB9sa0p12AOvGvxL4JCPiz9DA==} - dev: true - /@types/node@18.18.9: resolution: {integrity: sha512-0f5klcuImLnG4Qreu9hPj/rEfFq6YRc5n2mAjSsH+ec/mJL+3voBH0+8T7o8RpFjH7ovc+TRsL/c7OYIQsPTfQ==} dependencies: @@ -5014,12 +4887,6 @@ packages: /@types/qs@6.9.8: resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==} - /@types/ramda@0.29.3: - resolution: {integrity: sha512-Yh/RHkjN0ru6LVhSQtTkCRo6HXkfL9trot/2elzM/yXLJmbLm2v6kJc8yftTnwv1zvUob6TEtqI2cYjdqG3U0Q==} - dependencies: - types-ramda: 0.29.5 - dev: true - /@types/range-parser@1.2.5: resolution: {integrity: sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==} @@ -5994,38 +5861,38 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.23.3): - resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} + /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.3): + resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.22.20 + '@babel/compat-data': 7.23.3 '@babel/core': 7.23.3 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.3) + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.4(@babel/core@7.23.3): - resolution: {integrity: sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==} + /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.3): + resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.23.3 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.3) - core-js-compat: 3.33.0 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) + core-js-compat: 3.33.2 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.23.3): - resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} + /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.3): + resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.23.3 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.3) + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.3) transitivePeerDependencies: - supports-color dev: true @@ -6595,6 +6462,12 @@ packages: browserslist: 4.22.1 dev: true + /core-js-compat@3.33.2: + resolution: {integrity: sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw==} + dependencies: + browserslist: 4.22.1 + dev: true + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -7243,6 +7116,11 @@ packages: engines: {node: '>=10'} dev: true + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false + /escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} @@ -7906,15 +7784,6 @@ packages: fs-extra: 11.1.1 ramda: 0.29.0 - /file-system-cache@2.4.4: - resolution: {integrity: sha512-vCYhn8pb5nlC3Gs2FFCOkmf4NEg2Ym3ulJwkmS9o6p9oRShGj6CwTMFvpgZihBlsh373NaM0XgAgDHXQIlS4LQ==} - dependencies: - '@types/fs-extra': 11.0.1 - '@types/ramda': 0.29.3 - fs-extra: 11.1.1 - ramda: 0.29.0 - dev: true - /filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: @@ -9209,19 +9078,19 @@ packages: dependencies: argparse: 2.0.1 - /jscodeshift@0.14.0(@babel/preset-env@7.22.20): + /jscodeshift@0.14.0(@babel/preset-env@7.23.3): resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} hasBin: true peerDependencies: '@babel/preset-env': ^7.1.6 dependencies: '@babel/core': 7.23.3 - '@babel/parser': 7.23.0 + '@babel/parser': 7.23.3 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.3) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.3) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.3) '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.3) - '@babel/preset-env': 7.22.20(@babel/core@7.23.3) + '@babel/preset-env': 7.23.3(@babel/core@7.23.3) '@babel/preset-flow': 7.22.15(@babel/core@7.23.3) '@babel/preset-typescript': 7.23.0(@babel/core@7.23.3) '@babel/register': 7.22.15(@babel/core@7.23.3) @@ -9477,6 +9346,10 @@ packages: is-unicode-supported: 0.1.0 dev: true + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dev: false + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -9557,6 +9430,10 @@ packages: /map-or-similar@1.5.0: resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + /markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + dev: false + /markdown-to-jsx@7.3.2(react@18.2.0): resolution: {integrity: sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==} engines: {node: '>= 10'} @@ -9576,6 +9453,15 @@ packages: dependencies: unist-util-visit: 2.0.3 + /mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + dependencies: + '@types/mdast': 4.0.2 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + /mdast-util-from-markdown@2.0.0: resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} dependencies: @@ -9595,6 +9481,82 @@ packages: - supports-color dev: false + /mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + dependencies: + '@types/mdast': 4.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.0.1 + dev: false + + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + dependencies: + '@types/mdast': 4.0.2 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + dependencies: + '@types/mdast': 4.0.2 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + dependencies: + '@types/mdast': 4.0.2 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + dependencies: + '@types/mdast': 4.0.2 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-phrasing@4.0.0: + resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + dependencies: + '@types/mdast': 4.0.2 + unist-util-is: 6.0.0 + dev: false + /mdast-util-to-hast@13.0.2: resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} dependencies: @@ -9608,6 +9570,19 @@ packages: unist-util-visit: 5.0.0 dev: false + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + dependencies: + '@types/mdast': 4.0.2 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.0.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + dev: false + /mdast-util-to-string@1.1.0: resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==} @@ -9669,6 +9644,78 @@ packages: micromark-util-types: 2.0.0 dev: false + /micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + dependencies: + micromark-extension-gfm-autolink-literal: 2.0.0 + micromark-extension-gfm-footnote: 2.0.0 + micromark-extension-gfm-strikethrough: 2.0.0 + micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.0.1 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-destination@2.0.0: resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} dependencies: @@ -9963,10 +10010,6 @@ packages: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true - /ms@2.1.1: - resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - dev: true - /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -11361,7 +11404,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.1 + '@babel/runtime': 7.23.2 dev: true /regexp-tree@0.1.27: @@ -11440,6 +11483,19 @@ packages: space-separated-tokens: 1.1.5 unist-util-visit: 2.0.3 + /remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + dependencies: + '@types/mdast': 4.0.2 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + /remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} dependencies: @@ -11468,6 +11524,14 @@ packages: mdast-util-to-string: 1.1.0 unist-util-visit: 2.0.3 + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + dependencies: + '@types/mdast': 4.0.2 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.4 + dev: false + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -11592,10 +11656,6 @@ packages: isarray: 2.0.5 dev: true - /safe-buffer@5.1.1: - resolution: {integrity: sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==} - dev: true - /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -11690,17 +11750,6 @@ packages: randombytes: 2.1.0 dev: true - /serve-favicon@2.5.0: - resolution: {integrity: sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==} - engines: {node: '>= 0.8.0'} - dependencies: - etag: 1.8.1 - fresh: 0.5.2 - ms: 2.1.1 - parseurl: 1.3.3 - safe-buffer: 5.1.1 - dev: true - /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} @@ -11897,7 +11946,7 @@ packages: /store2@2.14.2: resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} - /storybook-i18n@2.0.13(@storybook/components@7.5.2)(@storybook/manager-api@7.5.2)(@storybook/preview-api@7.5.2)(@storybook/types@7.5.3)(react-dom@18.2.0)(react@18.2.0): + /storybook-i18n@2.0.13(@storybook/components@7.5.3)(@storybook/manager-api@7.5.3)(@storybook/preview-api@7.5.3)(@storybook/types@7.5.3)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-p0VPL5QiHdeS3W9BvV7UnuTKw7Mj1HWLW67LK0EOoh5fpSQIchu7byfrUUe1RbCF1gT0gOOhdNuTSXMoVVoTDw==} peerDependencies: '@storybook/components': ^7.0.0 @@ -11912,15 +11961,15 @@ packages: react-dom: optional: true dependencies: - '@storybook/components': 7.5.2(@types/react-dom@18.2.15)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 + '@storybook/components': 7.5.3(@types/react-dom@18.2.15)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 '@storybook/types': 7.5.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /storybook-react-i18next@2.0.9(@storybook/components@7.5.2)(@storybook/manager-api@7.5.2)(@storybook/preview-api@7.5.2)(@storybook/types@7.5.3)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.1)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0): + /storybook-react-i18next@2.0.9(@storybook/components@7.5.3)(@storybook/manager-api@7.5.3)(@storybook/preview-api@7.5.3)(@storybook/types@7.5.3)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.1)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0): resolution: {integrity: sha512-GFTOrYwOWShLqWNuTesPNhC79P3OHw1jkZ4gU3R50yTD2MUclF5DHLnuKeVfKZ323iV+I9fxLxuLIVHWVDJgXA==} peerDependencies: '@storybook/components': ^7.0.0 @@ -11939,9 +11988,9 @@ packages: react-dom: optional: true dependencies: - '@storybook/components': 7.5.2(@types/react-dom@18.2.15)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.5.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.2 + '@storybook/components': 7.5.3(@types/react-dom@18.2.15)(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.5.3 '@storybook/types': 7.5.3 i18next: 22.5.1 i18next-browser-languagedetector: 7.2.0 @@ -11949,14 +11998,14 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-i18next: 12.3.1(i18next@22.5.1)(react-dom@18.2.0)(react@18.2.0) - storybook-i18n: 2.0.13(@storybook/components@7.5.2)(@storybook/manager-api@7.5.2)(@storybook/preview-api@7.5.2)(@storybook/types@7.5.3)(react-dom@18.2.0)(react@18.2.0) + storybook-i18n: 2.0.13(@storybook/components@7.5.3)(@storybook/manager-api@7.5.3)(@storybook/preview-api@7.5.3)(@storybook/types@7.5.3)(react-dom@18.2.0)(react@18.2.0) dev: true - /storybook@7.5.0-alpha.3: - resolution: {integrity: sha512-VRDk7nfjYbjpjioat+ERsBBc3vexqV3bdYxdPf0GiYb2gHJiXATOtIaWSE18MPnfZlLv1FZbYYGDnoXtA4uQaA==} + /storybook@7.6.0-alpha.4: + resolution: {integrity: sha512-F1j69EZ3mekWTs4XcTOxNG2aXmylUsR9wMZf7Ame61K+pIbcM7JRQZBaqFgYWQhgiMQcAh8EMpG8UW6ky1SgDA==} hasBin: true dependencies: - '@storybook/cli': 7.5.0-alpha.3 + '@storybook/cli': 7.6.0-alpha.4 transitivePeerDependencies: - bufferutil - encoding @@ -12486,10 +12535,6 @@ packages: webpack: 5.88.2(esbuild@0.18.20) dev: true - /ts-toolbelt@9.6.0: - resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} - dev: true - /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -12606,12 +12651,6 @@ packages: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true - /types-ramda@0.29.5: - resolution: {integrity: sha512-u+bAYXHDPJR+amB0qMrMU/NXRB2PG8QqpO2v6j7yK/0mPZhlaaZj++ynYjnVpkPEpCkZEGxNpWY3X7qyLCGE3w==} - dependencies: - ts-toolbelt: 9.6.0 - dev: true - /typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} diff --git a/resources/css/_article.css b/resources/css/_article.css index e1ea7b7f4..ce4b1e83a 100644 --- a/resources/css/_article.css +++ b/resources/css/_article.css @@ -178,3 +178,35 @@ @apply h-[7px] w-[7px] border-2 border-theme-secondary-700 bg-transparent dark:border-theme-dark-50; content: ""; } + +.article-content input[type="checkbox"] { + @apply dark:form-checkbox-dark form-checkbox box-border h-5 w-5 rounded border-2 border-theme-secondary-300 text-theme-primary-600 transition duration-100 ease-in dark:enabled:border-theme-dark-200 dark:enabled:bg-theme-dark-900 dark:enabled:checked:border-theme-primary-400 dark:enabled:checked:bg-theme-primary-400; +} + +.article-content input[type="checkbox"]:checked { + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='%23191D22' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E"); +} + +.dark .article-content input[type="checkbox"]:checked { + background-image: url('data:image/svg+xml,%3Csvg viewBox="0 0 16 16" fill="%2323272D" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z"/%3E%3C/svg%3E'); +} + +.article-content table { + @apply w-full border-separate border-spacing-0 overflow-hidden; +} + +.article-content table thead { + @apply bg-theme-secondary-50 dark:bg-theme-dark-950; +} + +.article-content table thead tr th { + @apply whitespace-nowrap border-b border-theme-secondary-300 px-4 py-2 text-sm font-medium text-theme-secondary-700 dark:border-theme-dark-700 dark:text-theme-dark-200; +} + +.article-content table tbody td { + @apply whitespace-nowrap p-4 text-base; +} + +.article-content table tbody tr:not(:last-child) td { + @apply border-b border-dashed border-theme-secondary-300 text-theme-secondary-700 dark:border-theme-dark-700 dark:text-theme-dark-200; +} diff --git a/resources/css/_general.css b/resources/css/_general.css index d3d40ce5c..e0bd4205b 100644 --- a/resources/css/_general.css +++ b/resources/css/_general.css @@ -60,12 +60,16 @@ body { } .custom-scroll::-webkit-scrollbar-thumb { - @apply rounded-lg bg-theme-primary-200; + @apply rounded-lg bg-theme-primary-200 dark:bg-theme-dark-700; } .custom-scroll { scrollbar-color: rgb(var(--theme-color-primary-200)) transparent; } + + .dark .custom-scroll { + scrollbar-color: rgb(var(--theme-color-dark-700)) transparent; + } } /* Hide Scrollbar */ diff --git a/resources/js/Pages/Articles/Components/ArticleContent.tsx b/resources/js/Pages/Articles/Components/ArticleContent.tsx index 16427c6b6..a83250793 100644 --- a/resources/js/Pages/Articles/Components/ArticleContent.tsx +++ b/resources/js/Pages/Articles/Components/ArticleContent.tsx @@ -4,6 +4,7 @@ import { useTranslation } from "react-i18next"; import Markdown from "react-markdown"; import rehypeExternalLinks from "rehype-external-links"; import rehypeRaw from "rehype-raw"; +import remarkGfm from "remark-gfm"; import tippy, { inlinePositioning } from "tippy.js"; import { useDarkModeContext } from "@/Contexts/DarkModeContext"; import { extractDomain } from "@/Utils/extract-domain"; @@ -60,7 +61,18 @@ export const ArticleContent = ({ article }: Properties): JSX.Element => {
( +
+
+
+ {children}
+
+
+
+ ), + }} skipHtml > {article.content}