diff --git a/apps/web/app/(documents)/offer/layout.tsx b/apps/web/app/(documents)/offer/layout.tsx new file mode 100644 index 0000000..d3e52af --- /dev/null +++ b/apps/web/app/(documents)/offer/layout.tsx @@ -0,0 +1,6 @@ +import { DocumentsLayout } from '@/components/documents/layout'; +import { type PropsWithChildren } from 'react'; + +export default function Layout({ children }: Readonly) { + return {children}; +} diff --git a/apps/web/app/(documents)/offer/page.mdx b/apps/web/app/(documents)/offer/page.mdx new file mode 100644 index 0000000..cb737a7 --- /dev/null +++ b/apps/web/app/(documents)/offer/page.mdx @@ -0,0 +1,102 @@ +import { OfferLink, SupportLink } from '@/components/documents/links'; +import { env } from '@/config/env'; + +export const metadata = { + title: 'Публичная оферта', + description: 'Публичная оферта бота / мини-приложения «Запишись.онлайн» (@zapishis_online_bot)', +}; + +### Договор-оферта на использование сервиса «Запишись.онлайн» (@zapishis_online_bot) + +Настоящий документ является публичной офертой в соответствии с пунктом 2 статьи 437 Гражданского кодекса Российской Федерации и представляет собой предложение индивидуального предпринимателя (самозанятого) — далее именуемого «Администрация», заключить Договор на использование Сервиса (далее – «Договор», «Оферта») с любым физическим лицом, принявшим условия настоящей Оферты (далее – «Пользователь»). + +#### 1. Термины и определения + +1.1. Оферта — настоящий документ, постоянно размещенный в сети Интернет по адресу . + +1.2. Акцепт — полное и безоговорочное принятие условий Оферты Пользователем путем оплаты доступа через встроенный платежный бот ЮKassa в Telegram. + +1.3. Сервис — Telegram-бот и мини-приложение, позволяющее пользователям создавать и принимать заказы, управлять расписанием и взаимодействовать друг с другом без необходимости регистрации. + +1.4. Администрация — самозанятое лицо, являющееся разработчиком и правообладателем Сервиса. + +1.5. Пользователь — любое физическое лицо, использующее Сервис в личных или профессиональных целях. + +1.6. Доступ — право использования функционала Сервиса на определённый оплаченный период (например, неделя, месяц, год). + +1.7. Оплата — денежные средства, перечисленные Пользователем через платёжный бот ЮKassa в Telegram. + +#### 2. Акцепт оферты и заключение договора + +2.1. Акцептом настоящей Оферты считается оплата Пользователем доступа к Сервису любым доступным способом. + +2.2. С момента совершения оплаты Пользователь считается заключившим Договор с Администрацией на условиях, изложенных в настоящей Оферте. + +2.3. Пользователь подтверждает, что ему понятны все условия настоящей Оферты и он принимает их без ограничений. + +#### 3. Предмет договора + +3.1. Администрация предоставляет Пользователю неисключительное право (доступ) на использование функционала Сервиса в пределах оплаченного периода времени. + +3.2. Сервис предоставляется в онлайн-формате через Telegram-бота без установки дополнительного программного обеспечения. + +3.3. Пользователь получает право использовать функционал Сервиса в личных целях, в том числе для организации и планирования заказов, встреч и тренировок. + +#### 4. Порядок оплаты и использование + +4.1. Оплата производится через встроенные инструменты Telegram-бота с использованием платёжной системы ЮKassa. + +4.2. Комиссия платёжной системы включена в итоговую стоимость. Администрация не взимает дополнительных платежей. + +4.3. Доступ активируется автоматически после успешного подтверждения оплаты. + +4.4. Пользователь может продлить доступ путём повторной оплаты. Автоматическое продление не применяется. + +4.5. Возврат денежных средств возможен только в случае технических ошибок, по письменному обращению на адрес поддержки. + +#### 5. Права и обязанности сторон + +5.1. Пользователь обязуется: + +- не использовать Сервис в противоправных целях; +- не вмешиваться в работу Сервиса и не предпринимать действий, направленных на нарушение его функционирования; +- предоставлять достоверную информацию при оплате и использовании Сервиса; +- при добавлении контактов других лиц (например, клиентов, мастеров) гарантировать, что у него есть согласие этих лиц на передачу и обработку их персональных данных в рамках Сервиса; + +5.2. Администрация обязуется: + +- обеспечивать бесперебойную работу Сервиса, за исключением периодов технического обслуживания; +- обрабатывать персональные данные Пользователей в соответствии с Политикой конфиденциальности; +- принимать обращения и запросы Пользователей по вопросам работы Сервиса. 6. Ответственность сторон; + +6.1. Сервис предоставляется «как есть». Администрация не несёт ответственности за временные сбои, потерю данных или недоступность Сервиса, возникшие по причинам, не зависящим от неё. + +6.2. Пользователь несёт полную ответственность за корректность совершаемых платежей и действий, совершаемых через свой Telegram-аккаунт. + +#### 7. Обработка персональных данных + +7.1. Администрация обрабатывает персональные данные Пользователя в соответствии с Федеральным законом №152-ФЗ «О персональных данных» и Политикой конфиденциальности. + +7.2. Использование Сервиса означает согласие Пользователя на обработку его персональных данных. + +#### 8. Срок действия и расторжение договора + +8.1. Договор вступает в силу с момента оплаты доступа и действует в течение оплаченного периода. + +8.2. Пользователь может прекратить использование Сервиса в любое время без возврата оплаченных средств. + +8.3. Администрация вправе приостановить доступ в случае нарушения Пользователем условий настоящей Оферты. + +#### 9. Заключительные положения + +9.1. Настоящий Договор регулируется законодательством Российской Федерации. + +9.2. Все споры и разногласия решаются путём переговоров, а при недостижении соглашения — в судебном порядке по месту нахождения Администрации. + +9.3. Администрация оставляет за собой право изменять условия Оферты с размещением новой редакции на сайте. + +#### 10. Контакты + +Если у Вас есть вопросы по настоящему договору публичной оферты персональных данных, пожалуйста, свяжитесь с Разработчиком: + +- **Telegram:** diff --git a/apps/web/app/(documents)/offer/page.tsx b/apps/web/app/(documents)/offer/page.tsx deleted file mode 100644 index 138c692..0000000 --- a/apps/web/app/(documents)/offer/page.tsx +++ /dev/null @@ -1,242 +0,0 @@ -import { Container } from '@/components/layout'; -import { PageHeader } from '@/components/navigation'; -import { env } from '@/config/env'; - -export default function OfferPage() { - return ( - <> - - -
-

- Договор-оферта на использование сервиса «Запишись.онлайн» (@zapishis_online_bot) -

-

- Настоящий документ является публичной офертой в соответствии с пунктом 2 статьи 437 - Гражданского кодекса Российской Федерации и представляет собой предложение - индивидуального предпринимателя (самозанятого) — далее именуемого «Администрация», - заключить Договор на использование Сервиса (далее – «Договор», «Оферта») с любым - физическим лицом, принявшим условия настоящей Оферты (далее – «Пользователь»). -

- -
- -

1. Термины и определения

-
-

- 1.1. Оферта — настоящий документ, постоянно размещенный в сети - Интернет по адресу {env.OFFER_URL}. -

-

- 1.2. Акцепт — полное и безоговорочное принятие условий Оферты - Пользователем путем оплаты доступа через встроенный платежный бот ЮKassa в Telegram. -

-

- 1.3. Сервис — Telegram-бот и мини-приложение, позволяющее - пользователям создавать и принимать заказы, управлять расписанием и взаимодействовать - друг с другом без необходимости регистрации. -

-

- 1.4. Администрация — самозанятое лицо, являющееся разработчиком и - правообладателем Сервиса. -

-

- 1.5. Пользователь — любое физическое лицо, использующее Сервис в - личных или профессиональных целях. -

-

- 1.6. Доступ — право использования функционала Сервиса на определённый - оплаченный период (например, неделя, месяц, год). -

-

- 1.7. Оплата — денежные средства, перечисленные Пользователем через - платёжный бот ЮKassa в Telegram. -

-
- -
- -

2. Акцепт оферты и заключение договора

-
-

- 2.1. Акцептом настоящей Оферты считается оплата Пользователем доступа - к Сервису любым доступным способом. -

-

- 2.2. С момента совершения оплаты Пользователь считается заключившим - Договор с Администрацией на условиях, изложенных в настоящей Оферте. -

-

- 2.3. Пользователь подтверждает, что ему понятны все условия настоящей - Оферты и он принимает их без ограничений. -

-
- -
- -

3. Предмет договора

-
-

- 3.1. Администрация предоставляет Пользователю неисключительное право - (доступ) на использование функционала Сервиса в пределах оплаченного периода времени. -

-

- 3.2. Сервис предоставляется в онлайн-формате через Telegram-бота без - установки дополнительного программного обеспечения. -

-

- 3.3. Пользователь получает право использовать функционал Сервиса в - личных целях, в том числе для организации и планирования заказов, встреч и тренировок. -

-
- -
- -

4. Порядок оплаты и использование

-
-

- 4.1. Оплата производится через встроенные инструменты Telegram-бота с - использованием платёжной системы ЮKassa. -

-

- 4.2. Комиссия платёжной системы включена в итоговую стоимость. - Администрация не взимает дополнительных платежей. -

-

- 4.3. Доступ активируется автоматически после успешного подтверждения - оплаты. -

-

- 4.4. Пользователь может продлить доступ путём повторной оплаты. - Автоматическое продление не применяется. -

-

- 4.5. Возврат денежных средств возможен только в случае технических - ошибок, по письменному обращению на адрес поддержки. -

-
- -
- -

5. Права и обязанности сторон

-
-

- 5.1. Пользователь обязуется: -

-
    -
  • не использовать Сервис в противоправных целях;
  • -
  • - не вмешиваться в работу Сервиса и не предпринимать действий, направленных на - нарушение его функционирования; -
  • -
  • предоставлять достоверную информацию при оплате и использовании Сервиса.
  • -
  • - при добавлении контактов других лиц (например, клиентов, мастеров) гарантировать, - что у него есть согласие этих лиц на передачу и обработку их персональных данных в - рамках Сервиса. -
  • -
-

- 5.2. Администрация обязуется: -

-
    -
  • - обеспечивать бесперебойную работу Сервиса, за исключением периодов технического - обслуживания; -
  • -
  • - обрабатывать персональные данные Пользователей в соответствии с{' '} - Политикой конфиденциальности; -
  • -
  • принимать обращения и запросы Пользователей по вопросам работы Сервиса.
  • -
-
- -
- -

6. Ответственность сторон

-
-

- 6.1. Сервис предоставляется «как есть». Администрация не несёт - ответственности за временные сбои, потерю данных или недоступность Сервиса, возникшие - по причинам, не зависящим от неё. -

-

- 6.2. Пользователь несёт полную ответственность за корректность - совершаемых платежей и действий, совершаемых через свой Telegram-аккаунт. -

-
- -
- -

7. Обработка персональных данных

-
-

- 7.1. Администрация обрабатывает персональные данные Пользователя в - соответствии с Федеральным законом №152-ФЗ «О персональных данных» и{' '} - Политикой конфиденциальности. -

-

- 7.2. Использование Сервиса означает согласие Пользователя на - обработку его персональных данных. -

-
- -
- -

8. Срок действия и расторжение договора

-
-

- 8.1. Договор вступает в силу с момента оплаты доступа и действует в - течение оплаченного периода. -

-

- 8.2. Пользователь может прекратить использование Сервиса в любое - время без возврата оплаченных средств. -

-

- 8.3. Администрация вправе приостановить доступ в случае нарушения - Пользователем условий настоящей Оферты. -

-
- -
- -

9. Заключительные положения

-
-

- 9.1. Настоящий Договор регулируется законодательством Российской - Федерации. -

-

- 9.2. Все споры и разногласия решаются путём переговоров, а при - недостижении соглашения — в судебном порядке по месту нахождения Администрации. -

-

- 9.3. Администрация оставляет за собой право изменять условия Оферты с - размещением новой редакции на сайте. -

-
- -
- -

10. Контакты

-

- Если у Вас есть вопросы по настоящему договору публичной оферты персональных данных, - пожалуйста, свяжитесь с Разработчиком: -

- - -
-
-
- - ); -} diff --git a/apps/web/app/(documents)/privacy/layout.tsx b/apps/web/app/(documents)/privacy/layout.tsx new file mode 100644 index 0000000..c784a70 --- /dev/null +++ b/apps/web/app/(documents)/privacy/layout.tsx @@ -0,0 +1,6 @@ +import { DocumentsLayout } from '@/components/documents/layout'; +import { type PropsWithChildren } from 'react'; + +export default function Layout({ children }: Readonly) { + return {children}; +} diff --git a/apps/web/app/(documents)/privacy/page.mdx b/apps/web/app/(documents)/privacy/page.mdx new file mode 100644 index 0000000..d9661b9 --- /dev/null +++ b/apps/web/app/(documents)/privacy/page.mdx @@ -0,0 +1,137 @@ +import { SupportLink } from '@/components/documents/links'; +import { env } from '@/config/env'; + +export const metadata = { + title: 'Политика конфиденциальности', + description: + 'Политика конфиденциальности бота / мини-приложения «Запишись.онлайн» (@zapishis_online_bot)', +}; + +### Политика конфиденциальности бота / мини-приложения «Запишись.онлайн» (@zapishis_online_bot) + +#### 1. Термины и определения + +- **Telegram** – Telegram Messenger Inc. (платформа, на которой работает бот и мини-приложение). +- **Платформа** – экосистема ботов и мини-приложений Telegram. +- **Разработчик** – физическое лицо, самозанятый, владелец и оператор сервиса «Запишись.онлайн» (@zapishis_online_bot) - (далее — «Разработчик»). +- **Сторонний сервис** – бот/мини-приложение Разработчика, предоставляемое в Платформе. +- **Пользователь** – лицо, использующее Сторонний сервис через свою учетную запись Telegram (далее — «Вы»). +- **Политика** – настоящий документ, регулирующий отношения между Разработчиком и Пользователем в части сбора и - обработки персональных данных. + +#### 2. Общие положения + +2.1. Настоящая Политика регулирует исключительно отношения между Разработчиком и Пользователем. Она не заменяет и не изменяет Политику конфиденциальности Telegram: [https://telegram.org/privacy](https://telegram.org/privacy). + +2.2. Разработчик соблюдает применимые требования платформы Telegram к конфиденциальности и защите данных. + +2.3. Использование Сервиса Пользователем и/или активация платного доступа означает согласие Пользователя с условиями настоящей Политики. + +2.4. Если Вы не согласны с условиями Политики — прекратите использование Сервиса. + +#### 3. Отказ от ответственности + +3.1. Сторонний сервис является независимым приложением и не поддерживается, не одобряется и не аффилирован с Telegram (за исключением использования API и инфраструктуры Telegram). + +3.2. Разработчик вправе изменять настоящую Политику — изменения вступают в силу с момента их публикации. Вы обязаны самостоятельно отслеживать обновления. + +3.3. Используя Сервис, Вы подтверждаете, что ознакомлены и согласны с условиями использования Telegram для ботов и мини-приложений: +[https://telegram.org/tos/bots](https://telegram.org/tos/bots), [https://telegram.org/tos/mini-apps](https://telegram.org/tos/mini-apps). + +3.4. Вы гарантируете, что используете Сервис в соответствии с действующим законодательством и обладаете правом взаимодействовать с ним (например, достигли возраста, необходимого для использования услуг). + +3.5. Вы обязуетесь предоставлять точную и актуальную информацию, если Сервис запрашивает её. + +3.6. Любая информация, которую Вы делаете общедоступной самостоятельно (через профиль Telegram, публичные сообщения и т.п.), может стать доступна другим пользователям и не подпадает под защиту настоящей Политики в части конфиденциальности этой общедоступной информации. + +#### 4. Сбор персональных данных + +4.1. Telegram по умолчанию предоставляет сторонним сервисам ограниченный набор данных о Пользователе — подробнее: [https://telegram.org/privacy#6-bot-messages](https://telegram.org/privacy#6-bot-messages). + +4.2. Сторонний сервис может дополнительно получать данные, которые Вы передаёте в чате бота или в мини-приложении (например, контакт, телефон), если Вы явно их отправляете. + +4.3. В случае мини-приложения дополнительно могут передаваться данные в соответствии с правилами мини-приложений Telegram: [https://telegram.org/tos/mini-apps#4-privacy](https://telegram.org/tos/mini-apps#4-privacy). + +4.4. Сторонний сервис может собирать также анонимную статистику использования (диагностика, события взаимодействия), не связываемую напрямую с персоной. + +4.5. Пользователь может передавать данные третьих лиц (например, контактные данные клиентов или мастеров) для использования в Сервисе. При этом пользователь гарантирует, что эти лица дали согласие на обработку их персональных данных в рамках Сервиса. + +#### 5. Какие данные мы собираем и как используем + +5.1. Разработчик запрашивает, собирает и обрабатывает только те данные, которые необходимы для корректной работы функций Сервиса, в частности: + +- Telegram ID и (опционально) отображаемое имя пользователя; +- телефон, только если Вы предоставили его добровольно (например, при регистрации); +- данные о заказах: дата/время, описание заказа, статус; +- информация о факте покупки Pro-доступа: период доступа, тип покупки (детали платёжной транзакции обрабатывает платёжный оператор — ЮKassa); + +5.2. Цели обработки: + +- предоставление и поддержка работы Сервиса (создание заказов, напоминания, управление доступом); +- подтверждение и учет оплат (взаимодействие с платёжным оператором для актуализации статуса доступа); +- реализация реферальной программы (хранение связей «кто пригласил/кого пригласили»); +- анализ использования и улучшение сервиса; +- выполнение юридических обязательств (хранение информации о транзакциях и др.); + +> **Важно:** детальные платёжные данные (реквизиты карт и т.д.) не хранятся у Разработчика — их обрабатывает платёжный оператор (ЮKassa) и Telegram-платежный бот. + +#### 6. Передача данных третьим лицам + +6.1. Разработчик не передаёт персональные данные третьим лицам, за исключением следующих случаев: + +- платёжному оператору (ЮKassa) и связанным службам для обработки платежей; +- Telegram как платформе для функционирования бота и мини-приложения; +- в случае необходимости — исполнителям, оказывающим техническую поддержку, при условии подписания ими обязательств о конфиденциальности; +- если передача требуется по закону (запросы уполномоченных органов и т.п.); + +6.2. Разработчик не продаёт и не передаёт персональные данные для рекламных целей третьим лицам без Вашего отдельного согласия. + +#### 7. Защита и хранение данных + +7.1. Разработчик применяет разумные технические и организационные меры для защиты персональных данных (использование надежного VPS, ограничения доступа, резервное копирование и т.п.). + +7.2. Доступ к персональным данным имеет только Разработчик (и/или доверенные исполнители технической поддержки при необходимости). + +7.3. Данные хранятся на серверах, указанных Разработчиком. Если используются внешние сервисы/облачные хранилища — это будет указано в соответствующих местах Политики или сообщения при сборе данных. + +#### 8. Права и обязанности сторон + +8.1. Права Разработчика: + +- вносить изменения в Политику с публикацией новой версии; +- ограничивать доступ к API/сервису при подозрении в злоупотреблениях; +- запросить подтверждение личности при необходимости обработки привилегированных запросов; + +8.2. Обязанности Разработчика: + +- обеспечивать доступность Политики и исполнять её условия; +- обрабатывать законные запросы пользователей о доступе, изменении или удалении данных в разумные сроки (не позднее 30 дней, если иное не установлено законом); +- соблюдать применимое законодательство о защите персональных данных; + +8.3. Права Пользователя: + +- запросить копию своих персональных данных, хранящихся у Разработчика; +- потребовать исправления неточных данных; +- потребовать удаления персональных данных в пределах, допустимых законом (с сохранением данных, необходимых для выполнения юридических обязательств, например, по учёту платежей); +- отозвать согласие на обработку персональных данных, если такое согласие предоставлялось добровольно; +- подать жалобу в уполномоченные органы по защите персональных данных, если считает, что его права нарушены; + +8.4. Обязанности Пользователя: + +- предоставлять точную и актуальную информацию; +- не использовать Сервис в нарушении законодательства и условий Telegram. + +#### 9. Реклама и использование данных для аналитики + +9.1. На текущем этапе Разработчик не использует персональные данные для демонстрации таргетированной рекламы третьих лиц без явного согласия Пользователя. + +9.2. Разработчик может собирать агрегированную (анонимную) статистику использования Сервиса для улучшения функционала. + +#### 10. Изменения Политики + +10.1. Разработчик вправе вносить изменения в настоящую Политику. Все изменения публикуются на этой странице и вступают в силу с момента публикации. + +#### 11. Контакты + +Если у Вас есть вопросы по Политике конфиденциальности или запросы в отношении персональных данных, пожалуйста, свяжитесь с Разработчиком: + +- **Telegram:** diff --git a/apps/web/app/(documents)/privacy/page.tsx b/apps/web/app/(documents)/privacy/page.tsx deleted file mode 100644 index f2445ee..0000000 --- a/apps/web/app/(documents)/privacy/page.tsx +++ /dev/null @@ -1,266 +0,0 @@ -import { Container } from '@/components/layout'; -import { PageHeader } from '@/components/navigation'; -import { env } from '@/config/env'; - -export default function PrivacyPolicyPage() { - return ( - <> - - -

- Политика конфиденциальности бота / мини-приложения «Запишись.онлайн» - (@zapishis_online_bot) -

- -

1. Термины и определения

-
    -
  1. - Telegram – Telegram Messenger Inc. (платформа, на которой работает бот - и мини-приложение). -
  2. -
  3. - Платформа – экосистема ботов и мини-приложений Telegram. -
  4. -
  5. - Разработчик – физическое лицо, самозанятый, владелец и оператор сервиса - «Запишись.онлайн» (@zapishis_online_bot) (далее — «Разработчик»). -
  6. -
  7. - Сторонний сервис – бот/мини-приложение Разработчика, предоставляемое в - Платформе. -
  8. -
  9. - Пользователь – лицо, использующее Сторонний сервис через свою учетную - запись Telegram (далее — «Вы»). -
  10. -
  11. - Политика – настоящий документ, регулирующий отношения между - Разработчиком и Пользователем в части сбора и обработки персональных данных. -
  12. -
- -

2. Общие положения

-

- 2.1. Настоящая Политика регулирует исключительно отношения между Разработчиком и - Пользователем. Она не заменяет и не изменяет Политику конфиденциальности Telegram:{' '} - https://telegram.org/privacy. -

-

- 2.2. Разработчик соблюдает применимые требования платформы Telegram к конфиденциальности и - защите данных. -

-

- 2.3. Использование Сервиса Пользователем и/или активация платного доступа означает - согласие Пользователя с условиями настоящей Политики. -

-

2.4. Если Вы не согласны с условиями Политики — прекратите использование Сервиса.

- -

3. Отказ от ответственности

-

- 3.1. Сторонний сервис является независимым приложением и не поддерживается, не одобряется - и не аффилирован с Telegram (за исключением использования API и инфраструктуры Telegram). -

-

- 3.2. Разработчик вправе изменять настоящую Политику — изменения вступают в силу с момента - их публикации. Вы обязаны самостоятельно отслеживать обновления. -

-

- 3.3. Используя Сервис, Вы подтверждаете, что ознакомлены и согласны с условиями - использования Telegram для ботов и мини-приложений:{' '} - https://telegram.org/tos/bots,{' '} - https://telegram.org/tos/mini-apps. -

-

- 3.4. Вы гарантируете, что используете Сервис в соответствии с действующим - законодательством и обладаете правом взаимодействовать с ним (например, достигли возраста, - необходимого для использования услуг). -

-

- 3.5. Вы обязуетесь предоставлять точную и актуальную информацию, если Сервис запрашивает - её. -

-

- 3.6. Любая информация, которую Вы делаете общедоступной самостоятельно (через профиль - Telegram, публичные сообщения и т.п.), может стать доступна другим пользователям и не - подпадает под защиту настоящей Политики в части конфиденциальности этой общедоступной - информации. -

- -

4. Сбор персональных данных

-

- 4.1. Telegram по умолчанию предоставляет сторонним сервисам ограниченный набор данных о - Пользователе — подробнее:{' '} - - https://telegram.org/privacy#6-bot-messages - - . -

-

- 4.2. Сторонний сервис может дополнительно получать данные, которые Вы передаёте в чате - бота или в мини-приложении (например, контакт, телефон), если Вы явно их отправляете. -

-

- 4.3. В случае мини-приложения дополнительно могут передаваться данные в соответствии с - правилами мини-приложений Telegram:{' '} - - https://telegram.org/tos/mini-apps#4-privacy - - . -

-

- 4.4. Сторонний сервис может собирать также анонимную статистику использования - (диагностика, события взаимодействия), не связываемую напрямую с персоной. -

-

- 4.5. Пользователь может передавать данные третьих лиц (например, контактные данные - клиентов или мастеров) для использования в Сервисе. При этом пользователь гарантирует, что - эти лица дали согласие на обработку их персональных данных в рамках Сервиса. -

- -

5. Какие данные мы собираем и как используем

-

- 5.1. Разработчик запрашивает, собирает и обрабатывает только те данные, которые необходимы - для корректной работы функций Сервиса, в частности: -

-
    -
  • Telegram ID и (опционально) отображаемое имя пользователя;
  • -
  • телефон, только если Вы предоставили его добровольно (например, при регистрации);
  • -
  • данные о заказах: дата/время, описание заказа, статус;
  • -
  • - информация о факте покупки Pro-доступа: период доступа, тип покупки (детали платёжной - транзакции обрабатывает платёжный оператор — ЮKassa). -
  • -
-

5.2. Цели обработки:

-
    -
  • - предоставление и поддержка работы Сервиса (создание заказов, напоминания, управление - доступом); -
  • -
  • - подтверждение и учет оплат (взаимодействие с платёжным оператором для актуализации - статуса доступа); -
  • -
  • - реализация реферальной программы (хранение связей «кто пригласил/кого пригласили»); -
  • -
  • анализ использования и улучшение сервиса;
  • -
  • выполнение юридических обязательств (хранение информации о транзакциях и др.).
  • -
-

- Важно: детальные платёжные данные (реквизиты карт и т.д.) не хранятся у Разработчика — их - обрабатывает платёжный оператор (ЮKassa) и Telegram-платежный бот. -

- -

6. Передача данных третьим лицам

-

- 6.1. Разработчик не передаёт персональные данные третьим лицам, за исключением следующих - случаев: -

-
    -
  • платёжному оператору (ЮKassa) и связанным службам для обработки платежей;
  • -
  • Telegram как платформе для функционирования бота и мини-приложения;
  • -
  • - в случае необходимости — исполнителям, оказывающим техническую поддержку, при условии - подписания ими обязательств о конфиденциальности; -
  • -
  • если передача требуется по закону (запросы уполномоченных органов и т.п.).
  • -
-

- 6.2. Разработчик не продаёт и не передаёт персональные данные для рекламных целей третьим - лицам без Вашего отдельного согласия. -

- -

7. Защита и хранение данных

-

- 7.1. Разработчик применяет разумные технические и организационные меры для защиты - персональных данных (использование надежного VPS, ограничения доступа, резервное - копирование и т.п.). -

-

- 7.2. Доступ к персональным данным имеет только Разработчик (и/или доверенные исполнители - технической поддержки при необходимости). -

-

- 7.3. Данные хранятся на серверах, указанных Разработчиком. Если используются внешние - сервисы/облачные хранилища — это будет указано в соответствующих местах Политики или - сообщения при сборе данных. -

- -

8. Права и обязанности сторон

-

8.1. Права Разработчика:

-
    -
  • вносить изменения в Политику с публикацией новой версии;
  • -
  • ограничивать доступ к API/сервису при подозрении в злоупотреблениях;
  • -
  • - запросить подтверждение личности при необходимости обработки привилегированных запросов. -
  • -
-

8.2. Обязанности Разработчика:

-
    -
  • обеспечивать доступность Политики и исполнять её условия;
  • -
  • - обрабатывать законные запросы пользователей о доступе, изменении или удалении данных в - разумные сроки (не позднее 30 дней, если иное не установлено законом); -
  • -
  • соблюдать применимое законодательство о защите персональных данных.
  • -
-

8.3. Права Пользователя:

-
    -
  • запросить копию своих персональных данных, хранящихся у Разработчика;
  • -
  • потребовать исправления неточных данных;
  • -
  • - потребовать удаления персональных данных в пределах, допустимых законом (с сохранением - данных, необходимых для выполнения юридических обязательств, например, по учёту - платежей); -
  • -
  • - отозвать согласие на обработку персональных данных, если такое согласие предоставлялось - добровольно; -
  • -
  • - подать жалобу в уполномоченные органы по защите персональных данных, если считает, что - его права нарушены. -
  • -
-

8.4. Обязанности Пользователя:

-
    -
  • предоставлять точную и актуальную информацию;
  • -
  • не использовать Сервис в нарушении законодательства и условий Telegram.
  • -
- -

9. Реклама и использование данных для аналитики

-

- 9.1. На текущем этапе Разработчик не использует персональные данные для демонстрации - таргетированной рекламы третьих лиц без явного согласия Пользователя. -

-

- 9.2. Разработчик может собирать агрегированную (анонимную) статистику использования - Сервиса для улучшения функционала. -

- -

10. Изменения Политики

-

- 10.1. Разработчик вправе вносить изменения в настоящую Политику. Все изменения публикуются - на этой странице и вступают в силу с момента публикации. -

- -

11. Контакты

-

- Если у Вас есть вопросы по Политике конфиденциальности или запросы в отношении - персональных данных, пожалуйста, свяжитесь с Разработчиком: -

- - -
- - - ); -} diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx index e083a00..b055edb 100644 --- a/apps/web/app/layout.tsx +++ b/apps/web/app/layout.tsx @@ -2,11 +2,9 @@ import { AuthProvider } from '@/providers/auth'; import { ErrorProvider } from '@/providers/error'; import { QueryProvider } from '@/providers/query'; import { ThemeProvider } from '@/providers/theme-provider'; -import { I18nProvider } from '@/utils/i18n/provider'; import '@repo/ui/globals.css'; import { cn } from '@repo/ui/lib/utils'; import { type Metadata } from 'next'; -import { getLocale } from 'next-intl/server'; import { Inter } from 'next/font/google'; import { type PropsWithChildren } from 'react'; @@ -17,19 +15,15 @@ export const metadata: Metadata = { }; export default async function RootLayout({ children }: Readonly) { - const locale = await getLocale(); - return ( - + - - - - {children} - - - + + + {children} + + diff --git a/apps/web/components/documents/layout.tsx b/apps/web/components/documents/layout.tsx new file mode 100644 index 0000000..c74e5ff --- /dev/null +++ b/apps/web/components/documents/layout.tsx @@ -0,0 +1,18 @@ +import { Container } from '@/components/layout'; +import { PageHeader } from '@/components/navigation'; +import { type PropsWithChildren } from 'react'; + +export function DocumentsLayout({ + children, + title, +}: Readonly & { readonly title: string }) { + return ( + <> + + + {children} + +
+ + ); +} diff --git a/apps/web/components/documents/links.tsx b/apps/web/components/documents/links.tsx new file mode 100644 index 0000000..51af51c --- /dev/null +++ b/apps/web/components/documents/links.tsx @@ -0,0 +1,17 @@ +import { env } from '@/config/env'; + +export function OfferLink() { + return ( + + {env.OFFER_URL} + + ); +} + +export function SupportLink() { + return ( + + {env.SUPPORT_TELEGRAM_URL} + + ); +} diff --git a/apps/web/mdx-components.tsx b/apps/web/mdx-components.tsx new file mode 100644 index 0000000..2671759 --- /dev/null +++ b/apps/web/mdx-components.tsx @@ -0,0 +1,39 @@ +import { type MDXComponents } from 'mdx/types'; +import Link from 'next/link'; + +/** + * Этот объект определяет, какие React-компоненты + * будут использоваться для рендеринга MDX-тегов (,

,

и т.д.) + * и какие кастомные компоненты будут доступны прямо в MDX. + */ +const components: MDXComponents = { + // 🔗 Заменяем стандартные на Next.js + a: ({ children, href = '', ...props }) => { + // внутренние ссылки → через + if (href.startsWith('/')) { + return ( + + {children} + + ); + } + + // внешние ссылки → target="_blank" + return ( + + {children} + + ); + }, +}; + +/** + * Эта функция вызывается автоматически при рендере MDX. + * Через неё Next.js App Router объединяет глобальные и локальные MDX-компоненты. + */ +export function useMDXComponents(componentsArgument: MDXComponents): MDXComponents { + return { + ...components, + ...componentsArgument, // позволяет переопределять внутри MDX + }; +} diff --git a/apps/web/next.config.js b/apps/web/next.config.js index 1a14e99..7d44e48 100644 --- a/apps/web/next.config.js +++ b/apps/web/next.config.js @@ -1,12 +1,16 @@ -import createNextIntlPlugin from 'next-intl/plugin'; +import createMDX from '@next/mdx'; -const withNextIntl = createNextIntlPlugin('./utils/i18n/i18n.ts'); - -const nextConfig = withNextIntl({ +const nextConfig = createMDX({ + extension: /\.mdx?$/u, +})({ eslint: { ignoreDuringBuilds: true, }, + experimental: { + mdxRs: true, + }, output: 'standalone', + pageExtensions: ['js', 'jsx', 'ts', 'tsx', 'md', 'mdx'], reactStrictMode: true, transpilePackages: ['@repo/ui'], }); diff --git a/apps/web/package.json b/apps/web/package.json index 8fb75c4..fa5146f 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -14,6 +14,9 @@ "test:e2e": "playwright test" }, "dependencies": { + "@mdx-js/loader": "^3.1.1", + "@mdx-js/react": "^3.1.1", + "@next/mdx": "^15.5.5", "@playwright/test": "^1.49.1", "@repo/graphql": "workspace:*", "@repo/typescript-config": "workspace:*", @@ -22,9 +25,10 @@ "@tanstack/react-query": "^5.64.1", "@telegram-apps/sdk-react": "^2.0.19", "@testing-library/react": "^16.1.0", + "@types/mdx": "^2.0.13", "@types/node": "catalog:", - "@types/react-dom": "catalog:", "@types/react": "catalog:", + "@types/react-dom": "catalog:", "@vitejs/plugin-react": "^4.3.4", "autoprefixer": "catalog:", "dayjs": "catalog:", @@ -32,14 +36,13 @@ "graphql": "catalog:", "jsdom": "^25.0.1", "lucide-react": "catalog:", - "next-auth": "^4.24.11", - "next-intl": "^3.26.0", - "next-themes": "^0.4.4", "next": "^15.5.0", + "next-auth": "^4.24.11", + "next-themes": "^0.4.4", "postcss": "catalog:", "radashi": "catalog:", - "react-dom": "catalog:", "react": "catalog:", + "react-dom": "catalog:", "tailwindcss": "catalog:", "typescript": "catalog:", "use-debounce": "^10.0.4", diff --git a/apps/web/providers/telegram.tsx b/apps/web/providers/telegram.tsx index 365fa76..42dbca4 100644 --- a/apps/web/providers/telegram.tsx +++ b/apps/web/providers/telegram.tsx @@ -2,10 +2,8 @@ 'use client'; import { useBackButton, useClientOnce, useDidMount, useViewport } from '@/hooks/telegram'; -import { setLocale } from '@/utils/i18n/locale'; import { init } from '@/utils/telegram/init'; -import { initData, useSignal } from '@telegram-apps/sdk-react'; -import { type PropsWithChildren, useEffect } from 'react'; +import { type PropsWithChildren } from 'react'; export function TelegramProvider(props: Readonly) { // Unfortunately, Telegram Mini Apps does not allow us to use all features of @@ -31,12 +29,5 @@ function RootInner({ children }: PropsWithChildren) { useViewport(); useBackButton(); - const initDataUser = useSignal(initData.user); - - // Set the user locale. - useEffect(() => { - if (initDataUser) setLocale(initDataUser.languageCode); - }, [initDataUser]); - return children; } diff --git a/apps/web/public/locales/en.json b/apps/web/public/locales/en.json deleted file mode 100644 index 1d633ec..0000000 --- a/apps/web/public/locales/en.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "i18n": { - "header": "Application supports i18n", - "footer": "You can select a different language from the dropdown menu." - } -} \ No newline at end of file diff --git a/apps/web/public/locales/ru.json b/apps/web/public/locales/ru.json deleted file mode 100644 index fbaf2c3..0000000 --- a/apps/web/public/locales/ru.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "i18n": { - "header": "Поддержка i18n", - "footer": "Вы можете выбрать другой язык в выпадающем меню." - } -} \ No newline at end of file diff --git a/apps/web/utils/i18n/config.ts b/apps/web/utils/i18n/config.ts deleted file mode 100644 index 130a2d9..0000000 --- a/apps/web/utils/i18n/config.ts +++ /dev/null @@ -1,10 +0,0 @@ -export const defaultLocale = 'ru'; - -export const timeZone = 'Europe/Moscow'; - -export const locales = [defaultLocale, 'ru'] as const; - -export const localesMap = [ - { key: 'en', title: 'English' }, - { key: 'ru', title: 'Русский' }, -]; diff --git a/apps/web/utils/i18n/i18n.ts b/apps/web/utils/i18n/i18n.ts deleted file mode 100644 index 68ea186..0000000 --- a/apps/web/utils/i18n/i18n.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { defaultLocale, locales } from './config'; -import { getLocale } from './locale'; -import { type Locale } from './types'; -import { getRequestConfig } from 'next-intl/server'; - -const requestConfig = getRequestConfig(async () => { - const locale = (await getLocale()) as Locale; - - return { - locale, - messages: - locale === defaultLocale || !locales.includes(locale) - ? (await import(`@/public/locales/${defaultLocale}.json`)).default - : (await import(`@/public/locales/${locale}.json`)).default, - }; -}); - -export default requestConfig; diff --git a/apps/web/utils/i18n/locale.ts b/apps/web/utils/i18n/locale.ts deleted file mode 100644 index fdac511..0000000 --- a/apps/web/utils/i18n/locale.ts +++ /dev/null @@ -1,20 +0,0 @@ -// use server is required -'use server'; - -import { defaultLocale } from './config'; -import { type Locale } from './types'; -import { cookies } from 'next/headers'; - -// In this example the locale is read from a cookie. You could alternatively -// also read it from a database, backend service, or any other source. -const COOKIE_NAME = 'NEXT_LOCALE'; - -const getLocale = async () => { - return (await cookies()).get(COOKIE_NAME)?.value || defaultLocale; -}; - -const setLocale = async (locale?: string) => { - (await cookies()).set(COOKIE_NAME, (locale as Locale) || defaultLocale); -}; - -export { getLocale, setLocale }; diff --git a/apps/web/utils/i18n/provider.tsx b/apps/web/utils/i18n/provider.tsx deleted file mode 100644 index c5294db..0000000 --- a/apps/web/utils/i18n/provider.tsx +++ /dev/null @@ -1,14 +0,0 @@ -/* eslint-disable canonical/id-match */ -import { timeZone } from './config'; -import { NextIntlClientProvider } from 'next-intl'; -import { getMessages } from 'next-intl/server'; -import { type PropsWithChildren } from 'react'; - -export async function I18nProvider({ children }: Readonly) { - const messages = await getMessages(); - return ( - - {children} - - ); -} diff --git a/apps/web/utils/i18n/types.ts b/apps/web/utils/i18n/types.ts deleted file mode 100644 index 30f3bff..0000000 --- a/apps/web/utils/i18n/types.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type locales } from './config'; - -type Locale = (typeof locales)[number]; - -export type { Locale }; diff --git a/packages/ui/package.json b/packages/ui/package.json index 222de60..2a831fc 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -40,6 +40,7 @@ "@radix-ui/react-select": "^2.1.4", "@radix-ui/react-slot": "^1.1.1", "@repo/typescript-config": "workspace:*", + "@tailwindcss/typography": "^0.5.19", "@types/react": "catalog:", "autoprefixer": "catalog:", "class-variance-authority": "^0.7.1", diff --git a/packages/ui/tailwind.config.ts b/packages/ui/tailwind.config.ts index 7c11487..1acfe4c 100644 --- a/packages/ui/tailwind.config.ts +++ b/packages/ui/tailwind.config.ts @@ -1,3 +1,4 @@ +import typography from '@tailwindcss/typography'; import { type Config } from 'tailwindcss'; import tailwindcssAnimate from 'tailwindcss-animate'; @@ -5,12 +6,12 @@ const config = { content: [ './pages/**/*.{ts,tsx}', './components/**/*.{ts,tsx}', - './app/**/*.{ts,tsx}', + './app/**/*.{ts,tsx,mdx}', './src/**/*.{ts,tsx}', '../../packages/ui/src/**/*.{ts,tsx}', ], darkMode: ['class'], - plugins: [tailwindcssAnimate], + plugins: [tailwindcssAnimate, typography], prefix: '', theme: { container: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e387522..aaaf858 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -293,6 +293,15 @@ importers: apps/web: dependencies: + '@mdx-js/loader': + specifier: ^3.1.1 + version: 3.1.1(webpack@5.97.1) + '@mdx-js/react': + specifier: ^3.1.1 + version: 3.1.1(@types/react@19.1.11)(react@19.1.1) + '@next/mdx': + specifier: ^15.5.5 + version: 15.5.5(@mdx-js/loader@3.1.1(webpack@5.97.1))(@mdx-js/react@3.1.1(@types/react@19.1.11)(react@19.1.1)) '@playwright/test': specifier: ^1.49.1 version: 1.49.1 @@ -317,6 +326,9 @@ importers: '@testing-library/react': specifier: ^16.1.0 version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.8(@types/react@19.1.11))(@types/react@19.1.11)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@types/mdx': + specifier: ^2.0.13 + version: 2.0.13 '@types/node': specifier: 'catalog:' version: 20.17.8 @@ -353,9 +365,6 @@ importers: next-auth: specifier: ^4.24.11 version: 4.24.11(next@15.5.0(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - next-intl: - specifier: ^3.26.0 - version: 3.26.0(next@15.5.0(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) next-themes: specifier: ^0.4.4 version: 0.4.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -512,6 +521,9 @@ importers: '@repo/typescript-config': specifier: workspace:* version: link:../typescript-config + '@tailwindcss/typography': + specifier: ^0.5.19 + version: 0.5.19(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.10)(typescript@5.8.3))) '@types/react': specifier: 'catalog:' version: 19.1.11 @@ -1578,21 +1590,6 @@ packages: resolution: {integrity: sha512-YF4gZ4sLYRQfctpUR2uhb5UyPUYY5n/bi3OaED/Q4awKjPjlaF8tInO3uja7pnLQcmLTURkZL7L9zxv2Z5NDwg==} engines: {node: '>=12.0.0', npm: '>=7.0.0'} - '@formatjs/ecma402-abstract@2.3.1': - resolution: {integrity: sha512-Ip9uV+/MpLXWRk03U/GzeJMuPeOXpJBSB5V1tjA6kJhvqssye5J5LoYLc7Z5IAHb7nR62sRoguzrFiVCP/hnzw==} - - '@formatjs/fast-memoize@2.2.5': - resolution: {integrity: sha512-6PoewUMrrcqxSoBXAOJDiW1m+AmkrAj0RiXnOMD59GRaswjXhm3MDhgepXPBgonc09oSirAJTsAggzAGQf6A6g==} - - '@formatjs/icu-messageformat-parser@2.9.7': - resolution: {integrity: sha512-cuEHyRM5VqLQobANOjtjlgU7+qmk9Q3fDQuBiRRJ3+Wp3ZoZhpUPtUfuimZXsir6SaI2TaAJ+SLo9vLnV5QcbA==} - - '@formatjs/icu-skeleton-parser@1.8.11': - resolution: {integrity: sha512-8LlHHE/yL/zVJZHAX3pbKaCjZKmBIO6aJY1mkVh4RMSEu/2WRZ4Ysvv3kKXJ9M8RJLBHdnk1/dUQFdod1Dt7Dw==} - - '@formatjs/intl-localematcher@0.5.9': - resolution: {integrity: sha512-8zkGu/sv5euxbjfZ/xmklqLyDGQSxsLqg8XOq88JW3cmJtzhCP8EtSJXlaKZnVO4beEaoiT9wj4eIoCQ9smwxA==} - '@grammyjs/auto-chat-action@0.1.1': resolution: {integrity: sha512-70Jdy+keIri4452tluaZpKtHag5gD8pNczoXqajsnsx7pJC5wg3DAQ5unpt0xJb8KsVBAGWuJb298SBl3TVecg==} peerDependencies: @@ -2253,6 +2250,23 @@ packages: resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} + '@mdx-js/loader@3.1.1': + resolution: {integrity: sha512-0TTacJyZ9mDmY+VefuthVshaNIyCGZHJG2fMnGaDttCt8HmjUF7SizlHJpaCDoGnN635nK1wpzfpx/Xx5S4WnQ==} + peerDependencies: + webpack: '>=5' + peerDependenciesMeta: + webpack: + optional: true + + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + '@mswjs/interceptors@0.37.6': resolution: {integrity: sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==} engines: {node: '>=18'} @@ -2363,6 +2377,17 @@ packages: '@next/eslint-plugin-next@15.0.3': resolution: {integrity: sha512-3Ln/nHq2V+v8uIaxCR6YfYo7ceRgZNXfTd3yW1ukTaFbO+/I8jNakrjYWODvG9BuR2v5kgVtH/C8r0i11quOgw==} + '@next/mdx@15.5.5': + resolution: {integrity: sha512-+niIZwo1ObCj8YJCR31FwF3gUXnyQZTnrrt5DnJGF/nj6yW7VE0hhmhT2yWW244MuBKqL3SbXjaFX+GqWOPXfA==} + peerDependencies: + '@mdx-js/loader': '>=0.15.0' + '@mdx-js/react': '>=0.15.0' + peerDependenciesMeta: + '@mdx-js/loader': + optional: true + '@mdx-js/react': + optional: true + '@next/swc-darwin-arm64@15.5.0': resolution: {integrity: sha512-v7Jj9iqC6enxIRBIScD/o0lH7QKvSxq2LM8UTyqJi+S2w2QzhMYjven4vgu/RzgsdtdbpkyCxBTzHl/gN5rTRg==} engines: {node: '>= 10'} @@ -3117,6 +3142,11 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tailwindcss/typography@0.5.19': + resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' + '@tanstack/query-core@5.64.1': resolution: {integrity: sha512-978Wx4Wl4UJZbmvU/rkaM9cQtXXrbhK0lsz/UZhYIbyKYA8E4LdomTwyh2GHZ4oU0BKKoDH4YlKk2VscCUgNmg==} @@ -3217,18 +3247,27 @@ packages: '@types/cookiejar@2.1.5': resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -3250,9 +3289,18 @@ packages: '@types/jsonwebtoken@9.0.7': resolution: {integrity: sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + '@types/methods@1.1.4': resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node@20.17.8': resolution: {integrity: sha512-ahz2g6/oqbKalW9sPv6L2iRbhLnojxjYWspAqhjvqSWBgGebEJT5GvRmk0QXPj3sbC6rU0GTQjPLQkmR8CObvA==} @@ -3288,6 +3336,12 @@ packages: '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/ws@8.5.13': resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} @@ -3348,6 +3402,9 @@ packages: resolution: {integrity: sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@unrs/resolver-binding-android-arm-eabi@1.10.1': resolution: {integrity: sha512-zohDKXT1Ok0yhbVGff4YAg9HUs5ietG5GpvJBPFSApZnGe7uf2cd26DRhKZbn0Be6xHUZrSzP+RAgMmzyc71EA==} cpu: [arm] @@ -3828,6 +3885,10 @@ packages: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -3901,6 +3962,9 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -4028,6 +4092,9 @@ packages: capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@5.1.2: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} @@ -4058,6 +4125,18 @@ packages: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -4157,6 +4236,9 @@ packages: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + collect-v8-coverage@1.0.2: resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} @@ -4181,6 +4263,9 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} @@ -4402,6 +4487,9 @@ packages: decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + dedent@1.7.0: resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} peerDependencies: @@ -4475,6 +4563,9 @@ packages: detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} @@ -4636,6 +4727,12 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + + esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -5000,6 +5097,24 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -5050,6 +5165,9 @@ packages: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -5458,6 +5576,15 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} @@ -5556,6 +5683,9 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + inquirer@8.2.6: resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} engines: {node: '>=12.0.0'} @@ -5568,9 +5698,6 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} - intl-messageformat@10.7.10: - resolution: {integrity: sha512-hp7iejCBiJdW3zmOe18FdlJu8U/JsADSDiBPQhfdSeI8B9POtvPRvPh3nMlvhYayGMKLv6maldhR7y3Pf1vkpw==} - invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -5590,6 +5717,12 @@ packages: resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} engines: {node: '>=0.10.0'} + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -5639,6 +5772,9 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -5674,6 +5810,9 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} @@ -5702,6 +5841,10 @@ packages: is-obj-prop@1.0.0: resolution: {integrity: sha512-5Idb61slRlJlsAzi0Wsfwbp+zZY+9LXKUAZpvT/1ySw+NxKLRWfa0Bzj+wXI3fX5O9hiddm5c3DAaRSNP/yl2w==} + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -6227,6 +6370,9 @@ packages: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -6287,10 +6433,41 @@ packages: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -6325,6 +6502,90 @@ packages: micro-spelling-correcter@1.1.1: resolution: {integrity: sha512-lkJ3Rj/mtjlRcHk6YyCbvZhyWTOzdBvTHsxMmZSk5jxN1YyVSQ+JETAom55mdzfcyDrY/49Z7UCW760BK30crg==} + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -6455,10 +6716,6 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - negotiator@1.0.0: - resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} - engines: {node: '>= 0.6'} - neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -6476,12 +6733,6 @@ packages: nodemailer: optional: true - next-intl@3.26.0: - resolution: {integrity: sha512-gkamnHIANQzeW8xpTGRxd0xiOCztQhY8GDp79fgdlw0GioqrjTEfSWLhHkgaAtvHRbuh/ByJdwiEY5eNK9bUSQ==} - peerDependencies: - next: ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 - next-themes@0.4.4: resolution: {integrity: sha512-LDQ2qIOJF0VnuVrrMSMLrWGjRMkq+0mpgl6e0juCLqdJ+oo8Q84JRWT6Wh11VDQKkMMe+dVzDKLWs5n87T+PkQ==} peerDependencies: @@ -6701,6 +6952,9 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + parse-filepath@1.0.2: resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} engines: {node: '>=0.8'} @@ -6903,6 +7157,10 @@ packages: peerDependencies: postcss: ^8.2.14 + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -6977,6 +7235,9 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + proto-props@2.0.0: resolution: {integrity: sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ==} engines: {node: '>=4'} @@ -7149,6 +7410,20 @@ packages: resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} engines: {node: '>= 4'} + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + + recma-jsx@1.0.1: + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} engines: {node: '>=4'} @@ -7198,9 +7473,21 @@ packages: react: optional: true + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + relay-runtime@12.0.0: resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + remedial@1.0.8: resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==} @@ -7534,6 +7821,9 @@ packages: engines: {node: '>= 8'} deprecated: The work that was done in this beta branch won't be included in future versions + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -7646,6 +7936,9 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -7686,6 +7979,12 @@ packages: resolution: {integrity: sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==} engines: {node: '>=18'} + style-to-js@1.1.18: + resolution: {integrity: sha512-JFPn62D4kJaPTnhFUI244MThx+FEGbi+9dw1b9yBBQ+1CZpV7QAT8kUtJ7b7EUNdHajjF/0x8fT+16oLJoojLg==} + + style-to-object@1.0.11: + resolution: {integrity: sha512-5A560JmXr7wDyGLK12Nq/EYS38VkGlglVzkis1JEdbGWSnbQIEhZzTJhzURXN5/8WwwFCs/f/VVcmkTppbXLow==} + styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} @@ -7888,6 +8187,12 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-api-utils@2.0.1: resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} engines: {node: '>=18.12'} @@ -8121,6 +8426,27 @@ packages: undici-types@7.8.0: resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} @@ -8186,11 +8512,6 @@ packages: peerDependencies: react: '*' - use-intl@3.26.0: - resolution: {integrity: sha512-HGXmpjGlbEv1uFZPfm557LK8p/hv0pKF9UwnrJeHUTxQx6bUGzMgpmPRLCVY3zkr7hfjy4LPwQJfk4Fhnn+dIg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 - use-sidecar@1.1.3: resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} @@ -8236,6 +8557,12 @@ packages: react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + vite-node@2.1.8: resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -8591,6 +8918,9 @@ packages: use-sync-external-store: optional: true + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + snapshots: '@alloc/quick-lru@5.2.0': {} @@ -9474,32 +9804,6 @@ snapshots: '@fluent/langneg@0.6.2': {} - '@formatjs/ecma402-abstract@2.3.1': - dependencies: - '@formatjs/fast-memoize': 2.2.5 - '@formatjs/intl-localematcher': 0.5.9 - decimal.js: 10.4.3 - tslib: 2.8.1 - - '@formatjs/fast-memoize@2.2.5': - dependencies: - tslib: 2.8.1 - - '@formatjs/icu-messageformat-parser@2.9.7': - dependencies: - '@formatjs/ecma402-abstract': 2.3.1 - '@formatjs/icu-skeleton-parser': 1.8.11 - tslib: 2.8.1 - - '@formatjs/icu-skeleton-parser@1.8.11': - dependencies: - '@formatjs/ecma402-abstract': 2.3.1 - tslib: 2.8.1 - - '@formatjs/intl-localematcher@0.5.9': - dependencies: - tslib: 2.8.1 - '@grammyjs/auto-chat-action@0.1.1(grammy@1.38.1)': dependencies: grammy: 1.38.1 @@ -10584,6 +10888,51 @@ snapshots: '@lukeed/csprng@1.1.0': {} + '@mdx-js/loader@3.1.1(webpack@5.97.1)': + dependencies: + '@mdx-js/mdx': 3.1.1 + source-map: 0.7.6 + optionalDependencies: + webpack: 5.97.1 + transitivePeerDependencies: + - supports-color + + '@mdx-js/mdx@3.1.1': + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + acorn: 8.15.0 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.15.0) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + source-map: 0.7.6 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@mdx-js/react@3.1.1(@types/react@19.1.11)(react@19.1.1)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 19.1.11 + react: 19.1.1 + '@mswjs/interceptors@0.37.6': dependencies: '@open-draft/deferred-promise': 2.2.0 @@ -10722,6 +11071,13 @@ snapshots: dependencies: fast-glob: 3.3.1 + '@next/mdx@15.5.5(@mdx-js/loader@3.1.1(webpack@5.97.1))(@mdx-js/react@3.1.1(@types/react@19.1.11)(react@19.1.1))': + dependencies: + source-map: 0.7.6 + optionalDependencies: + '@mdx-js/loader': 3.1.1(webpack@5.97.1) + '@mdx-js/react': 3.1.1(@types/react@19.1.11)(react@19.1.1) + '@next/swc-darwin-arm64@15.5.0': optional: true @@ -11380,6 +11736,11 @@ snapshots: dependencies: tslib: 2.8.1 + '@tailwindcss/typography@0.5.19(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@24.0.10)(typescript@5.8.3)))': + dependencies: + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@24.0.10)(typescript@5.8.3)) + '@tanstack/query-core@5.64.1': {} '@tanstack/react-query@5.64.1(react@19.1.1)': @@ -11498,6 +11859,10 @@ snapshots: '@types/cookiejar@2.1.5': {} + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 @@ -11508,12 +11873,20 @@ snapshots: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.8 + '@types/estree@1.0.8': {} '@types/graceful-fs@4.1.9': dependencies: '@types/node': 24.0.10 + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/istanbul-lib-coverage@2.0.6': {} '@types/istanbul-lib-report@3.0.3': @@ -11537,8 +11910,16 @@ snapshots: dependencies: '@types/node': 24.0.10 + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdx@2.0.13': {} + '@types/methods@1.1.4': {} + '@types/ms@2.1.0': {} + '@types/node@20.17.8': dependencies: undici-types: 6.19.8 @@ -11581,6 +11962,10 @@ snapshots: '@types/tough-cookie@4.0.5': optional: true + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + '@types/ws@8.5.13': dependencies: '@types/node': 24.0.10 @@ -11670,6 +12055,8 @@ snapshots: '@typescript-eslint/types': 8.25.0 eslint-visitor-keys: 4.2.0 + '@ungap/structured-clone@1.3.0': {} + '@unrs/resolver-binding-android-arm-eabi@1.10.1': optional: true @@ -12013,6 +12400,10 @@ snapshots: dependencies: acorn: 8.14.0 + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + acorn-walk@8.3.4: dependencies: acorn: 8.14.0 @@ -12204,6 +12595,8 @@ snapshots: astral-regex@2.0.0: {} + astring@1.9.0: {} + asynckit@0.4.0: {} atomic-sleep@1.0.0: {} @@ -12333,6 +12726,8 @@ snapshots: babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.2.0(@babel/core@7.26.0) + bail@2.0.2: {} + balanced-match@1.0.2: {} base64-js@1.5.1: {} @@ -12476,6 +12871,8 @@ snapshots: tslib: 2.8.1 upper-case-first: 2.0.2 + ccount@2.0.1: {} + chai@5.1.2: dependencies: assertion-error: 2.0.1 @@ -12531,6 +12928,14 @@ snapshots: char-regex@1.0.2: {} + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + chardet@0.7.0: {} check-error@2.1.1: {} @@ -12621,6 +13026,8 @@ snapshots: co@4.6.0: {} + collapse-white-space@2.1.0: {} + collect-v8-coverage@1.0.2: {} color-convert@2.0.1: @@ -12647,6 +13054,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} + commander@12.1.0: {} commander@13.1.0: {} @@ -12864,6 +13273,10 @@ snapshots: decimal.js@10.4.3: {} + decode-named-character-reference@1.2.0: + dependencies: + character-entities: 2.0.2 + dedent@1.7.0: {} deep-eql@5.0.2: {} @@ -12911,6 +13324,10 @@ snapshots: detect-node-es@1.1.0: {} + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + dezalgo@1.0.4: dependencies: asap: 2.0.6 @@ -13115,6 +13532,20 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 + esast-util-from-estree@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + + esast-util-from-js@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + acorn: 8.15.0 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.3 + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -13694,8 +14125,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -13714,6 +14145,35 @@ snapshots: estraverse@5.3.0: {} + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.8 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-scope@1.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.6 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.8 @@ -13802,6 +14262,8 @@ snapshots: transitivePeerDependencies: - supports-color + extend@3.0.2: {} + external-editor@3.1.0: dependencies: chardet: 0.7.0 @@ -14305,6 +14767,51 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-to-estree@3.1.3: + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.18 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.18 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + header-case@2.0.4: dependencies: capital-case: 1.0.4 @@ -14394,6 +14901,8 @@ snapshots: inherits@2.0.4: {} + inline-style-parser@0.2.4: {} + inquirer@8.2.6: dependencies: ansi-escapes: 4.3.2 @@ -14436,13 +14945,6 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 - intl-messageformat@10.7.10: - dependencies: - '@formatjs/ecma402-abstract': 2.3.1 - '@formatjs/fast-memoize': 2.2.5 - '@formatjs/icu-messageformat-parser': 2.9.7 - tslib: 2.8.1 - invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -14484,6 +14986,13 @@ snapshots: is-relative: 1.0.0 is-windows: 1.0.2 + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -14537,6 +15046,8 @@ snapshots: call-bound: 1.0.3 has-tostringtag: 1.0.2 + is-decimal@2.0.1: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.0: @@ -14566,6 +15077,8 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-hexadecimal@2.0.1: {} + is-interactive@1.0.0: {} is-js-type@2.0.0: @@ -14593,6 +15106,8 @@ snapshots: lowercase-keys: 1.0.1 obj-props: 1.4.0 + is-plain-obj@4.1.0: {} + is-potential-custom-element-name@1.0.1: {} is-proto-prop@2.0.0: @@ -15232,7 +15747,7 @@ snapshots: jsonc-eslint-parser@2.4.0: dependencies: - acorn: 8.14.0 + acorn: 8.15.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 semver: 7.7.2 @@ -15444,6 +15959,8 @@ snapshots: strip-ansi: 7.1.0 wrap-ansi: 9.0.0 + longest-streak@3.1.0: {} + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -15498,8 +16015,109 @@ snapshots: map-cache@0.2.2: {} + markdown-extensions@2.0.0: {} + math-intrinsics@1.1.0: {} + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + media-typer@0.3.0: {} memfs@3.5.3: @@ -15520,6 +16138,212 @@ snapshots: micro-spelling-correcter@1.1.1: {} + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-expression@3.0.1: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-jsx@3.0.2: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.2.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.8 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.1 + decode-named-character-reference: 1.2.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -15569,7 +16393,7 @@ snapshots: mlly@1.7.4: dependencies: - acorn: 8.14.0 + acorn: 8.15.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.1 @@ -15669,8 +16493,6 @@ snapshots: negotiator@0.6.3: {} - negotiator@1.0.0: {} - neo-async@2.6.2: {} next-auth@4.24.11(next@15.5.0(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1): @@ -15688,14 +16510,6 @@ snapshots: react-dom: 19.1.1(react@19.1.1) uuid: 8.3.2 - next-intl@3.26.0(next@15.5.0(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1): - dependencies: - '@formatjs/intl-localematcher': 0.5.9 - negotiator: 1.0.0 - next: 15.5.0(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - react: 19.1.1 - use-intl: 3.26.0(react@19.1.1) - next-themes@0.4.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: react: 19.1.1 @@ -15923,6 +16737,16 @@ snapshots: dependencies: callsites: 3.1.0 + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.2.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + parse-filepath@1.0.2: dependencies: is-absolute: 1.0.0 @@ -16129,6 +16953,11 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 6.1.2 + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -16206,6 +17035,8 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 + property-information@7.1.0: {} + proto-props@2.0.0: {} proxy-addr@2.0.7: @@ -16368,6 +17199,35 @@ snapshots: tiny-invariant: 1.3.3 tslib: 2.8.1 + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + + recma-jsx@1.0.1(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + + recma-parse@1.0.0: + dependencies: + '@types/estree': 1.0.8 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 + + recma-stringify@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 + redis-errors@1.2.0: {} redis-parser@3.0.0: @@ -16416,6 +17276,14 @@ snapshots: '@types/react': 19.1.11 react: 19.1.1 + rehype-recma@1.0.0: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + hast-util-to-estree: 3.1.3 + transitivePeerDependencies: + - supports-color + relay-runtime@12.0.0: dependencies: '@babel/runtime': 7.26.0 @@ -16424,6 +17292,30 @@ snapshots: transitivePeerDependencies: - encoding + remark-mdx@3.1.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 + remedial@1.0.8: {} remove-trailing-separator@1.1.0: {} @@ -16811,6 +17703,8 @@ snapshots: dependencies: whatwg-url: 7.1.0 + space-separated-tokens@2.0.2: {} + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -16945,6 +17839,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -16973,6 +17872,14 @@ snapshots: dependencies: '@tokenizer/token': 0.3.0 + style-to-js@1.1.18: + dependencies: + style-to-object: 1.0.11 + + style-to-object@1.0.11: + dependencies: + inline-style-parser: 0.2.4 + styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.1.1): dependencies: client-only: 0.0.1 @@ -17210,6 +18117,10 @@ snapshots: tree-kill@1.2.2: {} + trim-lines@3.0.1: {} + + trough@2.2.0: {} + ts-api-utils@2.0.1(typescript@5.8.3): dependencies: typescript: 5.8.3 @@ -17459,6 +18370,43 @@ snapshots: undici-types@7.8.0: {} + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + universalify@0.2.0: optional: true @@ -17539,12 +18487,6 @@ snapshots: dependencies: react: 19.1.1 - use-intl@3.26.0(react@19.1.1): - dependencies: - '@formatjs/fast-memoize': 2.2.5 - intl-messageformat: 10.7.10 - react: 19.1.1 - use-sidecar@1.1.3(@types/react@19.1.11)(react@19.1.1): dependencies: detect-node-es: 1.1.0 @@ -17585,6 +18527,16 @@ snapshots: - '@types/react' - '@types/react-dom' + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + vite-node@2.1.8(@types/node@20.17.8)(terser@5.44.0): dependencies: cac: 6.7.14 @@ -17996,3 +18948,5 @@ snapshots: optionalDependencies: '@types/react': 19.1.11 react: 19.1.1 + + zwitch@2.0.4: {}