diff --git a/.claude/skills/keepsimple-style/SKILL.md b/.claude/skills/keepsimple-style/SKILL.md
new file mode 100644
index 0000000..2af34e2
--- /dev/null
+++ b/.claude/skills/keepsimple-style/SKILL.md
@@ -0,0 +1,1144 @@
+---
+name: keepsimple-style
+description: Apply the "keepsimple" design language — a Japanese wabi-sabi meets Western editorial aesthetic — to any frontend component, page, or UI. Use this skill whenever the user references the keepsimple brand, asks for a Japanese-minimalist web design with paper textures and kanji watermarks, wants the cream/terracotta/editorial aesthetic, or uploads screenshots of the keepsimple site. Also trigger when the user says "that design style from the screenshots", "the contributors page style", or "Japanese editorial minimalism". This skill produces HTML/CSS/JS or React code with the precise visual system including paper textures, faded kanji, crimson accents, and the wabi-sabi card grid.
+---
+
+# keepsimple Design Style
+
+A precise replication guide for the **keepsimple** visual language — Japanese wabi-sabi minimalism fused with Western editorial typography.
+
+## Core Aesthetic Identity
+
+**Mood**: Calm, scholarly, timeless. Like a well-worn Japanese notebook used by a Western academic.
+**Key tension**: Eastern restraint + Western editorial structure.
+**Signature**: Faded kanji watermarks on cards, paper texture overlay, sparse crimson accents.
+
+---
+
+## Color System
+
+```css
+:root {
+ /* Backgrounds — card bg must be noticeably lighter than base to create elevation without shadows */
+ --bg-base: #ede8df; /* warm parchment — page background */
+ --bg-card: #f5f1ea; /* lighter — card surface, visually "above" bg */
+ --bg-card-active: #faf6ef; /* active/highlighted card */
+ --bg-hero: #f2ede5; /* featured banner background */
+
+ /* Text — all values chosen for sufficient contrast (≥4.5:1 on card bg for body text) */
+ --text-primary: #1c1c1a; /* near-black, warm — WCAG AAA on all bg */
+ --text-secondary: #5c5650; /* warm mid-gray — body text, descriptions, ≥4.5:1 on card bg */
+ --text-tertiary: #8a8480; /* lighter — captions, meta, ≥3:1 on card bg */
+
+ /* Accent */
+ --accent: #b83232; /* muted crimson — the ONE color, use sparingly */
+ --accent-light: #d4504a; /* slightly brighter variant */
+ --accent-kanji: rgba(184, 50, 50, 0.15); /* faded kanji on inactive cards */
+ --accent-kanji-active: rgba(
+ 184,
+ 50,
+ 50,
+ 0.5
+ ); /* kanji on active/highlighted cards */
+
+ /* Borders & Dividers */
+ --border: #ddd7ce; /* barely-there card borders */
+ --border-strong: #c8c0b5; /* section dividers, rule lines */
+ --divider-accent: #b83232; /* red rule lines under section headers */
+}
+```
+
+**Rules:**
+
+- Red (`--accent`) appears on: active card kanji, active card borders, section rule lines, bullet diamonds, link underlines, quote marks, button outlines
+- Never use red for large fills — accent only, always sparse
+- All grays must have warm undertones (never cool/blue-gray)
+- Card elevation comes ONLY from the lighter bg color — **never use box-shadow**
+- Contrast: `--text-secondary` must be ≥4.5:1 on `--bg-card`; `--text-tertiary` must be ≥3:1
+
+---
+
+## Typography
+
+```css
+/* Import */
+@import url('https://fonts.googleapis.com/css2?family=Aboreto&family=Source+Serif+4:ital,opsz,wght@0,8..60,400;0,8..60,500;0,8..60,600;1,8..60,400&family=Jost:wght@300;400;500;600&family=Yuji+Syuku&display=swap');
+
+:root {
+ --font-display: 'Aboreto', Georgia, serif; /* page titles, card names */
+ --font-body: 'Source Serif 4', Georgia, serif; /* body text, descriptions */
+ --font-ui: 'Jost', system-ui, sans-serif; /* nav, labels, UI chrome */
+ --font-japanese: 'Yuji Syuku', serif; /* kanji watermarks */
+}
+```
+
+If any of these fonts are unavailable (e.g. in a React artifact without external imports), ask the user for the font files or find and apply suitable alternatives.
+
+**Type Scale (base = 16px = 1rem):**
+
+| Token | Size | Usage |
+| ------------- | ----------------------------- | ------------------------------------------------------------------------ |
+| `--text-base` | `1rem` (16px) | Body text, descriptions — **minimum for content** |
+| `--text-sm` | `0.875rem` (14px) | Nav links, compact UI — **absolute minimum** |
+| `--text-caps` | `0.75rem` (12px) | **ONLY for all-caps labels** (section headers, card roles, pill buttons) |
+| `--text-lg` | `1.125rem` (18px) | Slightly emphasized body |
+| `--text-xl` | `1.25rem` (20px) | Panel headings |
+| `--text-2xl` | `1.5rem` (24px) | Stat numbers, sub-titles |
+| `--text-3xl` | `clamp(1.75rem, 3vw, 2.5rem)` | Page titles |
+
+**Minimum size rules:**
+
+- No text smaller than 14px (0.875rem) anywhere
+- All body and content text must be at least 16px (1rem)
+- 12px (0.75rem) is ONLY allowed for uppercase/all-caps labels and section headers
+- Page titles and large text scale from the 16px base using the tokens above
+
+```css
+:root {
+ --text-base: 1rem;
+ --text-sm: 0.875rem;
+ --text-caps: 0.75rem;
+ --text-lg: 1.125rem;
+ --text-xl: 1.25rem;
+ --text-2xl: 1.5rem;
+ --text-3xl: clamp(1.75rem, 3vw, 2.5rem);
+}
+```
+
+```css
+/* Page title (e.g. "CONTRIBUTORS") */
+.page-title {
+ font-family: var(--font-display);
+ font-size: var(--text-3xl);
+ font-weight: 400;
+ letter-spacing: 0.2em;
+ text-transform: uppercase;
+ color: var(--text-primary);
+}
+
+/* Section label (e.g. "HEROES") — all-caps, so 12px is allowed */
+.section-label {
+ font-family: var(--font-ui);
+ font-size: var(--text-caps);
+ font-weight: 500;
+ letter-spacing: 0.2em;
+ text-transform: uppercase;
+ color: var(--text-primary);
+}
+
+/* Contributor name */
+.card-name {
+ font-family: var(--font-display);
+ font-size: var(--text-base);
+ font-weight: 400;
+ color: var(--text-primary);
+ letter-spacing: 0.05em;
+ position: relative;
+ z-index: 1;
+}
+
+/* Role / subtitle — all-caps, so 12px is allowed */
+.card-role {
+ font-family: var(--font-ui);
+ font-size: var(--text-caps);
+ font-weight: 400;
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ color: var(--text-tertiary);
+ text-align: center;
+ line-height: 1.5;
+ margin-top: 0.25rem;
+ position: relative;
+ z-index: 1;
+}
+
+/* Body text */
+.body-text {
+ font-family: var(--font-body);
+ font-size: var(--text-base);
+ line-height: 1.75;
+ color: var(--text-secondary);
+}
+```
+
+---
+
+## Texture & Background
+
+The paper texture is a **user-provided asset** — a PNG file with built-in alpha transparency. It must NOT be generated via SVG filters or CSS noise.
+
+**IMPORTANT:** If the texture file is not already available in the project, ask the user for the "background paper texture" PNG file before applying it. The file is already semi-transparent — do NOT add opacity to the page-level texture.
+
+The texture is applied at **two levels**:
+
+### 1. Page-level texture (behind everything)
+
+```css
+body::before {
+ content: '';
+ position: fixed;
+ inset: 0;
+ background-image: url('path/to/landing-bg.png');
+ background-repeat: repeat;
+ background-size: 400px auto;
+ pointer-events: none;
+ z-index: 1;
+ /* No opacity — the PNG is already semi-transparent */
+}
+```
+
+### 2. Card-level texture (on each elevated surface)
+
+Cards and panels sit above the page texture (`z-index: 2`) and get their own texture overlay via `::after`:
+
+```css
+/* All elevated surfaces share this texture pattern */
+.contributor-card,
+.hero-card,
+.testimonial,
+.detail-panel,
+.sidebar-card,
+.stat-card {
+ position: relative;
+ z-index: 2;
+}
+
+.contributor-card::after,
+.hero-card::after,
+.testimonial::after,
+.detail-panel::after,
+.sidebar-card::after,
+.stat-card::after {
+ content: '';
+ position: absolute;
+ inset: 0;
+ background-image: url('path/to/landing-bg.png');
+ background-repeat: repeat;
+ background-size: 400px auto;
+ pointer-events: none;
+ z-index: 0;
+ opacity: 0.75; /* slightly softer on cards than on page bg */
+}
+```
+
+**Z-index layering:**
+
+- `body::before` (page texture): `z-index: 1`
+- Cards/panels: `z-index: 2` (above page texture)
+- Card `::after` (card texture): `z-index: 0` (within card stacking context, behind card content)
+- Card inner content (text, kanji, etc.): `z-index: 1` (within card stacking context, above card texture)
+
+All text and interactive elements inside textured containers must have `position: relative; z-index: 1` to sit above the card's `::after` texture.
+
+---
+
+## Card Component
+
+The card is the core atom. It has a faded kanji watermark, name, and role.
+
+```html
+
+
ア
+
Artem
+
Engineering lead [2020 - 2022]
+
+```
+
+```css
+.contributor-card {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: flex-end;
+ padding: 1.5rem 1rem 1.25rem;
+ min-height: 120px;
+ background: var(--bg-card);
+ border: 1px solid var(--border);
+ overflow: hidden;
+ cursor: pointer;
+ transition:
+ border-color 0.2s ease,
+ background 0.2s ease;
+ /* NO box-shadow — elevation comes from bg color difference only */
+}
+
+.contributor-card:hover,
+.contributor-card[data-active='true'] {
+ border-color: var(--accent);
+ background: var(--bg-card-active);
+}
+
+/* The kanji watermark */
+.kanji-bg {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ font-family: var(--font-japanese), serif;
+ font-size: 3.5rem;
+ color: var(--accent-kanji);
+ line-height: 1;
+ user-select: none;
+ transition: color 0.2s ease;
+ white-space: nowrap;
+}
+
+.contributor-card:hover .kanji-bg,
+.contributor-card[data-active='true'] .kanji-bg {
+ color: var(--accent-kanji-active);
+}
+
+/* Active state: name in red */
+.contributor-card[data-active='true'] .card-name {
+ color: var(--accent);
+}
+```
+
+**Card Grid:**
+
+```css
+.cards-grid {
+ display: grid;
+ grid-template-columns: repeat(5, 1fr);
+ gap: 0; /* no gap — cards share borders */
+}
+
+/* Cards share borders (collapse border trick) */
+.contributor-card {
+ margin: -0.5px; /* or use outline instead of border */
+}
+
+/* Responsive */
+@media (max-width: 768px) {
+ .cards-grid {
+ grid-template-columns: repeat(3, 1fr);
+ }
+}
+@media (max-width: 480px) {
+ .cards-grid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+}
+```
+
+---
+
+## Section Header Pattern
+
+```html
+
+```
+
+```css
+.section-header {
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+ margin-bottom: 1.5rem;
+}
+
+.section-rule {
+ flex: 1;
+ height: 1px;
+ background: var(--border-strong);
+}
+
+.pill-button {
+ font-family: var(--font-ui);
+ font-size: var(--text-caps);
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--text-primary);
+ background: transparent;
+ border: 1px solid var(--border-strong);
+ padding: 0.4rem 1rem;
+ cursor: pointer;
+ transition:
+ border-color 0.2s,
+ color 0.2s;
+}
+
+.pill-button:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+}
+```
+
+---
+
+## Page Title with Diamond Bullets
+
+```html
+
+ ◇
+
Contributors
+ ◇
+
+This project is the result of...
+```
+
+```css
+.page-heading {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 1rem;
+ margin-bottom: 1rem;
+}
+
+.diamond {
+ color: var(--accent);
+ font-size: 1.5rem;
+ line-height: 1;
+}
+
+.page-subtitle {
+ font-family: var(--font-body);
+ font-size: var(--text-base);
+ color: var(--text-secondary);
+ text-align: center;
+ max-width: 520px;
+ margin: 0 auto;
+ line-height: 1.75;
+}
+```
+
+---
+
+## Featured Hero / Slideshow Card
+
+```html
+
+```
+
+```css
+.hero-card {
+ position: relative;
+ display: flex;
+ align-items: center;
+ background: var(--bg-card);
+ border: 1px solid var(--border);
+ min-height: 240px;
+ padding: 2.5rem 3.5rem;
+ overflow: hidden;
+}
+
+.hero-content {
+ flex: 1;
+ position: relative;
+ z-index: 1;
+}
+
+.hero-name {
+ font-family: var(--font-display);
+ font-size: clamp(1.5rem, 3vw, 2.25rem);
+ font-weight: 400;
+ margin-bottom: 1.25rem;
+ letter-spacing: 0.08em;
+}
+
+.meta-label {
+ font-family: var(--font-body);
+ font-size: var(--text-base);
+ color: var(--text-secondary);
+}
+
+.hero-kanji {
+ position: absolute;
+ right: 3rem;
+ top: 50%;
+ transform: translateY(-50%);
+ font-family: var(--font-japanese);
+ font-size: 8rem;
+ color: var(--accent-kanji);
+ user-select: none;
+ line-height: 1;
+ z-index: 1;
+}
+
+.nav-arrow {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ background: none;
+ border: none;
+ font-size: 1.75rem;
+ color: var(--text-tertiary);
+ cursor: pointer;
+ padding: 0.5rem;
+ z-index: 1;
+}
+.nav-arrow.left {
+ left: 0.75rem;
+}
+.nav-arrow.right {
+ right: 0.75rem;
+}
+```
+
+---
+
+## Navigation Bar
+
+```css
+.navbar {
+ display: flex;
+ align-items: center;
+ padding: 0 2rem;
+ height: 52px;
+ background: var(--bg-base);
+ border-bottom: 1px solid var(--border);
+ position: sticky;
+ top: 0;
+ z-index: 100;
+}
+
+.nav-logo {
+ font-family: var(--font-ui);
+ font-size: var(--text-sm);
+ font-weight: 400;
+ letter-spacing: 0.02em;
+ color: var(--text-primary);
+ margin-right: auto;
+}
+
+.nav-logo strong {
+ font-weight: 600;
+}
+
+.nav-links {
+ display: flex;
+ gap: 1.75rem;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.nav-link {
+ font-family: var(--font-ui);
+ font-size: var(--text-sm);
+ font-weight: 400;
+ color: var(--text-secondary);
+ text-decoration: none;
+ transition: color 0.15s;
+}
+
+.nav-link:hover,
+.nav-link.active {
+ color: var(--text-primary);
+}
+.nav-link.active {
+ text-decoration: underline;
+ text-underline-offset: 3px;
+}
+```
+
+---
+
+## Quote / Testimonial Block
+
+```html
+
+
+ This is the first-of-its-kind, biggest library of nudging strategies based
+ on cognitive biases.
+
+
+
雅
+
+
Dan Ariely
+
+ Professor of psychology and behavioral economics at Duke University
+
+
+
+
+```
+
+```css
+.testimonial {
+ background: var(--bg-card);
+ border: 1px solid var(--border);
+ padding: 2rem 2rem 1.5rem;
+ position: relative;
+}
+
+.testimonial::before {
+ content: '\201C';
+ font-family: var(--font-display);
+ font-size: 2.5rem;
+ color: var(--accent);
+ line-height: 1;
+ position: absolute;
+ top: 0.75rem;
+ left: 1.25rem;
+ z-index: 1;
+}
+
+.testimonial-text {
+ font-family: var(--font-body);
+ font-size: var(--text-base);
+ color: var(--text-secondary);
+ line-height: 1.75;
+ margin-top: 1rem;
+ margin-left: 0.5rem;
+ position: relative;
+ z-index: 1;
+}
+
+.author-avatar {
+ width: 42px;
+ height: 42px;
+ border-radius: 50%;
+ background: var(--bg-base);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-family: var(--font-japanese);
+ font-size: 1.25rem;
+ color: var(--accent);
+}
+
+.author-name {
+ font-family: var(--font-ui);
+ font-size: var(--text-caps);
+ font-weight: 600;
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ color: var(--text-primary);
+}
+
+.author-title {
+ font-family: var(--font-body);
+ font-size: var(--text-sm);
+ color: var(--text-secondary);
+ line-height: 1.5;
+}
+
+.testimonial-author {
+ display: flex;
+ align-items: center;
+ gap: 0.75rem;
+ margin-top: 1.25rem;
+ padding-top: 1rem;
+ border-top: 1px solid var(--border);
+ position: relative;
+ z-index: 1;
+}
+```
+
+---
+
+## Red Accent Divider
+
+Used before section headings like "UX Core", "Company Management":
+
+```css
+.accent-rule {
+ width: 2.5rem;
+ height: 2px;
+ background: var(--accent);
+ margin-bottom: 0.75rem;
+}
+```
+
+---
+
+## Layout Wrapper
+
+```css
+.page-wrapper {
+ max-width: 960px;
+ margin: 0 auto;
+ padding: 0 2rem;
+}
+
+.section {
+ padding: 3.5rem 0;
+}
+
+.section + .section {
+ padding-top: 0;
+}
+```
+
+---
+
+## Kanji Reference
+
+Common kanji used as card watermarks (romanized names → katakana):
+
+- A → ア I → イ U → ウ
+- Ka → カ Ki → キ Ku → ク
+- Sa → サ Si/Shi → シ Su → ス
+- Ta → タ Chi → チ To → ト
+- Na → ナ Ni → ニ Nu → ヌ
+- Ha → ハ Hi → ヒ He → ヘ
+- Ma → マ Mi → ミ Mo → モ
+- Ya → ヤ Yu → ユ Yo → ヨ
+- Ra → ラ Ri → リ Ru → ル Re → レ
+- Wa → ワ Wo → ヲ N → ン
+
+For compound names, use the first 1-2 characters of the name in katakana.
+
+For Japanese font, load from Google Fonts:
+
+```html
+
+```
+
+---
+
+## Do / Don't
+
+| ✅ Do | ❌ Don't |
+| ----------------------------------------------------------------- | ------------------------------------------ |
+| Warm off-white backgrounds | Pure white (#fff) backgrounds |
+| Sparse red accents (borders, rules, kanji) | Red fills, red backgrounds |
+| Wide letter-spacing on uppercase labels | Tight tracking on headings |
+| Serif for display text (Aboreto), serif for body (Source Serif 4) | Sans-serif for everything |
+| Faded kanji watermarks on cards (Yuji Syuku) | Decorative elements without the paper feel |
+| Barely-there borders, no shadows | Heavy drop shadows or box-shadow |
+| Paper texture overlay (user-provided PNG) | SVG noise filters or CSS-only grain |
+| Minimalist nav with small text | Heavy navbar with dark background |
+| Body text ≥ 16px, minimum 14px anywhere | Text smaller than 14px |
+| 12px only for all-caps labels | 12px for body or mixed-case text |
+| Card bg lighter than page bg for elevation | Shadows to create depth |
+| Card texture at 0.75 opacity | Same opacity as page texture |
+| Ask user for texture file if not available | Generate texture procedurally |
+
+---
+
+## Quick Start Template
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+---
+
+## Technical Rules
+
+Rules extracted from the actual codebase. Nothing here is about visual design — see the sections above for that.
+
+### Stack & Versions
+
+- Next.js 15.0.5 — Pages Router (`src/pages/`)
+- React 19.0.3
+- TypeScript 5.2.2
+- Styling: SCSS Modules (`sass` 1.32.8)
+- `classnames` 2.3.1 — used in nearly every component for conditional class joining
+- `next-auth` 4.23.2 — authentication
+- i18n: Next.js built-in (`en`, `ru`, `hy` locales, configured in `next.config.js`)
+- `date-fns` 2.30.0
+- `@svgr/webpack` 8.1.0 — SVGs imported as React components
+- `eslint-plugin-simple-import-sort` — enforced import ordering
+- `prettier` 3.6.2 — single quotes, trailing commas, 2-space indent, no parens on single-arg arrows
+- `husky` 9.1.7 + `lint-staged` — pre-commit hooks run ESLint and Prettier
+
+### Project Directory Map
+
+```
+src/
+├── api/ # Data-fetching functions (Strapi, auth, etc.)
+├── assets/icons/ # SVG icon components (.tsx) and raw .svg files
+├── components/ # Shared UI components (PascalCase folders)
+├── constants/ # App-wide constants (lowercase files)
+├── context/ # React context providers
+├── data/ # Static i18n copy, organized by feature
+├── hooks/ # Custom React hooks (use*.ts files)
+├── layouts/ # Page-level layout components (PascalCase folders)
+├── lib/ # Utility/helper functions
+├── local-types/ # Shared TypeScript types
+├── pages/ # Next.js Pages Router (file-based routing)
+├── styles/ # Global SCSS (variables, animations, fonts, globals)
+└── utils/ # Additional utility functions
+```
+
+**How pages, layouts, and components connect:**
+
+A page file in `src/pages/` fetches data (via `getServerSideProps`), then renders a layout from `src/layouts/`. The layout composes components from `src/components/`.
+
+```tsx
+// src/pages/contributors.tsx
+import ContributorsLayout from '@layouts/ContributorsLayout';
+
+const Contributors: FC = ({ contributors }) => {
+ // ...
+ return (
+ <>
+
+
+ >
+ );
+};
+
+export default Contributors;
+
+export async function getServerSideProps({ locale }) {
+ const contributors = await getContributors(locale);
+ return { props: { contributors } };
+}
+```
+
+There is also a root `Layout` component at `src/layouts/Layout.tsx` that wraps all pages (rendered in `_app.tsx`). It provides the `Header`, cookie box, and longevity-specific chrome.
+
+### Folder Structure for a New Component
+
+Components live in `src/components/`. Each component gets a PascalCase folder. The folder name matches the component name.
+
+**Standard files in a component folder:**
+
+1. **`ComponentName.tsx`** — the component itself.
+
+```tsx
+// src/components/Spinner/Spinner.tsx
+import type { FC } from 'react';
+
+import useSpinner from '@hooks/useSpinner';
+
+import styles from './Spinner.module.scss';
+
+type SpinnerProps = {
+ visible?: boolean;
+};
+
+const Spinner: FC = ({ visible }) => {
+ const { isVisible } = useSpinner()[1];
+ if (!isVisible && !visible) return null;
+
+ return (
+
+ );
+};
+
+export default Spinner;
+```
+
+2. **`ComponentName.module.scss`** — scoped styles for the component.
+
+```scss
+// src/components/Spinner/Spinner.module.scss
+.PreloaderContainer {
+ position: fixed;
+ // ...
+
+ & .Preloader {
+ display: inline-block;
+ // ...
+ }
+}
+```
+
+3. **`index.ts`** — barrel re-export. Always a default re-export. Every component in the repo follows this pattern.
+
+```ts
+// src/components/Spinner/index.ts
+import Spinner from './Spinner';
+
+export default Spinner;
+```
+
+4. **`ComponentName.types.ts`** (optional) — used when the props type is large or shared. Most components define props inline in the `.tsx` file. Use a separate types file when the type is complex (10+ fields) or imported elsewhere.
+
+```ts
+// src/components/Heading/Heading.types.ts
+import { ReactNode } from 'react';
+
+export type HeadingProps = {
+ text: string | ReactNode;
+ showLeftIcon?: boolean;
+ // ...
+};
+```
+
+**Sub-component folders** are nested inside their parent: `src/components/longevity/FlipCard/`, `src/components/contributors/Contributor/`. Feature-scoped components use a lowercase feature-name subfolder.
+
+### Folder Structure for a New Layout
+
+Layouts live in `src/layouts/`. They follow the same PascalCase folder convention as components. A layout is a page-level composition — it receives data from a page and arranges components.
+
+**Standard files in a layout folder:**
+
+1. **`LayoutName.tsx`** — the layout component.
+
+```tsx
+// src/layouts/ContributorsLayout/ContributorsLayout.tsx
+import { forwardRef } from 'react';
+
+import Heading from '@components/Heading';
+
+import type { ContributorsLayoutProps } from './ContributorsLayout.types';
+
+import styles from './ContributorsLayout.module.scss';
+
+const ContributorsLayout = forwardRef(
+ ({ contributorsData, isDarkTheme }, ref) => {
+ // ...
+ },
+);
+
+export default ContributorsLayout;
+```
+
+2. **`LayoutName.module.scss`** — scoped styles.
+
+3. **`index.ts`** — barrel re-export (same pattern as components).
+
+```ts
+// src/layouts/ContributorsLayout/index.ts
+import ContributorsLayout from './ContributorsLayout';
+
+export default ContributorsLayout;
+```
+
+4. **`LayoutName.types.ts`** — props type. Most layouts use a separate types file because layout props tend to be large (page data shapes).
+
+```ts
+// src/layouts/ContributorsLayout/ContributorsLayout.types.ts
+export type ContributorsLayoutProps = {
+ isDarkTheme?: boolean;
+ contributorsData?: {
+ /* ... */
+ };
+};
+```
+
+Import layouts in pages via `@layouts/LayoutName`.
+
+### Folder Structure for i18n Data
+
+Static UI copy lives in `src/data/`. Each feature gets a lowercase folder with one file per locale plus an `index.ts` barrel.
+
+```
+src/data/contributors/
+├── en.ts # English strings
+├── ru.ts # Russian strings
+├── hy.ts # Armenian strings
+└── index.ts # Barrel that combines all locales
+```
+
+```ts
+// src/data/contributors/en.ts
+const en = {
+ contributorsTxt: 'contributors',
+ activeHeroes: 'Currently active',
+ heroes: 'Heroes',
+ socialLinkTxt: 'Social Link',
+};
+export default en;
+```
+
+```ts
+// src/data/contributors/index.ts
+import en from './en';
+import hy from './hy';
+import ru from './ru';
+
+export default { en, ru, hy } as {
+ en: typeof en;
+ ru: typeof ru;
+ hy: typeof hy;
+};
+```
+
+Usage in components: `import contributors from '@data/contributors';` then access `contributors[locale]`.
+
+### Other Folders
+
+- **`src/api/`** — data-fetching functions. One file per domain (`contributors.ts`, `strapi.ts`, `auth.ts`, `tools.ts`). Lowercase filenames. No folders.
+- **`src/hooks/`** — custom hooks. One hook per file. Filename matches hook name (`useSpinner.ts`, `useMobile.ts`). No subfolders.
+- **`src/constants/`** — app-wide constants. Lowercase filenames (`common.ts`, `longevity.ts`, `tools.ts`). Named exports.
+- **`src/lib/`** — utility/helper functions (`helpers.ts`, `cookies.ts`, `strapiUrl.ts`, `schema.tsx`). Lowercase filenames. No subfolders.
+- **`src/utils/`** — additional utilities. Same conventions as `lib/`.
+- **`src/context/`** — React context providers (`LongevityContext.tsx`). PascalCase filenames.
+- **`src/local-types/`** — shared TypeScript types. Has a `pageTypes/` subfolder for page-specific types. Lowercase filenames (`global.ts`, `data.ts`).
+- **`src/styles/`** — global SCSS. Contains `globals.scss`, `fonts.scss`, `_variables.scss`, `_animations.scss`, and page-level module files. Partials prefixed with `_`.
+- **`src/assets/icons/`** — icon components as `.tsx` files (PascalCase: `GoogleIcon.tsx`, `Loader.tsx`) and raw `.svg` files. Has a `longevity/` subfolder. Imported via `@icons/*`.
+
+### Naming Conventions
+
+- **Component names**: PascalCase. `Accordion`, `Button`, `FlipCard`.
+- **File names**: PascalCase, matching the component. `Accordion.tsx`, `Accordion.module.scss`.
+- **Folder names**: PascalCase for component folders (`Button/`, `Modal/`). Lowercase for feature groupings (`longevity/`, `contributors/`, `tools/`). Prefix with underscore for page-specific groups (`_company-management/`).
+- **SCSS class names**: The codebase mixes PascalCase (`.PreloaderContainer`, `.Accordion`, `.Title`) and camelCase (`.headingWrapper`, `.button`). Prefer PascalCase for new code — it's the more common pattern.
+- **TypeScript types**: The codebase mixes `T`-prefix (`TButton`, `TInput`, `TRouter`) and `Props`-suffix (`SpinnerProps`, `AccordionProps`, `ModalProps`, `HeadingProps`). Prefer `ComponentNameProps` for new component prop types.
+- **Interfaces**: Used sparingly. No `I` prefix. See `ActionsType` in `src/local-types/global.ts`.
+- **Hooks**: `use*` prefix. Files live in `src/hooks/`. Examples: `useSpinner`, `useMobile`, `useClickOutside`, `useScreenSize`.
+- **Constants**: Files in `src/constants/`. Named exports. Filenames are lowercase (`common.ts`, `longevity.ts`, `tools.ts`).
+- **Event handlers**: `handle*` prefix inside components. Examples: `handleChange`, `handleClose`, `handleMouseEnter`, `handleKeyDown`.
+- **Boolean props**: `is*`, `has*`, `show*`. Examples: `isOpen`, `isDarkTheme`, `isHovered`, `hasBorder`, `hasRedUnderline`, `showLeftIcon`, `showMessage`.
+
+### Component Rules
+
+- Function components only. No class components anywhere in the codebase.
+- Every component uses `const ComponentName: FC` and `export default ComponentName`.
+- Every `index.ts` does a default re-export: `import X from './X'; export default X;`.
+- Props are typed inline in the `.tsx` file unless they're large — then use `ComponentName.types.ts`.
+- Hooks live in `src/hooks/`, not inside component files.
+- SCSS modules are imported as `styles` and accessed as `styles.ClassName` (e.g., `styles.PreloaderContainer`).
+- Conditional classes use `classnames` (imported as `cn`): `cn(styles.Foo, { [styles.active]: isActive })`.
+- `@svgr/webpack` is configured — SVGs can be imported as components from `@icons/*`.
+
+### TypeScript Rules
+
+- Strict mode is **off** (`"strict": false` in `tsconfig.json`).
+- `noImplicitAny` is **off**.
+- `any` is allowed — ESLint rule `@typescript-eslint/no-explicit-any` is set to `off`.
+- `@ts-ignore` is allowed (ESLint warns on `@ts-expect-error` but allows `@ts-ignore`).
+- `noUnusedLocals` is **on**.
+- Props types are named `ComponentNameProps` (preferred) or `TComponentName` (legacy).
+- Shared types live in `src/local-types/` (aliased as `@local-types/*`).
+
+### Imports
+
+Import order is enforced by `eslint-plugin-simple-import-sort`. The configured group order:
+
+1. Side-effect imports (`import 'foo'`)
+2. Node built-ins (`node:url`)
+3. Third-party packages (`react`, `next`, `classnames`)
+4. `@styles/*`
+5. `@constants/*`
+6. `@local-types/*`
+7. `@hooks/*`
+8. `@lib/*`
+9. `@api/*`
+10. `@data/*`
+11. `@icons/*`
+12. `@components/*`
+13. `@layouts/*`
+14. Other `@/` or `src/` aliases
+15. Relative imports (non-style)
+16. Style imports (`.css`, `.scss`)
+
+**Path aliases** (from `tsconfig.json`):
+
+- `@components/*` → `src/components/*`
+- `@data/*` → `src/data/*`
+- `@constants/*` → `src/constants/*`
+- `@hooks/*` → `src/hooks/*`
+- `@layouts/*` → `src/layouts/*`
+- `@lib/*` → `src/lib/*`
+- `@api/*` → `src/api/*`
+- `@styles/*` → `src/styles/*`
+- `@local-types/*` → `src/local-types/*`
+- `@utils/*` → `src/utils/*`
+- `@icons/*` → `src/assets/icons/*`
+
+Use aliases for cross-folder imports. Use relative imports only within the same component folder (e.g., `./Button.module.scss`, `./Heading.types`).
+
+### What NOT to Do
+
+- Don't use styled-components, Emotion, or Tailwind — the project uses SCSS Modules exclusively.
+- Don't use named exports in `index.ts` — every barrel file uses `export default`.
+- Don't put new shared components outside `src/components/`.
+- Don't put hooks outside `src/hooks/`.
+- Don't put shared types outside `src/local-types/`.
+- Don't import directly from a component's `.tsx` file across folders — go through the `index.ts` barrel.
+- Don't use the App Router — the project uses the Pages Router (`src/pages/`).
+- Don't skip the `index.ts` barrel file when creating a new component.
+- Don't add new dependencies without checking `package.json` first — the project has a specific set of vetted libraries.
diff --git a/.claude/skills/keepsimple/SKILL.md b/.claude/skills/keepsimple/SKILL.md
new file mode 100644
index 0000000..c71c4a6
--- /dev/null
+++ b/.claude/skills/keepsimple/SKILL.md
@@ -0,0 +1,117 @@
+---
+name: keepsimpleoss
+description: 'Use this skill when working in the KeepSimpleOSS repository. Trigger on ANY code change, file creation, component work, styling, routing, data, or i18n task in this repo. Read this before writing code. Covers: component structure, SCSS modules, Pages Router, static data, path aliases, import order, props typing, barrel files, asset paths, and design system rules.'
+---
+
+# KeepSimpleOSS — Quick Reference
+
+Full rules are in `AGENTS.md` at the repo root. Read it for details. This is the short version.
+
+> **Ignore all vibesuite files.** Work in progress, not a pattern source.
+
+---
+
+## Before Writing Code
+
+1. Read `AGENTS.md` for the full rules.
+2. If writing styles and the user didn't give explicit values, read `keepsimple-style.md` at the repo root. It defines the design system (colors, typography, textures, card patterns). Do not invent values or copy hardcoded hex from neighboring files.
+3. If a pattern in this skill or `AGENTS.md` conflicts with what you see in the codebase, **`AGENTS.md` wins** for new code.
+
+---
+
+## Component Checklist
+
+When creating or modifying a component:
+
+- [ ] Directory: `src/components/ComponentName/` (PascalCase)
+- [ ] Files: `ComponentName.tsx`, `ComponentName.module.scss`, `index.ts`
+- [ ] `index.ts` contains: `import X from './X'; export default X;`
+- [ ] Props: `interface ComponentNameProps { ... }` declared inline above the component. No `T`-prefix. No `.types.ts` unless the type is shared.
+- [ ] Component: `const ComponentName = ({ ... }: ComponentNameProps) => { ... }; export default ComponentName;`
+- [ ] Styles: `import styles from './ComponentName.module.scss';` — use `cn()` for conditionals
+- [ ] SVGs: import as React components via `@icons/*`, never ` `
+- [ ] If the component reads `localStorage` / `sessionStorage` / `window`, wrap consumer with `dynamic(..., { ssr: false })` or move access into `useEffect`
+
+---
+
+## Styling Rules
+
+- **SCSS Modules only.** No Tailwind, no CSS-in-JS, no inline styles (except single dynamic properties).
+- **Design system first.** Read `keepsimple-style.md` before writing new styles. The hardcoded values in existing SCSS files are legacy.
+- **Class naming:** PascalCase for new code (`.Card`, `.Wrapper`, `.Title`).
+- **Conditional classes:** `cn(styles.Card, { [styles.active]: isActive })`.
+- **Global CSS** can only be imported in `_app.tsx`.
+
+---
+
+## Import Order (ESLint-enforced)
+
+```
+Side-effects → Node built-ins → Third-party →
+@styles → @constants → @local-types → @hooks → @lib → @api → @data → @icons → @components → @layouts →
+Other @/ → Relative → Style imports (.scss)
+```
+
+Use path aliases for cross-folder imports. Relative imports only within the same component folder.
+
+---
+
+## Pages & Routing
+
+- **Pages Router only.** Routes in `src/pages/`. No App Router.
+- Prefer `getStaticProps` with `revalidate: 10` (ISR).
+- Every page renders `` + a layout from `src/layouts/`.
+- Data comes from Strapi, fetched in `getStaticProps`/`getServerSideProps`.
+
+---
+
+## Static Data & i18n
+
+- Data in `src/data/{feature}/` as TypeScript objects (never JSON).
+- Files: `en.ts`, `ru.ts`, optionally `hy.ts`, plus `index.ts` barrel.
+- Armenian (`hy`) falls back to English. Not required in new data dirs.
+- Consumed via `import data from '@data/feature'; data[locale]`.
+
+---
+
+## State Management
+
+- React Context only. No Redux, Zustand, SWR, React Query.
+- New contexts go in `src/components/Context/`, not `src/context/` (legacy).
+
+---
+
+## New Utilities
+
+- Put new utilities in `src/lib/`, not `src/utils/` (legacy).
+- One hook per file in `src/hooks/`, named `use*.ts`.
+
+---
+
+## Key Gotchas
+
+1. `forceConsistentCasingInFileNames: false` — wrong casing works locally, breaks in CI.
+2. `.env.example` has no docs — ask before assuming env values.
+3. `public/keepsimple_/llms-full-pages/` is generated — don't hand-edit.
+4. Some `index.ts` barrels are empty (0 bytes) — that's a bug, not a pattern.
+5. `_variables.scss` contains reusable class snippets, not SCSS variables despite the name.
+6. Production uses `assetPrefix: '/keepsimple_next'` — this only affects `_next/` assets, not `public/` paths.
+7. `yarn` only. Never `npm install`.
+
+---
+
+## Never Do
+
+- App Router, `'use client'`, `next/navigation`
+- Tailwind, styled-components, CSS-in-JS
+- Named exports in `index.ts` barrels
+- State management libraries
+- Testing frameworks beyond Cypress
+- Import global CSS outside `_app.tsx`
+- Invent design values — read `keepsimple-style.md`
+
+---
+
+## When Uncertain
+
+Match the closest existing component. If `AGENTS.md` doesn't cover it, stop and ask.
diff --git a/.gitignore b/.gitignore
index ead9515..dbf294d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -115,3 +115,4 @@ dist
# Package lock file
package-lock.json
+.claude/settings.local.json
diff --git a/.husky/pre-commit b/.husky/pre-commit
old mode 100755
new mode 100644
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..d0bc1e0
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,496 @@
+# AGENTS.md — KeepSimpleOSS
+
+How to work in this codebase. Read this before writing code.
+
+> **Ignore everything under `vibesuite`** — the route, components, data, API, and styles are work in progress and should not be referenced as patterns.
+
+---
+
+## Stack
+
+| Layer | Choice | Version |
+| --------------- | ----------------------------------------------- | --------------------------- |
+| Framework | Next.js **Pages Router** | 15.0.5 |
+| Language | TypeScript (strict off) | 5.2.2 |
+| React | React + ReactDOM | 19.0.3 |
+| Package manager | **yarn only** | v1 (yarn.lock is canonical) |
+| Styling | SCSS Modules | sass 1.32.8 |
+| Auth | NextAuth v4 | 4.23.2 |
+| CMS | Strapi (external) | — |
+| State | React Context only | — |
+| Testing | Cypress E2E only | 14.5.2 |
+| Linting | ESLint flat config + simple-import-sort | 9.x |
+| Formatting | Prettier | 3.x |
+| Git hooks | Husky + lint-staged | 9.x |
+| SVG | @svgr/webpack (SVGs import as React components) | 8.x |
+
+**Do not add:** Redux, Zustand, Jotai, SWR, React Query, Jest, Vitest, component tests, Tailwind, styled-components, or App Router patterns.
+
+---
+
+## Folder Structure
+
+```
+src/
+ api/ # Fetch functions (one file per domain, lowercase)
+ assets/icons/ # SVG icons and icon components, grouped by feature
+ components/ # React components (see Component Pattern below)
+ constants/ # App-wide constants (named exports, lowercase files)
+ context/ # LEGACY — do not add new contexts here
+ data/ # Localized static data (see Static Data below)
+ hooks/ # Custom hooks (one per file, use* prefix)
+ layouts/ # Page layout wrappers
+ lib/ # Utilities and helpers (preferred for new code)
+ local-types/ # Shared TypeScript types
+ pages/ # Next.js routes + API routes
+ styles/ # Global SCSS (globals.scss, _variables.scss, _animations.scss)
+ utils/ # LEGACY — do not add new utilities here
+
+public/keepsimple_/
+ assets/ # Static images, organized by feature
+ audio/ # Audio files
+ fonts/ # Custom font files
+```
+
+### lib vs utils
+
+`src/lib/` is preferred for new utilities. `src/utils/` is legacy (contains one file). Both stay, but new code goes in `src/lib/`.
+
+### Context location
+
+`src/components/Context/GlobalContext.ts` is the canonical location for context. `src/context/` holds `LongevityContext.tsx` — that is legacy. New contexts go in `src/components/Context/`.
+
+---
+
+## Component Pattern
+
+### File structure
+
+Every component lives in its own directory with colocated files:
+
+```
+src/components/ComponentName/
+ ComponentName.tsx # Component implementation
+ ComponentName.module.scss # Scoped styles
+ index.ts # Barrel: import X from './X'; export default X;
+```
+
+### Exports
+
+Always `export default`. Every `index.ts` does a default re-export. No named exports from barrel files.
+
+```ts
+// index.ts
+import Button from './Button';
+export default Button;
+```
+
+### Props typing
+
+Declare a `ComponentNameProps` interface **inline above the component** in the `.tsx` file. No `T`-prefix. No `.types.ts` sibling unless the type is shared across multiple files.
+
+```tsx
+import cn from 'classnames';
+
+import styles from './Card.module.scss';
+
+interface CardProps {
+ title: string;
+ isActive?: boolean;
+ className?: string;
+}
+
+const Card = ({ title, isActive, className }: CardProps) => {
+ return (
+
+ {title}
+
+ );
+};
+
+export default Card;
+```
+
+> The codebase currently mixes `TComponentName`, `ComponentNameProps`, and separate `.types.ts` files. Going forward, use the inline `ComponentNameProps` interface pattern shown above. Only create a `.types.ts` file when the same type is imported by other components.
+
+### Directory naming
+
+- **PascalCase** for standalone component directories: `Button/`, `Modal/`, `Heading/`
+- **lowercase** for feature collection directories that group sub-components: `longevity/`, `articles/`, `contributors/`, `tools/`
+- Underscore prefix for page-specific groups: `_company-management/`
+
+### Barrel files must not be empty
+
+The following `index.ts` files are currently empty (0 bytes) — these are bugs:
+
+- `src/layouts/SleepLayout/index.ts`
+- `src/layouts/EnvironmentLayout/index.ts`
+- `src/layouts/WorkoutLayout/index.ts`
+- `src/layouts/LongevityExample/index.ts`
+- `src/components/longevity/StudySection/index.ts`
+- `src/components/longevity/EnvironmentSubSection/index.ts`
+- `src/components/ContentGenerator/index.ts`
+- `src/components/EmojiFall/index.ts`
+
+Every new `index.ts` must contain the default re-export pattern.
+
+---
+
+## Styling
+
+### Source of truth
+
+1. If the user gives explicit visual instructions (colors, spacing, sizes), follow them exactly.
+2. If they don't, defer to the `keepsimple-style` skill (`.claude/skills/keepsimple-style/SKILL.md`) and read it before writing styles.
+3. **Do not invent values.** Do not copy hardcoded hex/px from neighboring components just because they exist.
+ The codebase has hardcoded colors, breakpoints, and spacing scattered across SCSS files. That is legacy, not a pattern to extend. New code aligns to `keepsimple-style.md`; old code stays as-is until touched.
+ New code aligns to the `keepsimple-style` skill; old code stays as-is until touched.
+
+### SCSS Modules only
+
+No Tailwind, no CSS-in-JS, no inline styles (except single dynamic properties like `style={{ color: dynamicValue }}`).
+
+```tsx
+import cn from 'classnames';
+import styles from './Thing.module.scss';
+
+
;
+```
+
+### Conditional classes
+
+Always use `classnames` (imported as `cn`):
+
+```tsx
+className={cn(styles.Button, {
+ [styles.primary]: variant === 'primary',
+ [styles.disabled]: disabled,
+})}
+```
+
+### SCSS class naming
+
+PascalCase for new code: `.Card`, `.Wrapper`, `.Title`. The codebase mixes PascalCase and camelCase — prefer PascalCase going forward.
+
+### Global styles
+
+- `src/styles/globals.scss` — resets, scrollbar, dark mode body, font-face declarations, video loader
+- `src/styles/_variables.scss` — reusable class snippets (`.defaultTooltip`, `.section`, `.longevityContent`). **Not** SCSS variables despite the filename.
+- `src/styles/_animations.scss` — keyframe animations and utility classes (`.animate-fadeIn`, etc.)
+
+Global CSS can **only** be imported in `src/pages/_app.tsx`. Do not import global `.scss` from components.
+
+### Dark mode
+
+Class-based: `document.body.classList.toggle('darkTheme')`. Managed by `useGlobals` hook with localStorage persistence. Components use `.darkTheme` modifier classes in their SCSS modules.
+
+### Breakpoints
+
+No shared breakpoint variables or mixins. Common values used in the codebase: 1440, 1140, 961, 900, 800, 768px. New code should use the design tokens from `keepsimple-style.md`.
+
+---
+
+## Static Data
+
+### Format
+
+TypeScript objects only. Never JSON, never MDX.
+
+### Structure
+
+```
+src/data/{feature}/
+ en.ts # English
+ ru.ts # Russian
+ hy.ts # Armenian (optional — falls back to English)
+ index.ts # Barrel
+```
+
+### Barrel pattern
+
+```ts
+// src/data/navbar/index.ts
+import en from './en';
+import hy from './hy';
+import ru from './ru';
+
+export default { en, ru, hy } as {
+ en: typeof en;
+ ru: typeof ru;
+ hy: typeof hy;
+};
+```
+
+### Consumption
+
+```tsx
+import navbar from '@data/navbar';
+
+const { locale } = useRouter() as TRouter;
+const { about, articles } = navbar[locale];
+```
+
+---
+
+## Locales
+
+Three locales: `en` (default), `ru`, `hy`.
+
+Armenian (`hy`) falls back to English at runtime. Most pages use this pattern:
+
+```ts
+const currentLocale = locale === 'ru' ? 'ru' : 'en';
+```
+
+When creating new data directories, `hy.ts` is not required. Only provide it if you have real Armenian translations.
+
+The i18n system is custom — no next-i18next, no react-intl. Just direct object lookup by `router.locale`.
+
+---
+
+## Path Aliases & Import Order
+
+### Aliases (tsconfig.json)
+
+| Alias | Maps to |
+| ---------------- | -------------------- |
+| `@components/*` | `src/components/*` |
+| `@layouts/*` | `src/layouts/*` |
+| `@hooks/*` | `src/hooks/*` |
+| `@data/*` | `src/data/*` |
+| `@api/*` | `src/api/*` |
+| `@lib/*` | `src/lib/*` |
+| `@constants/*` | `src/constants/*` |
+| `@styles/*` | `src/styles/*` |
+| `@local-types/*` | `src/local-types/*` |
+| `@utils/*` | `src/utils/*` |
+| `@icons/*` | `src/assets/icons/*` |
+
+Use aliases for cross-folder imports. Use relative imports only within the same component folder (e.g., `./Button.module.scss`).
+
+### Import order (enforced by ESLint)
+
+```
+1. Side-effect imports
+2. Node built-ins
+3. Third-party packages (react, next, classnames...)
+4. @styles
+5. @constants
+6. @local-types
+7. @hooks
+8. @lib
+9. @api
+10. @data
+11. @icons
+12. @components
+13. @layouts
+14. Other @/ aliases
+15. Relative imports (non-style)
+16. Style imports (.scss)
+```
+
+ESLint will error on wrong order. Run `eslint --fix` to auto-sort.
+
+---
+
+## Pages & Routing
+
+### Pages Router only
+
+All routes live in `src/pages/`. Never use App Router patterns (`src/app/`, `'use client'`, `next/navigation`).
+
+### Page pattern
+
+```tsx
+import { GetStaticProps } from 'next';
+
+import { TStaticProps } from '@local-types/data';
+
+import useGlobals from '@hooks/useGlobals';
+
+import { getData } from '@api/strapi';
+
+import SeoGenerator from '@components/SeoGenerator';
+
+import FeatureLayout from '@layouts/FeatureLayout';
+
+interface PageProps {
+ data?: any;
+}
+
+const FeaturePage = ({ data }: PageProps) => {
+ const [{}, { isDarkTheme }] = useGlobals();
+
+ return (
+ <>
+
+
+ >
+ );
+};
+
+export default FeaturePage;
+
+export const getStaticProps: GetStaticProps = async ({
+ locale,
+}: TStaticProps) => {
+ const data = await getData(locale);
+ return {
+ props: { locale, data },
+ revalidate: 10,
+ };
+};
+```
+
+### Data fetching
+
+Prefer `getStaticProps` with ISR (`revalidate: 10`). Use `getServerSideProps` only when data must be fresh on every request. Use `getStaticPaths` with `fallback: 'blocking'` for dynamic routes.
+
+### SEO
+
+Use the `SeoGenerator` component on every page. It handles ``, meta tags, Open Graph, Twitter cards, JSON-LD schema, and `hrefLang` alternates. It lives at `src/components/SeoGenerator/SeoGenerator.tsx`.
+
+### Layouts
+
+Every page wraps its content in a layout from `src/layouts/`. The root `Layout` component (applied in `_app.tsx`) handles nav, cookie consent, and route-based body classes. Feature-specific layouts nest inside it.
+
+### Client-only code
+
+Anything that touches `localStorage`, `sessionStorage`, or `window` at module top level will break SSR with hydration mismatches. Wrap such components with `dynamic(() => import('...'), { ssr: false })`, or move the access into a `useEffect`. Existing code uses both patterns — pick whichever fits the situation.
+
+---
+
+## \_app.tsx — Global Concerns
+
+`src/pages/_app.tsx` is where these things live:
+
+- `SessionProvider` (NextAuth)
+- `LongevityProvider` (context for longevity tool transitions)
+- `GlobalContext.Provider` (account data, loader state, media refs)
+- Root `Layout` wrapper
+- Global SCSS imports (`globals.scss`)
+- Google Analytics initialization (lazy-loaded via dynamic import)
+- Mixpanel initialization (lazy-loaded via dynamic import)
+- Route-change spinner logic
+- Scroll style class toggling based on current route
+- Body class toggling for dark theme and page-specific backgrounds
+- Image preloading for longevity protocol assets
+
+Do not import global CSS anywhere except `_app.tsx`.
+
+---
+
+## Asset Paths
+
+### assetPrefix quirk
+
+In production, `next.config.js` sets `assetPrefix: '/keepsimple_next'`. Locally it's empty. This only affects Next.js internal assets (`_next/`), not `public/` files.
+
+### Static assets
+
+All static files live under `public/keepsimple_/`. Reference them with `/keepsimple_/` prefix:
+
+```
+/keepsimple_/assets/longevity/diet/hearts/sugar.svg
+/keepsimple_/fonts/Lato/Lato-Regular.woff2
+/keepsimple_/audio/eat_mushrooms.mp3
+```
+
+`next.config.js` has rewrites that map `/assets/*` to `/keepsimple_/assets/*` (and similar for fonts, audio, static). Both paths work, but the canonical form is `/keepsimple_/`.
+
+### SVGs as components
+
+`@svgr/webpack` is configured. SVG files imported from `@icons/*` become React components:
+
+```tsx
+import LongevityIcon from '@icons/navbar/longevity.svg';
+
+ ;
+```
+
+Never use ` ` for SVGs. The type declaration in `src/svg.d.ts` types all `.svg` imports as `FC>`.
+
+---
+
+## Generated Files
+
+`public/keepsimple_/llms-full-pages/` contains files generated by `scripts/generate-llms-pages.ts`. Do not hand-edit these. They are rebuilt by the `generate:llms:pages` script and committed via CI (`.github/workflows/generate-llms.yml`).
+
+---
+
+## Environment Variables
+
+`.env.example` lists 17 variables with no documentation. The file has no comments about which are required, which are optional, or what local development values should be.
+
+**Do not assume values.** Ask the developer before filling in `.env.local`.
+
+Key variables:
+
+- `NEXT_PUBLIC_STRAPI` / `STRAPI_URL` — Strapi CMS endpoint (required for data)
+- `NEXTAUTH_SECRET` / `NEXTAUTH_URL` — NextAuth config (required for auth)
+- `NEXT_PUBLIC_ENV` — `local` / `staging` / `prod`
+- `NEXT_PUBLIC_INDEXING` — `on` / `off` (controls GA tracking)
+- `NEXT_PUBLIC_DOMAIN` — canonical domain for SEO/OG tags
+
+The `next.config.js` loads env from `.env.{APP_ENV}` (e.g., `.env.local`, `.env.staging`, `.env.prod`).
+
+---
+
+## Things to Never Do
+
+- Use the App Router, `'use client'`, or `next/navigation`
+- Use Tailwind, styled-components, Emotion, or CSS-in-JS
+- Use named exports in `index.ts` barrel files
+- Add state management libraries (Redux, Zustand, Jotai, SWR, React Query)
+- Add testing frameworks (Jest, Vitest, component testing)
+- Import global CSS from anywhere except `_app.tsx`
+- Use ` ` for SVGs — import them as components
+- Put new shared components outside `src/components/`
+- Put new hooks outside `src/hooks/`
+- Put new utilities in `src/utils/` — use `src/lib/` instead
+- Put new contexts in `src/context/` — use `src/components/Context/` instead
+- Skip the `index.ts` barrel when creating a component
+- Invent colors, spacing, or font values — read the `keepsimple-style` skill first
+- New code should use the design tokens from the `keepsimple-style` skill.
+
+---
+
+## Gotchas
+
+### Case sensitivity
+
+`tsconfig.json` has `forceConsistentCasingInFileNames: false`. Imports with wrong casing will work on macOS/Windows but break in Linux CI. Always match the exact filename casing.
+
+### Duplicate TLocales type
+
+`TLocales` is defined in both `src/local-types/global.ts` and `src/local-types/data.ts`. They're identical. Import from `@local-types/data` for page props, `@local-types/global` for component router typing.
+
+### Some deep relative imports exist
+
+A few files use deep relative paths like `'../../../../lib/mixpanel'` instead of `@lib/mixpanel`. ESLint allows this but the convention is aliases. Use aliases for new code.
+
+### Mixpanel is lazily imported
+
+`_app.tsx` imports Mixpanel via `import('../../lib/mixpanel')` — a dynamic import with a relative path. This is intentional to keep it out of the initial bundle.
+
+### TODO comments reveal known issues
+
+Key ones:
+
+- `src/constants/tools.ts:20` — "review html, button with p and div" (HTML nesting issue)
+- `src/context/LongevityContext.tsx:94` — "Fix heroReady logic"
+- `src/components/SeoGenerator/SeoGenerator.tsx:96,137` — "HYTranslation TODO" (Armenian SEO incomplete)
+- `src/components/UserProfile/UserProfile.tsx:30` — "This is incomplete"
+- Multiple longevity components — "Move to constants" (image paths hardcoded)
+
+### Prettier and ESLint both run on commit
+
+Husky pre-commit runs lint-staged: ESLint `--fix` on `.ts`/`.tsx`, then Prettier on `.ts`/`.tsx`/`.scss`/`.json`/`.md`. Prettier config: single quotes, trailing commas, 2-space indent, `arrowParens: 'avoid'`.
+
+---
+
+## When Uncertain
+
+- Find the closest existing component and match its structure.
+- If a pattern in this file conflicts with what you see in the codebase, **this file wins** for new code. Old code stays as-is until touched.
+- If a pattern isn't covered here at all, stop and ask before inventing one.
diff --git a/public/keepsimple_/assets/favicon.svg b/public/keepsimple_/assets/favicon.svg
index df54d13..c402971 100644
--- a/public/keepsimple_/assets/favicon.svg
+++ b/public/keepsimple_/assets/favicon.svg
@@ -1,5 +1,5 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/public/keepsimple_/assets/icons/facebook-outlined-light.svg b/public/keepsimple_/assets/icons/facebook-outlined-light.svg
index 5aec356..fd472f9 100644
--- a/public/keepsimple_/assets/icons/facebook-outlined-light.svg
+++ b/public/keepsimple_/assets/icons/facebook-outlined-light.svg
@@ -1,10 +1,10 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/public/keepsimple_/assets/icons/linkedin-outlined-light.svg b/public/keepsimple_/assets/icons/linkedin-outlined-light.svg
index 2878456..6c9ddf7 100644
--- a/public/keepsimple_/assets/icons/linkedin-outlined-light.svg
+++ b/public/keepsimple_/assets/icons/linkedin-outlined-light.svg
@@ -1,3 +1,3 @@
-
-
-
+
+
+
diff --git a/public/keepsimple_/assets/icons/user-dropdown/log-out.svg b/public/keepsimple_/assets/icons/user-dropdown/log-out.svg
new file mode 100644
index 0000000..65373d7
--- /dev/null
+++ b/public/keepsimple_/assets/icons/user-dropdown/log-out.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/public/keepsimple_/assets/icons/user-dropdown/settings.svg b/public/keepsimple_/assets/icons/user-dropdown/settings.svg
new file mode 100644
index 0000000..7a145ec
--- /dev/null
+++ b/public/keepsimple_/assets/icons/user-dropdown/settings.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/public/keepsimple_/assets/longevity/habits/white-bg.png b/public/keepsimple_/assets/longevity/habits/white-bg.png
index 10ce827..7e3fe9f 100644
Binary files a/public/keepsimple_/assets/longevity/habits/white-bg.png and b/public/keepsimple_/assets/longevity/habits/white-bg.png differ
diff --git a/public/keepsimple_/assets/tools/bob.skill:Zone.Identifier b/public/keepsimple_/assets/tools/bob.skill:Zone.Identifier
deleted file mode 100644
index be537eb..0000000
Binary files a/public/keepsimple_/assets/tools/bob.skill:Zone.Identifier and /dev/null differ
diff --git a/public/keepsimple_/assets/user-dropdown/black-bg.png b/public/keepsimple_/assets/user-dropdown/black-bg.png
new file mode 100644
index 0000000..3273363
Binary files /dev/null and b/public/keepsimple_/assets/user-dropdown/black-bg.png differ
diff --git a/public/keepsimple_/assets/user-dropdown/white-bg.png b/public/keepsimple_/assets/user-dropdown/white-bg.png
new file mode 100644
index 0000000..a3a95ae
Binary files /dev/null and b/public/keepsimple_/assets/user-dropdown/white-bg.png differ
diff --git a/public/keepsimple_/assets/vibesuite/why-bg-1.jpg b/public/keepsimple_/assets/vibesuite/why-bg-1.jpg
new file mode 100644
index 0000000..1ade77d
Binary files /dev/null and b/public/keepsimple_/assets/vibesuite/why-bg-1.jpg differ
diff --git a/public/keepsimple_/assets/vibesuite/why-bg-2.webp b/public/keepsimple_/assets/vibesuite/why-bg-2.webp
new file mode 100644
index 0000000..ca2b80f
Binary files /dev/null and b/public/keepsimple_/assets/vibesuite/why-bg-2.webp differ
diff --git a/public/keepsimple_/assets/vibesuite/why-bg-3.jpg b/public/keepsimple_/assets/vibesuite/why-bg-3.jpg
new file mode 100644
index 0000000..f60e55d
Binary files /dev/null and b/public/keepsimple_/assets/vibesuite/why-bg-3.jpg differ
diff --git a/public/keepsimple_/fonts/Cormorant_Garamond/OFL.txt b/public/keepsimple_/fonts/Cormorant_Garamond/OFL.txt
index 915e3af..1c74e5c 100644
--- a/public/keepsimple_/fonts/Cormorant_Garamond/OFL.txt
+++ b/public/keepsimple_/fonts/Cormorant_Garamond/OFL.txt
@@ -1,93 +1,93 @@
-Copyright 2015 the Cormorant Project Authors (github.com/CatharsisFonts/Cormorant)
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-https://openfontlicense.org
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
+Copyright 2015 the Cormorant Project Authors (github.com/CatharsisFonts/Cormorant)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+https://openfontlicense.org
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/public/keepsimple_/fonts/Source-Serif-4/OFL.txt b/public/keepsimple_/fonts/Source-Serif-4/OFL.txt
index 5d6f71c..38d9750 100644
--- a/public/keepsimple_/fonts/Source-Serif-4/OFL.txt
+++ b/public/keepsimple_/fonts/Source-Serif-4/OFL.txt
@@ -1,91 +1,91 @@
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-https://openfontlicense.org
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+https://openfontlicense.org
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/public/keepsimple_/fonts/Tomorrow/OFL.txt b/public/keepsimple_/fonts/Tomorrow/OFL.txt
index 38cd9eb..15d3b83 100644
--- a/public/keepsimple_/fonts/Tomorrow/OFL.txt
+++ b/public/keepsimple_/fonts/Tomorrow/OFL.txt
@@ -1,93 +1,93 @@
-Copyright 2019 The Tomorrow Project Authors (github.com/MonicaRizzolli/Tomorrow)
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-https://openfontlicense.org
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
+Copyright 2019 The Tomorrow Project Authors (github.com/MonicaRizzolli/Tomorrow)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+https://openfontlicense.org
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/report.md b/report.md
new file mode 100644
index 0000000..6aab4ce
--- /dev/null
+++ b/report.md
@@ -0,0 +1,310 @@
+● KeepSimpleOSS Codebase Audit Report
+
+1. Stack & Tooling
+
+
+┌──────────────────┬───────────────────────────────────────────────────────────────────────┬─────────────────┐
+ │ Category │ Detail │ Version │
+ ├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+ │ Framework │ Next.js (Pages Router) │ 15.0.5 │
+ ├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ React │ React + React DOM │ 19.0.3 │
+ ├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+ │ Language │ TypeScript (strict: false, noImplicitAny: false) │ 5.2.2 │
+ ├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ Package manager │ Yarn v1 (yarn.lock) │ — │
+ ├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ Node (CI/Docker) │ Node.js │ 20.19.0 │
+├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ SCSS │ sass + sass-loader │ 1.32.8 / 13.1.0 │
+├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ Linting │ ESLint flat config + eslint-plugin-simple-import-sort │ 9.32.0 │
+├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ Formatting │ Prettier (single quotes, trailing commas, no semis override) │ 3.6.2 │
+├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ Git hooks │ Husky + lint-staged (pre-commit runs eslint --fix + prettier --write) │ 9.1.7 │
+├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ Testing │ Cypress E2E only — no unit tests, no Jest │ 14.5.2 │
+├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ Auth │ NextAuth v4 │ 4.23.2 │
+├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ Analytics │ react-ga4 + mixpanel-browser │ 1.4.1 / 2.65.0 │
+├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ CMS │ Strapi (external, fetched at build time) │ — │
+├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ SVG │ @svgr/webpack (SVGs import as React components) │ 8.1.0 │
+├──────────────────┼───────────────────────────────────────────────────────────────────────┼─────────────────┤
+│ CI/CD │ GitHub Actions → Docker → GHCR │ — │
+└──────────────────┴───────────────────────────────────────────────────────────────────────┴─────────────────┘
+
+Key libraries: classnames (conditional CSS), react-slick (carousel), react-tooltip, react-beautiful-dnd (drag-and-drop), react-markdown, date-fns, lodash.debounce, nodemailer, geoip-lite.
+
+No state management library (React Context only). No data-fetching library (no SWR, React Query). No form library.
+
+---
+
+2. Folder Structure
+
+src/
+├── api/ # Fetch functions calling Strapi/external APIs
+├── assets/icons/ # SVG icons, grouped by feature (longevity/, navbar/, tools/, articles/)
+├── components/ # React components (see §3)
+├── constants/ # App-wide constants (tools.ts, longevity.ts, colors.ts)
+├── context/ # Single file: LongevityContext.tsx
+├── data/ # Localized static data (see §5)
+├── hooks/ # Custom hooks (useGlobals, useMobile, useScreenSize, useClickOutside, etc.)
+├── layouts/ # Page layout wrappers (Layout, LandingLayout, ArticleLayout, DietLayout, ToolsLayout, etc.)
+├── lib/ # Shared utilities (mixpanel.ts, schema.tsx, strapi.ts, etc.)
+├── local-types/ # Global TS types (data.ts, global.ts, pageTypes/)
+├── pages/ # Next.js file-based routes + API routes
+├── styles/ # Global SCSS (globals.scss, \_variables.scss, \_animations.scss, fonts.scss)
+├── utils/ # Single file: getLongevityImageUrls.ts
+└── svg.d.ts # Module declaration: \*.svg → React component
+
+public/keepsimple\_/
+├── assets/ # Static images by feature (articles-blog/, contributors/, longevity/, etc.)
+├── audio/ # MP3/OGG files
+├── fonts/ # TTF/WOFF custom fonts
+├── llms-full-pages/ # Generated LLM content pages
+└── static/ # Other static files
+
+Conventions:
+
+- Every component directory has a barrel index.ts (import X from './X'; export default X;)
+- Styles are always colocated as ComponentName.module.scss
+- Feature collections use lowercase dirs (longevity/, articles/, contributors/) containing PascalCase sub-component dirs
+- Standalone/shared components use PascalCase dirs at src/components/ root (Button/, Modal/, Header/)
+- One outlier: \_company-management/ uses underscore prefix
+
+---
+
+3. Component Patterns
+
+Typical structure
+
+src/components/Button/
+├── Button.tsx
+├── Button.module.scss
+└── index.ts
+
+Or with types:
+
+src/components/Heading/
+├── Heading.tsx
+├── Heading.module.scss
+├── Heading.types.ts
+└── index.ts
+
+Representative components
+
+Button (src/components/Button/Button.tsx):
+
+- Props typed inline as type TButton = { variant?: 'default' | 'primary' | 'secondary' | 'grey'; ... }
+- Uses FC, default export
+- Variants via cn(styles.button, { [styles.primary]: variant === 'primary', ... })
+- No .types.ts file
+
+Heading (src/components/Heading/Heading.tsx):
+
+- Props in separate Heading.types.ts as export type HeadingProps = { Tag?: 'h1'|'h2'|...; ... }
+- Imported as import { HeadingProps } from './Heading.types'
+- Supports Tag, isBig, isBold, isDarkTheme, hasRedUnderline, locale-specific styling
+
+Modal (src/components/Modal/Modal.tsx):
+
+- Inline type ModalProps, size variants (small | medium | large | full)
+- Uses createPortal from react-dom
+- Extensive conditional classes via cn()
+
+WhatToEatOrAvoid (src/components/longevity/WhatToEatOrAvoid/):
+
+- Contains a sub-component directory AboutTheProduct/ with its own .types.ts
+- Sub-component imported via @components/longevity/WhatToEatOrAvoid/AboutTheProduct
+
+Props typing inconsistency
+
+┌────────────────────────────────────────────┬────────────────────┬─────────────────────────────────┐
+│ Pattern │ Usage │ Example │
+├────────────────────────────────────────────┼────────────────────┼─────────────────────────────────┤
+│ Inline type TComponentName │ ~60% of components │ Button, Modal, Input │
+├────────────────────────────────────────────┼────────────────────┼─────────────────────────────────┤
+│ Separate .types.ts with ComponentNameProps │ ~40% │ Heading, Supplement, BasicStats │
+├────────────────────────────────────────────┼────────────────────┼─────────────────────────────────┤
+│ Inline interface │ Rare │ Pyramid │
+└────────────────────────────────────────────┴────────────────────┴─────────────────────────────────┘
+
+---
+
+4. Styling Approach
+
+System: SCSS Modules exclusively. No Tailwind, no CSS-in-JS, no styled-components.
+
+Import pattern:
+import cn from 'classnames';
+import styles from './ComponentName.module.scss';
+
+
+
+Design tokens: Hardcoded hex values throughout — no centralized SCSS variables for colors, spacing, or breakpoints. \_variables.scss contains reusable class snippets (.defaultTooltip, .longevityContent, .section) but not
+token variables.
+
+keepsimple-style.md documents the design system (colors as CSS custom properties, typography families, texture patterns, z-index layering, minimum text sizes) but these are not wired into SCSS variables — they're a
+human-readable reference only.
+
+Dark mode: Class-based toggling via useGlobals hook → document.body.classList.toggle('darkTheme') + localStorage persistence. Components handle dark mode with .darkTheme SCSS modifier classes.
+
+Animations: Defined in src/styles/\_animations.scss as keyframes + utility classes (.animate-fadeIn, .animate-slideInFromLeft). Components @extend these.
+
+Global styles imported in \_app.tsx:
+import '../styles/globals.scss';
+
+Breakpoints are hardcoded per-component (common values: 1440, 1140, 961, 900, 800, 768px) — no shared mixin or variable.
+
+UXCore is an external product link, not a design system wired into this codebase.
+
+---
+
+5. Static Data Conventions
+
+Location: src/data/{feature}/ — each directory contains en.ts, ru.ts, hy.ts, index.ts.
+
+Format: TypeScript objects (not JSON, not MDX).
+
+// src/data/navbar/en.ts
+const en = {
+about: 'About',
+articles: 'Articles',
+tools: 'Tools',
+};
+export default en;
+
+// src/data/navbar/index.ts
+import en from './en';
+import hy from './hy';
+import ru from './ru';
+export default { en, ru, hy } as { en: typeof en; ru: typeof ru; hy: typeof hy; };
+
+Types for data shapes live in src/local-types/data.ts (TLocales, TNavbarDataItem, TArticle, etc.).
+
+Consumption: Components import the data module and index by router.locale:
+import navbar from '@data/navbar';
+const { locale } = useRouter() as TRouter;
+const { about, articles } = navbar[locale];
+
+Data directories (excluding vibesuite): 404, accordion, articlesBlog, buttonText, companyManagement, contributors, cookies, copyButton, fullscreenButton, header, imageModule, landingPage, longevity (with basicStats/
+sub-dir), navbar, quote, tools.
+
+---
+
+6. Routing & Page Conventions
+
+Router: Next.js Pages Router (file-based routing under src/pages/).
+
+Page structure:
+src/pages/
+├── index.tsx # /
+├── 404.tsx # /404
+├── auth.tsx # /auth
+├── articles.tsx # /articles
+├── articles/[page].tsx # /articles/:slug
+├── contributors.tsx # /contributors
+├── company-management.tsx # /company-management
+├── [page].tsx # /:slug (catch-all for Strapi pages)
+├── tools/index.tsx # /tools
+├── tools/longevity-protocol/... # /tools/longevity-protocol/\*
+└── api/auth/[...nextauth].ts # NextAuth API route
+
+Data fetching: Most pages use getStaticProps with ISR (revalidate: 10). Some use getServerSideProps (contributors). Dynamic routes use getStaticPaths with fallback: 'blocking'.
+
+Layout pattern: Pages render a layout component that wraps content:
+const Index: FC = ({ landingData }) => (
+
+);
+
+A root Layout component in src/layouts/Layout/Layout.tsx wraps all pages (applied in \_app.tsx), handling nav, cookie box, and route-specific logic.
+
+SEO: SeoGenerator component accepts strapiSEO, ogTags, dates, and type. It generates , meta tags, Open Graph, Twitter cards, JSON-LD schema (via src/lib/schema.tsx), and hrefLang alternates.
+
+Tool registration: Tools are fetched from Strapi CMS at build time (not hardcoded). Visual config (icons, hover colors) lives in src/constants/tools.ts as a TOOL_CONFIG record keyed by numeric Strapi ID.
+
+---
+
+7. i18n
+
+Locales: en (default), ru, hy — configured in next.config.js.
+
+Approach: Custom — no next-i18next or react-intl. Each data module exports { en, ru, hy } and components index by router.locale.
+
+Fallback: Manual and inconsistent. Most pages use:
+const currentLocale = locale === 'ru' ? 'ru' : 'en';
+This means Armenian (hy) falls back to English everywhere except data modules that explicitly provide hy.ts (navbar, cookies, contributors, tools, 404, buttonText, accordion, quote).
+
+There's a // HYTranslation TODO comment in SeoGenerator (line 96).
+
+---
+
+8. Imports & Aliases
+
+11 path aliases in tsconfig.json:
+
+┌────────────────┬────────────────────┐
+│ Alias │ Maps to │
+├────────────────┼────────────────────┤
+│ @components/_ │ src/components/_ │
+├────────────────┼────────────────────┤
+│ @layouts/_ │ src/layouts/_ │
+├────────────────┼────────────────────┤
+│ @hooks/_ │ src/hooks/_ │
+├────────────────┼────────────────────┤
+│ @data/_ │ src/data/_ │
+├────────────────┼────────────────────┤
+│ @api/_ │ src/api/_ │
+├────────────────┼────────────────────┤
+│ @lib/_ │ src/lib/_ │
+├────────────────┼────────────────────┤
+│ @constants/_ │ src/constants/_ │
+├────────────────┼────────────────────┤
+│ @styles/_ │ src/styles/_ │
+├────────────────┼────────────────────┤
+│ @local-types/_ │ src/local-types/_ │
+├────────────────┼────────────────────┤
+│ @utils/_ │ src/utils/_ │
+├────────────────┼────────────────────┤
+│ @icons/_ │ src/assets/icons/_ │
+└────────────────┴────────────────────┘
+
+Import order enforced by eslint-plugin-simple-import-sort (16 groups):
+
+1. Side-effects → 2. Node built-ins → 3. Third-party → 4. @styles → 5. @constants → 6. @local-types → 7. @hooks → 8. @lib → 9. @api → 10. @data → 11. @icons → 12. @components → 13. @layouts → 14. Other @/ → 15. Relative
+ non-style → 16. Style imports (.scss)
+
+---
+
+9. Things a New Contributor Would Get Wrong
+
+1. Where to put types. Three patterns coexist: inline in component file, separate .types.ts sibling, or centralized in @local-types/. No documented rule for when to use which.
+1. Component directory naming. PascalCase for standalone components, lowercase for feature collections — but this convention is implicit and not enforced.
+1. Styling. SCSS modules only. No inline styles (except single dynamic properties like style={{ color }}). No Tailwind. keepsimple-style.md is the design reference but isn't linked from CONTRIBUTING.md.
+1. SVG imports. @svgr/webpack means .svg files import as React components, not image URLs. The type declaration is in src/svg.d.ts. Using with an SVG import won't work.
+1. Barrel files. Every component directory should have an index.ts, but some are empty (0 bytes) — e.g., longevity/StudySection/index.ts, longevity/EnvironmentSubSection/index.ts.
+1. Armenian locale fallback. If you add a new data module, the implicit locale === 'ru' ? 'ru' : 'en' pattern silently drops Armenian to English. You must provide an explicit hy.ts and handle it in the fallback logic if
+ Armenian should be supported.
+1. Deep relative imports. A few files use '../../../../lib/mixpanel' instead of @lib/mixpanel. ESLint allows both, but the convention is aliases.
+1. Environment variables. .env.example lists 17 variables with no documentation of which are required, what values to use locally, or which are client-side (NEXT*PUBLIC*\*) vs server-only.
+1. GlobalContext location. It lives at src/components/Context/GlobalContext.ts (inside components, not src/context/). LongevityContext lives at src/context/LongevityContext.tsx. Two different patterns.
+1. No unit tests. Only Cypress E2E exists. There's no Jest setup, so adding unit tests requires bootstrapping from scratch.
+
+---
+
+10. What's Missing or Inconsistent
+
+- No centralized design tokens. Colors, spacing, and breakpoints are hardcoded per-component. keepsimple-style.md documents the design system in prose, but nothing enforces it in code.
+- Breakpoints are duplicated. At least 8 different max-width values appear across component SCSS files with no shared variable or mixin.
+- TypeScript is loose. strict: false and noImplicitAny: false — many props typed as any, several // TODO: fix any type comments.
+- Props naming conventions diverge. Some components use TComponentName (T-prefix), others use ComponentNameProps (Props-suffix). Both patterns appear in roughly equal proportion.
+- \_variables.scss is misnamed. It contains reusable class snippets (.defaultTooltip, .section), not SCSS variables ($color-primary, etc.).
+- src/utils/ has a single file. Most utilities live in src/lib/ instead. The boundary between utils/ and lib/ is unclear.
+- Context files are split across two locations — src/components/Context/ and src/context/.
+- longevity-variavles.scss (typo in filename) is empty — 0 bytes.
+- CONTRIBUTING.md says "follow our code style" but doesn't reference keepsimple-style.md, import ordering rules, or component structure conventions.
+- forceConsistentCasingInFileNames: false in tsconfig — case-sensitivity issues can slip through on macOS/Windows but break on Linux CI.
diff --git a/scripts/import-repo.sh b/scripts/import-repo.sh
new file mode 100644
index 0000000..f6f6093
--- /dev/null
+++ b/scripts/import-repo.sh
@@ -0,0 +1,347 @@
+#!/bin/bash
+set -e
+
+# ──────────────────────────────────────────────────────────────────────
+# Import an external repo into the keepsimple monorepo
+#
+# Usage: ./scripts/import-repo.sh
+# Example: ./scripts/import-repo.sh https://github.com/someone/vibesuite.git tools/vibesuite
+#
+# What it does:
+# 1. Creates a branch from dev
+# 2. Clones the external repo into _incoming/
+# 3. Hands off to Claude Code with a detailed migration prompt
+# 4. Claude restructures everything to match keepsimple conventions
+# ──────────────────────────────────────────────────────────────────────
+
+REPO_URL=$1
+TARGET_PATH=$2
+
+if [ -z "$REPO_URL" ] || [ -z "$TARGET_PATH" ]; then
+ echo "Usage: ./scripts/import-repo.sh "
+ echo "Example: ./scripts/import-repo.sh https://github.com/someone/vibesuite.git tools/vibesuite"
+ exit 1
+fi
+
+FEATURE_NAME=$(basename "$TARGET_PATH")
+
+# 1. Branch from dev
+git fetch origin
+git checkout dev
+git pull origin dev
+BRANCH="feat/import-$FEATURE_NAME"
+git checkout -b "$BRANCH" 2>/dev/null || git checkout "$BRANCH"
+
+# 2. Clone the external repo into a staging area
+TMP_DIR=$(mktemp -d)
+git clone "$REPO_URL" "$TMP_DIR/source"
+rm -rf "$TMP_DIR/source/.git"
+
+STAGING="_incoming/$FEATURE_NAME"
+mkdir -p "$STAGING"
+cp -r "$TMP_DIR/source/." "$STAGING/"
+rm -rf "$TMP_DIR"
+
+echo ""
+echo "Source cloned to $STAGING"
+echo "Target location: $TARGET_PATH"
+echo "Branch: $BRANCH"
+echo ""
+echo "Handing off to Claude Code..."
+echo ""
+
+# 3. Hand off to Claude Code
+claude --print "
+You are integrating an external repo into the keepsimple monorepo.
+
+Source: _incoming/$FEATURE_NAME
+Target: $TARGET_PATH
+
+Read keepsimple-style.md (the full file, especially the Technical Rules section at the bottom)
+before you write any code. That file is the single source of truth for how this project is structured.
+
+THE GOAL: The migrated pages must look and behave EXACTLY like the source app.
+Do NOT change any visual design. Do NOT modify keepsimple's existing styles.
+The only changes are structural: different file layout, SCSS Modules instead of
+inline/Tailwind/CSS, Pages Router instead of App Router. The user must not see
+any visual difference.
+
+IMPORTANT: if source components already match our project style, just move them
+as-is. Do NOT refactor working code for the sake of refactoring. Only change
+what needs changing.
+
+──────────────────────────────────────────────────────────────────────
+ADDITIONAL RULES
+──────────────────────────────────────────────────────────────────────
+
+- Reuse existing keepsimple components (Button, Modal, Input, Heading, etc.)
+ wherever the source has equivalents. If a source style doesn't match any
+ existing variant, ADD a new variant to our component instead of inlining
+ custom styles.
+
+- Use our Heading component for all h1/h2/h3 — never raw heading tags.
+
+- Validate HTML semantics. No invalid nesting, no nested interactive elements,
+ use semantic tags.
+
+- Extract types into sibling files named ComponentName.types.ts with a
+ ComponentNameProps interface.
+
+- SVGs: never inline. Imported into components → src/assets/icons//.
+ Used in SCSS or tags → keepsimple_/public/assets//.
+ Reuse existing folders if names match, otherwise create.
+
+- SEO: import SeoGenerator on new pages but pass NO values (content comes from
+ backend later). Don't add separate schema.org — SeoGenerator already handles it.
+
+- Localization: if Russian or Armenian (hy) files contain broken unicode escapes
+ that should be readable Cyrillic/Armenian, decode the entire file. Don't touch
+ JSON files where \\\\uXXXX escapes are valid.
+
+──────────────────────────────────────────────────────────────────────
+PHASE 1: UNDERSTAND THE SOURCE
+──────────────────────────────────────────────────────────────────────
+
+1. Read every file in _incoming/$FEATURE_NAME/src/ to understand what the app does.
+2. Read _incoming/$FEATURE_NAME/package.json for all dependencies.
+3. Identify:
+ - Which router it uses (App Router vs Pages Router)
+ - How it styles components (Tailwind, CSS Modules, inline styles, SCSS, etc.)
+ - What state management or data-fetching patterns it uses
+ - What auth system it uses (NextAuth version, providers, etc.)
+ - Any external services (Redis, databases, email, etc.)
+
+──────────────────────────────────────────────────────────────────────
+PHASE 2: MERGE DEPENDENCIES
+──────────────────────────────────────────────────────────────────────
+
+Compare _incoming/$FEATURE_NAME/package.json with the root package.json.
+
+Rules:
+- If both repos have the SAME package: keep the version from root package.json. Do not upgrade.
+- If the source has a package that root does NOT have: add it to root package.json.
+- SKIP these source packages entirely (keepsimple does not use them):
+ - tailwindcss, @tailwindcss/postcss, postcss (keepsimple uses SCSS Modules)
+ - Any package that is only needed because the source uses App Router
+- After updating package.json, run: yarn install
+
+Print a table showing: package name | source version | action taken (kept existing / added / skipped)
+
+──────────────────────────────────────────────────────────────────────
+PHASE 3: CONVERT ROUTING (App Router -> Pages Router)
+──────────────────────────────────────────────────────────────────────
+
+keepsimple uses the Next.js Pages Router (src/pages/).
+
+For each route in the source:
+- src/app/page.tsx -> src/pages/tools/$FEATURE_NAME/index.tsx
+- src/app/[slug]/page.tsx -> src/pages/tools/$FEATURE_NAME/[slug].tsx
+- src/app/api/*/route.ts -> src/pages/api/$FEATURE_NAME/*.ts
+- src/app/layout.tsx -> integrate into _app.tsx or a new layout in src/layouts/
+
+Conversion rules:
+- Remove all 'use client' directives (Pages Router does not need them)
+- Replace server-component data fetching with getServerSideProps or getStaticProps
+- next/headers is not available in Pages Router — use req/res from getServerSideProps
+- next/navigation -> next/router (useRouter from next/router, not next/navigation)
+- Replace App Router middleware with Pages Router API route checks or getServerSideProps guards
+- Page components must use: export default ComponentName + export async function getServerSideProps
+
+Follow the existing pattern from src/pages/tools/ and src/pages/contributors.tsx:
+ - Page fetches data in getServerSideProps
+ - Page renders +
+ - Layout lives in src/layouts/
+
+──────────────────────────────────────────────────────────────────────
+PHASE 4: CONVERT ALL STYLING TO SCSS MODULES
+──────────────────────────────────────────────────────────────────────
+
+keepsimple uses SCSS Modules exclusively. The migrated app must be a PIXEL-PERFECT
+replica of the source. Do not change any visual property — only move where styles live.
+
+ZERO INLINE STYLES ALLOWED. Convert every single one:
+
+For each component:
+1. Create a ComponentName.module.scss alongside the .tsx file
+2. Extract EVERY inline style={{}} into an SCSS class — no exceptions:
+ - Static styles (e.g., style={{ padding: '1rem' }}) -> .ClassName { padding: 1rem; }
+ - Conditional styles computed from state/props -> use cn() with multiple SCSS classes
+ - Styles that depend on dynamic data (e.g., style={{ color: category.color }}) ->
+ these are the ONLY exception. Keep them as inline style={{}} but ONLY for the
+ single dynamic property. All other properties on the same element must still
+ be in the SCSS module.
+ Example: style={{ color: category.color }} is OK.
+ But style={{ color: category.color, padding: '1rem', display: 'flex' }} is NOT —
+ move padding and display to the SCSS class, keep only color inline.
+3. Extract EVERY Tailwind utility class into its SCSS equivalent
+ - className=\"flex items-center gap-4\" -> .Wrapper { display: flex; align-items: center; gap: 1rem; }
+4. Convert EVERY .css file into .module.scss
+ - globals.css -> src/styles/$FEATURE_NAME.scss (global, imported in _app.tsx)
+ - component.css -> ComponentName.module.scss (scoped)
+5. Import as: import styles from './ComponentName.module.scss';
+6. Use as: className={styles.ClassName} or cn(styles.A, { [styles.B]: condition })
+7. Use classnames (imported as cn) for conditional classes — already installed
+
+Copy every CSS value exactly as it appears in the source:
+- Same colors, same sizes, same spacing, same fonts, same transitions
+- Same hover states, same focus states, same active states
+- Same animations, same keyframes, same durations, same easing
+- Same media queries, same breakpoints, same responsive behavior
+- Same z-index, same positioning, same overflow behavior
+- If the source uses CSS variables (var(--foo)), keep them as var(--foo) in SCSS
+
+Convert hover/focus/active states that use onMouseEnter/onMouseLeave JS handlers:
+- If the handler just changes a style -> replace with SCSS :hover/:focus/:active pseudo-class
+- If the handler does other things besides style changes -> keep the handler but move the
+ style portion into SCSS, applying/removing a class instead of mutating element.style
+
+SCSS class naming: PascalCase (e.g., .SkillCard, .CategoryNav, .DetailPanel).
+
+GLOBAL STYLES (animations, keyframes, scrollbar styles, font imports):
+- Put them in src/styles/$FEATURE_NAME.scss as a regular (non-module) SCSS file
+- Animation classes used as plain strings (className=\"animate-slide-in\") stay as
+ plain selectors in this file — do NOT wrap in :global(), this file is not a module
+- Import it in src/pages/_app.tsx alongside globals.scss:
+ import '../styles/$FEATURE_NAME.scss';
+ Next.js Pages Router ONLY allows global CSS imports in _app.tsx.
+ Do NOT import global .scss from any other component or layout file.
+ Do NOT @import it from inside a .module.scss file.
+- Scope feature-specific CSS variable overrides under a .${FEATURE_NAME}-root class
+ so they don't leak into other keepsimple pages
+
+DO NOT modify any existing keepsimple styles (globals.scss, _variables.scss, etc.).
+DO NOT change CSS variable values defined in keepsimple-style.md.
+If the source app uses different values for the same variable names, override them
+inside the .${FEATURE_NAME}-root scope only.
+
+──────────────────────────────────────────────────────────────────────
+PHASE 5: RESTRUCTURE FILES TO MATCH KEEPSIMPLE CONVENTIONS
+──────────────────────────────────────────────────────────────────────
+
+Read keepsimple-style.md Technical Rules for the exact folder structure.
+
+Components go in: src/components/$FEATURE_NAME/ComponentName/
+ - ComponentName.tsx
+ - ComponentName.module.scss
+ - index.ts (barrel: import X from './X'; export default X;)
+ - ComponentName.types.ts (if props are complex)
+
+Layouts go in: src/layouts/\${FEATURE_NAME}Layout/
+ - Same file structure as components
+
+Pages go in: src/pages/tools/$FEATURE_NAME/
+ - Follow the pattern from src/pages/tools/longevity-protocol/
+
+Data files go in: src/data/$FEATURE_NAME/
+ - If the source has i18n: create en.ts, ru.ts, hy.ts + index.ts
+ - If the source has static data (like skills.ts): put it here
+
+Types go in: src/local-types/pageTypes/$FEATURE_NAME.ts
+
+API functions go in: src/api/$FEATURE_NAME.ts
+
+Hooks go in: src/hooks/ (prefixed with use*)
+
+Naming rules:
+- Component folders: PascalCase (SkillCard/, CategoryNav/)
+- Component files: PascalCase (SkillCard.tsx, SkillCard.module.scss)
+- Feature grouping folders: lowercase ($FEATURE_NAME/)
+- Data/API/constants files: lowercase (skills.ts, not Skills.ts)
+- All exports: export default (not named exports in index.ts)
+
+──────────────────────────────────────────────────────────────────────
+PHASE 6: FIX IMPORTS
+──────────────────────────────────────────────────────────────────────
+
+Update all imports to use keepsimple's path aliases:
+- @components/* -> src/components/*
+- @layouts/* -> src/layouts/*
+- @hooks/* -> src/hooks/*
+- @data/* -> src/data/*
+- @api/* -> src/api/*
+- @local-types/* -> src/local-types/*
+- @icons/* -> src/assets/icons/*
+- @lib/* -> src/lib/*
+- @constants/* -> src/constants/*
+- @styles/* -> src/styles/*
+- @utils/* -> src/utils/*
+
+Replace the source's @/* alias with the specific keepsimple aliases above.
+
+Import order is enforced by eslint-plugin-simple-import-sort. Follow this order:
+ 1. Side-effect imports
+ 2. Node built-ins
+ 3. Third-party packages (react, next, classnames, etc.)
+ 4. @styles -> @constants -> @local-types -> @hooks -> @lib -> @api -> @data -> @icons -> @components -> @layouts
+ 5. Relative imports (non-style)
+ 6. Style imports (.scss)
+
+──────────────────────────────────────────────────────────────────────
+PHASE 7: AUTH COMPATIBILITY
+──────────────────────────────────────────────────────────────────────
+
+keepsimple uses next-auth 4.23.2 (v4). If the source uses NextAuth v5 / Auth.js:
+- Convert to v4 API (NextAuth(), not auth())
+- Use useSession() on client, getServerSession() in getServerSideProps
+- API route: src/pages/api/auth/[...nextauth].ts (not route.ts)
+- Check if keepsimple already has [...nextauth] — if so, MERGE providers, do not overwrite
+
+──────────────────────────────────────────────────────────────────────
+PHASE 8: COPY ALL STATIC ASSETS
+──────────────────────────────────────────────────────────────────────
+
+The source repo has a public/ folder with images, SVGs, fonts, and other static files.
+keepsimple serves all assets from public/keepsimple_/assets/.
+
+COPY EVERY ASSET — do not skip any image, font, SVG, video, or media file.
+The migrated app must have access to every file the source app used.
+
+1. Scan _incoming/$FEATURE_NAME/public/ recursively for ALL files:
+ - Images: .jpg, .jpeg, .png, .webp, .gif, .avif, .ico
+ - Vectors: .svg
+ - Fonts: .woff, .woff2, .ttf, .otf, .eot
+ - Video/audio: .mp4, .webm, .mp3, .wav, .ogg
+ - Any other static file the app references
+2. SKIP only framework boilerplate: next.svg, vercel.svg, favicon.ico, robots.txt
+3. Copy everything else to: public/keepsimple_/assets/$FEATURE_NAME/
+ - Preserve subfolder structure from the source public/ directory
+ - Example: public/images/hero.jpg -> public/keepsimple_/assets/$FEATURE_NAME/images/hero.jpg
+4. Also check src/ for assets:
+ - Some repos put images in src/assets/, src/images/, or alongside components
+ - Copy those to public/keepsimple_/assets/$FEATURE_NAME/ as well
+5. Update EVERY reference in the migrated code:
+ - Search all .tsx, .ts, .scss, .module.scss files
+ - Patterns to find: src=\", src={, href=\", url(, backgroundImage:, import.*\.(jpg|png|svg|webp)
+ - Rewrite paths:
+ '/image.jpg' -> '/keepsimple_/assets/$FEATURE_NAME/image.jpg'
+ '/assets/foo.png' -> '/keepsimple_/assets/$FEATURE_NAME/assets/foo.png'
+ '/images/bar.svg' -> '/keepsimple_/assets/$FEATURE_NAME/images/bar.svg'
+ - Also check template literals: \`/\${path}\` and string concatenation: '/path' + variable
+ - Also check CSS/SCSS: url('/image.jpg') -> url('/keepsimple_/assets/$FEATURE_NAME/image.jpg')
+6. If the source generates textures or images via code (e.g., SVG data URIs, Canvas),
+ leave those as-is — they don't need file copying
+7. Verify: after migration, grep all migrated files for any remaining asset paths
+ that don't start with /keepsimple_/assets/$FEATURE_NAME/ or are not data: URIs.
+ Fix any you find.
+
+──────────────────────────────────────────────────────────────────────
+PHASE 9: CLEANUP
+──────────────────────────────────────────────────────────────────────
+
+1. Delete _incoming/$FEATURE_NAME entirely
+2. Delete any leftover config files from the source (tailwind.config.*, postcss.config.*, etc.)
+3. Run: yarn install (if package.json was modified)
+4. Make sure there are no broken imports by checking each new file
+
+──────────────────────────────────────────────────────────────────────
+PHASE 10: REPORT
+──────────────────────────────────────────────────────────────────────
+
+When done, print a summary:
+- List of new dependencies added to package.json
+- File mapping: source path -> destination path (for every file)
+- Asset mapping: source asset -> destination path (for every image/font/media)
+- List of files that could NOT be automatically converted and why
+- Any env variables the source needs (.env) that keepsimple should add
+- Next steps for the developer (manual testing, missing assets, etc.)
+"
diff --git a/src/api/settings.ts b/src/api/settings.ts
new file mode 100644
index 0000000..8901b62
--- /dev/null
+++ b/src/api/settings.ts
@@ -0,0 +1,44 @@
+export const userInfoUpdate = async (
+ token: string,
+ username?: string,
+ linkedIn?: string,
+ isEmailPublic?: boolean,
+ isLinkedinPublic?: boolean,
+ title?: string,
+ gender?: string,
+ npsScore?: number,
+ isModalShown?: boolean,
+) => {
+ const url = `${process.env.NEXT_PUBLIC_STRAPI}/api/user/me`;
+ const body = JSON.stringify({
+ ...(username !== undefined && { username }),
+ ...(linkedIn !== undefined && { linkedIn }),
+ ...(isEmailPublic !== undefined && { isEmailPublic }),
+ ...(isLinkedinPublic !== undefined && { isLinkedinPublic }),
+ ...(title !== undefined && { title }),
+ ...(gender !== undefined && { gender }),
+ ...(npsScore !== undefined && { npsScore }),
+ ...(isModalShown !== undefined && { isModalShown }),
+ });
+ const headers = {
+ 'Content-Type': 'application/json',
+ Authorization: `Bearer ${token}`,
+ };
+
+ try {
+ const response = await fetch(url, {
+ method: 'PUT',
+ headers: headers,
+ body,
+ });
+
+ if (!response.ok) {
+ throw new Error(`HTTP error! status: ${response.status}`);
+ }
+
+ return await response.json();
+ } catch (error) {
+ console.error('Failed to update user info:', error);
+ throw error;
+ }
+};
diff --git a/src/api/vibesuite.ts b/src/api/vibesuite.ts
new file mode 100644
index 0000000..1d475e0
--- /dev/null
+++ b/src/api/vibesuite.ts
@@ -0,0 +1,27 @@
+export const getVibesuite = async (locale: string) => {
+ const url = `${process.env.NEXT_PUBLIC_STRAPI}/api/vibesuite?populate[pageSeo]=*&populate[OGTags][populate]=ogImage&locale=${locale}`;
+ return await fetch(url)
+ .then(resp => resp.json())
+ .then(json => json?.data?.attributes || null);
+};
+
+export const updateLearnedSkills = async (learnedSkills: string[]) => {
+ const token: string = localStorage?.getItem('accessToken');
+ if (!token) return;
+
+ const url = `${process.env.NEXT_PUBLIC_STRAPI}/api/user/learned-skills`;
+ const res = await fetch(url, {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify({ learnedSkills }),
+ });
+
+ if (!res.ok) {
+ throw new Error('Failed to update learned skills');
+ }
+
+ return res.json();
+};
diff --git a/src/assets/icons/tools/tool-icons/friendly-tom.svg b/src/assets/icons/tools/tool-icons/friendly-tom.svg
new file mode 100644
index 0000000..7b34b8a
--- /dev/null
+++ b/src/assets/icons/tools/tool-icons/friendly-tom.svg
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/icons/tools/tool-icons/vibesuite.svg b/src/assets/icons/tools/tool-icons/vibesuite.svg
new file mode 100644
index 0000000..353cf0d
--- /dev/null
+++ b/src/assets/icons/tools/tool-icons/vibesuite.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/icons/tools/vibesuite/ArrowUp.tsx b/src/assets/icons/tools/vibesuite/ArrowUp.tsx
new file mode 100644
index 0000000..af621bd
--- /dev/null
+++ b/src/assets/icons/tools/vibesuite/ArrowUp.tsx
@@ -0,0 +1,13 @@
+const ArrowUp = () => (
+
+
+
+);
+
+export default ArrowUp;
diff --git a/src/assets/icons/user-dropdown/log-out.svg b/src/assets/icons/user-dropdown/log-out.svg
new file mode 100644
index 0000000..65373d7
--- /dev/null
+++ b/src/assets/icons/user-dropdown/log-out.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/icons/user-dropdown/settings.svg b/src/assets/icons/user-dropdown/settings.svg
new file mode 100644
index 0000000..7a145ec
--- /dev/null
+++ b/src/assets/icons/user-dropdown/settings.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Button/Button.module.scss b/src/components/Button/Button.module.scss
index e15a687..b153ef4 100644
--- a/src/components/Button/Button.module.scss
+++ b/src/components/Button/Button.module.scss
@@ -37,6 +37,16 @@
border-color: #c5c5c5;
}
}
+ &.black {
+ background-color: #242424;
+ color: #fff;
+ border-color: #242424;
+ &:hover {
+ background-color: #242424;
+ color: #fff;
+ border-color: #242424;
+ }
+ }
&.primary {
color: #fff;
diff --git a/src/components/Button/Button.tsx b/src/components/Button/Button.tsx
index 6ddc043..22b1c1e 100644
--- a/src/components/Button/Button.tsx
+++ b/src/components/Button/Button.tsx
@@ -7,7 +7,7 @@ import Loader from '@icons/Loader';
import styles from './Button.module.scss';
type TButton = {
- variant?: 'default' | 'primary' | 'secondary' | 'grey';
+ variant?: 'default' | 'primary' | 'secondary' | 'grey' | 'black';
type?: 'submit' | 'button' | 'reset';
label: string;
disabled?: boolean;
@@ -73,6 +73,7 @@ const Button: FC = ({
[styles.disabled]: disabled,
[styles.grey]: variant === 'grey',
[styles.secondary]: variant === 'secondary',
+ [styles.black]: variant === 'black',
})}
onClick={handleClick}
onMouseEnter={handleMouseEnter}
diff --git a/src/components/Checkbox/Checkbox.module.scss b/src/components/Checkbox/Checkbox.module.scss
new file mode 100644
index 0000000..cc90c20
--- /dev/null
+++ b/src/components/Checkbox/Checkbox.module.scss
@@ -0,0 +1,131 @@
+.visibleTxtMobile {
+ display: none;
+}
+
+.checkboxes {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+
+ .visibleTxt {
+ color: rgba(0, 0, 0, 0.45);
+ font-family: 'Lato', sans-serif;
+ font-size: 14px;
+ line-height: 1.571;
+ }
+}
+
+.txt {
+ font-family: 'Source Serif 4', 'Source-Serif-Regular', serif;
+ font-size: 14px;
+ line-height: 1.571;
+ color: rgba(0, 0, 0, 0.85);
+}
+
+.wrapper {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 8px 0;
+}
+
+.wrapper + .wrapper {
+ margin-left: 8px;
+}
+
+.container {
+ display: block;
+ position: relative;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ width: 20px;
+ height: 20px;
+}
+
+.container input {
+ position: absolute;
+ opacity: 0;
+ cursor: pointer;
+ height: 0;
+ width: 0;
+}
+
+.checkmark {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 20px;
+ width: 20px;
+ border-radius: 50%;
+ background-color: #fff;
+ border: 1px solid #d9d9d9;
+ box-sizing: border-box;
+}
+
+.container input:checked ~ .checkmark {
+ border: 1px solid #242424;
+}
+
+.checkmark:after {
+ content: '';
+ position: absolute;
+ display: none;
+}
+
+.container input:checked ~ .checkmark:after {
+ display: block;
+}
+
+.container .checkmark:after {
+ left: 4px;
+ top: 4px;
+ width: 10px;
+ height: 10px;
+ background: #242424;
+ border-radius: 50%;
+}
+
+// Dark mode
+:global(.darkTheme) {
+ .checkboxes .visibleTxt {
+ color: rgba(255, 255, 255, 0.45);
+ }
+
+ .txt {
+ color: #fff;
+ }
+
+ .checkmark {
+ background-color: #1b1e26;
+ border-color: #5b5b5b;
+ }
+
+ .container input:checked ~ .checkmark {
+ border-color: #fff;
+ }
+
+ .container .checkmark:after {
+ background: #fff;
+ }
+}
+
+@media (max-width: 750px) {
+ .visibleTxtMobile {
+ display: block;
+ color: rgba(0, 0, 0, 0.45);
+ font-family: 'Lato', sans-serif;
+ font-size: 14px;
+ line-height: 1.571;
+ }
+
+ .checkboxes .visibleTxt {
+ display: none;
+ }
+
+ :global(.darkTheme) .visibleTxtMobile {
+ color: rgba(255, 255, 255, 0.45);
+ }
+}
diff --git a/src/components/Checkbox/Checkbox.tsx b/src/components/Checkbox/Checkbox.tsx
new file mode 100644
index 0000000..d31a364
--- /dev/null
+++ b/src/components/Checkbox/Checkbox.tsx
@@ -0,0 +1,60 @@
+import { FC } from 'react';
+
+import styles from './Checkbox.module.scss';
+
+type CheckboxProps = {
+ visibleTxt: string;
+ everyone: string;
+ onlyYou: string;
+ setRadioValue: (radioValue: string) => void;
+ radioValue: string;
+};
+
+const Checkbox: FC = ({
+ visibleTxt,
+ everyone,
+ onlyYou,
+ setRadioValue,
+ radioValue,
+}) => {
+ const handleRadioChange = event => {
+ setRadioValue(event.target.value);
+ };
+
+ return (
+ <>
+ {visibleTxt}
+
+
{visibleTxt}
+
+
+
+
+
+ {everyone}
+
+
+
+
+
+
+
+ {onlyYou}
+
+
+ >
+ );
+};
+export default Checkbox;
diff --git a/src/components/Checkbox/index.ts b/src/components/Checkbox/index.ts
new file mode 100644
index 0000000..36fa16d
--- /dev/null
+++ b/src/components/Checkbox/index.ts
@@ -0,0 +1,3 @@
+import Checkbox from './Checkbox';
+
+export default Checkbox;
diff --git a/src/components/Header/Header.module.scss b/src/components/Header/Header.module.scss
index f928b18..f76e6fb 100644
--- a/src/components/Header/Header.module.scss
+++ b/src/components/Header/Header.module.scss
@@ -27,7 +27,8 @@
}
.burgerMenu,
- .closeButton {
+ .closeButton,
+ .mobileUserProfile {
display: none;
}
@@ -133,6 +134,19 @@
}
}
+ & .mobileUserProfile {
+ display: block;
+ position: absolute;
+ right: 16px;
+ top: 50%;
+ transform: translateY(-50%);
+ opacity: 1;
+ visibility: visible;
+ transition:
+ opacity 0.3s,
+ visibility 0.3s;
+ }
+
& .closeButton {
display: block;
position: absolute;
@@ -165,6 +179,11 @@
}
.header.openedSidebar {
+ & .mobileUserProfile {
+ opacity: 0;
+ visibility: hidden;
+ }
+
& .closeButton {
right: 1rem;
}
@@ -350,6 +369,11 @@
}
.header.openedSidebar {
+ & .mobileUserProfile {
+ opacity: 0;
+ visibility: hidden;
+ }
+
& .closeButton {
right: 1rem;
}
diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx
index 956208b..39e2089 100644
--- a/src/components/Header/Header.tsx
+++ b/src/components/Header/Header.tsx
@@ -1,33 +1,57 @@
import cn from 'classnames';
+import dynamic from 'next/dynamic';
import Image from 'next/image';
import { useRouter } from 'next/router';
-import React, { FC, Fragment, useCallback, useContext } from 'react';
+import React, {
+ FC,
+ Fragment,
+ useCallback,
+ useContext,
+ useEffect,
+ useState,
+} from 'react';
import { flushSync } from 'react-dom';
-// import UserProfile from '@components/UserProfile';
-// import LogIn from '@components/LogIn';
import type { TRouter } from '@local-types/global';
import useGlobals from '@hooks/useGlobals';
import { useIsWidthLessThan } from '@hooks/useScreenSize';
+import { userInfoUpdate } from '@api/settings';
+import { getMyInfo } from '@api/strapi';
+
import { GlobalContext } from '@components/Context/GlobalContext';
+import LogIn from '@components/LogIn';
import Navbar from '@components/Navbar';
import Link from '@components/NextLink';
+import UserProfile from '@components/UserProfile';
import styles from './Header.module.scss';
+const SettingsModal = dynamic(() => import('@components/SettingsModal'), {
+ ssr: false,
+});
+
const Header: FC = () => {
const router = useRouter();
const { locale, locales } = router as TRouter;
const { setShowLoader, videoRef } = useContext(GlobalContext);
+ const [openSettings, setOpenSettings] = useState(false);
+ const [usernameIsTakenError, setUsernameIsTakenError] = useState('');
+ const [token, setToken] = useState(null);
const isSmallScreen = useIsWidthLessThan(1141);
- // const [openLogin, setOpenLogin] = useState(false);
- // const { accountData, setAccountData } = useContext(GlobalContext);
+ const [openLogin, setOpenLogin] = useState(false);
+ const { accountData, setAccountData } = useContext(GlobalContext);
const [
{ toggleIsDarkTheme, toggleSidebar },
{ isDarkTheme, isOpenedSidebar },
] = useGlobals();
+
+ useEffect(() => {
+ const storedToken = localStorage.getItem('accessToken');
+ setToken(storedToken);
+ }, []);
+
const handleToggleTheme = useCallback(() => {
toggleIsDarkTheme();
}, []);
@@ -36,6 +60,38 @@ const Header: FC = () => {
toggleSidebar();
}, []);
+ const handleOpenSettings = useCallback(() => {
+ setOpenSettings(true);
+ }, []);
+
+ const handleSaveClick = async (
+ username: string,
+ linkedInUrl: string,
+ isEmailPublic: string,
+ isLinkedinPublic: string,
+ title?: string,
+ ) => {
+ const mailIsPublic = isEmailPublic === 'everyone';
+ const linkedInIsPublic = isLinkedinPublic === 'everyone';
+ try {
+ await userInfoUpdate(
+ token,
+ username,
+ linkedInUrl,
+ mailIsPublic,
+ linkedInIsPublic,
+ title,
+ );
+
+ const data = await getMyInfo();
+ setAccountData(data);
+ setOpenSettings(false);
+ setUsernameIsTakenError('');
+ } catch (error) {
+ setOpenSettings(true);
+ setUsernameIsTakenError('Username is already taken');
+ }
+ };
const handleClick = (e, path: string) => {
e.preventDefault();
flushSync(() => {
@@ -88,6 +144,21 @@ const Header: FC = () => {
+ {isSmallScreen && (
+
+
+
+ )}
{
)}
- {/* */}
+ {!isSmallScreen && (
+
+ )}
- {/*{openLogin && }*/}
+ {openLogin && }
+ {openSettings && (
+ {}}
+ />
+ )}
);
};
diff --git a/src/components/LogIn/LogIn.tsx b/src/components/LogIn/LogIn.tsx
index 82b75ae..f1cb1a9 100644
--- a/src/components/LogIn/LogIn.tsx
+++ b/src/components/LogIn/LogIn.tsx
@@ -1,7 +1,7 @@
import cn from 'classnames';
import { useRouter } from 'next/router';
import { signOut, useSession } from 'next-auth/react';
-import React, { FC, useContext, useEffect } from 'react';
+import React, { FC, useContext } from 'react';
import { setRedirectCookie } from '@lib/cookies';
@@ -29,6 +29,9 @@ const LogIn: FC = ({ setShowLogIn, source }) => {
provider: string,
logInSource: string,
) => {
+ const returnTo = router.asPath;
+ setRedirectCookie(returnTo);
+
if (session && accountData === null) {
await signOut({ redirect: false });
@@ -46,12 +49,6 @@ const LogIn: FC = ({ setShowLogIn, source }) => {
}
};
- useEffect(() => {
- if (!session) {
- setRedirectCookie(window.location.pathname + window.location.search);
- }
- }, [session, router]);
-
return (
diff --git a/src/components/Modal/Modal.module.scss b/src/components/Modal/Modal.module.scss
index 23c2deb..379d92c 100644
--- a/src/components/Modal/Modal.module.scss
+++ b/src/components/Modal/Modal.module.scss
@@ -10,7 +10,7 @@
background-color: rgba(0, 0, 0, 0.35);
align-items: center;
justify-content: center;
- z-index: 45;
+ z-index: 200;
.wrapper {
display: flex;
@@ -89,6 +89,10 @@
display: block;
width: 24px;
height: 24px;
+
+ :global(.darkTheme) & {
+ filter: invert(1);
+ }
}
.blackTitle {
@@ -107,6 +111,23 @@
}
}
+ .hr {
+ border: none;
+ background-image: url('/keepsimple_/assets/longevity/environment/line.png');
+ background-size: cover;
+ height: 1px;
+ width: clamp(319px, 50vw, 466px);
+ margin: 0;
+ position: absolute;
+ top: 55px;
+ left: 14px;
+
+ :global(.darkTheme) & {
+ background-image: none;
+ background-color: #5b5b5b;
+ }
+ }
+
.body {
padding: 16px 28px;
overflow: auto;
@@ -159,7 +180,6 @@
bottom: 0;
align-items: center;
justify-content: center;
- z-index: 46;
}
@media (max-width: 965px) {
diff --git a/src/components/Modal/Modal.tsx b/src/components/Modal/Modal.tsx
index 25b42cf..2150907 100644
--- a/src/components/Modal/Modal.tsx
+++ b/src/components/Modal/Modal.tsx
@@ -26,6 +26,7 @@ type ModalProps = {
grayTitle?: boolean;
dataCy?: string;
backgroundImageUrl?: string;
+ hasHr?: boolean;
};
const Modal: FC
= ({
@@ -49,6 +50,7 @@ const Modal: FC = ({
dataCy,
isLongevityProtocolModal,
backgroundImageUrl,
+ hasHr,
}) => {
const handleClose = () => {
onClick();
@@ -130,6 +132,7 @@ const Modal: FC = ({
>
{title}
+ {hasHr && }
div:first-child > span:first-child {
+ text-transform: uppercase;
+ font-family: 'Aboreto-Regular', sans-serif;
+ font-size: 20px;
+ padding: 20px 28px 10px 28px !important;
+ }
+
+ &.RuLocale > div:first-child > span:first-child {
+ font-family: 'Source-Serif-Regular', sans-serif;
+ }
+}
+
+// Dark mode
+:global(.darkTheme) {
+ .ModalWrapper {
+ background-image: url('/keepsimple_/assets/landingPage/landing-dark-bg.png') !important;
+
+ > div:first-child > span:first-child {
+ color: #fff;
+ }
+ }
+
+ .Label {
+ color: #fff;
+ }
+
+ .CancelBtn {
+ border-color: #fff !important;
+ color: #fff !important;
+ }
+
+ .SaveBtn {
+ background-color: #fff !important;
+ border-color: #fff !important;
+ color: rgba(0, 0, 0, 0.85) !important;
+
+ &:hover {
+ background-color: #fff !important;
+ border-color: #fff !important;
+ color: rgba(0, 0, 0, 0.85) !important;
+ }
+ }
+}
+
+@media (max-width: 750px) {
+ .ModalWrapper {
+ max-width: 343px !important;
+ width: 343px !important;
+ }
+
+ .FieldGroupWithVisibility {
+ gap: 12px;
+ }
+
+ .BtnWrapper {
+ justify-content: center;
+
+ .CancelBtn,
+ .SaveBtn {
+ flex: 1;
+ }
+ }
+}
diff --git a/src/components/SettingsModal/SettingsModal.tsx b/src/components/SettingsModal/SettingsModal.tsx
new file mode 100644
index 0000000..455a454
--- /dev/null
+++ b/src/components/SettingsModal/SettingsModal.tsx
@@ -0,0 +1,216 @@
+import cn from 'classnames';
+import { useRouter } from 'next/router';
+import { FC, useCallback, useState } from 'react';
+
+import { TRouter } from '@local-types/global';
+
+import {
+ isValidEmail,
+ linkedInRegex,
+ usernameRegex,
+} from '@lib/settings-helpers';
+
+import settingsData from '@data/settings';
+
+import Button from '@components/Button';
+import Checkbox from '@components/Checkbox';
+import Input from '@components/Input';
+import Modal from '@components/Modal';
+import Textarea from '@components/Textarea';
+
+import styles from './SettingsModal.module.scss';
+
+type SettingsModalProps = {
+ setOpenSettings: (openSettings: boolean) => void;
+ currentUsername: string;
+ currentEmail: string;
+ defaultSelectedTitle?: string;
+ mailStatus?: boolean;
+ linkedin?: string;
+ linkedinStatus?: boolean;
+ changeTitlePermission?: boolean;
+ usernameIsTakenError?: string;
+ setUsernameIsTakenError: (usernameIsTakenError: string) => void;
+ setChangedTitle: (selected: boolean) => void;
+ handleSaveClick: (
+ username: string,
+ linkedInUrl: string,
+ isEmailPublic: string,
+ isLinkedinPublic: string,
+ title?: string,
+ ) => void;
+};
+
+const SettingsModal: FC
= ({
+ setOpenSettings,
+ currentUsername,
+ handleSaveClick,
+ currentEmail,
+ mailStatus,
+ linkedinStatus,
+ linkedin,
+ usernameIsTakenError,
+ setUsernameIsTakenError,
+ defaultSelectedTitle,
+ changeTitlePermission,
+ setChangedTitle,
+}) => {
+ const router = useRouter();
+ const { locale } = router as TRouter;
+ const currentLocale = locale === 'ru' ? 'ru' : 'en';
+ const [isEmailPublic, setIsEmailPublic] = useState(
+ !!mailStatus ? 'everyone' : 'onlyMe',
+ );
+ const [isLinkedinPublic, setIsLinkedinPublic] = useState(
+ !!linkedinStatus ? 'everyone' : 'onlyMe',
+ );
+ const [username, setUsername] = useState(currentUsername);
+ const [linkedInUrl, setLinkedInUrl] = useState(linkedin);
+ const [selectedTitle] = useState(defaultSelectedTitle);
+ const [isValid, setIsValid] = useState({ username: true, linkedin: true });
+
+ const {
+ title,
+ usernameTxt,
+ email,
+ visible,
+ everyone,
+ onlyYou,
+ linkedIn,
+ saveBtn,
+ cancelBtn,
+ usernameValidationMessage,
+ invalidLinkedIn,
+ } = settingsData[currentLocale];
+
+ const closeSettings = () => {
+ setOpenSettings(false);
+ setUsernameIsTakenError('');
+ };
+
+ const validateUsername = (username: string) => {
+ if (username.trim() === '') {
+ return false;
+ }
+ return usernameRegex.test(username);
+ };
+
+ const validateLinkedIn = (linkedInUrl: string) => {
+ return linkedInRegex.test(linkedInUrl);
+ };
+
+ const handleValidation = useCallback(
+ (value: boolean, type: 'username' | 'linkedin') => {
+ setIsValid(prevIsValid => ({
+ ...prevIsValid,
+ [type]: value,
+ }));
+ },
+ [isValid],
+ );
+
+ const handleSave = () => {
+ if (isValid.username && isValid.linkedin) {
+ handleSaveClick(
+ username,
+ linkedInUrl,
+ isEmailPublic,
+ isLinkedinPublic,
+ changeTitlePermission ? selectedTitle : undefined,
+ );
+ }
+ setChangedTitle && setChangedTitle(true);
+ };
+
+ return (
+
+
+
+ {usernameTxt}
+
+
+
+
+
+
+ {
+ handleSave();
+ }}
+ variant="black"
+ className={styles.SaveBtn}
+ disabled={!isValid.username || !isValid.linkedin || !username}
+ />
+
+
+ );
+};
+
+export default SettingsModal;
diff --git a/src/components/SettingsModal/index.ts b/src/components/SettingsModal/index.ts
new file mode 100644
index 0000000..1aedb9c
--- /dev/null
+++ b/src/components/SettingsModal/index.ts
@@ -0,0 +1,3 @@
+import SettingsModal from './SettingsModal';
+
+export default SettingsModal;
diff --git a/src/components/Textarea/Textarea.module.scss b/src/components/Textarea/Textarea.module.scss
new file mode 100644
index 0000000..a2d2ef9
--- /dev/null
+++ b/src/components/Textarea/Textarea.module.scss
@@ -0,0 +1,85 @@
+.Textarea {
+ font-size: 16px;
+ color: #000;
+ margin-bottom: 20px;
+
+ .Label {
+ margin-bottom: 10px;
+ font-size: 16px;
+ }
+
+ & .TextareaWrapper {
+ position: relative;
+ font-size: 0;
+
+ textarea {
+ resize: none;
+ width: 100%;
+ border-radius: 4px;
+ border: 1px solid #cbcbcb;
+ padding: 6px 10px;
+ box-sizing: border-box;
+ position: relative;
+ z-index: 1;
+ height: 38px;
+ font-size: 16px;
+
+ &::placeholder {
+ /* Chrome, Firefox, Opera, Safari 10.1+ */
+ color: #ababab;
+ opacity: 1; /* Firefox */
+ }
+
+ &:focus {
+ border-color: #6d6d6d;
+ outline: none;
+ }
+ }
+
+ & .ErrorMessage {
+ position: absolute;
+ bottom: 0;
+ left: 0px;
+ color: red;
+ font-size: 14px;
+ z-index: 0;
+ transition: 0.2s;
+ }
+ }
+
+ &.Error {
+ & .TextareaWrapper {
+ .ErrorMessage {
+ bottom: -23px;
+ }
+ }
+ }
+}
+
+@media (max-width: 1440px) {
+ .Textarea {
+ font-size: 14px;
+
+ .Label {
+ font-size: 14px;
+ }
+
+ & .ErrorMessage {
+ font-size: 12px;
+ }
+ }
+}
+
+@media (max-width: 901px) {
+ .Textarea {
+ font-size: 16px;
+
+ .Label {
+ font-size: 16px;
+ }
+
+ & .ErrorMessage {
+ font-size: 14px;
+ }
+ }
+}
diff --git a/src/components/Textarea/Textarea.tsx b/src/components/Textarea/Textarea.tsx
new file mode 100644
index 0000000..542bf1d
--- /dev/null
+++ b/src/components/Textarea/Textarea.tsx
@@ -0,0 +1,83 @@
+import cn from 'classnames';
+import {
+ ChangeEvent,
+ FC,
+ useCallback,
+ useEffect,
+ useRef,
+ useState,
+} from 'react';
+
+import styles from './Textarea.module.scss';
+
+type TTextarea = {
+ label?: string;
+ placeholder?: string;
+ showError?: boolean;
+ validationFunction?: (value: string) => boolean;
+ errorMessage?: string;
+ onChange?: (value: string) => void;
+ isValidCallback?: (isValid: boolean) => void;
+ className?: string;
+ text?: string;
+};
+
+const Textarea: FC = ({
+ label,
+ placeholder,
+ showError,
+ onChange,
+ errorMessage,
+ isValidCallback,
+ validationFunction,
+ className,
+ text,
+}) => {
+ const [value, setValue] = useState('');
+ const debounceRef: any = useRef();
+ const handleChange = useCallback(
+ (e: ChangeEvent) => {
+ const { value: newValue } = e.target;
+
+ setValue(newValue);
+ if (onChange) onChange(newValue);
+
+ if (validationFunction) {
+ clearTimeout(debounceRef.current);
+
+ debounceRef.current = setTimeout(() => {
+ const newIsValid = !!newValue ? validationFunction(newValue) : true;
+ if (isValidCallback) isValidCallback(newIsValid);
+ }, 250);
+ }
+ },
+ [isValidCallback, validationFunction, onChange],
+ );
+
+ useEffect(() => {
+ if (text) setValue(text);
+ }, [text]);
+
+ return (
+
+
{label}
+
+
+ {validationFunction && (
+
{errorMessage}
+ )}
+
+
+ );
+};
+
+export default Textarea;
diff --git a/src/components/Textarea/index.ts b/src/components/Textarea/index.ts
new file mode 100644
index 0000000..2391adc
--- /dev/null
+++ b/src/components/Textarea/index.ts
@@ -0,0 +1,3 @@
+import Textarea from './Textarea';
+
+export default Textarea;
diff --git a/src/components/UserProfile/UserProfile.module.scss b/src/components/UserProfile/UserProfile.module.scss
new file mode 100644
index 0000000..4fcd8f0
--- /dev/null
+++ b/src/components/UserProfile/UserProfile.module.scss
@@ -0,0 +1,113 @@
+.userContainer {
+ position: relative;
+ display: flex;
+ align-items: center;
+ padding-right: 24px;
+ padding-left: 24px;
+
+ .user {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 10px;
+ cursor: pointer;
+ }
+
+ .userName {
+ font-family: 'Sarabun-Regular', serif;
+ font-size: 14px;
+ color: #252626;
+ }
+
+ .image {
+ border-radius: 50%;
+ }
+
+ .dropdown {
+ position: absolute;
+ top: calc(100% + 8px);
+ right: 24px;
+ min-width: 180px;
+ background-image: url('/keepsimple_/assets/user-dropdown/white-bg.png');
+ background-size: cover;
+ background-position: center;
+ border: 1px solid #c4c4c4;
+ box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.12);
+ z-index: 200;
+ display: flex;
+ flex-direction: column;
+ }
+
+ .userNameDropdown {
+ font-family: 'Sarabun-Regular', serif;
+ font-size: 14px;
+ font-weight: 600;
+ color: #252626;
+ padding-bottom: 8px;
+ border-bottom: 1px solid #c4c4c4;
+ margin-bottom: 4px;
+ }
+
+ .menuItem {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 12px;
+ border-radius: 6px;
+ cursor: pointer;
+ font-family: 'Sarabun-Regular', serif;
+ font-size: 14px;
+ color: #252626;
+ transition: background-color 0.2s;
+
+ &:first-of-type {
+ border-bottom: 1px solid #c4c4c4;
+ border-radius: 6px 6px 0 0;
+ padding-bottom: 12px;
+ }
+
+ &:hover {
+ background-color: rgba(0, 0, 0, 0.06);
+ border-radius: 0;
+ }
+ }
+
+ .menuIcon {
+ flex-shrink: 0;
+ }
+
+ .menuIconDark {
+ filter: invert(1);
+ }
+}
+
+.userContainer.darkTheme {
+ .userName {
+ color: #fff;
+ }
+
+ .dropdown {
+ background-image: url('/keepsimple_/assets/user-dropdown/black-bg.png');
+ border-color: #c4c4c4;
+ box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.4);
+ }
+
+ .userNameDropdown {
+ color: #fff;
+ border-bottom-color: #c4c4c4;
+ }
+
+ .menuItem {
+ color: #fff;
+
+ &:hover {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+ }
+}
+
+@media (max-width: 1110px) {
+ .userContainer {
+ padding-right: 0;
+ }
+}
diff --git a/src/components/UserProfile/UserProfile.tsx b/src/components/UserProfile/UserProfile.tsx
new file mode 100644
index 0000000..ccd12b7
--- /dev/null
+++ b/src/components/UserProfile/UserProfile.tsx
@@ -0,0 +1,170 @@
+import cn from 'classnames';
+import Image from 'next/image';
+import { NextRouter, useRouter } from 'next/router';
+import React, { FC, useCallback, useEffect, useState } from 'react';
+import Skeleton from 'react-loading-skeleton';
+
+import { logout } from '@api/auth';
+
+import 'react-loading-skeleton/dist/skeleton.css';
+import styles from './UserProfile.module.scss';
+
+type UserProfileProps = {
+ username?: string;
+ userImage?: string;
+ isLoggedIn?: boolean;
+ isDarkTheme?: boolean;
+ hideDropdown?: boolean;
+ hideUsername?: boolean;
+ setAccountData?: (updater: (prev: boolean) => boolean) => void;
+ setOpenLoginModal?: (openModal: boolean) => void;
+ handleOpenSettings?: () => void;
+};
+
+const labels = {
+ en: { settings: 'Settings', logout: 'Log out' },
+ ru: { settings: 'Настройки', logout: 'Выйти' },
+ hy: { settings: 'Settings', logout: 'Log out' },
+};
+
+const UserProfile: FC = ({
+ username,
+ userImage,
+ isLoggedIn,
+ isDarkTheme,
+ hideDropdown,
+ hideUsername,
+ setAccountData,
+ setOpenLoginModal,
+ handleOpenSettings,
+}) => {
+ const router: NextRouter = useRouter();
+ const locale = (router.locale || 'en') as keyof typeof labels;
+ const t = labels[locale] || labels.en;
+
+ const [isAccessTokenExist, setIsAccessTokenExist] = useState(false);
+ const [isDropdownOpen, setIsDropdownOpen] = useState(false);
+
+ const toggleDropdown = useCallback((e: React.MouseEvent) => {
+ e.stopPropagation();
+ setIsDropdownOpen(prev => !prev);
+ }, []);
+
+ const handleLogout = useCallback(() => {
+ setAccountData(null);
+ logout();
+ document.cookie = `accessToken=; path=/; Secure; SameSite=Strict;`;
+ setIsDropdownOpen(false);
+ }, []);
+
+ const handleSettings = useCallback(() => {
+ setIsDropdownOpen(false);
+ handleOpenSettings?.();
+ }, [handleOpenSettings]);
+
+ useEffect(() => {
+ if (hideDropdown) setIsDropdownOpen(false);
+ }, [hideDropdown]);
+
+ useEffect(() => {
+ if (!isDropdownOpen) return;
+ const handleClickOutside = () => setIsDropdownOpen(false);
+ document.addEventListener('click', handleClickOutside);
+ return () => document.removeEventListener('click', handleClickOutside);
+ }, [isDropdownOpen]);
+
+ useEffect(() => {
+ localStorage.setItem('link', router.asPath);
+ }, []);
+
+ const renderUserName = () => {
+ if (!isLoggedIn && isAccessTokenExist) {
+ return ;
+ }
+ return username;
+ };
+
+ const renderUserImage = () => {
+ if (!isLoggedIn && isAccessTokenExist) {
+ return '/assets/avatar.svg';
+ }
+ return userImage;
+ };
+ useEffect(() => {
+ const accessToken = localStorage.getItem('accessToken');
+ if (accessToken) {
+ setIsAccessTokenExist(true);
+ }
+ }, []);
+
+ return (
+ <>
+
+ {isAccessTokenExist ? (
+
+
+ {!hideUsername && (
+ {renderUserName()}
+ )}
+
+ ) : (
+
setOpenLoginModal(true)}>
+
+ {!hideUsername && Log In }
+
+ )}
+ {isDropdownOpen && isAccessTokenExist && (
+
e.stopPropagation()}>
+
+
+ {t.settings}
+
+
+
+ {t.logout}
+
+
+ )}
+
+ >
+ );
+};
+
+export default UserProfile;
diff --git a/src/components/UserProfile/UserProfile.types.ts b/src/components/UserProfile/UserProfile.types.ts
new file mode 100644
index 0000000..521a52d
--- /dev/null
+++ b/src/components/UserProfile/UserProfile.types.ts
@@ -0,0 +1,4 @@
+export interface UserProfileProps {
+ accountData?: any;
+ onClick?: (value: boolean) => void;
+}
diff --git a/src/components/UserProfile/index.ts b/src/components/UserProfile/index.ts
new file mode 100644
index 0000000..06cbd25
--- /dev/null
+++ b/src/components/UserProfile/index.ts
@@ -0,0 +1,3 @@
+import UserProfile from './UserProfile';
+
+export default UserProfile;
diff --git a/src/components/vibesuite/CategoryIcons/CategoryIcons.module.scss b/src/components/vibesuite/CategoryIcons/CategoryIcons.module.scss
new file mode 100644
index 0000000..da79e8f
--- /dev/null
+++ b/src/components/vibesuite/CategoryIcons/CategoryIcons.module.scss
@@ -0,0 +1,2 @@
+// No module-scoped styles needed — icon styles are applied inline via iconStyle object
+// which uses CSS variables from .vibesuite-root scope
diff --git a/src/components/vibesuite/CategoryIcons/CategoryIcons.tsx b/src/components/vibesuite/CategoryIcons/CategoryIcons.tsx
new file mode 100644
index 0000000..a3f8f89
--- /dev/null
+++ b/src/components/vibesuite/CategoryIcons/CategoryIcons.tsx
@@ -0,0 +1,155 @@
+import { CategoryIconProps } from './CategoryIcons.types';
+
+const iconStyle = {
+ width: '1em',
+ height: '1em',
+ display: 'inline-block',
+ verticalAlign: '-0.1em',
+ fill: 'none',
+ stroke: 'currentColor',
+ strokeWidth: 1.5,
+ strokeLinecap: 'round' as const,
+ strokeLinejoin: 'round' as const,
+};
+
+function Icon({ children }: { children: React.ReactNode }) {
+ return (
+
+ {children}
+
+ );
+}
+
+function LlmAiIcon() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+function LocalAiIcon() {
+ return (
+
+
+
+
+
+ );
+}
+
+function ImageVideoIcon() {
+ return (
+
+
+
+
+
+
+ );
+}
+
+function FrontendUiIcon() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+function BackendDbIcon() {
+ return (
+
+
+
+
+
+ );
+}
+
+function AuthSecurityIcon() {
+ return (
+
+
+
+
+
+ );
+}
+
+function DeployInfraIcon() {
+ return (
+
+
+
+
+
+ );
+}
+
+function PaymentsIcon() {
+ return (
+
+
+
+
+
+
+ );
+}
+
+function IntegrationsIcon() {
+ return (
+
+
+
+
+ );
+}
+
+function AiToolsIcon() {
+ return (
+
+
+
+ );
+}
+
+const CATEGORY_ICONS: Record = {
+ 'llm-ai': LlmAiIcon,
+ 'local-ai': LocalAiIcon,
+ 'image-video': ImageVideoIcon,
+ 'frontend-ui': FrontendUiIcon,
+ 'backend-db': BackendDbIcon,
+ 'auth-security': AuthSecurityIcon,
+ 'deploy-infra': DeployInfraIcon,
+ payments: PaymentsIcon,
+ integrations: IntegrationsIcon,
+ 'ai-tools': AiToolsIcon,
+};
+
+export default function CategoryIcon({ categoryId }: CategoryIconProps) {
+ const IconComponent = CATEGORY_ICONS[categoryId];
+ if (!IconComponent) return null;
+ return ;
+}
diff --git a/src/components/vibesuite/CategoryIcons/CategoryIcons.types.ts b/src/components/vibesuite/CategoryIcons/CategoryIcons.types.ts
new file mode 100644
index 0000000..0f9ce9e
--- /dev/null
+++ b/src/components/vibesuite/CategoryIcons/CategoryIcons.types.ts
@@ -0,0 +1,3 @@
+export type CategoryIconProps = {
+ categoryId: string;
+};
diff --git a/src/components/vibesuite/CategoryIcons/index.ts b/src/components/vibesuite/CategoryIcons/index.ts
new file mode 100644
index 0000000..718bafa
--- /dev/null
+++ b/src/components/vibesuite/CategoryIcons/index.ts
@@ -0,0 +1,3 @@
+import CategoryIcons from './CategoryIcons';
+
+export default CategoryIcons;
diff --git a/src/components/vibesuite/CategoryNav/CategoryNav.module.scss b/src/components/vibesuite/CategoryNav/CategoryNav.module.scss
new file mode 100644
index 0000000..56a2ca7
--- /dev/null
+++ b/src/components/vibesuite/CategoryNav/CategoryNav.module.scss
@@ -0,0 +1,177 @@
+.nav {
+ position: fixed;
+ left: 0;
+ top: 124px;
+ bottom: 0;
+ width: 376px;
+ z-index: 50;
+ background: var(--bg-card);
+ border-right: 1px solid var(--border);
+ overflow-y: auto;
+ padding: 1.5rem 0;
+ display: flex;
+ flex-direction: column;
+}
+
+.title {
+ padding: 0 1.75rem;
+ margin-bottom: 1.25rem;
+}
+
+.titleLabel {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.2em;
+ text-transform: uppercase;
+ color: var(--text-tertiary);
+}
+
+.accentRule {
+ width: 2rem;
+ height: 2px;
+ background: var(--accent);
+ margin: 0 1.75rem 1.25rem;
+}
+
+.recommendBtn {
+ display: block;
+ width: calc(100% - 3.5rem);
+ margin: 0 1.75rem 1.25rem;
+ padding: 0.7rem 0.85rem;
+ background: var(--bg-card);
+ border: 1px solid var(--border);
+ border-left: 2px solid var(--accent);
+ cursor: pointer;
+ text-align: left;
+
+ &:hover {
+ border-color: var(--accent);
+ background: var(--bg-card-active);
+ }
+}
+
+.recommendBtnTitle {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.12em;
+ text-transform: uppercase;
+ color: var(--accent);
+ display: block;
+ margin-bottom: 0.15rem;
+}
+
+.recommendBtnSub {
+ font-family: var(--font-body);
+ font-size: 0.875rem;
+ color: var(--text-tertiary);
+}
+
+.allCategoriesBtn {
+ display: block;
+ width: 100%;
+ text-align: left;
+ padding: 0.6rem 1.75rem;
+ font-family: var(--font-ui);
+ font-size: 1rem;
+ font-weight: 400;
+ color: var(--text-secondary);
+ background: transparent;
+ border: none;
+ border-left: 3px solid transparent;
+ cursor: pointer;
+ transition: all 0.15s ease;
+ margin-bottom: 0.25rem;
+
+ &.active {
+ font-weight: 500;
+ color: var(--accent);
+ background: var(--bg-card-active);
+ border-left-color: var(--accent);
+ }
+}
+
+.navList {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.divider {
+ height: 1px;
+ background: var(--border);
+ margin: 0.5rem 1.75rem;
+}
+
+.categoryBtn {
+ display: block;
+ width: 100%;
+ text-align: left;
+ padding: 0.6rem 1.75rem;
+ font-family: var(--font-body);
+ font-size: 1rem;
+ font-weight: 400;
+ color: var(--text-secondary);
+ background: transparent;
+ border: none;
+ border-left: 3px solid transparent;
+ cursor: pointer;
+ transition: all 0.15s ease;
+ margin-bottom: 0.125rem;
+
+ &.active {
+ color: var(--accent);
+ background: var(--bg-card-active);
+ border-left-color: var(--accent);
+ }
+}
+
+.categoryBtnInner {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.categoryBtnName {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.5rem;
+}
+
+.categoryBtnCount {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ color: var(--text-tertiary);
+
+ &.countCompleted {
+ color: var(--accent);
+ }
+}
+
+.spacer {
+ flex: 1;
+}
+
+.bottomSection {
+ padding: 1.25rem 1.75rem 0.5rem;
+ border-top: 1px solid var(--border);
+ margin-top: 1.25rem;
+}
+
+.whyBtn {
+ font-family: var(--font-body);
+ font-size: 0.875rem;
+ font-style: italic;
+ color: var(--text-tertiary);
+ background: none;
+ border: none;
+ cursor: pointer;
+ text-decoration: underline;
+ text-underline-offset: 3px;
+ padding: 0;
+
+ &:hover {
+ color: var(--accent);
+ }
+}
diff --git a/src/components/vibesuite/CategoryNav/CategoryNav.tsx b/src/components/vibesuite/CategoryNav/CategoryNav.tsx
new file mode 100644
index 0000000..9176f18
--- /dev/null
+++ b/src/components/vibesuite/CategoryNav/CategoryNav.tsx
@@ -0,0 +1,104 @@
+import cn from 'classnames';
+import { useRouter } from 'next/router';
+import { useMemo } from 'react';
+
+import type { TRouter } from '@local-types/global';
+
+import vibesuiteIntl from '@data/vibesuite/intl';
+import { localizeCategory } from '@data/vibesuite/localizeSkills';
+import { categories } from '@data/vibesuite/skills';
+
+import CategoryIcon from '@components/vibesuite/CategoryIcons';
+
+import { CategoryNavProps } from './CategoryNav.types';
+
+import styles from './CategoryNav.module.scss';
+
+export default function CategoryNav({
+ progress,
+ activeCategoryId,
+ onSelectCategory,
+ onOpenRecommendations,
+ onOpenWhyModal,
+ allCompleted,
+}: CategoryNavProps) {
+ const { locale } = useRouter() as TRouter;
+ const t = vibesuiteIntl[locale];
+
+ const localizedCats = useMemo(
+ () => categories.map(c => localizeCategory(c, locale)),
+ [locale],
+ );
+
+ return (
+
+
+ {t.categoriesTitle}
+
+
+
+
+ {!allCompleted && (
+
+ {t.whatToLearnNext}
+ {t.personalizedForYou}
+
+ )}
+
+
+
+ onSelectCategory(null)}
+ aria-current={activeCategoryId === null ? 'true' : undefined}
+ >
+ {t.allCategories}
+
+
+
+
+
+ {localizedCats.map(cat => {
+ const total = cat.skills.length;
+ const done = cat.skills.filter(s => progress[s.id]?.completed).length;
+ const isActive = activeCategoryId === cat.id;
+
+ return (
+
+ onSelectCategory(cat.id)}
+ aria-current={isActive ? 'true' : undefined}
+ >
+
+
+
+ {cat.name}
+
+ 0,
+ })}
+ >
+ {done}/{total}
+
+
+
+
+ );
+ })}
+
+
+
+
+
+ {t.whyDoINeedThis}
+
+
+
+ );
+}
diff --git a/src/components/vibesuite/CategoryNav/CategoryNav.types.ts b/src/components/vibesuite/CategoryNav/CategoryNav.types.ts
new file mode 100644
index 0000000..38542b5
--- /dev/null
+++ b/src/components/vibesuite/CategoryNav/CategoryNav.types.ts
@@ -0,0 +1,10 @@
+import { UserProgress } from '@local-types/pageTypes/vibesuite';
+
+export type CategoryNavProps = {
+ progress: UserProgress;
+ activeCategoryId: string | null;
+ onSelectCategory: (categoryId: string | null) => void;
+ onOpenRecommendations: () => void;
+ onOpenWhyModal: () => void;
+ allCompleted: boolean;
+};
diff --git a/src/components/vibesuite/CategoryNav/index.ts b/src/components/vibesuite/CategoryNav/index.ts
new file mode 100644
index 0000000..444954e
--- /dev/null
+++ b/src/components/vibesuite/CategoryNav/index.ts
@@ -0,0 +1,3 @@
+import CategoryNav from './CategoryNav';
+
+export default CategoryNav;
diff --git a/src/components/vibesuite/MapClient/MapClient.module.scss b/src/components/vibesuite/MapClient/MapClient.module.scss
new file mode 100644
index 0000000..fe6d319
--- /dev/null
+++ b/src/components/vibesuite/MapClient/MapClient.module.scss
@@ -0,0 +1,592 @@
+.root {
+ min-height: 100vh;
+ position: relative;
+ z-index: 1;
+}
+
+.desktopOnly {
+ display: none;
+
+ @media (min-width: 1024px) {
+ display: block;
+ }
+}
+
+/* ─── Main content ─── */
+
+.main {
+ padding-top: 78px;
+ margin-left: 376px;
+ min-height: 100vh;
+
+ @media (max-width: 1023px) {
+ margin-left: 0;
+ overflow: hidden;
+ }
+}
+
+.contentWrapper {
+ max-width: 960px;
+ margin: 0 auto;
+ padding: 1rem 2rem 4rem;
+
+ @media (max-width: 1023px) {
+ padding: 0.75rem 1rem 3rem;
+ }
+}
+
+/* ─── Page title ─── */
+
+.pageTitle {
+ text-align: center;
+ h1 {
+ font-family: var(--font-ui);
+ font-size: 2.5rem !important;
+ font-weight: 300;
+ letter-spacing: 0.25em;
+ text-transform: uppercase;
+ color: var(--text-primary);
+ margin: 0;
+ }
+}
+
+.titleRow {
+ gap: 1rem;
+
+ @media (max-width: 1023px) {
+ gap: 0.5rem;
+ padding-top: 50px;
+ }
+
+ @media (max-width: 480px) {
+ gap: 0.25rem;
+ }
+
+ h1 {
+ // font-family: var(--font-ui);
+ // font-size: 2rem;
+ // font-weight: 300;
+ // letter-spacing: 0.25em;
+ // text-transform: uppercase;
+ // color: var(--text-primary);
+ // width: auto;
+
+ @media (max-width: 1023px) {
+ font-size: 1.15rem;
+ letter-spacing: 0.15em;
+ width: auto;
+ text-align: center;
+ }
+
+ @media (max-width: 768px) {
+ font-size: 1rem;
+ letter-spacing: 0.1em;
+ }
+
+ @media (max-width: 480px) {
+ font-size: 0.85rem;
+ letter-spacing: 0.05em;
+ }
+ }
+}
+
+.pageSubtitle {
+ font-family: var(--font-body);
+ font-size: 1rem;
+ color: var(--text-secondary);
+ line-height: 1;
+ margin: 0;
+ padding-top: 16px;
+}
+
+.guideLink {
+ margin-top: 0;
+ padding-top: 16px;
+ padding-bottom: 48px;
+ font-family: var(--font-body);
+ font-size: 0.875rem;
+ font-style: italic;
+ color: var(--text-tertiary);
+ background: none;
+ border: none;
+ cursor: pointer;
+ text-decoration: underline;
+ text-underline-offset: 3px;
+ transition: color 0.15s ease;
+
+ &:hover {
+ color: var(--accent);
+ }
+}
+
+/* ─── Search + filter ─── */
+
+.searchRow {
+ display: flex;
+ align-items: center;
+ gap: 1.5rem;
+ margin: 0 0 1.75rem;
+ flex-wrap: wrap;
+
+ @media (max-width: 1023px) {
+ flex-direction: column;
+ align-items: stretch;
+ gap: 0.75rem;
+ }
+}
+
+.searchWrap {
+ max-width: 300px;
+ position: relative;
+ flex: 0 0 auto;
+
+ @media (max-width: 1023px) {
+ max-width: 100%;
+ }
+}
+
+.searchInput {
+ width: 100%;
+ font-family: var(--font-body);
+ font-size: 1rem;
+ padding: 0.6rem 1rem;
+ background: var(--bg-card);
+ border: 1px solid var(--border);
+ color: var(--text-primary);
+ outline: none;
+ transition: border-color 0.15s ease;
+
+ &:focus {
+ border-color: var(--accent);
+ }
+}
+
+.searchClear {
+ position: absolute;
+ right: 0.6rem;
+ top: 50%;
+ transform: translateY(-50%);
+ font-family: var(--font-ui);
+ font-size: 0.875rem;
+ color: var(--text-tertiary);
+ background: none;
+ border: none;
+ cursor: pointer;
+ padding: 0.2rem;
+ line-height: 1;
+}
+
+.filterRow {
+ display: flex;
+ align-items: center;
+ gap: 0.75rem;
+}
+
+.showLabel {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--text-tertiary);
+ user-select: none;
+}
+
+.filterBtn {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ padding: 0.3rem 0.7rem;
+ cursor: pointer;
+ user-select: none;
+ transition:
+ background 0.15s ease,
+ color 0.15s ease,
+ border-color 0.15s ease;
+}
+
+/* ─── Category sections ─── */
+
+.categoryArea {
+ transition: opacity 0.15s ease;
+}
+
+.categorySection {
+ margin-bottom: 3rem;
+}
+
+.sectionHeader {
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+ margin-bottom: 1rem;
+ user-select: none;
+}
+
+.sectionH2 {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--text-primary);
+ white-space: nowrap;
+ display: inline-flex;
+ align-items: center;
+ gap: 0.5rem;
+}
+
+.sectionRule {
+ flex: 1;
+ height: 1px;
+ background: var(--border-strong);
+}
+
+.sectionDesc {
+ font-family: var(--font-body);
+ font-size: 1rem;
+ color: var(--text-secondary);
+ margin-bottom: 1rem;
+ font-style: italic;
+}
+
+.cardGrid {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
+ gap: 0;
+
+ @media (max-width: 1023px) {
+ grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
+ }
+}
+
+.cardGridItem {
+ display: flex;
+}
+
+/* ─── Scroll-to-top ─── */
+
+.scrollTopBtn {
+ position: fixed;
+ bottom: 2rem;
+ right: 2rem;
+ z-index: 40;
+ width: 44px;
+ height: 44px;
+ border-radius: 50%;
+ border: 1px solid var(--border-strong);
+ background: var(--bg-card);
+ color: var(--text-secondary);
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transition:
+ opacity 0.2s ease,
+ border-color 0.15s ease,
+ color 0.15s ease;
+ padding: 0;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
+
+ @media (max-width: 1023px) {
+ right: 1rem;
+ bottom: 1rem;
+ }
+
+ &:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+ }
+}
+
+/* ─── Guide modal ─── */
+
+.guideBackdrop {
+ position: fixed;
+ inset: 0;
+ z-index: 70;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 2rem;
+ transition: background 0.2s ease;
+
+ @media (max-width: 1023px) {
+ padding: 1rem;
+ }
+}
+
+.guideModal {
+ width: 480px;
+ max-width: 100%;
+ background: var(--bg-base);
+ border: 1px solid var(--border-strong);
+ padding: 1.75rem;
+
+ @media (max-width: 1023px) {
+ padding: 1.25rem;
+ }
+}
+
+.guideHeader {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+ gap: 1rem;
+ margin-bottom: 1.25rem;
+}
+
+.guideTitleAccent {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.2em;
+ text-transform: uppercase;
+ color: var(--accent);
+ display: block;
+ margin-bottom: 0.35rem;
+}
+
+.guideTitleMain {
+ font-family: var(--font-display);
+ font-size: 1.15rem;
+ font-weight: 400;
+ color: var(--text-primary);
+ line-height: 1.4;
+}
+
+.guideCloseBtn {
+ width: 36px;
+ height: 36px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--bg-card);
+ border: 1px solid var(--border-strong);
+ cursor: pointer;
+ font-family: var(--font-ui);
+ font-size: 1rem;
+ color: var(--text-secondary);
+ padding: 0;
+ flex-shrink: 0;
+
+ &:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+ }
+}
+
+.guideRedRule {
+ width: 2rem;
+ height: 2px;
+ background: var(--accent);
+ margin-bottom: 1.5rem;
+}
+
+.guideSteps {
+ list-style: none;
+ margin: 0 0 1.75rem;
+ padding: 0;
+}
+
+.guideStep {
+ display: flex;
+ gap: 1rem;
+ align-items: flex-start;
+}
+
+.guideStepBadge {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 600;
+ color: #fff;
+ background: var(--accent);
+ width: 22px;
+ height: 22px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-shrink: 0;
+ margin-top: 1px;
+}
+
+.guideStepTitle {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--text-primary);
+ margin-bottom: 0.3rem;
+}
+
+.guideStepDesc {
+ font-family: var(--font-body);
+ font-size: 1rem;
+ color: var(--text-secondary);
+ line-height: 1.65;
+}
+
+.guideStepDivider {
+ height: 1px;
+ background: var(--border);
+ margin: 1rem 0 1rem 2.35rem;
+}
+
+.guideGotItBtn {
+ width: 100%;
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ padding: 0.7rem 1.2rem;
+ background: var(--accent);
+ border: 1px solid var(--accent);
+ color: #fff;
+ cursor: pointer;
+ transition: background 0.15s ease;
+
+ &:hover {
+ background: var(--accent-dark, #9a2a2a);
+ }
+}
+
+/* ─── Why modal ─── */
+
+.whyBackdrop {
+ position: fixed;
+ inset: 0;
+ z-index: 60;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 1rem;
+ transition: background 0.2s ease;
+}
+
+.whyModal {
+ position: relative;
+ width: 100%;
+ max-width: 480px;
+ background: var(--bg-base);
+ border: 1px solid var(--border-strong);
+ padding: 1.75rem;
+ overflow: hidden;
+
+ @media (max-width: 1023px) {
+ padding: 1.25rem;
+ }
+}
+
+.whyBgImg {
+ position: absolute;
+ pointer-events: none;
+ filter: grayscale(100%) contrast(1.1);
+
+ img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ }
+}
+
+.whyBgImg1 {
+ top: -15px;
+ left: -20px;
+ width: 180px;
+ height: 180px;
+ opacity: 0.25;
+ transform: rotate(-4deg);
+ mask-image: radial-gradient(ellipse at center, black 35%, transparent 70%);
+ -webkit-mask-image: radial-gradient(
+ ellipse at center,
+ black 35%,
+ transparent 70%
+ );
+}
+
+.whyBgImg2 {
+ top: -20px;
+ right: -30px;
+ width: 200px;
+ height: 200px;
+ opacity: 0.17;
+ filter: grayscale(100%) contrast(1.2);
+ transform: rotate(8deg);
+ mask-image: radial-gradient(ellipse at center, black 30%, transparent 70%);
+ -webkit-mask-image: radial-gradient(
+ ellipse at center,
+ black 30%,
+ transparent 70%
+ );
+}
+
+.whyBgImg3 {
+ bottom: -25px;
+ left: 50%;
+ transform: translateX(-50%) rotate(-6deg);
+ width: 220px;
+ height: 220px;
+ opacity: 0.16;
+ filter: grayscale(100%) contrast(1.2);
+ mask-image: radial-gradient(ellipse at center, black 30%, transparent 70%);
+ -webkit-mask-image: radial-gradient(
+ ellipse at center,
+ black 30%,
+ transparent 70%
+ );
+}
+
+.whyContent {
+ position: relative;
+ z-index: 1;
+}
+
+.whyCloseRow {
+ display: flex;
+ justify-content: flex-end;
+ margin-bottom: 1rem;
+}
+
+.whyCloseBtn {
+ width: 36px;
+ height: 36px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--bg-card);
+ border: 1px solid var(--border-strong);
+ cursor: pointer;
+ font-family: var(--font-ui);
+ font-size: 1rem;
+ color: var(--text-secondary);
+ padding: 0;
+}
+
+.whyRedRule {
+ width: 2rem;
+ height: 2px;
+ background: var(--accent);
+ margin-bottom: 1.5rem;
+}
+
+.whyBody {
+ font-family: var(--font-body);
+ font-size: 1rem;
+ line-height: 1.85;
+ color: var(--text-secondary);
+
+ p {
+ margin-bottom: 1rem;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+}
diff --git a/src/components/vibesuite/MapClient/MapClient.tsx b/src/components/vibesuite/MapClient/MapClient.tsx
new file mode 100644
index 0000000..05173d7
--- /dev/null
+++ b/src/components/vibesuite/MapClient/MapClient.tsx
@@ -0,0 +1,613 @@
+import { useRouter } from 'next/router';
+import {
+ useCallback,
+ useContext,
+ useEffect,
+ useMemo,
+ useRef,
+ useState,
+} from 'react';
+
+import type { TRouter } from '@local-types/global';
+import { UserProgress } from '@local-types/pageTypes/vibesuite';
+
+import { getRecommendations } from '@lib/vibesuite/recommendations';
+
+import { updateLearnedSkills } from '@api/vibesuite';
+
+import vibesuiteIntl from '@data/vibesuite/intl';
+import { localizeCategory } from '@data/vibesuite/localizeSkills';
+import {
+ allSkills,
+ categories,
+ getCategoryBySkillId,
+ getSkillById,
+} from '@data/vibesuite/skills';
+
+import ArrowUp from '@icons/tools/vibesuite/ArrowUp';
+
+import { GlobalContext } from '@components/Context/GlobalContext';
+import Heading from '@components/Heading';
+import LogIn from '@components/LogIn';
+import CategoryIcon from '@components/vibesuite/CategoryIcons';
+import CategoryNav from '@components/vibesuite/CategoryNav';
+import ProgressHeader from '@components/vibesuite/ProgressHeader';
+import RecommendationModal from '@components/vibesuite/RecommendationModal';
+import SkillCard from '@components/vibesuite/SkillCard';
+import SkillDetailPanel from '@components/vibesuite/SkillDetailPanel';
+
+import { MapClientProps } from './MapClient.types';
+
+import styles from './MapClient.module.scss';
+
+export default function MapClient({
+ initialProgress,
+ isDarkTheme,
+}: MapClientProps) {
+ const { locale } = useRouter() as TRouter;
+ const t = vibesuiteIntl[locale];
+ const { accountData } = useContext(GlobalContext) ?? {};
+ const [progress, setProgress] = useState(initialProgress);
+ const [selectedSkillId, setSelectedSkillId] = useState(null);
+ const [focusCategoryId, setFocusCategoryId] = useState(null);
+ const [transitioning, setTransitioning] = useState(false);
+ const [showRecommendations, setShowRecommendations] = useState(false);
+ const [showWhyModal, setShowWhyModal] = useState(false);
+ const [whyClosing, setWhyClosing] = useState(false);
+ const [showGuideModal, setShowGuideModal] = useState(false);
+ const [guideClosing, setGuideClosing] = useState(false);
+ const [searchQuery, setSearchQuery] = useState('');
+ const [showFilter, setShowFilter] = useState<
+ 'all' | 'learned' | 'not-learned'
+ >('all');
+ const [panelCloseRequested, setPanelCloseRequested] = useState(false);
+ const [showLogin, setShowLogin] = useState(false);
+ const sectionRefs = useRef>({});
+ const searchRowRef = useRef(null);
+ const [showScrollTop, setShowScrollTop] = useState(false);
+
+ useEffect(() => {
+ const learned: string[] = accountData?.learnedSkills ?? [];
+ if (learned.length === 0) return;
+ const hydrated: UserProgress = {};
+ for (const id of learned) {
+ hydrated[id] = { completed: true, completedAt: '' };
+ }
+ setProgress(hydrated);
+ }, [accountData]);
+
+ useEffect(() => {
+ const onScroll = () => {
+ if (searchRowRef.current) {
+ const rect = searchRowRef.current.getBoundingClientRect();
+ setShowScrollTop(rect.bottom < 0);
+ } else {
+ setShowScrollTop(window.scrollY > 300);
+ }
+ };
+ window.addEventListener('scroll', onScroll, { passive: true });
+ return () => window.removeEventListener('scroll', onScroll);
+ }, []);
+
+ useEffect(() => {
+ const onKey = (e: KeyboardEvent) => {
+ if (e.key !== 'Escape') return;
+
+ if (
+ selectedSkillId ||
+ showWhyModal ||
+ showGuideModal ||
+ showRecommendations
+ ) {
+ if (selectedSkillId) setPanelCloseRequested(true);
+ if (showWhyModal) {
+ setWhyClosing(true);
+ setTimeout(() => setShowWhyModal(false), 180);
+ }
+ if (showGuideModal) {
+ setGuideClosing(true);
+ setTimeout(() => setShowGuideModal(false), 180);
+ }
+ if (showRecommendations) {
+ setShowRecommendations(false);
+ }
+ }
+ };
+ window.addEventListener('keydown', onKey);
+ return () => window.removeEventListener('keydown', onKey);
+ }, [showWhyModal, showGuideModal, showRecommendations, selectedSkillId]);
+
+ const selectedSkill = selectedSkillId ? getSkillById(selectedSkillId) : null;
+ const selectedCategory = selectedSkillId
+ ? getCategoryBySkillId(selectedSkillId)
+ : null;
+
+ const { prevSkillId, nextSkillId } = useMemo(() => {
+ if (!selectedSkillId) return { prevSkillId: null, nextSkillId: null };
+ const idx = allSkills.findIndex(s => s.id === selectedSkillId);
+ return {
+ prevSkillId: idx > 0 ? allSkills[idx - 1].id : null,
+ nextSkillId: idx < allSkills.length - 1 ? allSkills[idx + 1].id : null,
+ };
+ }, [selectedSkillId]);
+
+ const localizedCategories = useMemo(
+ () => categories.map(c => localizeCategory(c, locale)),
+ [locale],
+ );
+
+ const recommendations = useMemo(
+ () => getRecommendations(progress, 3, locale),
+ [progress, locale],
+ );
+ const allCompleted = useMemo(
+ () => allSkills.every(s => progress[s.id]?.completed),
+ [progress],
+ );
+
+ const handleSelectSkill = useCallback((skillId: string) => {
+ setSelectedSkillId(skillId);
+ }, []);
+
+ const handleToggle = useCallback((skillId: string, completed: boolean) => {
+ setProgress(prev => {
+ const next = { ...prev };
+ if (completed) {
+ next[skillId] = {
+ completed: true,
+ completedAt: new Date().toISOString(),
+ };
+ } else {
+ delete next[skillId];
+ }
+
+ // Fire-and-forget: send updated state to backend
+ const learnedSkills = Object.keys(next).filter(id => next[id]?.completed);
+ updateLearnedSkills(learnedSkills).catch(() => {});
+
+ return next;
+ });
+
+ if (completed) {
+ setSelectedSkillId(null);
+ }
+ }, []);
+
+ const handleSelectCategory = useCallback((categoryId: string | null) => {
+ setFocusCategoryId(categoryId);
+ if (categoryId && sectionRefs.current[categoryId]) {
+ const el = sectionRefs.current[categoryId];
+ if (el) {
+ const top = el.getBoundingClientRect().top + window.scrollY - 128;
+ window.scrollTo({ top, behavior: 'smooth' });
+ }
+ } else {
+ window.scrollTo({ top: 0, behavior: 'smooth' });
+ }
+ }, []);
+
+ const searchLower = searchQuery.toLowerCase().trim();
+ const displayCategories = useMemo(() => {
+ return localizedCategories
+ .map(cat => ({
+ ...cat,
+ skills: cat.skills.filter(s => {
+ if (
+ searchLower &&
+ !(
+ s.name.toLowerCase().includes(searchLower) ||
+ s.projectTitle.toLowerCase().includes(searchLower) ||
+ s.projectDescription.toLowerCase().includes(searchLower)
+ )
+ )
+ return false;
+ if (showFilter === 'learned' && !progress[s.id]?.completed)
+ return false;
+ if (showFilter === 'not-learned' && progress[s.id]?.completed)
+ return false;
+ return true;
+ }),
+ }))
+ .filter(cat => cat.skills.length > 0);
+ }, [localizedCategories, searchLower, showFilter, progress]);
+
+ return (
+
+
+
+
+ setShowRecommendations(true)}
+ onOpenWhyModal={() => {
+ setWhyClosing(false);
+ setShowWhyModal(true);
+ }}
+ allCompleted={allCompleted}
+ />
+
+
+
+
+ {/* Page title */}
+
+
+
{t.pageSubtitle}
+
{
+ setGuideClosing(false);
+ setShowGuideModal(true);
+ }}
+ >
+ {t.firstTimeClick}
+
+
+
+ {/* Search bar + filter */}
+
+
+ setSearchQuery(e.target.value)}
+ placeholder={t.searchPlaceholder}
+ aria-label={t.searchPlaceholder}
+ className={styles.searchInput}
+ style={{ paddingRight: searchQuery ? '2.5rem' : '1rem' }}
+ />
+ {searchQuery && (
+ setSearchQuery('')}
+ aria-label="Clear search"
+ >
+ ✕
+
+ )}
+
+
+
+
+ {t.showLabel}
+
+ {(['all', 'learned', 'not-learned'] as const).map(opt => {
+ const label =
+ opt === 'all'
+ ? t.filterAll
+ : opt === 'learned'
+ ? t.filterLearned
+ : t.filterNotLearned;
+ const isActive = showFilter === opt;
+ return (
+ {
+ if (opt !== showFilter) {
+ setTransitioning(true);
+ setTimeout(() => {
+ setShowFilter(opt);
+ setTimeout(() => setTransitioning(false), 50);
+ }, 150);
+ }
+ }}
+ style={{
+ background: isActive ? 'var(--accent)' : 'transparent',
+ border: `1px solid ${isActive ? 'var(--accent)' : 'var(--border-strong)'}`,
+ color: isActive ? '#fff' : 'var(--text-secondary)',
+ }}
+ onMouseEnter={e => {
+ if (!isActive) {
+ e.currentTarget.style.borderColor = 'var(--accent)';
+ e.currentTarget.style.color = 'var(--accent)';
+ }
+ }}
+ onMouseLeave={e => {
+ if (!isActive) {
+ e.currentTarget.style.borderColor =
+ 'var(--border-strong)';
+ e.currentTarget.style.color = 'var(--text-secondary)';
+ }
+ }}
+ >
+ {label}
+
+ );
+ })}
+
+
+
+ {/* Category sections */}
+
+ {displayCategories.map(cat => {
+ const originalCat = localizedCategories.find(
+ c => c.id === cat.id,
+ );
+ const total = originalCat
+ ? originalCat.skills.length
+ : cat.skills.length;
+ const done = originalCat
+ ? originalCat.skills.filter(s => progress[s.id]?.completed)
+ .length
+ : cat.skills.filter(s => progress[s.id]?.completed).length;
+ const allDone = done === total && total > 0;
+
+ return (
+
{
+ sectionRefs.current[cat.id] = el;
+ }}
+ className={styles.categorySection}
+ >
+
+
+ {cat.name}
+
+
+
+ {done}/{total}
+
+
+
+ {cat.description}
+
+ e.stopPropagation()}
+ >
+ {cat.skills.map(skill => (
+
+ handleSelectSkill(skill.id)}
+ />
+
+ ))}
+
+
+ );
+ })}
+
+
+
+
+ {/* Scroll to top */}
+
window.scrollTo({ top: 0, behavior: 'smooth' })}
+ aria-label="Scroll to top"
+ style={{
+ opacity: showScrollTop ? 1 : 0,
+ pointerEvents: showScrollTop ? 'auto' : 'none',
+ }}
+ >
+
+
+
+ {/* Detail panel */}
+ {selectedSkill && selectedCategory && (
+
{
+ setSelectedSkillId(null);
+ setPanelCloseRequested(false);
+ }}
+ onSelectSkill={handleSelectSkill}
+ prevSkillId={prevSkillId}
+ nextSkillId={nextSkillId}
+ requestClose={panelCloseRequested}
+ isLoggedIn={!!accountData}
+ onOpenLogin={() => setShowLogin(true)}
+ />
+ )}
+
+ {/* Recommendation modal */}
+ {showRecommendations && recommendations.length > 0 && (
+ {
+ setShowRecommendations(false);
+ handleSelectSkill(skillId);
+ }}
+ onClose={() => setShowRecommendations(false)}
+ />
+ )}
+
+ {/* Guide modal */}
+ {showGuideModal &&
+ (() => {
+ const closeGuide = () => {
+ setGuideClosing(true);
+ setTimeout(() => setShowGuideModal(false), 180);
+ };
+
+ return (
+
+
e.stopPropagation()}
+ >
+ {/* Header */}
+
+
+
+ {t.guideAccent}
+
+
{t.guideTitle}
+
+
+ ✕
+
+
+
+
+
+ {/* Steps */}
+
+
+
+ 1
+
+
+
+ {t.guideStep1Title}
+
+
{t.guideStep1Desc}
+
+
+
+
+
+
+
+ 2
+
+
+
+ {t.guideStep2Title}
+
+
{t.guideStep2Desc}
+
+
+
+
+
+
+
+ 3
+
+
+
+ {t.guideStep3Title}
+
+
{t.guideStep3Desc}
+
+
+
+
+ {/* Footer */}
+
+ {t.guideGotIt}
+
+
+
+ );
+ })()}
+
+ {/* Why modal */}
+ {showWhyModal && (
+ {
+ setWhyClosing(true);
+ setTimeout(() => setShowWhyModal(false), 180);
+ }}
+ >
+
e.stopPropagation()}
+ >
+ {/* Background images */}
+
+ {/* eslint-disable-next-line @next/next/no-img-element */}
+
+
+
+ {/* eslint-disable-next-line @next/next/no-img-element */}
+
+
+
+ {/* eslint-disable-next-line @next/next/no-img-element */}
+
+
+
+
+
+ {
+ setWhyClosing(true);
+ setTimeout(() => setShowWhyModal(false), 180);
+ }}
+ aria-label="Close"
+ >
+ ✕
+
+
+
+
+
{t.whyP1}
+
{t.whyP2}
+
{t.whyP3}
+
+
+
+
+ )}
+ {showLogin && }
+
+ );
+}
diff --git a/src/components/vibesuite/MapClient/MapClient.types.ts b/src/components/vibesuite/MapClient/MapClient.types.ts
new file mode 100644
index 0000000..7de3d6f
--- /dev/null
+++ b/src/components/vibesuite/MapClient/MapClient.types.ts
@@ -0,0 +1,6 @@
+import { UserProgress } from '@local-types/pageTypes/vibesuite';
+
+export type MapClientProps = {
+ initialProgress: UserProgress;
+ isDarkTheme?: boolean;
+};
diff --git a/src/components/vibesuite/MapClient/index.ts b/src/components/vibesuite/MapClient/index.ts
new file mode 100644
index 0000000..8b25bae
--- /dev/null
+++ b/src/components/vibesuite/MapClient/index.ts
@@ -0,0 +1,2 @@
+import MapClient from './MapClient';
+export default MapClient;
diff --git a/src/components/vibesuite/ProgressHeader/ProgressHeader.module.scss b/src/components/vibesuite/ProgressHeader/ProgressHeader.module.scss
new file mode 100644
index 0000000..c12a685
--- /dev/null
+++ b/src/components/vibesuite/ProgressHeader/ProgressHeader.module.scss
@@ -0,0 +1,255 @@
+.header {
+ position: fixed;
+ top: 48px;
+ left: 0;
+ right: 0;
+ z-index: 40;
+ background: var(--bg-base);
+ border-bottom: 1px solid var(--border);
+ height: 76px;
+ display: flex;
+ align-items: center;
+ padding: 0 1.5rem;
+ gap: 1rem;
+
+ @media (max-width: 1023px) {
+ padding: 0 0.75rem;
+ gap: 0.5rem;
+ }
+}
+
+.logo {
+ font-family: var(--font-ui);
+ font-size: 1rem;
+ font-weight: 400;
+ letter-spacing: 0.02em;
+ color: var(--text-primary);
+ flex-shrink: 0;
+}
+
+.logoBold {
+ font-weight: 600;
+}
+
+.progressWrap {
+ flex: 1;
+ min-width: 0;
+ height: 76px;
+ position: relative;
+ display: flex;
+ align-items: center;
+
+ @media (max-width: 1023px) {
+ display: none;
+ }
+}
+
+.canvas {
+ width: 100%;
+ height: 76px;
+ display: block;
+}
+
+.tooltip {
+ position: absolute;
+ bottom: -4px;
+ transform: translateY(0);
+ opacity: 0;
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.08em;
+ color: var(--text-primary);
+ background: var(--bg-card);
+ border: 1px solid var(--border-strong);
+ padding: 0.3rem 0.7rem;
+ white-space: nowrap;
+ pointer-events: none;
+ z-index: 10;
+ transition:
+ opacity 0.2s ease,
+ transform 0.2s ease;
+
+ &.tooltipReached {
+ color: #fff;
+ background: var(--accent);
+ border-color: var(--accent);
+ }
+
+ &.tooltipVisible {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+
+.actions {
+ display: flex;
+ align-items: center;
+ gap: 0.75rem;
+ flex-shrink: 0;
+
+ @media (max-width: 1023px) {
+ margin-left: auto;
+ gap: 0.5rem;
+ }
+}
+
+.statsText {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ color: var(--text-secondary);
+ white-space: nowrap;
+}
+
+.statsDim {
+ color: var(--text-tertiary);
+}
+
+.actionBtn {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ color: var(--text-secondary);
+ background: none;
+ border: 1px solid var(--border-strong);
+ padding: 0.2rem 0.6rem;
+ cursor: pointer;
+ user-select: none;
+
+ &:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+ }
+}
+
+.signOutBtn {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--text-tertiary);
+ background: none;
+ border: 1px solid var(--border);
+ padding: 0.2rem 0.6rem;
+ cursor: pointer;
+}
+
+// Progress Modal
+.modalBackdrop {
+ position: fixed;
+ inset: 0;
+ z-index: 60;
+ background: rgba(0, 0, 0, 0.3);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.modalBox {
+ background: var(--bg-card);
+ border: 1px solid var(--border);
+ width: 560px;
+ max-width: 90vw;
+ max-height: 80vh;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+
+ @media (max-width: 1023px) {
+ max-width: calc(100% - 2rem);
+ }
+}
+
+.modalContent {
+ padding: 1.5rem 1.75rem;
+}
+
+.modalTitle {
+ font-family: var(--font-display);
+ font-size: 1.4rem;
+ font-weight: 400;
+ color: var(--text-primary);
+ margin-bottom: 1rem;
+}
+
+.modalBody {
+ font-family: var(--font-body);
+ font-size: 1rem;
+ color: var(--text-secondary);
+ line-height: 1.7;
+ margin-bottom: 0.5rem;
+}
+
+.modalBodyBottom {
+ font-family: var(--font-body);
+ font-size: 1rem;
+ color: var(--text-secondary);
+ line-height: 1.7;
+ margin-bottom: 1.5rem;
+}
+
+.modalBtns {
+ display: flex;
+ gap: 0.75rem;
+}
+
+.copyStateBtn {
+ flex: 1;
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ padding: 0.6rem 1rem;
+ background: var(--bg-card);
+ color: var(--text-primary);
+ border: 1px solid var(--border-strong);
+ cursor: pointer;
+ transition:
+ background 0.15s ease,
+ color 0.15s ease,
+ border-color 0.15s ease;
+ user-select: none;
+
+ &:hover {
+ background: var(--accent);
+ color: #fff;
+ border-color: var(--accent);
+ }
+
+ &.copyStateBtnCopied {
+ background: var(--accent);
+ color: #fff;
+ border-color: var(--accent);
+ }
+}
+
+.closeModalBtn {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ padding: 0.6rem 1rem;
+ background: none;
+ color: var(--text-tertiary);
+ border: 1px solid var(--border);
+ cursor: pointer;
+ user-select: none;
+ transition:
+ border-color 0.15s ease,
+ color 0.15s ease,
+ transform 0.1s ease;
+
+ &:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+ }
+
+ &:active {
+ transform: scale(0.97);
+ }
+}
diff --git a/src/components/vibesuite/ProgressHeader/ProgressHeader.tsx b/src/components/vibesuite/ProgressHeader/ProgressHeader.tsx
new file mode 100644
index 0000000..944795e
--- /dev/null
+++ b/src/components/vibesuite/ProgressHeader/ProgressHeader.tsx
@@ -0,0 +1,455 @@
+import cn from 'classnames';
+import { useRouter } from 'next/router';
+import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
+
+import type { TRouter } from '@local-types/global';
+
+import vibesuiteIntl from '@data/vibesuite/intl';
+import { localizeCategory } from '@data/vibesuite/localizeSkills';
+import { categories, getTotalSkillCount } from '@data/vibesuite/skills';
+
+import { ProgressHeaderProps } from './ProgressHeader.types';
+
+import styles from './ProgressHeader.module.scss';
+
+const MILESTONE_KEYS = [
+ { pct: 20, key: 'milestoneObserver' as const, kanji: '\u89B3' },
+ { pct: 50, key: 'milestoneExplorer' as const, kanji: '\u63A2' },
+ { pct: 80, key: 'milestoneMaster' as const, kanji: '\u5E2B' },
+ { pct: 100, key: 'milestoneSingularity' as const, kanji: '\u221E' },
+];
+
+const HIT_RADIUS = 24;
+
+export default function ProgressHeader({ progress }: ProgressHeaderProps) {
+ const { locale } = useRouter() as TRouter;
+ const t = vibesuiteIntl[locale];
+
+ const milestones = useMemo(
+ () => MILESTONE_KEYS.map(m => ({ ...m, label: t[m.key] })),
+ [t],
+ );
+
+ const localizedCats = useMemo(
+ () => categories.map(c => localizeCategory(c, locale)),
+ [locale],
+ );
+
+ const total = getTotalSkillCount();
+ const completed = Object.values(progress).filter(p => p.completed).length;
+ const pct = total > 0 ? (completed / total) * 100 : 0;
+ const [showProgressModal, setShowProgressModal] = useState(false);
+ const [progressClosing, setProgressClosing] = useState(false);
+ const [copied, setCopied] = useState(false);
+ const canvasRef = useRef(null);
+ const animRef = useRef(0);
+ const timeRef = useRef(0);
+ const displayPctRef = useRef(0);
+ const hoveredMilestoneRef = useRef(-1);
+ const hoveredMilestoneAnimRef = useRef(milestones.map(() => 0));
+ const [tooltipData, setTooltipData] = useState<{
+ text: string;
+ x: number;
+ reached: boolean;
+ } | null>(null);
+ const [tooltipVisible, setTooltipVisible] = useState(false);
+ const tooltipTimer = useRef>(undefined);
+
+ const milestonePositions = useRef<
+ { pct: number; x: number; label: string; skillsNeeded: number }[]
+ >([]);
+
+ const draw = useCallback(
+ (canvas: HTMLCanvasElement, time: number) => {
+ const ctx = canvas.getContext('2d');
+ if (!ctx) return;
+
+ const dpr = window.devicePixelRatio || 1;
+ const w = canvas.clientWidth;
+ const h = canvas.clientHeight;
+ canvas.width = w * dpr;
+ canvas.height = h * dpr;
+ ctx.scale(dpr, dpr);
+ ctx.clearRect(0, 0, w, h);
+
+ const isDark = document.body.classList.contains('darkTheme');
+
+ const target = pct;
+ const current = displayPctRef.current;
+ displayPctRef.current += (target - current) * 0.04;
+ if (Math.abs(displayPctRef.current - target) < 0.05)
+ displayPctRef.current = target;
+ const displayPct = displayPctRef.current;
+
+ const hoverAnims = hoveredMilestoneAnimRef.current;
+ for (let i = 0; i < milestones.length; i++) {
+ const tgt = hoveredMilestoneRef.current === i ? 1 : 0;
+ hoverAnims[i] += (tgt - hoverAnims[i]) * 0.12;
+ if (Math.abs(hoverAnims[i] - tgt) < 0.01) hoverAnims[i] = tgt;
+ }
+
+ const barY = h / 2 + 1;
+ const barH = 2;
+ const padL = 16;
+ const padR = 40;
+ const barW = w - padL - padR;
+
+ ctx.beginPath();
+ ctx.moveTo(padL, barY);
+ ctx.lineTo(padL + barW, barY);
+ ctx.strokeStyle = isDark ? '#3a4050' : '#DDD7CE';
+ ctx.lineWidth = barH;
+ ctx.lineCap = 'round';
+ ctx.stroke();
+
+ const fillEnd = padL + (displayPct / 100) * barW;
+ if (displayPct > 0) {
+ ctx.beginPath();
+ ctx.moveTo(padL, barY);
+ ctx.lineTo(fillEnd, barY);
+ ctx.strokeStyle = 'rgba(184, 50, 50, 0.1)';
+ ctx.lineWidth = barH + 8;
+ ctx.lineCap = 'round';
+ ctx.stroke();
+
+ ctx.beginPath();
+ ctx.moveTo(padL, barY);
+ ctx.lineTo(fillEnd, barY);
+ ctx.strokeStyle = '#B83232';
+ ctx.lineWidth = barH;
+ ctx.lineCap = 'round';
+ ctx.stroke();
+
+ const pulse = (Math.sin(time * 1.8) + 1) / 2;
+ const glowR = 6 + pulse * 4;
+ const glowA = 0.08 + pulse * 0.07;
+ ctx.beginPath();
+ ctx.arc(fillEnd, barY, glowR, 0, Math.PI * 2);
+ ctx.fillStyle = `rgba(184, 50, 50, ${glowA})`;
+ ctx.fill();
+
+ const dotR = 3 + pulse * 1;
+ ctx.beginPath();
+ ctx.arc(fillEnd, barY, dotR, 0, Math.PI * 2);
+ ctx.fillStyle = `rgba(184, 50, 50, ${0.6 + pulse * 0.3})`;
+ ctx.fill();
+ }
+
+ const positions: typeof milestonePositions.current = [];
+
+ milestones.forEach((m, i) => {
+ const mx = padL + (m.pct / 100) * barW;
+ const reached = displayPct >= m.pct;
+ const skillsNeeded = Math.ceil((m.pct / 100) * total) - completed;
+ const hoverAmt = hoverAnims[i];
+ const isLast = i === milestones.length - 1;
+
+ positions.push({
+ pct: m.pct,
+ x: mx,
+ label: m.label,
+ skillsNeeded: Math.max(0, skillsNeeded),
+ });
+
+ if (hoverAmt > 0.01) {
+ const glowR2 = 18 + hoverAmt * 6;
+ const glowA2 = hoverAmt * (reached ? 0.15 : 0.1);
+ const gradient = ctx.createRadialGradient(
+ mx,
+ barY,
+ 0,
+ mx,
+ barY,
+ glowR2,
+ );
+ gradient.addColorStop(0, `rgba(184, 50, 50, ${glowA2})`);
+ gradient.addColorStop(1, 'rgba(0, 0, 0, 0)');
+ ctx.beginPath();
+ ctx.arc(mx, barY, glowR2, 0, Math.PI * 2);
+ ctx.fillStyle = gradient;
+ ctx.fill();
+ }
+
+ const tickH = 7 + hoverAmt * 2;
+ const tickAlpha = reached
+ ? 0.45 + hoverAmt * 0.3
+ : 0.25 + hoverAmt * 0.5;
+ ctx.beginPath();
+ ctx.moveTo(mx, barY - tickH);
+ ctx.lineTo(mx, barY + tickH);
+ ctx.strokeStyle =
+ reached || hoverAmt > 0.01
+ ? `rgba(184, 50, 50, ${tickAlpha})`
+ : isDark
+ ? '#3a4050'
+ : '#D5CFC7';
+ ctx.lineWidth = 1 + hoverAmt * 0.5;
+ ctx.lineCap = 'butt';
+ ctx.stroke();
+
+ const dS = (reached ? 3.5 : 2.5) + hoverAmt * 1.5;
+ ctx.save();
+ ctx.translate(mx, barY - 11 - hoverAmt * 1);
+ ctx.rotate(Math.PI / 4);
+ if (reached || hoverAmt > 0.3) {
+ const fillAlpha = reached ? 1 : hoverAmt;
+ ctx.fillStyle = `rgba(184, 50, 50, ${fillAlpha})`;
+ ctx.fillRect(-dS / 2, -dS / 2, dS, dS);
+ const pR = dS + 1.5 + Math.sin(time * 1.5 + m.pct * 0.1) * 1;
+ ctx.strokeStyle = `rgba(184, 50, 50, ${
+ 0.15 + Math.sin(time * 1.5 + m.pct * 0.1) * 0.08 + hoverAmt * 0.15
+ })`;
+ ctx.lineWidth = 0.5;
+ ctx.strokeRect(-pR / 2, -pR / 2, pR, pR);
+ } else if (hoverAmt > 0.01) {
+ ctx.strokeStyle = `rgba(184, 50, 50, ${0.3 + hoverAmt * 0.7})`;
+ ctx.lineWidth = 0.75 + hoverAmt * 0.5;
+ ctx.strokeRect(-dS / 2, -dS / 2, dS, dS);
+ } else {
+ ctx.strokeStyle = isDark ? '#3a4050' : '#D5CFC7';
+ ctx.lineWidth = 0.75;
+ ctx.strokeRect(-dS / 2, -dS / 2, dS, dS);
+ }
+ ctx.restore();
+
+ const labelSize = 8 + hoverAmt * 1;
+ ctx.font = `${400 + hoverAmt * 100} ${labelSize}px Jost, system-ui, sans-serif`;
+ ctx.textAlign = isLast ? 'right' : 'center';
+ ctx.fillStyle =
+ reached || hoverAmt > 0.01
+ ? `rgba(184, 50, 50, ${reached ? 1 : 0.4 + hoverAmt * 0.6})`
+ : isDark
+ ? 'rgba(160, 160, 160, 0.5)'
+ : 'rgba(181, 175, 168, 0.6)';
+ ctx.fillText(m.label.toUpperCase(), isLast ? mx : mx, barY + 18);
+
+ const kanjiSize = 10 + hoverAmt * 2;
+ ctx.font = `${kanjiSize}px "Noto Serif JP", serif`;
+ ctx.textAlign = isLast ? 'right' : 'center';
+ ctx.fillStyle = `rgba(184, 50, 50, ${
+ reached
+ ? 0.2 + Math.sin(time * 1.2 + m.pct * 0.05) * 0.08 + hoverAmt * 0.15
+ : 0.08 + hoverAmt * 0.25
+ })`;
+ ctx.fillText(m.kanji, isLast ? mx : mx, barY - 21 - hoverAmt * 1);
+ });
+
+ milestonePositions.current = positions;
+
+ ctx.font = '300 7px Jost, system-ui, sans-serif';
+ ctx.textAlign = 'center';
+ const ga = 0.07 + Math.sin(time * 0.6) * 0.03;
+ ctx.fillStyle = isDark
+ ? `rgba(218, 218, 218, ${ga})`
+ : `rgba(28, 28, 26, ${ga})`;
+ ctx.fillText(t.toTheGlory, padL + barW / 2, barY + 28);
+ },
+ [pct, total, completed, milestones, t],
+ );
+
+ useEffect(() => {
+ const canvas = canvasRef.current;
+ if (!canvas) return;
+ let running = true;
+ const loop = (ts: number) => {
+ if (!running) return;
+ timeRef.current = ts / 1000;
+ draw(canvas, timeRef.current);
+ animRef.current = requestAnimationFrame(loop);
+ };
+ animRef.current = requestAnimationFrame(loop);
+ return () => {
+ running = false;
+ cancelAnimationFrame(animRef.current);
+ };
+ }, [draw]);
+
+ const showTooltip = useCallback(
+ (text: string, x: number, reached: boolean) => {
+ clearTimeout(tooltipTimer.current);
+ setTooltipData({ text, x, reached });
+ requestAnimationFrame(() => setTooltipVisible(true));
+ },
+ [],
+ );
+
+ const hideTooltip = useCallback(() => {
+ setTooltipVisible(false);
+ hoveredMilestoneRef.current = -1;
+ tooltipTimer.current = setTimeout(() => setTooltipData(null), 250);
+ }, []);
+
+ const handleMouseMove = useCallback(
+ (e: React.MouseEvent) => {
+ const canvas = canvasRef.current;
+ if (!canvas) return;
+ const rect = canvas.getBoundingClientRect();
+ const mx = e.clientX - rect.left;
+ const my = e.clientY - rect.top;
+ const barY = rect.height / 2 + 1;
+
+ let found = false;
+ for (let i = 0; i < milestonePositions.current.length; i++) {
+ const mp = milestonePositions.current[i];
+ const dist = Math.sqrt((mx - mp.x) ** 2 + (my - barY) ** 2);
+ if (dist < HIT_RADIUS) {
+ hoveredMilestoneRef.current = i;
+ const n = mp.skillsNeeded;
+ const reached = n === 0;
+ const text = reached
+ ? `${mp.label} \u2014 ${t.reached}`
+ : `${n} ${n === 1 ? t.skillSingular : t.skillPlural} ${t.toMilestone} ${mp.label}`;
+ showTooltip(text, mp.x, reached);
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ hoveredMilestoneRef.current = -1;
+ if (tooltipData) hideTooltip();
+ }
+ },
+ [tooltipData, showTooltip, hideTooltip, t],
+ );
+
+ const handleMouseLeave = useCallback(() => {
+ hoveredMilestoneRef.current = -1;
+ hideTooltip();
+ }, [hideTooltip]);
+
+ return (
+
+
+ vibe code
+
+
+
+
+ {tooltipData && (
+
+ {tooltipData.text}
+
+ )}
+
+
+
+
+ {completed}
+ / {total}
+ ({Math.round(pct)}%)
+
+
+ {
+ setProgressClosing(false);
+ setCopied(false);
+ setShowProgressModal(true);
+ }}
+ >
+ {t.myProgress}
+
+
+
+ {showProgressModal && (
+ {
+ setProgressClosing(true);
+ setTimeout(() => {
+ setShowProgressModal(false);
+ setProgressClosing(false);
+ }, 180);
+ }}
+ >
+
e.stopPropagation()}
+ >
+
+
{t.myProgress}
+
{t.progressBody1}
+
{t.progressBody2}
+
+
+ {
+ const lines: string[] = [];
+ lines.push(t.copyStateLine1);
+ lines.push('');
+ lines.push(t.copyStateLine2);
+ lines.push(t.copyStateLine3);
+ lines.push(t.copyStateLine4);
+ lines.push(t.copyStateLine5);
+ lines.push('');
+ lines.push(
+ `${t.progressPrefix} ${completed}/${total} ${t.skillsWord} (${Math.round(pct)}%)`,
+ );
+ lines.push('');
+ localizedCats.forEach(cat => {
+ const catDone = cat.skills.filter(
+ s => progress[s.id]?.completed,
+ ).length;
+ lines.push(
+ `## ${cat.name} (${catDone}/${cat.skills.length})`,
+ );
+ cat.skills.forEach(skill => {
+ const learned = !!progress[skill.id]?.completed;
+ lines.push(
+ `- [${learned ? t.learned : t.notLearned}] ${skill.name}: ${skill.projectDescription}`,
+ );
+ });
+ lines.push('');
+ });
+ lines.push('---');
+ lines.push(t.copyStateEnd);
+ navigator.clipboard.writeText(lines.join('\n'));
+ setCopied(true);
+ setTimeout(() => setCopied(false), 2000);
+ }}
+ >
+ {copied ? t.copied : t.copyMyLearningState}
+
+ {
+ setProgressClosing(true);
+ setTimeout(() => {
+ setShowProgressModal(false);
+ setProgressClosing(false);
+ }, 180);
+ }}
+ >
+ {t.close}
+
+
+
+
+
+ )}
+
+ );
+}
diff --git a/src/components/vibesuite/ProgressHeader/ProgressHeader.types.ts b/src/components/vibesuite/ProgressHeader/ProgressHeader.types.ts
new file mode 100644
index 0000000..f6572fd
--- /dev/null
+++ b/src/components/vibesuite/ProgressHeader/ProgressHeader.types.ts
@@ -0,0 +1,5 @@
+import { UserProgress } from '@local-types/pageTypes/vibesuite';
+
+export type ProgressHeaderProps = {
+ progress: UserProgress;
+};
diff --git a/src/components/vibesuite/ProgressHeader/index.ts b/src/components/vibesuite/ProgressHeader/index.ts
new file mode 100644
index 0000000..24105c2
--- /dev/null
+++ b/src/components/vibesuite/ProgressHeader/index.ts
@@ -0,0 +1,3 @@
+import ProgressHeader from './ProgressHeader';
+
+export default ProgressHeader;
diff --git a/src/components/vibesuite/RecommendationModal/RecommendationModal.module.scss b/src/components/vibesuite/RecommendationModal/RecommendationModal.module.scss
new file mode 100644
index 0000000..eef4946
--- /dev/null
+++ b/src/components/vibesuite/RecommendationModal/RecommendationModal.module.scss
@@ -0,0 +1,150 @@
+.backdrop {
+ position: fixed;
+ inset: 0;
+ z-index: 60;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: rgba(28, 28, 26, 0.35);
+ transition: background 0.2s ease;
+
+ &.closing {
+ background: rgba(28, 28, 26, 0);
+ }
+}
+
+.modal {
+ width: calc(100% - 2rem);
+ max-width: 440px;
+ background: var(--bg-base);
+ border: 1px solid var(--border-strong);
+ padding: 1.75rem;
+
+ @media (max-width: 1023px) {
+ padding: 1.25rem;
+ }
+}
+
+.header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 1rem;
+}
+
+.title {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--text-tertiary);
+}
+
+.closeBtn {
+ width: 36px;
+ height: 36px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--bg-card);
+ border: 1px solid var(--border-strong);
+ cursor: pointer;
+ font-family: var(--font-ui);
+ font-size: 1rem;
+ color: var(--text-secondary);
+ padding: 0;
+
+ &:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+ }
+}
+
+.accentRule {
+ width: 2rem;
+ height: 2px;
+ background: var(--accent);
+ margin-bottom: 1.5rem;
+}
+
+.list {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ gap: 0.75rem;
+}
+
+.recBtn {
+ display: block;
+ width: 100%;
+ text-align: left;
+ padding: 1rem 1.1rem;
+ background: var(--bg-card);
+ border: 1px solid var(--border);
+ cursor: pointer;
+
+ &:hover {
+ border-color: var(--accent);
+ background: var(--bg-card-active);
+ }
+}
+
+.recTop {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 0.4rem;
+}
+
+.recCategory {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.12em;
+ text-transform: uppercase;
+ color: var(--text-tertiary);
+ display: inline-flex;
+ align-items: center;
+ gap: 0.35rem;
+}
+
+.recMeta {
+ display: flex;
+ align-items: center;
+ gap: 0.75rem;
+}
+
+.recTime {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ color: var(--text-tertiary);
+}
+
+.recName {
+ font-family: var(--font-body);
+ font-size: 1rem;
+ font-weight: 400;
+ color: var(--text-primary);
+ margin-bottom: 0.3rem;
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+}
+
+.recKatakana {
+ font-family: var(--font-japanese);
+ font-size: 1.1rem;
+ color: var(--accent-kanji-active);
+ flex-shrink: 0;
+ line-height: 1;
+}
+
+.recReason {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ color: var(--accent);
+ padding-left: 1.35rem;
+}
diff --git a/src/components/vibesuite/RecommendationModal/RecommendationModal.tsx b/src/components/vibesuite/RecommendationModal/RecommendationModal.tsx
new file mode 100644
index 0000000..03c90cf
--- /dev/null
+++ b/src/components/vibesuite/RecommendationModal/RecommendationModal.tsx
@@ -0,0 +1,179 @@
+import cn from 'classnames';
+import { useRouter } from 'next/router';
+import { useEffect, useState } from 'react';
+
+import type { TRouter } from '@local-types/global';
+
+import vibesuiteIntl from '@data/vibesuite/intl';
+import { categoriesRu } from '@data/vibesuite/intl/skills.ru';
+import { localizeSkill } from '@data/vibesuite/localizeSkills';
+import { getCategoryBySkillId } from '@data/vibesuite/skills';
+
+import CategoryIcon from '@components/vibesuite/CategoryIcons';
+
+import { RecommendationModalProps } from './RecommendationModal.types';
+
+import styles from './RecommendationModal.module.scss';
+
+const KATAKANA_MAP: Record = {
+ a: '\u30A2',
+ b: '\u30D3',
+ c: '\u30AF',
+ d: '\u30C7',
+ e: '\u30A8',
+ f: '\u30D5',
+ g: '\u30B0',
+ h: '\u30CF',
+ i: '\u30A4',
+ j: '\u30B8',
+ k: '\u30AB',
+ l: '\u30EB',
+ m: '\u30DE',
+ n: '\u30CA',
+ o: '\u30AA',
+ p: '\u30D7',
+ q: '\u30AF',
+ r: '\u30E9',
+ s: '\u30B5',
+ t: '\u30BF',
+ u: '\u30A6',
+ v: '\u30F4',
+ w: '\u30EF',
+ x: '\u30B7',
+ y: '\u30E4',
+ z: '\u30BA',
+};
+function getKatakana(name: string): string {
+ const first = name.charAt(0).toLowerCase();
+ return KATAKANA_MAP[first] || '\u30B9';
+}
+
+const difficultyColor: Record = {
+ beginner: '#6B8E6B',
+ intermediate: '#B8960B',
+ advanced: '#B83232',
+};
+
+export default function RecommendationModal({
+ recommendations,
+ onSelectSkill,
+ onClose,
+}: RecommendationModalProps) {
+ const { locale } = useRouter() as TRouter;
+ const t = vibesuiteIntl[locale];
+
+ const difficultyLabels: Record = {
+ beginner: t.difficultyBeginner,
+ intermediate: t.difficultyIntermediate,
+ advanced: t.difficultyAdvanced,
+ };
+
+ const [closing, setClosing] = useState(false);
+
+ const handleClose = () => {
+ setClosing(true);
+ setTimeout(onClose, 180);
+ };
+
+ const handleSelect = (skillId: string) => {
+ setClosing(true);
+ setTimeout(() => onSelectSkill(skillId), 180);
+ };
+
+ useEffect(() => {
+ const onKey = (e: KeyboardEvent) => {
+ if (e.key === 'Escape') handleClose();
+ };
+ window.addEventListener('keydown', onKey);
+ return () => window.removeEventListener('keydown', onKey);
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []);
+
+ return (
+
+
e.stopPropagation()}
+ >
+
+ {t.whatToLearnNextTitle}
+
+ ✕
+
+
+
+
+
+
+ {recommendations.map(rec => {
+ const cat = getCategoryBySkillId(rec.skill.id);
+ const locRec = localizeSkill(rec.skill, locale);
+ const catDisplayName = cat
+ ? locale === 'ru'
+ ? categoriesRu[cat.id]?.name || cat.name
+ : cat.name
+ : undefined;
+ const dColor =
+ difficultyColor[rec.skill.difficulty] || 'var(--text-tertiary)';
+
+ return (
+
+ handleSelect(rec.skill.id)}
+ >
+
+
+ {cat && }
+ {catDisplayName}
+
+
+
+ {difficultyLabels[rec.skill.difficulty] ||
+ rec.skill.difficulty}
+
+
+ {locRec.timeEstimate}
+
+
+
+
+
+
+ {getKatakana(rec.skill.name)}
+
+ {locRec.name}
+
+
+ {rec.reasonText}
+
+
+ );
+ })}
+
+
+
+ );
+}
diff --git a/src/components/vibesuite/RecommendationModal/RecommendationModal.types.ts b/src/components/vibesuite/RecommendationModal/RecommendationModal.types.ts
new file mode 100644
index 0000000..b6a2fcb
--- /dev/null
+++ b/src/components/vibesuite/RecommendationModal/RecommendationModal.types.ts
@@ -0,0 +1,7 @@
+import { Recommendation } from '@local-types/pageTypes/vibesuite';
+
+export type RecommendationModalProps = {
+ recommendations: Recommendation[];
+ onSelectSkill: (skillId: string) => void;
+ onClose: () => void;
+};
diff --git a/src/components/vibesuite/RecommendationModal/index.ts b/src/components/vibesuite/RecommendationModal/index.ts
new file mode 100644
index 0000000..a0db78f
--- /dev/null
+++ b/src/components/vibesuite/RecommendationModal/index.ts
@@ -0,0 +1,3 @@
+import RecommendationModal from './RecommendationModal';
+
+export default RecommendationModal;
diff --git a/src/components/vibesuite/SkillCard/SkillCard.module.scss b/src/components/vibesuite/SkillCard/SkillCard.module.scss
new file mode 100644
index 0000000..6e2e994
--- /dev/null
+++ b/src/components/vibesuite/SkillCard/SkillCard.module.scss
@@ -0,0 +1,123 @@
+.card {
+ appearance: none;
+ font: inherit;
+ color: inherit;
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: flex-start;
+ flex: 1;
+ padding: 0.75rem;
+ min-height: 102px;
+ background: var(--bg-card);
+ border: 1px solid var(--border);
+ overflow: visible;
+ cursor: pointer;
+ transition:
+ border-color 0.2s ease,
+ background 0.2s ease;
+ margin: -1px 0 0 -1px;
+ z-index: 1;
+ text-align: center;
+ width: 100%;
+ user-select: none;
+ outline: none;
+
+ &:hover,
+ &.highlighted {
+ border-color: var(--accent);
+ background: var(--bg-card-active);
+ z-index: 2;
+ }
+}
+
+.tooltip {
+ position: absolute;
+ bottom: 100%;
+ left: 50%;
+ transform: translateX(-50%) translateY(0px);
+ opacity: 0;
+ pointer-events: none;
+ z-index: 20;
+ font-family: var(--font-body);
+ font-size: 0.875rem;
+ line-height: 1.4;
+ color: var(--text-primary);
+ background: var(--bg-card);
+ border: 1px solid var(--border-strong);
+ padding: 0.35rem 0.7rem;
+ width: max-content;
+ max-width: 280px;
+ transition:
+ opacity 0.2s ease,
+ transform 0.2s ease;
+
+ &.tooltipVisible {
+ opacity: 1;
+ transform: translateX(-50%) translateY(-4px);
+ }
+}
+
+.katakana {
+ font-family: var(--font-japanese);
+ font-size: 2.16rem;
+ color: var(--accent-kanji);
+ line-height: 1;
+ user-select: none;
+ transition: color 0.2s ease;
+ pointer-events: none;
+ margin-bottom: 0.35rem;
+
+ &.katakanaCompleted {
+ color: var(--accent-kanji-active);
+ }
+}
+
+.completedBar {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 3px;
+ background: var(--accent);
+}
+
+.checkmark {
+ position: absolute;
+ top: 0.5rem;
+ left: 0.5rem;
+ font-size: 0.75rem;
+ color: #fff;
+ background: var(--accent);
+ width: 16px;
+ height: 16px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-family: var(--font-ui);
+ font-weight: 600;
+}
+
+.skillName {
+ font-family: var(--font-body);
+ font-size: 1rem;
+ font-weight: 400;
+ color: var(--text-primary);
+ line-height: 1.3;
+ margin-bottom: 0.25rem;
+
+ &.skillNameCompleted {
+ color: var(--accent);
+ }
+}
+
+.difficulty {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 400;
+ color: var(--text-secondary);
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ margin-top: auto;
+}
diff --git a/src/components/vibesuite/SkillCard/SkillCard.tsx b/src/components/vibesuite/SkillCard/SkillCard.tsx
new file mode 100644
index 0000000..249effc
--- /dev/null
+++ b/src/components/vibesuite/SkillCard/SkillCard.tsx
@@ -0,0 +1,110 @@
+import cn from 'classnames';
+import { useRouter } from 'next/router';
+import { useState } from 'react';
+
+import type { TRouter } from '@local-types/global';
+
+import vibesuiteIntl from '@data/vibesuite/intl';
+
+import { SkillCardProps } from './SkillCard.types';
+
+import styles from './SkillCard.module.scss';
+
+// Map first letter to katakana
+const KATAKANA_MAP: Record = {
+ a: 'ア',
+ b: 'ビ',
+ c: 'ク',
+ d: 'デ',
+ e: 'エ',
+ f: 'フ',
+ g: 'グ',
+ h: 'ハ',
+ i: 'イ',
+ j: 'ジ',
+ k: 'カ',
+ l: 'ル',
+ m: 'マ',
+ n: 'ナ',
+ o: 'オ',
+ p: 'プ',
+ q: 'ク',
+ r: 'ラ',
+ s: 'サ',
+ t: 'タ',
+ u: 'ウ',
+ v: 'ヴ',
+ w: 'ワ',
+ x: 'シ',
+ y: 'ヤ',
+ z: 'ズ',
+};
+
+function getKatakana(name: string): string {
+ const first = name.charAt(0).toLowerCase();
+ return KATAKANA_MAP[first] || 'ス';
+}
+
+export default function SkillCard({
+ skill,
+ category,
+ completed,
+ selected,
+ onClick,
+}: SkillCardProps) {
+ const { locale } = useRouter() as TRouter;
+ const t = vibesuiteIntl[locale];
+ const difficultyLabels: Record = {
+ beginner: t.difficultyBeginner,
+ intermediate: t.difficultyIntermediate,
+ advanced: t.difficultyAdvanced,
+ };
+ const katakana = getKatakana(skill.name);
+ const highlighted = completed || selected;
+ const [showTip, setShowTip] = useState(false);
+
+ return (
+ setShowTip(true)}
+ onMouseLeave={() => setShowTip(false)}
+ >
+ {/* Custom tooltip */}
+
+ {skill.projectTitle}
+
+
+ {/* Katakana — top-center, in flow */}
+
+ {katakana}
+
+
+ {/* Learned indicator — accent bar at top */}
+ {completed &&
}
+
+ {/* Checkmark when learned */}
+ {completed && ✓ }
+
+ {/* Skill name */}
+
+ {skill.name}
+
+
+ {/* Difficulty */}
+
+ {difficultyLabels[skill.difficulty] || skill.difficulty}
+
+
+ );
+}
diff --git a/src/components/vibesuite/SkillCard/SkillCard.types.ts b/src/components/vibesuite/SkillCard/SkillCard.types.ts
new file mode 100644
index 0000000..c5ef843
--- /dev/null
+++ b/src/components/vibesuite/SkillCard/SkillCard.types.ts
@@ -0,0 +1,9 @@
+import { Skill, SkillCategory } from '@local-types/pageTypes/vibesuite';
+
+export type SkillCardProps = {
+ skill: Skill;
+ category: SkillCategory;
+ completed: boolean;
+ selected: boolean;
+ onClick: () => void;
+};
diff --git a/src/components/vibesuite/SkillCard/index.ts b/src/components/vibesuite/SkillCard/index.ts
new file mode 100644
index 0000000..9dc41d4
--- /dev/null
+++ b/src/components/vibesuite/SkillCard/index.ts
@@ -0,0 +1,3 @@
+import SkillCard from './SkillCard';
+
+export default SkillCard;
diff --git a/src/components/vibesuite/SkillDetailPanel/SkillDetailPanel.module.scss b/src/components/vibesuite/SkillDetailPanel/SkillDetailPanel.module.scss
new file mode 100644
index 0000000..7ce6c1c
--- /dev/null
+++ b/src/components/vibesuite/SkillDetailPanel/SkillDetailPanel.module.scss
@@ -0,0 +1,459 @@
+.backdrop {
+ display: flex;
+ width: 100vw;
+ height: 100vh;
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: rgba(0, 0, 0, 0.35);
+ align-items: center;
+ justify-content: center;
+ z-index: 9999;
+
+ @media (max-width: 1023px) {
+ padding: 0;
+ align-items: stretch;
+ }
+}
+
+.background {
+ display: flex;
+ width: 100vw;
+ height: 100vh;
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ align-items: center;
+ justify-content: center;
+ z-index: 201;
+}
+
+.panel {
+ background: var(--bg-card);
+ border: 1px solid var(--border);
+ width: 644px;
+ max-width: 100%;
+ min-height: 650px;
+ max-height: 85vh;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ position: relative;
+ z-index: 202;
+
+ @media (max-width: 1023px) {
+ width: 100%;
+ min-height: unset;
+ max-height: 100%;
+ border: none;
+ }
+}
+
+.scrollContent {
+ flex: 1;
+ overflow-y: auto;
+ padding: 1.5rem 1.75rem;
+ transition: opacity 0.15s ease;
+
+ @media (max-width: 1023px) {
+ padding: 1.25rem 1rem;
+ }
+}
+
+.headerRow {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 1rem;
+}
+
+.categoryLabel {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--text-secondary);
+ display: inline-flex;
+ align-items: center;
+ gap: 0.4rem;
+}
+
+.navBtns {
+ display: flex;
+ gap: 0.5rem;
+}
+
+.navBtn {
+ width: 36px;
+ height: 36px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--bg-card);
+ border: 1px solid var(--border-strong);
+ cursor: pointer;
+ font-family: var(--font-ui);
+ font-size: 1rem;
+ color: var(--text-primary);
+ transition:
+ border-color 0.15s,
+ color 0.15s;
+ padding: 0;
+ flex-shrink: 0;
+
+ &:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+ }
+}
+
+.navBtnDisabled {
+ color: var(--text-tertiary);
+ border-color: var(--border);
+ cursor: default;
+ opacity: 0.4;
+
+ &:hover {
+ border-color: var(--border);
+ color: var(--text-tertiary);
+ }
+}
+
+.closeBtn {
+ width: 36px;
+ height: 36px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background: var(--bg-card);
+ border: 1px solid var(--border-strong);
+ cursor: pointer;
+ font-family: var(--font-ui);
+ font-size: 1rem;
+ color: var(--text-secondary);
+ transition:
+ border-color 0.15s,
+ color 0.15s;
+ padding: 0;
+ flex-shrink: 0;
+
+ &:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+ }
+}
+
+.skillTitle {
+ font-family: var(--font-display);
+ font-size: 1.4rem;
+ font-weight: 400;
+ margin-bottom: 1rem;
+ line-height: 1.3;
+ display: flex;
+ align-items: center;
+ gap: 0.6rem;
+}
+
+.titleKatakana {
+ font-family: var(--font-japanese);
+ font-size: 1.4rem;
+ color: var(--accent-kanji-active);
+ flex-shrink: 0;
+ line-height: 1;
+}
+
+.metaRow {
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+ margin-bottom: 1.75rem;
+}
+
+.difficultyBadge {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ padding: 0.2rem 0.6rem;
+}
+
+.timeLabel {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ color: var(--text-tertiary);
+}
+
+.accentRule {
+ width: 2rem;
+ height: 2px;
+ background: var(--accent);
+ margin-bottom: 1.25rem;
+}
+
+.sectionLabel {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--text-tertiary);
+ margin-bottom: 0.5rem;
+}
+
+.projectTitle {
+ font-family: var(--font-body);
+ font-size: 1rem;
+ font-weight: 400;
+ color: var(--text-primary);
+ margin-bottom: 1rem;
+ line-height: 1.4;
+}
+
+.projectDesc {
+ font-family: var(--font-body);
+ font-size: 1rem;
+ line-height: 1.75;
+ color: var(--text-secondary);
+ margin-bottom: 1.5rem;
+}
+
+.toolsSection {
+ margin-bottom: 1.5rem;
+}
+
+.toolsWrap {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.35rem;
+}
+
+.toolTag {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ padding: 0.2rem 0.6rem;
+ background: var(--bg-card);
+ border: 1px solid var(--border);
+ color: var(--text-secondary);
+}
+
+.depsSection {
+ margin-bottom: 1.5rem;
+}
+
+.depsList {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.depBtn {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ font-family: var(--font-body);
+ font-size: 1rem;
+ color: var(--text-secondary);
+ background: none;
+ border: none;
+ cursor: pointer;
+ padding: 0.25rem 0;
+ width: 100%;
+ text-align: left;
+
+ &.depDone {
+ color: var(--accent);
+ }
+}
+
+.instructionBlock {
+ margin-bottom: 0.5rem;
+ border: 1px solid var(--accent);
+ border-top: 3px solid var(--accent);
+ padding: 1.25rem 1.1rem 1rem;
+ background: var(--bg-card-active);
+ position: relative;
+}
+
+.instructionHeader {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 0.75rem;
+}
+
+.instructionSectionLabel {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ color: var(--accent);
+}
+
+.guideToggleBtn {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.1em;
+ color: var(--text-tertiary);
+ background: none;
+ border: none;
+ cursor: pointer;
+ text-decoration: underline;
+ text-underline-offset: 2px;
+ padding: 0;
+}
+
+.guideContent {
+ margin-bottom: 1rem;
+ padding: 0.85rem 1rem;
+ background: var(--bg-base);
+ border: 1px solid var(--border);
+ animation: loaderFadeIn 0.2s ease;
+}
+
+.guideText {
+ font-family: var(--font-body);
+ font-size: 0.875rem;
+ line-height: 1.7;
+ color: var(--text-secondary);
+}
+
+.guideHeading {
+ margin-bottom: 0.6rem;
+ color: var(--text-primary);
+ font-weight: 500;
+}
+
+.guideStepList {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.guideStep {
+ display: flex;
+ gap: 0.5rem;
+ margin-bottom: 0.45rem;
+}
+
+.guideStepNum {
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 600;
+ color: var(--accent);
+ flex-shrink: 0;
+ margin-top: 2px;
+}
+
+.guideTip {
+ margin-top: 0.6rem;
+ font-style: italic;
+ color: var(--text-tertiary);
+ font-size: 0.875rem;
+}
+
+.instructionText {
+ background: var(--bg-card);
+ border: 1px solid var(--border);
+ padding: 0.85rem 1rem;
+}
+
+.instructionParagraph {
+ font-family: var(--font-body);
+ font-size: 1rem;
+ line-height: 1.6;
+ color: var(--text-primary);
+ margin: 0;
+}
+
+.copyBtn {
+ margin-top: 0.65rem;
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.12em;
+ text-transform: uppercase;
+ color: var(--accent);
+ background: transparent;
+ border: 1px solid var(--accent);
+ padding: 0.45rem 1.2rem;
+ cursor: pointer;
+ transition:
+ background 0.15s ease,
+ color 0.15s ease,
+ transform 0.1s ease;
+ width: 100%;
+
+ &:hover {
+ background: var(--accent);
+ color: #fff;
+ }
+
+ &:active {
+ transform: scale(0.97);
+ }
+
+ &.copyBtnCopied {
+ background: var(--accent);
+ color: #fff;
+ }
+}
+
+.bottomBar {
+ padding: 1.25rem 1.75rem;
+ border-top: 1px solid var(--border);
+ flex-shrink: 0;
+
+ @media (max-width: 1023px) {
+ padding: 1rem;
+ }
+}
+
+.toggleBtn {
+ width: 100%;
+ font-family: var(--font-ui);
+ font-size: 0.75rem;
+ font-weight: 500;
+ letter-spacing: 0.15em;
+ text-transform: uppercase;
+ padding: 0.75rem 0;
+ border: 1px solid var(--accent);
+ background: var(--accent);
+ color: #fff;
+ cursor: pointer;
+ transition:
+ background 0.15s ease,
+ color 0.15s ease,
+ border-color 0.15s ease,
+ transform 0.1s ease;
+
+ &:hover {
+ background: var(--accent-dark, #9a2a2a);
+ }
+
+ &:active {
+ transform: scale(0.98);
+ }
+
+ &.toggleBtnUnmark {
+ background: transparent;
+ border-color: var(--border-strong);
+ color: var(--text-secondary);
+
+ &:hover {
+ border-color: var(--accent);
+ color: var(--accent);
+ background: transparent;
+ }
+ }
+}
diff --git a/src/components/vibesuite/SkillDetailPanel/SkillDetailPanel.tsx b/src/components/vibesuite/SkillDetailPanel/SkillDetailPanel.tsx
new file mode 100644
index 0000000..62c1d11
--- /dev/null
+++ b/src/components/vibesuite/SkillDetailPanel/SkillDetailPanel.tsx
@@ -0,0 +1,369 @@
+import cn from 'classnames';
+import { useRouter } from 'next/router';
+import { useEffect, useRef, useState } from 'react';
+
+import type { TRouter } from '@local-types/global';
+import { Skill } from '@local-types/pageTypes/vibesuite';
+
+import vibesuiteIntl from '@data/vibesuite/intl';
+import { categoriesRu } from '@data/vibesuite/intl/skills.ru';
+import { localizeSkill } from '@data/vibesuite/localizeSkills';
+import { getDependencies, getSkillById } from '@data/vibesuite/skills';
+
+import CategoryIcon from '@components/vibesuite/CategoryIcons';
+
+import { SkillDetailPanelProps } from './SkillDetailPanel.types';
+
+import styles from './SkillDetailPanel.module.scss';
+
+const KATAKANA_MAP: Record = {
+ a: '\u30A2',
+ b: '\u30D3',
+ c: '\u30AF',
+ d: '\u30C7',
+ e: '\u30A8',
+ f: '\u30D5',
+ g: '\u30B0',
+ h: '\u30CF',
+ i: '\u30A4',
+ j: '\u30B8',
+ k: '\u30AB',
+ l: '\u30EB',
+ m: '\u30DE',
+ n: '\u30CA',
+ o: '\u30AA',
+ p: '\u30D7',
+ q: '\u30AF',
+ r: '\u30E9',
+ s: '\u30B5',
+ t: '\u30BF',
+ u: '\u30A6',
+ v: '\u30F4',
+ w: '\u30EF',
+ x: '\u30B7',
+ y: '\u30E4',
+ z: '\u30BA',
+};
+
+function getKatakana(name: string): string {
+ const first = name.charAt(0).toLowerCase();
+ return KATAKANA_MAP[first] || '\u30B9';
+}
+
+function buildInstruction(skill: Skill, locale: string): string {
+ const tools = skill.tools.join(', ');
+ const plural = skill.tools.length > 1;
+
+ if (locale === 'ru') {
+ return `Я хочу изучить «${skill.name}». Задача: ${skill.projectTitle}. Инструменты: ${tools}. Давай построим это вместе, шаг за шагом.`;
+ }
+
+ const title = skill.projectTitle
+ .replace(/\byour\b/gi, 'my')
+ .replace(/\byou\b/gi, 'I');
+ const lower = title.charAt(0).toLowerCase() + title.slice(1);
+ return `I want to learn "${skill.name}" to know how to ${lower}. I've been looking into ${tools} for this \u2014 if ${plural ? "they're a good fit" : "it's a good fit"} for my project, let's use ${plural ? 'them' : 'it'}. Can we build this together?`;
+}
+
+export default function SkillDetailPanel({
+ skill,
+ category,
+ progress,
+ onToggle,
+ onClose,
+ onSelectSkill,
+ prevSkillId,
+ nextSkillId,
+ requestClose,
+ isLoggedIn,
+ onOpenLogin,
+}: SkillDetailPanelProps) {
+ const { locale } = useRouter() as TRouter;
+ const t = vibesuiteIntl[locale];
+
+ const locSkill = localizeSkill(skill, locale);
+ const catName =
+ locale === 'ru'
+ ? categoriesRu[category.id]?.name || category.name
+ : category.name;
+
+ const difficultyDisplay: Record = {
+ beginner: { label: t.difficultyBeginner, color: '#6B8E6B' },
+ intermediate: { label: t.difficultyIntermediate, color: '#B8960B' },
+ advanced: { label: t.difficultyAdvanced, color: 'var(--accent)' },
+ };
+
+ const isCompleted = !!progress[skill.id]?.completed;
+ const deps = getDependencies(skill.id);
+ const diff = difficultyDisplay[skill.difficulty];
+ const instruction = buildInstruction(locSkill, locale);
+ const [copied, setCopied] = useState(false);
+ const [closing, setClosing] = useState(false);
+ const [showGuide, setShowGuide] = useState(false);
+ const [contentVisible, setContentVisible] = useState(true);
+ const prevSkillRef = useRef(skill.id);
+
+ const prevSkill = prevSkillId ? getSkillById(prevSkillId) : null;
+ const nextSkill = nextSkillId ? getSkillById(nextSkillId) : null;
+
+ useEffect(() => {
+ const header = document.querySelector('header') as HTMLElement | null;
+ if (header) header.style.zIndex = '0';
+ return () => {
+ if (header) header.style.zIndex = '';
+ };
+ }, []);
+
+ useEffect(() => {
+ if (skill.id !== prevSkillRef.current) {
+ prevSkillRef.current = skill.id;
+ setContentVisible(false);
+ setCopied(false);
+ const frame = requestAnimationFrame(() => {
+ requestAnimationFrame(() => setContentVisible(true));
+ });
+ return () => cancelAnimationFrame(frame);
+ }
+ }, [skill.id]);
+
+ const handleClose = () => {
+ setClosing(true);
+ setTimeout(() => onClose(), 180);
+ };
+
+ useEffect(() => {
+ if (requestClose && !closing) {
+ handleClose();
+ }
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [requestClose]);
+
+ const handleCopy = async () => {
+ try {
+ await navigator.clipboard.writeText(instruction);
+ setCopied(true);
+ setTimeout(() => setCopied(false), 2000);
+ } catch {
+ const ta = document.createElement('textarea');
+ ta.value = instruction;
+ document.body.appendChild(ta);
+ ta.select();
+ document.execCommand('copy');
+ document.body.removeChild(ta);
+ setCopied(true);
+ setTimeout(() => setCopied(false), 2000);
+ }
+ };
+
+ return (
+
+
+
e.stopPropagation()}
+ >
+
+
+
+ {catName}
+
+
+
+ prevSkillId && onSelectSkill(prevSkillId)}
+ title={prevSkill?.name}
+ aria-label={
+ prevSkill ? `Previous: ${prevSkill.name}` : 'Previous skill'
+ }
+ >
+ ‹
+
+ nextSkillId && onSelectSkill(nextSkillId)}
+ title={nextSkill?.name}
+ aria-label={
+ nextSkill ? `Next: ${nextSkill.name}` : 'Next skill'
+ }
+ >
+ ›
+
+
+
+ ✕
+
+
+
+
+
+
+ {getKatakana(skill.name)}
+
+ {locSkill.name}
+
+
+
+
+ {diff.label}
+
+ {locSkill.timeEstimate}
+
+
+
+
+
{t.whatYoullBuild}
+
{locSkill.projectTitle}
+
+
{locSkill.projectDescription}
+
+
+
{t.tools}
+
+ {skill.tools.map(tool => (
+
+ {tool}
+
+ ))}
+
+
+
+ {deps.length > 0 && (
+
+
{t.prerequisites}
+
+ {deps.map(dep => {
+ const depDone = !!progress[dep.id]?.completed;
+ const locDep = localizeSkill(dep, locale);
+ return (
+
+ onSelectSkill(dep.id)}
+ >
+ {depDone ? '\u2713' : '\u25CB'}
+ {locDep.name}
+
+
+ );
+ })}
+
+
+ )}
+
+
+
+
+ {t.howToLearnThis}
+
+
setShowGuide(!showGuide)}
+ >
+ {showGuide ? t.hideGuide : t.firstTimeReadThis}
+
+
+
+ {showGuide && (
+
+
+
{t.detailGuideHeading}
+
+
+
+ 1.
+
+
+
+ {t.detailGuideStep1Bold}
+ {' '}
+ {t.detailGuideStep1Rest}
+
+
+
+
+ 2.
+
+
+
+ {t.detailGuideStep2Bold}
+ {' '}
+ {t.detailGuideStep2Rest}
+
+
+
+
+ 3.
+
+
+
+ {t.detailGuideStep3Bold}
+ {' '}
+ {t.detailGuideStep3Rest}
+
+
+
+
{t.detailGuideTip}
+
+
+ )}
+
+
+
+
+ {copied ? t.copiedExcl : t.copyInstruction}
+
+
+
+
+
+ {
+ if (!isLoggedIn && onOpenLogin) {
+ onOpenLogin();
+ return;
+ }
+ onToggle(skill.id, !isCompleted);
+ }}
+ >
+ {isCompleted ? t.unmarkAsLearned : t.markAsLearned}
+
+
+
+
+ );
+}
diff --git a/src/components/vibesuite/SkillDetailPanel/SkillDetailPanel.types.ts b/src/components/vibesuite/SkillDetailPanel/SkillDetailPanel.types.ts
new file mode 100644
index 0000000..607372f
--- /dev/null
+++ b/src/components/vibesuite/SkillDetailPanel/SkillDetailPanel.types.ts
@@ -0,0 +1,19 @@
+import {
+ Skill,
+ SkillCategory,
+ UserProgress,
+} from '@local-types/pageTypes/vibesuite';
+
+export type SkillDetailPanelProps = {
+ skill: Skill;
+ category: SkillCategory;
+ progress: UserProgress;
+ onToggle: (skillId: string, completed: boolean) => void;
+ onClose: () => void;
+ onSelectSkill: (skillId: string) => void;
+ prevSkillId: string | null;
+ nextSkillId: string | null;
+ requestClose?: boolean;
+ isLoggedIn?: boolean;
+ onOpenLogin?: () => void;
+};
diff --git a/src/components/vibesuite/SkillDetailPanel/index.ts b/src/components/vibesuite/SkillDetailPanel/index.ts
new file mode 100644
index 0000000..e9f327b
--- /dev/null
+++ b/src/components/vibesuite/SkillDetailPanel/index.ts
@@ -0,0 +1,3 @@
+import SkillDetailPanel from './SkillDetailPanel';
+
+export default SkillDetailPanel;
diff --git a/src/constants/tools.ts b/src/constants/tools.ts
index a7cdab5..c91619f 100644
--- a/src/constants/tools.ts
+++ b/src/constants/tools.ts
@@ -4,9 +4,11 @@ import CompanyManagementIcon from '@icons/tools/company-management.svg';
import BobIcon from '@icons/tools/tool-icons/bob.svg';
import ClaudeBobIcon from '@icons/tools/tool-icons/claude-bob.svg';
import EmaIcon from '@icons/tools/tool-icons/ema.svg';
+import FriendlyTomIcon from '@icons/tools/tool-icons/friendly-tom.svg';
import GithubIcon from '@icons/tools/tool-icons/github.svg';
import MosaicIcon from '@icons/tools/tool-icons/mosaic.svg';
import TomIcon from '@icons/tools/tool-icons/tom.svg';
+import VibeSuiteIcon from '@icons/tools/tool-icons/vibesuite.svg';
export type ToolConfig = {
Icon: FC>;
@@ -15,6 +17,7 @@ export type ToolConfig = {
darkIconFill: string;
isBlank: boolean;
};
+// TODO - review html, button with p and div
export const TOOL_CONFIG: Record = {
1: {
@@ -66,6 +69,20 @@ export const TOOL_CONFIG: Record = {
darkIconFill: '#FFB366',
isBlank: true,
},
+ 8: {
+ Icon: VibeSuiteIcon,
+ hoverColor: '#A4B465',
+ darkHoverColor: '#D3DEAC',
+ darkIconFill: '#D3DEAC',
+ isBlank: false,
+ },
+ 9: {
+ Icon: FriendlyTomIcon,
+ hoverColor: '#B8860B',
+ darkHoverColor: '#E5C988',
+ darkIconFill: '#E5C988',
+ isBlank: false,
+ },
};
export const DEFAULT_CONFIG: ToolConfig = {
diff --git a/src/data/settings/en.ts b/src/data/settings/en.ts
new file mode 100644
index 0000000..3795cce
--- /dev/null
+++ b/src/data/settings/en.ts
@@ -0,0 +1,17 @@
+const en = {
+ title: 'Settings',
+ selectTitle: 'Select title',
+ usernameTxt: 'Username',
+ email: 'Email',
+ visible: 'Visible to:',
+ everyone: 'Everyone',
+ onlyYou: 'Only you',
+ linkedIn: 'LinkedIn profile',
+ saveBtn: 'Save',
+ cancelBtn: 'Cancel',
+ usernameValidationMessage:
+ 'Must be 6-30 characters. No special characters allowed.',
+ invalidLinkedIn: 'Please enter a valid LinkedIn URL.',
+};
+
+export default en;
diff --git a/src/data/settings/index.ts b/src/data/settings/index.ts
new file mode 100644
index 0000000..73ed0c9
--- /dev/null
+++ b/src/data/settings/index.ts
@@ -0,0 +1,12 @@
+import en from './en';
+import ru from './ru';
+
+const locales = {
+ en,
+ ru,
+} as const satisfies {
+ en: typeof en;
+ ru: typeof ru;
+};
+
+export default locales;
diff --git a/src/data/settings/ru.ts b/src/data/settings/ru.ts
new file mode 100644
index 0000000..13f5280
--- /dev/null
+++ b/src/data/settings/ru.ts
@@ -0,0 +1,17 @@
+const ru = {
+ title: 'Настройки',
+ selectTitle: 'Звание',
+ usernameTxt: 'Имя пользователя',
+ email: 'Электронная почта',
+ visible: 'Видно:',
+ everyone: 'Всем',
+ onlyYou: 'Только мне',
+ linkedIn: 'LinkedIn профиль',
+ saveBtn: 'Сохранить',
+ cancelBtn: 'Отмена',
+ usernameValidationMessage:
+ 'Разрешено 6-30 символов, без специальных символов.',
+ invalidLinkedIn: 'Не верный формат ссылки',
+};
+
+export default ru;
diff --git a/src/data/vibesuite/intl/en.ts b/src/data/vibesuite/intl/en.ts
new file mode 100644
index 0000000..457211d
--- /dev/null
+++ b/src/data/vibesuite/intl/en.ts
@@ -0,0 +1,114 @@
+const en = {
+ // Page
+ pageTitle: 'Vibe Suite \u2014 AI Skill Guide',
+ pageSubtitle: 'Your path from first prompt to shipped product',
+ firstTimeClick: 'First time? Click here',
+ searchPlaceholder: 'Search skills...',
+ showLabel: 'Show',
+ filterAll: 'All',
+ filterLearned: 'Learned',
+ filterNotLearned: 'Not Learned',
+
+ // Guide modal
+ guideAccent: 'How this works',
+ guideTitle: 'Your AI does the teaching. This map tells it what.',
+ guideStep1Title: 'Pick a skill',
+ guideStep1Desc:
+ "Each card is a real project. Click one to see what you'll build and get a ready-made instruction for your AI.",
+ guideStep2Title: 'Give it to your AI',
+ guideStep2Desc:
+ 'Copy the instruction and paste it into Claude, ChatGPT, or Cursor. Build the project together, step by step.',
+ guideStep3Title: 'Mark as learned',
+ guideStep3Desc:
+ 'Done building? Mark it. Your progress bar and recommendations update automatically.',
+ guideGotIt: 'Got it',
+
+ // Why modal
+ whyP1:
+ 'Most knowledge workers are becoming irrelevant. Not next year. Right now. Every single day.',
+ whyP2:
+ 'This isn\u2019t doom-scrolling anxiety\u00A0\u2014 it\u2019s math. AI replaces tasks, tasks make up jobs, jobs disappear quietly while people argue on Twitter about whether it\u2019s \u201Creally\u201D happening.',
+ whyP3:
+ 'This skill map is your chance to stay relevant. Learn to build with AI\u00A0\u2014 not compete against it\u00A0\u2014 so that in your 30s and 40s you still get to choose what you do for a living.',
+
+ // ProgressHeader
+ milestoneObserver: 'Observer',
+ milestoneExplorer: 'Explorer',
+ milestoneMaster: 'Master',
+ milestoneSingularity: 'Singularity',
+ reached: 'Reached!',
+ skillSingular: 'skill',
+ skillPlural: 'skills',
+ toMilestone: 'to',
+ myProgress: 'My Progress',
+ progressBody1:
+ 'Copy your learning state and paste it into any AI assistant you use for building.',
+ progressBody2:
+ "Tell it what you want to build \u2014 it will see which skills you already have and which ones you haven't touched yet, then suggest an approach that plays to your strengths while filling in the gaps. Just paste and go.",
+ copyStateLine1:
+ 'Here is my current skill profile. Each skill is marked as LEARNED or NOT LEARNED.',
+ copyStateLine2: 'When I describe what I want to build, use this profile to:',
+ copyStateLine3:
+ '1. Suggest an architecture and tech stack that leverages skills I already know.',
+ copyStateLine4:
+ "2. Identify which skills I haven't learned yet that would be valuable for the project, and offer to teach them as we go.",
+ copyStateLine5:
+ '3. Give me options \u2014 one path that stays inside my comfort zone, one that stretches it, and one that balances both.',
+ progressPrefix: 'Progress:',
+ skillsWord: 'skills',
+ learned: 'LEARNED',
+ notLearned: 'NOT LEARNED',
+ copyStateEnd: "Now, here's what I want to build:",
+ copied: 'Copied',
+ copyMyLearningState: 'Copy my learning state',
+ close: 'Close',
+ toTheGlory: 'T O T H E G L O R Y',
+
+ // CategoryNav
+ categoriesTitle: 'Categories',
+ whatToLearnNext: 'What to learn next?',
+ personalizedForYou: 'Personalized for you',
+ allCategories: 'All Categories',
+ whyDoINeedThis: 'Why do I need this?',
+
+ // SkillDetailPanel
+ difficultyBeginner: 'Beginner',
+ difficultyIntermediate: 'Intermediate',
+ difficultyAdvanced: 'Advanced',
+ whatYoullBuild: "What you'll build",
+ tools: 'Tools',
+ prerequisites: 'Prerequisites',
+ howToLearnThis: 'How to learn this',
+ hideGuide: 'Hide guide',
+ firstTimeReadThis: 'First time? Read this',
+ detailGuideHeading: 'Each skill is a real project you build with AI:',
+ detailGuideStep1Bold: 'Copy the instruction',
+ detailGuideStep1Rest:
+ 'below and paste it into your AI assistant (Claude, ChatGPT, Cursor, etc.)',
+ detailGuideStep2Bold: 'Follow along',
+ detailGuideStep2Rest:
+ 'as the AI walks you through building it step by step in your own project',
+ detailGuideStep3Bold: 'Mark as learned',
+ detailGuideStep3Rest:
+ "once you've completed it. No quizzes, no grades \u2014 you built it, you learned it.",
+ detailGuideTip:
+ "That's it. No videos. No courses. You learn by building real things.",
+ copiedExcl: 'Copied!',
+ copyInstruction: 'Copy Instruction',
+ unmarkAsLearned: 'Unmark as Learned',
+ markAsLearned: 'Mark as Learned',
+
+ // RecommendationModal
+ whatToLearnNextTitle: 'What to learn next',
+
+ // Recommendation reasons
+ reasonUnlocks: 'Unlocks',
+ reasonNewSkill: 'new skill',
+ reasonNewSkills: 'new skills',
+ reasonQuickWin: 'Quick win',
+ reasonMatchesLevel: 'Matches your current level',
+ reasonAllPrereqsDone: 'All prerequisites done',
+ reasonGoodNextStep: 'Good next step',
+};
+
+export default en;
diff --git a/src/data/vibesuite/intl/hy.ts b/src/data/vibesuite/intl/hy.ts
new file mode 100644
index 0000000..a7add7d
--- /dev/null
+++ b/src/data/vibesuite/intl/hy.ts
@@ -0,0 +1,5 @@
+import en from './en';
+
+const hy = { ...en };
+
+export default hy;
diff --git a/src/data/vibesuite/intl/index.ts b/src/data/vibesuite/intl/index.ts
new file mode 100644
index 0000000..f9e3da6
--- /dev/null
+++ b/src/data/vibesuite/intl/index.ts
@@ -0,0 +1,9 @@
+import en from './en';
+import hy from './hy';
+import ru from './ru';
+
+export default { en, ru, hy } as {
+ en: typeof en;
+ ru: typeof ru;
+ hy: typeof hy;
+};
diff --git a/src/data/vibesuite/intl/ru.ts b/src/data/vibesuite/intl/ru.ts
new file mode 100644
index 0000000..0a2bc43
--- /dev/null
+++ b/src/data/vibesuite/intl/ru.ts
@@ -0,0 +1,115 @@
+const ru = {
+ // Page
+ pageTitle: 'Vibe Suite — карта AI-навыков',
+ pageSubtitle: 'Ваш путь от первого промпта до готового продукта',
+ firstTimeClick: 'Первый раз? Нажмите сюда',
+ searchPlaceholder: 'Поиск навыков...',
+ showLabel: 'Показать',
+ filterAll: 'Все',
+ filterLearned: 'Изучено',
+ filterNotLearned: 'Не изучено',
+
+ // Guide modal
+ guideAccent: 'Как это работает',
+ guideTitle: 'Ваш AI учит. Эта карта говорит ему чему.',
+ guideStep1Title: 'Выберите навык',
+ guideStep1Desc:
+ 'Каждая карточка\u00A0— реальный проект. Нажмите, чтобы увидеть, что вы построите, и получить готовую инструкцию для AI.',
+ guideStep2Title: 'Отдайте AI',
+ guideStep2Desc:
+ 'Скопируйте инструкцию и вставьте в Claude, ChatGPT или Cursor. Стройте проект вместе, шаг за шагом.',
+ guideStep3Title: 'Отметьте как изученный',
+ guideStep3Desc:
+ 'Закончили? Отметьте. Прогресс-бар и рекомендации обновятся автоматически.',
+ guideGotIt: 'Понятно',
+
+ // Why modal
+ whyP1:
+ 'Большинство офисных работников становятся ненужными. Не в следующем году. Прямо сейчас. Каждый день.',
+ whyP2:
+ 'Это не тревожность от новостей\u00A0— это математика. AI заменяет задачи, задачи составляют работу, работа исчезает тихо, пока люди спорят в Twitter, происходит ли это «на самом деле».',
+ whyP3:
+ 'Эта карта навыков\u00A0— ваш шанс остаться востребованным. Научитесь строить с AI\u00A0— а не конкурировать с ним\u00A0— чтобы в 30 и 40 лет вы всё ещё могли выбирать, чем заниматься.',
+
+ // ProgressHeader
+ milestoneObserver: 'Наблюдатель',
+ milestoneExplorer: 'Исследователь',
+ milestoneMaster: 'Мастер',
+ milestoneSingularity: 'Сингулярность',
+ reached: 'Достигнуто!',
+ skillSingular: 'навык',
+ skillPlural: 'навыков',
+ toMilestone: 'до',
+ myProgress: 'Мой прогресс',
+ progressBody1:
+ 'Скопируйте свой профиль обучения и вставьте в любой AI-ассистент, которым пользуетесь.',
+ progressBody2:
+ 'Расскажите, что хотите построить\u00A0— AI увидит, какие навыки у вас есть, а каких нет, и предложит подход, который использует ваши сильные стороны и закроет пробелы.',
+ copyStateLine1:
+ 'Вот мой профиль навыков. Каждый навык отмечен как ИЗУЧЕНО или НЕ ИЗУЧЕНО.',
+ copyStateLine2:
+ 'Когда я опишу, что хочу построить, используй этот профиль, чтобы:',
+ copyStateLine3:
+ '1. Предложить архитектуру и стек, которые используют навыки, которые я уже знаю.',
+ copyStateLine4:
+ '2. Определить, какие навыки я ещё не изучил, но они были бы полезны для проекта, и предложить изучить их по ходу.',
+ copyStateLine5:
+ '3. Дать варианты\u00A0— один путь в зоне комфорта, один с вызовом, и один сбалансированный.',
+ progressPrefix: 'Прогресс:',
+ skillsWord: 'навыков',
+ learned: 'ИЗУЧЕНО',
+ notLearned: 'НЕ ИЗУЧЕНО',
+ copyStateEnd: 'Итак, вот что я хочу построить:',
+ copied: 'Скопировано',
+ copyMyLearningState: 'Скопировать профиль',
+ close: 'Закрыть',
+ toTheGlory: 'К С Л А В Е',
+
+ // CategoryNav
+ categoriesTitle: 'Категории',
+ whatToLearnNext: 'Что учить дальше?',
+ personalizedForYou: 'Подобрано для вас',
+ allCategories: 'Все категории',
+ whyDoINeedThis: 'Зачем мне это?',
+
+ // SkillDetailPanel
+ difficultyBeginner: 'Начальный',
+ difficultyIntermediate: 'Средний',
+ difficultyAdvanced: 'Продвинутый',
+ whatYoullBuild: 'Что вы построите',
+ tools: 'Инструменты',
+ prerequisites: 'Предварительные навыки',
+ howToLearnThis: 'Как изучить',
+ hideGuide: 'Скрыть гайд',
+ firstTimeReadThis: 'Первый раз? Прочтите',
+ detailGuideHeading: 'Каждый навык\u00A0— реальный проект с AI:',
+ detailGuideStep1Bold: 'Скопируйте инструкцию',
+ detailGuideStep1Rest:
+ 'ниже и вставьте в AI-ассистент (Claude, ChatGPT, Cursor и т.д.)',
+ detailGuideStep2Bold: 'Следуйте за AI',
+ detailGuideStep2Rest:
+ 'который проведёт вас через сборку проекта шаг за шагом',
+ detailGuideStep3Bold: 'Отметьте как изученный',
+ detailGuideStep3Rest:
+ 'когда закончите. Никаких тестов, никаких оценок\u00A0— вы построили, вы научились.',
+ detailGuideTip:
+ 'Вот и всё. Никаких видео. Никаких курсов. Вы учитесь, строя реальные вещи.',
+ copiedExcl: 'Скопировано!',
+ copyInstruction: 'Скопировать',
+ unmarkAsLearned: 'Снять отметку',
+ markAsLearned: 'Отметить как изученный',
+
+ // RecommendationModal
+ whatToLearnNextTitle: 'Что изучить дальше',
+
+ // Recommendation reasons
+ reasonUnlocks: 'Открывает',
+ reasonNewSkill: 'новый навык',
+ reasonNewSkills: 'новых навыков',
+ reasonQuickWin: 'Быстрая победа',
+ reasonMatchesLevel: 'Подходит под ваш уровень',
+ reasonAllPrereqsDone: 'Все предварительные навыки изучены',
+ reasonGoodNextStep: 'Хороший следующий шаг',
+};
+
+export default ru;
diff --git a/src/data/vibesuite/intl/skills.ru.ts b/src/data/vibesuite/intl/skills.ru.ts
new file mode 100644
index 0000000..54ed965
--- /dev/null
+++ b/src/data/vibesuite/intl/skills.ru.ts
@@ -0,0 +1,496 @@
+/** Russian translations for VibeSuite skill & category content, keyed by ID. */
+
+export const categoriesRu: Record<
+ string,
+ { name: string; description: string }
+> = {
+ 'llm-ai': {
+ name: 'LLM и AI-ассистенты',
+ description: 'Подключайте AI-мозги к своим проектам',
+ },
+ 'local-ai': {
+ name: 'Локальные AI-модели',
+ description: 'Запускайте AI на своём компьютере — бесплатно и приватно',
+ },
+ 'image-video': {
+ name: 'Генерация изображений и видео',
+ description: 'Создавайте визуал с AI — от аватаров до видеоклипов',
+ },
+ 'frontend-ui': {
+ name: 'Фронтенд и UI',
+ description: 'Создавайте красивые интерфейсы — сайты, дашборды, приложения',
+ },
+ 'backend-db': {
+ name: 'Бэкенд и базы данных',
+ description: 'Храните данные, пишите серверную логику, создавайте API',
+ },
+ 'auth-security': {
+ name: 'Авторизация и безопасность',
+ description: 'Вход, регистрация и защита данных пользователей',
+ },
+ 'deploy-infra': {
+ name: 'Деплой и инфраструктура',
+ description: 'Публикуйте проекты в интернет и настраивайте инфраструктуру',
+ },
+ payments: {
+ name: 'Платежи и монетизация',
+ description: 'Принимайте деньги — подписки, разовые платежи, крипто',
+ },
+ integrations: {
+ name: 'Интеграции и сервисы',
+ description: 'Подключайте внешние сервисы — боты, email, Google Docs',
+ },
+ 'ai-tools': {
+ name: 'AI-инструменты для вайб-кодинга',
+ description: 'Освойте инструменты, с которыми вы вайб-кодите',
+ },
+};
+
+export const skillsRu: Record<
+ string,
+ {
+ id: string;
+ name: string;
+ projectTitle: string;
+ projectDescription: string;
+ timeEstimate: string;
+ }
+> = {
+ // ─── LLMs & AI Assistants ───
+ 'claude-api-chatbot': {
+ id: 'claude-api-chatbot',
+ name: 'Claude API — чат-бот для сайта',
+ projectTitle: 'Создайте AI-чатбот для своего сайта',
+ projectDescription:
+ 'Создайте виджет чата, который отвечает на вопросы посетителей о вашем продукте. Научитесь отправлять запросы к Claude API, писать системные промпты и обрабатывать ответы в реальном времени.',
+ timeEstimate: '2–3 часа',
+ },
+ 'openai-api-content': {
+ id: 'openai-api-content',
+ name: 'OpenAI API — генератор контента',
+ projectTitle: 'Создайте генератор постов для соцсетей',
+ projectDescription:
+ 'Введите тему — получите готовые посты для Telegram, Twitter и LinkedIn в разных стилях. Научитесь работать с OpenAI API, промпт-инжинирингом и структурированным выводом.',
+ timeEstimate: '2–3 часа',
+ },
+ 'prompt-engineering-advisor': {
+ id: 'prompt-engineering-advisor',
+ name: 'Промпт-инжиниринг — AI-советник',
+ projectTitle:
+ 'Создайте персонального AI-советника по теме, в которой вы разбираетесь',
+ projectDescription:
+ 'Например, советника по питанию, стилиста или гида по покупке техники. Научитесь chain-of-thought промптингу, few-shot примерам и тому, как заставить AI давать экспертные ответы.',
+ timeEstimate: '3–4 часа',
+ },
+ 'streaming-responses': {
+ id: 'streaming-responses',
+ name: 'Стриминг — ответ AI в реальном времени',
+ projectTitle:
+ 'Добавьте стриминг в чатбот — текст появляется посимвольно, как в ChatGPT',
+ projectDescription:
+ 'Вместо ожидания полного ответа текст выводится в реальном времени. Научитесь Server-Sent Events (SSE), стриминговым API и обработке потоковых данных в UI.',
+ timeEstimate: '3–4 часа',
+ },
+ 'claude-in-claude-app': {
+ id: 'claude-in-claude-app',
+ name: 'AI внутри приложения',
+ projectTitle: 'Создайте приложение с AI, работающим внутри',
+ projectDescription:
+ 'Например, текстовый редактор с AI-ассистентом или генератор викторин. Приложение вызывает Claude API изнутри и использует результат для интерактивного UI. Научитесь вложенным API-вызовам и управлению состоянием.',
+ timeEstimate: '1 день',
+ },
+ 'rag-chat-documents': {
+ id: 'rag-chat-documents',
+ name: 'RAG — чат с документами',
+ projectTitle:
+ 'Создайте чатбот, который отвечает на вопросы по загруженным документам',
+ projectDescription:
+ 'Загрузите PDF или текстовый файл — AI прочитает его и ответит на вопросы по содержанию. Научитесь векторным эмбеддингам, чанкингу и поиску по схожести.',
+ timeEstimate: '1 день',
+ },
+ 'ai-function-calling': {
+ id: 'ai-function-calling',
+ name: 'AI Function Calling — вызов функций',
+ projectTitle: 'Создайте AI-ассистента, который выполняет реальные действия',
+ projectDescription:
+ 'Вместо простого чата AI может реально действовать. Определите инструменты (функции), которые AI может вызывать, и он сам решит, когда их использовать. Научитесь function calling, определению инструментов и парсингу структурированного вывода.',
+ timeEstimate: '3–4 часа',
+ },
+ 'multi-model-routing': {
+ id: 'multi-model-routing',
+ name: 'Мульти-модельная маршрутизация',
+ projectTitle:
+ 'Создайте AI-хаб, который выбирает лучшую модель для каждой задачи',
+ projectDescription:
+ 'Простые вопросы идут к дешёвой модели, сложные — к мощной. Научитесь работать с несколькими AI-провайдерами одновременно, маршрутизации запросов и оптимизации затрат.',
+ timeEstimate: '1–2 дня',
+ },
+
+ // ─── Local AI Models ───
+ 'ollama-local': {
+ id: 'ollama-local',
+ name: 'Ollama — локальный ChatGPT',
+ projectTitle: 'Запустите собственный ChatGPT на своём компьютере',
+ projectDescription:
+ 'Установите Ollama, скачайте модель и создайте веб-интерфейс для общения с ней. Работает офлайн и бесплатно. Научитесь запускать LLM локально и делать к ним API-запросы.',
+ timeEstimate: '1–2 часа',
+ },
+ 'local-ai-privacy': {
+ id: 'local-ai-privacy',
+ name: 'Локальный AI для приватности',
+ projectTitle:
+ 'Создайте приложение для обработки конфиденциальных данных с локальным AI',
+ projectDescription:
+ 'Медицинские заметки, юридические документы, личные дневники — некоторые данные не должны покидать ваш компьютер. Запустите локальную модель для резюмирования, классификации или извлечения информации.',
+ timeEstimate: '3–4 часа',
+ },
+ 'local-ai-backend': {
+ id: 'local-ai-backend',
+ name: 'Локальный AI-бэкенд для проектов',
+ projectTitle: 'Подключите проект к локальной модели вместо платного API',
+ projectDescription:
+ 'Замените вызовы Claude/OpenAI API на локальную модель — тот же код, но бесплатно. Научитесь формату API, совместимому с OpenAI, и переключению между локальными и облачными моделями.',
+ timeEstimate: '2–3 часа',
+ },
+
+ // ─── Image & Video Generation ───
+ 'replicate-image-gen': {
+ id: 'replicate-image-gen',
+ name: 'Replicate API — генератор изображений',
+ projectTitle: 'Создайте генератор изображений с веб-интерфейсом',
+ projectDescription:
+ 'Введите текстовое описание — получите изображение. Как Midjourney, но встроенный в ваш сайт. Научитесь Replicate API, моделям Flux/SDXL и обработке асинхронных задач.',
+ timeEstimate: '2–3 часа',
+ },
+ 'voice-speech': {
+ id: 'voice-speech',
+ name: 'Голос — распознавание и синтез речи',
+ projectTitle: 'Добавьте голосовой ввод и вывод в приложение',
+ projectDescription:
+ 'Пользователи говорят вместо набора текста, а приложение отвечает голосом. Научитесь Whisper API, ElevenLabs или Web Speech API и обработке аудиопотоков.',
+ timeEstimate: '2–3 часа',
+ },
+ 'ai-avatars': {
+ id: 'ai-avatars',
+ name: 'AI-аватары',
+ projectTitle: 'Создайте сервис генерации аватаров из фотографий',
+ projectDescription:
+ 'Пользователь загружает фото — получает стилизованный аватар (аниме, пиксель-арт, 3D). Научитесь загрузке изображений, моделям image-to-image и серверной обработке файлов.',
+ timeEstimate: '1 день',
+ },
+ 'video-generation': {
+ id: 'video-generation',
+ name: 'Генерация видео',
+ projectTitle: 'Создайте генератор коротких видео из текста',
+ projectDescription:
+ 'Пользователь описывает сцену — получает 4-секундный видеоклип. Научитесь видеомоделям (Runway, Kling, Minimax), длительным асинхронным задачам и отображению прогресса.',
+ timeEstimate: '1–2 дня',
+ },
+ 'comfyui-pipeline': {
+ id: 'comfyui-pipeline',
+ name: 'ComfyUI Pipeline',
+ projectTitle:
+ 'Настройте собственный локальный пайплайн генерации изображений',
+ projectDescription:
+ 'Создайте визуальный пайплайн: txt2img → upscale → стилизация. Всё локально и бесплатно. Научитесь нодам ComfyUI, LoRA-моделям с CivitAI и автоматизации воркфлоу.',
+ timeEstimate: '1–2 дня',
+ },
+
+ // ─── Frontend & UI ───
+ 'react-nextjs-portfolio': {
+ id: 'react-nextjs-portfolio',
+ name: 'React + Next.js — личный сайт',
+ projectTitle: 'Создайте свой персональный сайт-портфолио',
+ projectDescription:
+ 'Создайте многостраничный сайт: обо мне, проекты, контакты. Научитесь React-компонентам, маршрутизации Next.js, деплою на Vercel — основа для всего остального.',
+ timeEstimate: '3–4 часа',
+ },
+ 'tailwind-styling': {
+ id: 'tailwind-styling',
+ name: 'Tailwind CSS — стилизация',
+ projectTitle: 'Оформите сайт с Tailwind и сделайте его профессиональным',
+ projectDescription:
+ 'Возьмите свой сайт и добавьте профессиональную стилизацию: мобильная адаптивность, тёмная тема, hover-эффекты. Научитесь utility-first подходу к CSS и адаптивному дизайну.',
+ timeEstimate: '2–3 часа',
+ },
+ 'shadcn-ui-dashboard': {
+ id: 'shadcn-ui-dashboard',
+ name: 'shadcn/ui — готовые компоненты',
+ projectTitle: 'Соберите дашборд из готовых компонентов за час',
+ projectDescription:
+ 'Используйте библиотеку красивых компонентов (кнопки, модалки, таблицы, графики) и постройте рабочий дашборд. Научитесь компонентному подходу и кастомизации UI-библиотеки.',
+ timeEstimate: '2–3 часа',
+ },
+ 'v0-dev-ai-ui': {
+ id: 'v0-dev-ai-ui',
+ name: 'v0.dev — AI-генерация UI',
+ projectTitle: 'Сгенерируйте целую страницу, описав её словами',
+ projectDescription:
+ 'Напишите промпт вроде «лендинг для крипто-портфолио трекера» — получите готовый React-код. Научитесь использовать AI для быстрого прототипирования интерфейсов.',
+ timeEstimate: '1 час',
+ },
+ 'framer-motion-animations': {
+ id: 'framer-motion-animations',
+ name: 'Анимации — Framer Motion',
+ projectTitle: 'Добавьте плавные анимации на сайт',
+ projectDescription:
+ 'Эффекты появления элементов, переходы между страницами, параллакс при скролле. Научитесь Framer Motion, spring-анимациям и жестовым взаимодействиям.',
+ timeEstimate: '3–4 часа',
+ },
+ 'interactive-visualizations': {
+ id: 'interactive-visualizations',
+ name: 'Интерактивные визуализации',
+ projectTitle: 'Создайте интерактивную карту или визуализацию данных',
+ projectDescription:
+ 'Например, карту с метками на Mapbox или масштабируемый график на D3. Научитесь canvas/SVG, обработке пользовательских жестов и визуальному отображению данных.',
+ timeEstimate: '1–2 дня',
+ },
+
+ // ─── Backend & Databases ───
+ 'api-routes-first': {
+ id: 'api-routes-first',
+ name: 'API Routes — ваш первый API',
+ projectTitle: 'Создайте свой первый API-эндпойнт',
+ projectDescription:
+ 'Создайте API, который возвращает данные (например, список проектов в JSON). Любой сайт или приложение может его вызывать. Научитесь HTTP-методам (GET, POST), JSON и серверным функциям Next.js.',
+ timeEstimate: '1–2 часа',
+ },
+ 'supabase-crud': {
+ id: 'supabase-crud',
+ name: 'Supabase — база данных',
+ projectTitle: 'Подключите базу данных и создайте CRUD-приложение',
+ projectDescription:
+ 'Создайте приложение для создания, чтения, обновления и удаления записей (например, список задач или заметки). Научитесь SQL, PostgreSQL через Supabase и управлению данными.',
+ timeEstimate: '3–4 часа',
+ },
+ 'file-storage-uploads': {
+ id: 'file-storage-uploads',
+ name: 'Хранилище файлов — загрузка и раздача',
+ projectTitle: 'Добавьте загрузку файлов с облачным хранилищем',
+ projectDescription:
+ 'Пользователи загружают изображения, документы или любые файлы — приложение хранит их в облаке и раздаёт обратно. Научитесь multipart-загрузке, pre-signed URL и облачным хранилищам.',
+ timeEstimate: '2–3 часа',
+ },
+ 'redis-vercel-kv-cache': {
+ id: 'redis-vercel-kv-cache',
+ name: 'Redis / Vercel KV — быстрый кэш',
+ projectTitle: 'Добавьте кэширование и ускорьте сайт в 10 раз',
+ projectDescription:
+ 'Сохраняйте частые запросы в Redis, чтобы не обращаться к базе каждый раз. Научитесь key-value хранилищам, TTL и стратегиям кэширования.',
+ timeEstimate: '2–3 часа',
+ },
+ 'neon-serverless-pg': {
+ id: 'neon-serverless-pg',
+ name: 'Neon — бессерверный PostgreSQL',
+ projectTitle: 'Подключите PostgreSQL, который масштабируется автоматически',
+ projectDescription:
+ 'Альтернатива Supabase для тех, кто хочет больше контроля. Neon включается и выключается автоматически — платите только за использование. Научитесь прямой работе с PostgreSQL и ORM (Prisma/Drizzle).',
+ timeEstimate: '3–4 часа',
+ },
+ 'webhooks-events': {
+ id: 'webhooks-events',
+ name: 'Вебхуки — реакции на события',
+ projectTitle: 'Создайте систему, которая реагирует на внешние события',
+ projectDescription:
+ 'Например: пришла оплата в Stripe → отправить email. Или: обновился документ в Notion → перестроить сайт. Научитесь обработчикам вебхуков, проверке подписей и событийной архитектуре.',
+ timeEstimate: '3–4 часа',
+ },
+ 'cron-scheduled-tasks': {
+ id: 'cron-scheduled-tasks',
+ name: 'Cron Jobs — задачи по расписанию',
+ projectTitle: 'Создайте автоматические фоновые задачи по расписанию',
+ projectDescription:
+ 'Отправляйте еженедельный дайджест, очищайте старые данные каждую ночь или проверяйте API каждый час — без нажатия кнопки. Научитесь Vercel Cron, GitHub Actions по расписанию и написанию надёжных фоновых задач.',
+ timeEstimate: '2–3 часа',
+ },
+
+ // ─── Auth & Security ───
+ 'nextauth-google-login': {
+ id: 'nextauth-google-login',
+ name: 'NextAuth — вход на сайт',
+ projectTitle: 'Добавьте кнопку «Войти через Google» на сайт',
+ projectDescription:
+ 'Пользователи входят через аккаунт Google в один клик. Научитесь NextAuth.js, OAuth-провайдерам, сессиям и защищённым маршрутам.',
+ timeEstimate: '2–3 часа',
+ },
+ 'magic-link-auth': {
+ id: 'magic-link-auth',
+ name: 'Magic Link — вход без пароля',
+ projectTitle:
+ 'Создайте вход без пароля — пользователь получает ссылку на email',
+ projectDescription:
+ 'Как в Notion или Slack: введите email, получите ссылку, нажмите — вы вошли. Без паролей. Научитесь Resend для отправки писем, потоку magic link и токенам.',
+ timeEstimate: '3–4 часа',
+ },
+ 'api-keys-rate-limits': {
+ id: 'api-keys-rate-limits',
+ name: 'API-ключи и лимиты запросов',
+ projectTitle: 'Защитите API: ключи доступа и ограничение запросов',
+ projectDescription:
+ 'Создайте систему API-ключей для проекта и добавьте ограничение частоты запросов (максимум 100 в минуту). Научитесь аутентификации API, middleware и защите от спама.',
+ timeEstimate: '3–4 часа',
+ },
+ 'row-level-security': {
+ id: 'row-level-security',
+ name: 'Row Level Security',
+ projectTitle: 'Убедитесь, что каждый пользователь видит только свои данные',
+ projectDescription:
+ 'Даже если кто-то получит доступ к API — он увидит только свои данные. Научитесь RLS-политикам в PostgreSQL/Supabase и принципу минимальных привилегий.',
+ timeEstimate: '2–3 часа',
+ },
+
+ // ─── Deploy & Infrastructure ───
+ 'vercel-first-deploy': {
+ id: 'vercel-first-deploy',
+ name: 'Vercel — первый деплой',
+ projectTitle: 'Опубликуйте сайт в интернете за 5 минут',
+ projectDescription:
+ 'Подключите GitHub-репозиторий к Vercel и получите рабочий URL. Каждый git push = автоматический деплой. Научитесь CI/CD, переменным окружения и привязке домена.',
+ timeEstimate: '30 мин',
+ },
+ 'netlify-static': {
+ id: 'netlify-static',
+ name: 'Netlify — статические сайты',
+ projectTitle: 'Задеплойте статический сайт (HTML/CSS/JS) на Netlify',
+ projectDescription:
+ 'Для простых проектов без бэкенда. Drag & drop или через Git. Научитесь разнице между статическим и динамическим хостингом, формам и редиректам.',
+ timeEstimate: '30 мин',
+ },
+ 'analytics-know-users': {
+ id: 'analytics-know-users',
+ name: 'Аналитика — знайте своих пользователей',
+ projectTitle:
+ 'Добавьте аналитику, чтобы видеть, кто и как пользуется продуктом',
+ projectDescription:
+ 'Узнайте, сколько у вас посетителей, какие страницы они смотрят и где уходят — без навязчивого трекинга. Научитесь приватной аналитике и принятию решений на основе данных.',
+ timeEstimate: '1 час',
+ },
+ 'github-actions-cicd': {
+ id: 'github-actions-cicd',
+ name: 'GitHub Actions — автоматизация',
+ projectTitle: 'Настройте автоматические тесты и деплой при каждом коммите',
+ projectDescription:
+ 'Напишите воркфлоу: при пуше в main — запустить проверки, если всё ок — задеплоить. Научитесь CI/CD-пайплайнам, YAML-конфигам и автоматизации рутины.',
+ timeEstimate: '2–3 часа',
+ },
+ 'cloudflare-domain-cdn': {
+ id: 'cloudflare-domain-cdn',
+ name: 'Cloudflare — домен и CDN',
+ projectTitle: 'Подключите домен и ускорьте сайт через Cloudflare',
+ projectDescription:
+ 'Купите домен, настройте DNS, включите CDN и SSL. Научитесь работе DNS, что такое CDN и как защитить сайт от DDoS.',
+ timeEstimate: '1 час',
+ },
+
+ // ─── Payments & Monetization ───
+ 'stripe-payments': {
+ id: 'stripe-payments',
+ name: 'Stripe — приём платежей',
+ projectTitle: 'Добавьте кнопку «Купить» на сайт',
+ projectDescription:
+ 'Пользователь нажимает, вводит данные карты, деньги приходят на ваш счёт. Научитесь Stripe Checkout, обработке вебхуков и тестовым платежам.',
+ timeEstimate: '3–4 часа',
+ },
+ 'coinbase-crypto': {
+ id: 'coinbase-crypto',
+ name: 'Coinbase Commerce — крипто-платежи',
+ projectTitle: 'Добавьте оплату криптовалютой на сайт',
+ projectDescription:
+ 'Принимайте Bitcoin, Ethereum и стейблкоины. Научитесь Coinbase Commerce API, генерации платёжных ссылок и верификации транзакций.',
+ timeEstimate: '3–4 часа',
+ },
+ subscriptions: {
+ id: 'subscriptions',
+ name: 'Подписки',
+ projectTitle: 'Создайте модель подписки: Free, Pro, Enterprise',
+ projectDescription:
+ 'Пользователи покупают подписку — получают доступ к премиум-функциям. Научитесь Stripe Subscriptions, управлению тарифами, даунгрейду/апгрейду и отмене.',
+ timeEstimate: '1–2 дня',
+ },
+ 'prepaid-credits': {
+ id: 'prepaid-credits',
+ name: 'Предоплаченные кредиты',
+ projectTitle:
+ 'Создайте систему предоплаченных кредитов (как у ChatGPT API)',
+ projectDescription:
+ 'Пользователь покупает пакет кредитов, каждый запрос стоит кредит. Научитесь логике биллинга, балансам, ценообразованию и пользовательскому дашборду.',
+ timeEstimate: '1–2 дня',
+ },
+
+ // ─── Integrations & Services ───
+ 'telegram-bot': {
+ id: 'telegram-bot',
+ name: 'Telegram-бот',
+ projectTitle: 'Создайте Telegram-бот, который делает что-то полезное',
+ projectDescription:
+ 'Например, бот-напоминалку, бот для заметок или AI-бот. Научитесь Telegram Bot API, обработке сообщений, инлайн-кнопкам и деплою бота на сервер.',
+ timeEstimate: '2–3 часа',
+ },
+ 'email-resend': {
+ id: 'email-resend',
+ name: 'Email — транзакционные письма',
+ projectTitle: 'Отправляйте красивые письма из приложения',
+ projectDescription:
+ 'Welcome-письма, уведомления, сброс пароля — всё автоматически. Научитесь Resend API, React Email для шаблонов и триггерам отправки.',
+ timeEstimate: '1–2 часа',
+ },
+ 'google-sheets-api': {
+ id: 'google-sheets-api',
+ name: 'Google APIs',
+ projectTitle:
+ 'Подключите Google Sheets как базу данных для простого проекта',
+ projectDescription:
+ 'Читайте и записывайте данные прямо из Google Sheets. Отлично для MVP и прототипов. Научитесь Google API, сервисным аккаунтам и авторизации.',
+ timeEstimate: '2–3 часа',
+ },
+ 'notion-api': {
+ id: 'notion-api',
+ name: 'Notion API',
+ projectTitle: 'Создайте сайт, контент которого берётся из Notion',
+ projectDescription:
+ 'Пишите в Notion — сайт обновляется автоматически. Идеально для блогов или документации. Научитесь Notion API, маппингу блоков Notion в HTML и ISR.',
+ timeEstimate: '3–4 часа',
+ },
+
+ // ─── AI Tools for Vibe Coding ───
+ 'claude-code-tool': {
+ id: 'claude-code-tool',
+ name: 'Claude Code',
+ projectTitle: 'Создайте целый проект одним промптом в терминале',
+ projectDescription:
+ 'Введите задачу в CLI — Claude Code создаст файлы, установит зависимости, напишет код. Научитесь агентному кодингу, формулированию задач для AI и терминальному воркфлоу.',
+ timeEstimate: '1 час',
+ },
+ 'cursor-windsurf': {
+ id: 'cursor-windsurf',
+ name: 'Cursor / Windsurf',
+ projectTitle: 'Пишите код с AI-ассистентом прямо в редакторе',
+ projectDescription:
+ 'AI видит весь проект и предлагает код, исправления, рефакторинг в контексте. Научитесь AI-ассистированной разработке, контекстному редактированию и когда доверять AI, а когда нет.',
+ timeEstimate: '1–2 часа',
+ },
+ 'claude-projects': {
+ id: 'claude-projects',
+ name: 'Claude Projects — контекст AI',
+ projectTitle: 'Настройте Claude так, чтобы он идеально знал ваш проект',
+ projectDescription:
+ 'Загрузите документацию, стайл-гайды и примеры в Claude Project — и AI будет отвечать в контексте ВАШЕГО проекта. Научитесь системным промптам, управлению знаниями и оптимизации промптов.',
+ timeEstimate: '1 час',
+ },
+ 'mcp-servers': {
+ id: 'mcp-servers',
+ name: 'MCP-серверы',
+ projectTitle: 'Подключите Claude к вашим данным через MCP',
+ projectDescription:
+ 'Claude может читать ваш Google Drive, Slack, базу данных — и отвечать на основе реальных данных. Научитесь Model Context Protocol, настройке MCP-сервера и интеграции AI с внешними сервисами.',
+ timeEstimate: '2–3 часа',
+ },
+ 'vibe-coding-method': {
+ id: 'vibe-coding-method',
+ name: 'Вайб-кодинг как метод',
+ projectTitle: 'От идеи до задеплоенного продукта за один день',
+ projectDescription:
+ 'Возьмите идею, опишите её AI, сгенерируйте код, отполируйте и задеплойте. Полный цикл. Научитесь комбинировать все инструменты: промпт → Claude Code → Vercel — и выпускать рабочий продукт.',
+ timeEstimate: '1 день',
+ },
+};
diff --git a/src/data/vibesuite/localizeSkills.ts b/src/data/vibesuite/localizeSkills.ts
new file mode 100644
index 0000000..2855bc1
--- /dev/null
+++ b/src/data/vibesuite/localizeSkills.ts
@@ -0,0 +1,21 @@
+import { Skill, SkillCategory } from '@local-types/pageTypes/vibesuite';
+
+import { categoriesRu, skillsRu } from './intl/skills.ru';
+
+export function localizeSkill(skill: Skill, locale: string): Skill {
+ if (locale !== 'ru') return skill;
+ const ru = skillsRu[skill.id];
+ if (!ru) return skill;
+ return { ...skill, ...ru };
+}
+
+export function localizeCategory(
+ cat: SkillCategory,
+ locale: string,
+): SkillCategory {
+ const skills = cat.skills.map(s => localizeSkill(s, locale));
+ if (locale !== 'ru') return { ...cat, skills };
+ const ru = categoriesRu[cat.id];
+ if (!ru) return { ...cat, skills };
+ return { ...cat, ...ru, skills };
+}
diff --git a/src/data/vibesuite/skills.ts b/src/data/vibesuite/skills.ts
new file mode 100644
index 0000000..3e2ec98
--- /dev/null
+++ b/src/data/vibesuite/skills.ts
@@ -0,0 +1,674 @@
+import { Skill, SkillCategory } from '@local-types/pageTypes/vibesuite';
+
+export const categories: SkillCategory[] = [
+ // ─── 1. LLMs & AI Assistants ───────────────────────────────────────
+ {
+ id: 'llm-ai',
+ name: 'LLMs & AI Assistants',
+ icon: '🧠',
+ color: '#8B5CF6',
+ description: 'Connect AI brains to your projects',
+ skills: [
+ {
+ id: 'claude-api-chatbot',
+ name: 'Claude API — Website Chatbot',
+ projectTitle: 'Build an AI chatbot for your website',
+ projectDescription:
+ 'Create a chat widget that answers visitor questions about your product. Learn how to send requests to the Claude API, write system prompts, and handle responses in real time.',
+ difficulty: 'beginner',
+ timeEstimate: '2-3 hours',
+ tools: ['Anthropic API', 'Next.js'],
+ },
+ {
+ id: 'openai-api-content',
+ name: 'OpenAI API — Content Generator',
+ projectTitle: 'Build a social media post generator',
+ projectDescription:
+ 'Enter a topic — get ready-made posts for Telegram, Twitter, and LinkedIn in different styles. Learn how to work with the OpenAI API, prompt engineering, and structured output.',
+ difficulty: 'beginner',
+ timeEstimate: '2-3 hours',
+ tools: ['OpenAI API', 'Next.js'],
+ },
+ {
+ id: 'prompt-engineering-advisor',
+ name: 'Prompt Engineering — AI Advisor',
+ projectTitle: 'Create a personal AI advisor on a topic you know well',
+ projectDescription:
+ 'For example, a nutrition advisor, a style consultant, or a tech-buying guide. Learn chain-of-thought prompting, few-shot examples, and how to make AI give expert-level answers.',
+ difficulty: 'beginner',
+ timeEstimate: '3-4 hours',
+ tools: ['Claude API or OpenAI API'],
+ },
+ {
+ id: 'streaming-responses',
+ name: 'Streaming — Live AI Response',
+ projectTitle: 'Add streaming to your chatbot — text appears letter by letter like ChatGPT',
+ projectDescription:
+ 'Instead of waiting for the full response, text prints in real time. Learn Server-Sent Events (SSE), streaming APIs, and how to handle streamed data in the UI.',
+ difficulty: 'intermediate',
+ timeEstimate: '3-4 hours',
+ tools: ['Claude API', 'SSE', 'React'],
+ dependsOn: ['claude-api-chatbot'],
+ },
+ {
+ id: 'claude-in-claude-app',
+ name: 'Embed AI in Your App',
+ projectTitle: 'Build an app with AI working inside it',
+ projectDescription:
+ 'For example, a text editor with an AI assistant or a quiz generator. The app calls the Claude API internally and uses the result for interactive UI. Learn nested API calls and state management.',
+ difficulty: 'intermediate',
+ timeEstimate: '1 day',
+ tools: ['Anthropic API', 'React'],
+ dependsOn: ['claude-api-chatbot'],
+ },
+ {
+ id: 'rag-chat-documents',
+ name: 'RAG — Chat With Your Documents',
+ projectTitle: 'Build a chatbot that answers questions from your uploaded documents',
+ projectDescription:
+ 'Upload a PDF or text file — the AI reads it and answers questions based on its content. Learn vector embeddings (turning text into numbers AI can search), chunking (splitting documents into pieces), and similarity search.',
+ difficulty: 'intermediate',
+ timeEstimate: '1 day',
+ tools: ['Anthropic API', 'OpenAI Embeddings', 'Pinecone or Supabase pgvector'],
+ dependsOn: ['claude-api-chatbot'],
+ },
+ {
+ id: 'ai-function-calling',
+ name: 'AI Function Calling — Tool Use',
+ projectTitle:
+ 'Build an AI assistant that takes real actions — queries a database, calls APIs, sends emails',
+ projectDescription:
+ 'Instead of just chatting, the AI can actually do things. Define tools (functions) the AI can call, and it decides when to use them. Learn function calling in Claude and OpenAI, tool definitions, and structured output parsing.',
+ difficulty: 'intermediate',
+ timeEstimate: '3-4 hours',
+ tools: ['Anthropic API', 'Next.js'],
+ dependsOn: ['claude-api-chatbot'],
+ },
+ {
+ id: 'multi-model-routing',
+ name: 'Multi-Model Routing',
+ projectTitle: 'Build an AI hub that picks the best model for each task',
+ projectDescription:
+ 'Simple questions go to a cheap model, complex ones go to a powerful one. Learn how to work with multiple AI providers at once, request routing, and cost optimization.',
+ difficulty: 'advanced',
+ timeEstimate: '1-2 days',
+ tools: ['Claude API', 'OpenAI API', 'Next.js'],
+ dependsOn: ['claude-api-chatbot', 'openai-api-content'],
+ },
+ ],
+ },
+
+ // ─── 2. Local AI Models ────────────────────────────────────────────
+ {
+ id: 'local-ai',
+ name: 'Local AI Models',
+ icon: '💻',
+ color: '#10B981',
+ description: 'Run AI on your own computer — free and private',
+ skills: [
+ {
+ id: 'ollama-local',
+ name: 'Ollama — Local ChatGPT',
+ projectTitle: 'Run your own ChatGPT on your computer',
+ projectDescription:
+ 'Install Ollama, download a model, and build a web interface to chat with it. Works offline and for free. Learn how to run LLMs locally and make API requests to them.',
+ difficulty: 'beginner',
+ timeEstimate: '1-2 hours',
+ tools: ['Ollama', 'Next.js'],
+ },
+ {
+ id: 'local-ai-privacy',
+ name: 'Local AI for Privacy',
+ projectTitle: 'Build an app that processes sensitive data with a local AI model',
+ projectDescription:
+ 'Medical notes, legal documents, personal journals — some data should never leave your computer. Run a local model to summarize, classify, or extract info from private files. Learn when to use local vs. cloud AI, data privacy patterns, and offline inference.',
+ difficulty: 'intermediate',
+ timeEstimate: '3-4 hours',
+ tools: ['Ollama', 'Next.js'],
+ dependsOn: ['ollama-local'],
+ },
+ {
+ id: 'local-ai-backend',
+ name: 'Local AI Backend for Projects',
+ projectTitle: 'Connect your project to a local model instead of a paid API',
+ projectDescription:
+ 'Replace Claude/OpenAI API calls with a local model — same code, but free. Learn the OpenAI-compatible API format and how to switch between local and cloud models.',
+ difficulty: 'intermediate',
+ timeEstimate: '2-3 hours',
+ tools: ['Ollama', 'Next.js'],
+ dependsOn: ['ollama-local'],
+ },
+ ],
+ },
+
+ // ─── 3. Image & Video Generation ──────────────────────────────────
+ {
+ id: 'image-video',
+ name: 'Image & Video Generation',
+ icon: '🎨',
+ color: '#F97316',
+ description: 'Generate visuals with AI — from avatars to video clips',
+ skills: [
+ {
+ id: 'replicate-image-gen',
+ name: 'Replicate API — Image Generator',
+ projectTitle: 'Build an image generator with a web interface',
+ projectDescription:
+ 'Enter a text description — get an image. Like Midjourney, but built into your site. Learn Replicate API, Flux/SDXL models, and handling async tasks.',
+ difficulty: 'beginner',
+ timeEstimate: '2-3 hours',
+ tools: ['Replicate API', 'Next.js'],
+ },
+ {
+ id: 'voice-speech',
+ name: 'Voice — Speech to Text & Text to Speech',
+ projectTitle: 'Add voice input and output to your app',
+ projectDescription:
+ 'Users speak instead of typing, and the app talks back. Learn the Whisper API for speech-to-text, ElevenLabs or the browser Web Speech API for text-to-speech, and how to handle audio streams.',
+ difficulty: 'beginner',
+ timeEstimate: '2-3 hours',
+ tools: ['Whisper API', 'ElevenLabs or Web Speech API', 'Next.js'],
+ },
+ {
+ id: 'ai-avatars',
+ name: 'AI Avatars',
+ projectTitle: 'Build an avatar generation service from photos',
+ projectDescription:
+ 'User uploads a photo — gets a stylized avatar (anime, pixel art, 3D). Learn image uploads, image-to-image models, and server-side file handling.',
+ difficulty: 'intermediate',
+ timeEstimate: '1 day',
+ tools: ['Replicate API', 'Next.js'],
+ dependsOn: ['replicate-image-gen'],
+ },
+ {
+ id: 'video-generation',
+ name: 'Video Generation',
+ projectTitle: 'Build a text-to-short-video generator',
+ projectDescription:
+ 'User describes a scene — gets a 4-second video clip. Learn video models (Runway, Kling, Minimax), long async tasks, and progress display.',
+ difficulty: 'advanced',
+ timeEstimate: '1-2 days',
+ tools: ['Runway API / Replicate', 'Next.js'],
+ dependsOn: ['replicate-image-gen'],
+ },
+ {
+ id: 'comfyui-pipeline',
+ name: 'ComfyUI Pipeline',
+ projectTitle: 'Set up your own local image generation pipeline',
+ projectDescription:
+ 'Create a visual pipeline: txt2img → upscale → stylize. All local and free. Learn ComfyUI nodes, LoRA models from CivitAI, and workflow automation.',
+ difficulty: 'advanced',
+ timeEstimate: '1-2 days',
+ tools: ['ComfyUI', 'CivitAI'],
+ },
+ ],
+ },
+
+ // ─── 4. Frontend & UI ─────────────────────────────────────────────
+ {
+ id: 'frontend-ui',
+ name: 'Frontend & UI',
+ icon: '✨',
+ color: '#3B82F6',
+ description: 'Build beautiful interfaces — websites, dashboards, apps',
+ skills: [
+ {
+ id: 'react-nextjs-portfolio',
+ name: 'React + Next.js — Personal Site',
+ projectTitle: 'Build your personal portfolio website',
+ projectDescription:
+ 'Create a multi-page site: about, projects, contacts. Learn React components, Next.js routing, Vercel deploy — the foundation for everything else.',
+ difficulty: 'beginner',
+ timeEstimate: '3-4 hours',
+ tools: ['Next.js', 'Vercel'],
+ },
+ {
+ id: 'tailwind-styling',
+ name: 'Tailwind CSS — Styling',
+ projectTitle: 'Restyle your site with Tailwind and make it look professional',
+ projectDescription:
+ 'Take your site and add professional styling: mobile responsive, dark theme, hover effects. Learn the utility-first CSS approach and responsive design.',
+ difficulty: 'beginner',
+ timeEstimate: '2-3 hours',
+ tools: ['Tailwind CSS'],
+ },
+ {
+ id: 'shadcn-ui-dashboard',
+ name: 'shadcn/ui — Ready Components',
+ projectTitle: 'Assemble a dashboard from ready-made components in an hour',
+ projectDescription:
+ 'Use a library of beautiful components (buttons, modals, tables, charts) and build a working dashboard from them. Learn the component approach and UI library customization.',
+ difficulty: 'beginner',
+ timeEstimate: '2-3 hours',
+ tools: ['shadcn/ui', 'Tailwind CSS'],
+ dependsOn: ['tailwind-styling'],
+ },
+ {
+ id: 'v0-dev-ai-ui',
+ name: 'v0.dev — AI UI Generation',
+ projectTitle: 'Generate an entire page by describing it in words',
+ projectDescription:
+ "Write a prompt like 'landing page for a crypto portfolio tracker' — get ready React code. Learn how to use AI for rapid interface prototyping.",
+ difficulty: 'beginner',
+ timeEstimate: '1 hour',
+ tools: ['v0.dev', 'React'],
+ },
+ {
+ id: 'framer-motion-animations',
+ name: 'Animations — Framer Motion',
+ projectTitle: 'Add smooth animations to your website',
+ projectDescription:
+ 'Element appear effects, page transitions, parallax on scroll. Learn Framer Motion, spring animations, and gesture interactions.',
+ difficulty: 'intermediate',
+ timeEstimate: '3-4 hours',
+ tools: ['Framer Motion', 'React'],
+ dependsOn: ['react-nextjs-portfolio'],
+ },
+ {
+ id: 'interactive-visualizations',
+ name: 'Interactive Visualizations',
+ projectTitle: 'Build an interactive map or data visualization',
+ projectDescription:
+ 'For example, a map with pins on Mapbox or a zoomable chart on D3. Learn canvas/SVG, user gesture handling, and visual data display.',
+ difficulty: 'advanced',
+ timeEstimate: '1-2 days',
+ tools: ['D3.js', 'Mapbox / Leaflet', 'React'],
+ dependsOn: ['react-nextjs-portfolio'],
+ },
+ ],
+ },
+
+ // ─── 5. Backend & Databases ────────────────────────────────────────
+ {
+ id: 'backend-db',
+ name: 'Backend & Databases',
+ icon: '🗄️',
+ color: '#EF4444',
+ description: 'Store data, write server logic, build APIs',
+ skills: [
+ {
+ id: 'api-routes-first',
+ name: 'API Routes — Your First API',
+ projectTitle: 'Build your first API endpoint',
+ projectDescription:
+ 'Create an API that returns data (e.g., a project list in JSON). Any website or app can call it. Learn HTTP methods (GET, POST), JSON, and Next.js server functions.',
+ difficulty: 'beginner',
+ timeEstimate: '1-2 hours',
+ tools: ['Next.js API Routes'],
+ },
+ {
+ id: 'supabase-crud',
+ name: 'Supabase — Database',
+ projectTitle: 'Connect a database and build a CRUD app',
+ projectDescription:
+ 'Build an app where you can create, read, update, and delete records (e.g., a task list or notes). Learn SQL, PostgreSQL via Supabase, and data management.',
+ difficulty: 'beginner',
+ timeEstimate: '3-4 hours',
+ tools: ['Supabase', 'Next.js'],
+ },
+ {
+ id: 'file-storage-uploads',
+ name: 'File Storage — Uploads & Serving',
+ projectTitle: 'Build file upload with cloud storage for your app',
+ projectDescription:
+ 'Users upload images, documents, or any file — your app stores them in the cloud and serves them back. Learn multipart uploads, pre-signed URLs, and cloud storage services like Vercel Blob, Cloudflare R2, or S3.',
+ difficulty: 'beginner',
+ timeEstimate: '2-3 hours',
+ tools: ['Vercel Blob or Cloudflare R2', 'Next.js'],
+ dependsOn: ['api-routes-first'],
+ },
+ {
+ id: 'redis-vercel-kv-cache',
+ name: 'Redis / Vercel KV — Fast Cache',
+ projectTitle: 'Add caching and speed up your site 10x',
+ projectDescription:
+ "Save frequent requests in Redis so you don't hit the database every time. Learn key-value stores, TTL (data expiration), and caching strategies.",
+ difficulty: 'intermediate',
+ timeEstimate: '2-3 hours',
+ tools: ['Vercel KV', 'Redis'],
+ dependsOn: ['api-routes-first'],
+ },
+ {
+ id: 'neon-serverless-pg',
+ name: 'Neon — Serverless PostgreSQL',
+ projectTitle: 'Connect a PostgreSQL that scales automatically',
+ projectDescription:
+ 'An alternative to Supabase for those who want more control. Neon turns on and off automatically — you only pay for usage. Learn direct PostgreSQL work and ORM (Prisma/Drizzle).',
+ difficulty: 'intermediate',
+ timeEstimate: '3-4 hours',
+ tools: ['Neon', 'Prisma', 'Next.js'],
+ dependsOn: ['api-routes-first'],
+ },
+ {
+ id: 'webhooks-events',
+ name: 'Webhooks — Event Reactions',
+ projectTitle: 'Build a system that reacts to external events',
+ projectDescription:
+ 'For example: payment received in Stripe → send an email. Or: Notion document updated → rebuild the site. Learn webhook handlers, signature verification, and event-driven architecture.',
+ difficulty: 'intermediate',
+ timeEstimate: '3-4 hours',
+ tools: ['Next.js', 'Stripe / Notion'],
+ dependsOn: ['api-routes-first'],
+ },
+ {
+ id: 'cron-scheduled-tasks',
+ name: 'Cron Jobs — Scheduled Tasks',
+ projectTitle: 'Build automated background tasks that run on a schedule',
+ projectDescription:
+ 'Send a weekly email digest, clean up old data every night, or check an API every hour — without anyone clicking a button. Learn Vercel Cron, GitHub Actions scheduled workflows, and how to write reliable background jobs.',
+ difficulty: 'intermediate',
+ timeEstimate: '2-3 hours',
+ tools: ['Vercel Cron', 'GitHub Actions', 'Next.js'],
+ dependsOn: ['api-routes-first'],
+ },
+ ],
+ },
+
+ // ─── 6. Auth & Security ────────────────────────────────────────────
+ {
+ id: 'auth-security',
+ name: 'Auth & Security',
+ icon: '🔐',
+ color: '#EAB308',
+ description: 'Login, registration, and user data protection',
+ skills: [
+ {
+ id: 'nextauth-google-login',
+ name: 'NextAuth — Website Login',
+ projectTitle: "Add a 'Sign in with Google' button to your site",
+ projectDescription:
+ 'Users can log in with their Google account in one click. Learn NextAuth.js, OAuth providers, sessions, and protected routes.',
+ difficulty: 'beginner',
+ timeEstimate: '2-3 hours',
+ tools: ['NextAuth.js', 'Google OAuth', 'Next.js'],
+ },
+ {
+ id: 'magic-link-auth',
+ name: 'Magic Link — Passwordless Login',
+ projectTitle: 'Build passwordless login — user gets a link via email',
+ projectDescription:
+ "Like Notion or Slack: enter email, get a link, click — you're logged in. No passwords. Learn Resend for sending emails, magic link flow, and tokens.",
+ difficulty: 'intermediate',
+ timeEstimate: '3-4 hours',
+ tools: ['NextAuth.js', 'Resend'],
+ dependsOn: ['nextauth-google-login'],
+ },
+ {
+ id: 'api-keys-rate-limits',
+ name: 'API Keys & Rate Limits',
+ projectTitle: 'Protect your API: access keys and request throttling',
+ projectDescription:
+ 'Build an API key system for your project and add rate limiting (max 100 requests per minute). Learn API authentication, middleware, and spam protection.',
+ difficulty: 'intermediate',
+ timeEstimate: '3-4 hours',
+ tools: ['Next.js Middleware', 'Vercel KV'],
+ dependsOn: ['api-routes-first'],
+ },
+ {
+ id: 'row-level-security',
+ name: 'Row Level Security',
+ projectTitle: 'Make sure each user can only see their own data',
+ projectDescription:
+ "Even if someone gets access to the API — they'll only see their own data. Learn RLS policies in PostgreSQL/Supabase and the principle of least privilege.",
+ difficulty: 'advanced',
+ timeEstimate: '2-3 hours',
+ tools: ['Supabase', 'PostgreSQL'],
+ dependsOn: ['supabase-crud', 'nextauth-google-login'],
+ },
+ ],
+ },
+
+ // ─── 7. Deploy & Infrastructure ────────────────────────────────────
+ {
+ id: 'deploy-infra',
+ name: 'Deploy & Infrastructure',
+ icon: '🚀',
+ color: '#6B7280',
+ description: 'Publish projects to the internet and set up infrastructure',
+ skills: [
+ {
+ id: 'vercel-first-deploy',
+ name: 'Vercel — First Deploy',
+ projectTitle: 'Publish your website to the internet in 5 minutes',
+ projectDescription:
+ 'Connect a GitHub repo to Vercel and get a working URL. Every git push = automatic deploy. Learn CI/CD, env variables, and domain binding.',
+ difficulty: 'beginner',
+ timeEstimate: '30 min',
+ tools: ['Vercel', 'GitHub'],
+ },
+ {
+ id: 'netlify-static',
+ name: 'Netlify — Static Sites',
+ projectTitle: 'Deploy a static site (HTML/CSS/JS) on Netlify',
+ projectDescription:
+ 'For simple projects without a backend. Drag & drop or via Git. Learn the difference between static and dynamic hosting, forms, and redirects.',
+ difficulty: 'beginner',
+ timeEstimate: '30 min',
+ tools: ['Netlify', 'GitHub'],
+ },
+ {
+ id: 'analytics-know-users',
+ name: 'Analytics — Know Your Users',
+ projectTitle: 'Add analytics to see who uses your product and how',
+ projectDescription:
+ 'See how many visitors you get, which pages they visit, and where they drop off — without creepy tracking. Learn privacy-friendly analytics with Vercel Analytics, Plausible, or PostHog, and how to make data-driven decisions.',
+ difficulty: 'beginner',
+ timeEstimate: '1 hour',
+ tools: ['Vercel Analytics or Plausible or PostHog'],
+ dependsOn: ['vercel-first-deploy'],
+ },
+ {
+ id: 'github-actions-cicd',
+ name: 'GitHub Actions — Automation',
+ projectTitle: 'Set up automatic tests and deploy on every commit',
+ projectDescription:
+ 'Write a workflow: on push to main — run checks, if all good — deploy. Learn CI/CD pipelines, YAML configs, and routine automation.',
+ difficulty: 'intermediate',
+ timeEstimate: '2-3 hours',
+ tools: ['GitHub Actions'],
+ dependsOn: ['vercel-first-deploy'],
+ },
+ {
+ id: 'cloudflare-domain-cdn',
+ name: 'Cloudflare — Domain & CDN',
+ projectTitle: 'Connect your domain and speed up your site via Cloudflare',
+ projectDescription:
+ 'Buy a domain, set up DNS, enable CDN and SSL. Learn how DNS works, what CDN is, and how to protect your site from DDoS.',
+ difficulty: 'beginner',
+ timeEstimate: '1 hour',
+ tools: ['Cloudflare'],
+ },
+ ],
+ },
+
+ // ─── 8. Payments & Monetization ────────────────────────────────────
+ {
+ id: 'payments',
+ name: 'Payments & Monetization',
+ icon: '💰',
+ color: '#D97706',
+ description: 'Accept money — subscriptions, one-time payments, crypto',
+ skills: [
+ {
+ id: 'stripe-payments',
+ name: 'Stripe — Accept Payments',
+ projectTitle: "Add a 'Buy' button to your site",
+ projectDescription:
+ 'User clicks, enters card info, money goes to your account. Learn Stripe Checkout, webhook handling, and test mode payments.',
+ difficulty: 'intermediate',
+ timeEstimate: '3-4 hours',
+ tools: ['Stripe', 'Next.js'],
+ dependsOn: ['api-routes-first'],
+ },
+ {
+ id: 'coinbase-crypto',
+ name: 'Coinbase Commerce — Crypto Payments',
+ projectTitle: 'Add cryptocurrency payments to your site',
+ projectDescription:
+ 'Accept Bitcoin, Ethereum, and stablecoins. Learn Coinbase Commerce API, payment link generation, and transaction verification.',
+ difficulty: 'intermediate',
+ timeEstimate: '3-4 hours',
+ tools: ['Coinbase Commerce', 'Next.js'],
+ dependsOn: ['api-routes-first'],
+ },
+ {
+ id: 'subscriptions',
+ name: 'Subscriptions',
+ projectTitle: 'Build a subscription model: Free, Pro, Enterprise',
+ projectDescription:
+ 'Users buy a subscription — get access to premium features. Learn Stripe Subscriptions, plan management, downgrade/upgrade, and cancellation.',
+ difficulty: 'advanced',
+ timeEstimate: '1-2 days',
+ tools: ['Stripe', 'Next.js', 'Supabase'],
+ dependsOn: ['stripe-payments'],
+ },
+ {
+ id: 'prepaid-credits',
+ name: 'Prepaid Credits',
+ projectTitle: 'Build a prepaid credit system (like ChatGPT API)',
+ projectDescription:
+ 'User buys a pack of credits, each request costs a credit. Learn billing logic, balances, pricing, and a user dashboard.',
+ difficulty: 'advanced',
+ timeEstimate: '1-2 days',
+ tools: ['Stripe / Coinbase', 'Vercel KV'],
+ dependsOn: ['stripe-payments'],
+ },
+ ],
+ },
+
+ // ─── 9. Integrations & Services ────────────────────────────────────
+ {
+ id: 'integrations',
+ name: 'Integrations & Services',
+ icon: '🔗',
+ color: '#14B8A6',
+ description: 'Connect external services — bots, email, Google Docs',
+ skills: [
+ {
+ id: 'telegram-bot',
+ name: 'Telegram Bot',
+ projectTitle: 'Build a Telegram bot that does something useful',
+ projectDescription:
+ 'For example, a reminder bot, a notes bot, or an AI bot. Learn Telegram Bot API, message handling, inline buttons, and deploying a bot to a server.',
+ difficulty: 'beginner',
+ timeEstimate: '2-3 hours',
+ tools: ['Telegram Bot API', 'Next.js'],
+ },
+ {
+ id: 'email-resend',
+ name: 'Email — Transactional Emails',
+ projectTitle: 'Send beautiful emails from your app',
+ projectDescription:
+ 'Welcome emails, notifications, password reset — all automatic. Learn Resend API, React Email for templates, and send triggers.',
+ difficulty: 'beginner',
+ timeEstimate: '1-2 hours',
+ tools: ['Resend', 'React Email'],
+ },
+ {
+ id: 'google-sheets-api',
+ name: 'Google APIs',
+ projectTitle: 'Connect Google Sheets as a database for a simple project',
+ projectDescription:
+ 'Read and write data directly from Google Sheets. Great for MVPs and prototypes. Learn Google API, service accounts, and authorization.',
+ difficulty: 'intermediate',
+ timeEstimate: '2-3 hours',
+ tools: ['Google Sheets API', 'Next.js'],
+ },
+ {
+ id: 'notion-api',
+ name: 'Notion API',
+ projectTitle: 'Build a website whose content comes from Notion',
+ projectDescription:
+ 'Write in Notion — your site updates automatically. Perfect for blogs or docs. Learn Notion API, mapping Notion blocks to HTML, and ISR (Incremental Static Regeneration).',
+ difficulty: 'intermediate',
+ timeEstimate: '3-4 hours',
+ tools: ['Notion API', 'Next.js'],
+ dependsOn: ['react-nextjs-portfolio'],
+ },
+ ],
+ },
+
+ // ─── 10. AI Tools for Vibe Coding ─────────────────────────────────
+ {
+ id: 'ai-tools',
+ name: 'AI Tools for Vibe Coding',
+ icon: '⚡',
+ color: '#EC4899',
+ description: 'Master the tools you vibe-code with',
+ skills: [
+ {
+ id: 'claude-code-tool',
+ name: 'Claude Code',
+ projectTitle: 'Create an entire project with a single prompt in the terminal',
+ projectDescription:
+ 'Type a task in the CLI — Claude Code creates files, installs dependencies, writes code. Learn agentic coding, how to formulate tasks for AI, and terminal workflow.',
+ difficulty: 'beginner',
+ timeEstimate: '1 hour',
+ tools: ['Claude Code', 'Terminal'],
+ },
+ {
+ id: 'cursor-windsurf',
+ name: 'Cursor / Windsurf',
+ projectTitle: 'Write code with an AI assistant right in your editor',
+ projectDescription:
+ 'AI sees your entire project and suggests code, fixes, refactoring in context. Learn AI-assisted development, contextual editing, and when to trust AI vs. not.',
+ difficulty: 'beginner',
+ timeEstimate: '1-2 hours',
+ tools: ['Cursor or Windsurf'],
+ },
+ {
+ id: 'claude-projects',
+ name: 'Claude Projects — AI Context',
+ projectTitle: 'Set up Claude to know your project perfectly',
+ projectDescription:
+ "Upload docs, style guides, and examples to a Claude Project — and AI will answer in YOUR project's context. Learn system prompts, knowledge management, and prompt optimization.",
+ difficulty: 'beginner',
+ timeEstimate: '1 hour',
+ tools: ['Claude.ai Projects'],
+ },
+ {
+ id: 'mcp-servers',
+ name: 'MCP Servers',
+ projectTitle: 'Connect Claude to your data via MCP',
+ projectDescription:
+ 'Claude can read your Google Drive, Slack, database — and answer based on real data. Learn Model Context Protocol, MCP server setup, and AI integration with external services.',
+ difficulty: 'intermediate',
+ timeEstimate: '2-3 hours',
+ tools: ['MCP SDK', 'Claude'],
+ dependsOn: ['claude-projects'],
+ },
+ {
+ id: 'vibe-coding-method',
+ name: 'Vibe Coding as a Method',
+ projectTitle: 'Go from idea to deployed product in one day',
+ projectDescription:
+ 'Take an idea, describe it to AI, generate code, polish, and deploy. Full cycle. Learn how to combine all the tools: prompt → Claude Code → Vercel — and ship a working product.',
+ difficulty: 'intermediate',
+ timeEstimate: '1 day',
+ tools: ['Claude Code', 'Vercel', 'Next.js'],
+ },
+ ],
+ },
+];
+
+// ─── Helpers ─────────────────────────────────────────────────────────────────
+
+export const allSkills: Skill[] = categories.flatMap((c) => c.skills);
+
+export function getSkillById(id: string): Skill | undefined {
+ return allSkills.find((s) => s.id === id);
+}
+
+export function getCategoryBySkillId(skillId: string): SkillCategory | undefined {
+ return categories.find((c) => c.skills.some((s) => s.id === skillId));
+}
+
+export function getDependencies(skillId: string): Skill[] {
+ const skill = getSkillById(skillId);
+ if (!skill?.dependsOn) return [];
+ return skill.dependsOn.map((id) => getSkillById(id)).filter(Boolean) as Skill[];
+}
+
+export function getTotalSkillCount(): number {
+ return allSkills.length;
+}
diff --git a/src/lib/settings-helpers.ts b/src/lib/settings-helpers.ts
new file mode 100644
index 0000000..b6c7ea0
--- /dev/null
+++ b/src/lib/settings-helpers.ts
@@ -0,0 +1,9 @@
+export const isValidEmail = email => {
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
+ return emailRegex.test(email);
+};
+
+export const linkedInRegex =
+ /^(https?:\/\/)?(www\.)?(linkedin\.com\/in\/|lnkd\.in\/)[a-zA-Z0-9-]{3,30}\/?$/;
+
+export const usernameRegex = /^(?!.*[&%:;*|>\\#?"=])[^\s]{6,30}$/;
diff --git a/src/lib/vibesuite/recommendations.ts b/src/lib/vibesuite/recommendations.ts
new file mode 100644
index 0000000..0bc865e
--- /dev/null
+++ b/src/lib/vibesuite/recommendations.ts
@@ -0,0 +1,169 @@
+import type { TLocales } from '@local-types/global';
+import {
+ Recommendation,
+ RecommendationReason,
+ UserProgress,
+} from '@local-types/pageTypes/vibesuite';
+
+import vibesuiteIntl from '@data/vibesuite/intl';
+import { allSkills, getCategoryBySkillId } from '@data/vibesuite/skills';
+
+function parseTimeEstimateHours(estimate: string): number {
+ const lower = estimate.toLowerCase();
+ if (lower.includes('min')) return 0.5;
+ if (lower.includes('day')) {
+ const match = lower.match(/(\d+)/);
+ return (match ? parseInt(match[1]) : 1) * 8;
+ }
+ const match = lower.match(/(\d+)/);
+ return match ? parseInt(match[1]) : 4;
+}
+
+// Build reverse dependency map: skillId → number of skills it unlocks
+function buildUnlockCounts(): Record {
+ const counts: Record = {};
+ for (const skill of allSkills) {
+ if (skill.dependsOn) {
+ for (const depId of skill.dependsOn) {
+ counts[depId] = (counts[depId] || 0) + 1;
+ }
+ }
+ }
+ return counts;
+}
+
+export function getRecommendations(
+ progress: UserProgress,
+ count = 3,
+ locale: TLocales = 'en',
+): Recommendation[] {
+ const completedCount = Object.values(progress).filter(
+ p => p.completed,
+ ).length;
+ const progressPct = (completedCount / allSkills.length) * 100;
+
+ // All done — nothing to recommend
+ if (completedCount >= allSkills.length) return [];
+
+ const unlockCounts = buildUnlockCounts();
+
+ // Determine expected difficulty bracket
+ const expectedDifficulty =
+ progressPct < 30
+ ? 'beginner'
+ : progressPct < 70
+ ? 'intermediate'
+ : 'advanced';
+
+ // Score every unlearned skill
+ const scored: Recommendation[] = [];
+
+ for (const skill of allSkills) {
+ if (progress[skill.id]?.completed) continue;
+
+ let score = 0;
+ const reasons: RecommendationReason[] = [];
+
+ // Check prerequisites
+ const deps = skill.dependsOn || [];
+ const allDepsCompleted = deps.every(d => progress[d]?.completed);
+
+ if (allDepsCompleted) {
+ score += 30;
+ reasons.push('unlocked');
+ } else {
+ score -= 50;
+ }
+
+ // Hub bonus
+ const unlocks = unlockCounts[skill.id] || 0;
+ if (unlocks >= 2) {
+ score += 20;
+ reasons.push('hub');
+ }
+
+ // Difficulty match
+ if (skill.difficulty === expectedDifficulty) {
+ score += 10;
+ reasons.push('difficulty_match');
+ }
+
+ // Quick win
+ if (parseTimeEstimateHours(skill.timeEstimate) <= 2) {
+ score += 5;
+ reasons.push('quick_win');
+ }
+
+ scored.push({ skill, score, reasons, reasonText: '' });
+ }
+
+ // Sort by score descending
+ scored.sort((a, b) => b.score - a.score);
+
+ // Greedy selection with category diversity penalty
+ const selected: Recommendation[] = [];
+ const usedCategories = new Set();
+
+ for (const rec of scored) {
+ if (selected.length >= count) break;
+
+ const cat = getCategoryBySkillId(rec.skill.id);
+ const catId = cat?.id || '';
+
+ if (usedCategories.has(catId)) {
+ rec.score -= 15;
+ }
+
+ if (usedCategories.has(catId) && selected.length > 0) {
+ const betterAlt = scored.find(
+ s =>
+ !selected.includes(s) &&
+ s !== rec &&
+ !usedCategories.has(getCategoryBySkillId(s.skill.id)?.id || '') &&
+ s.score >= rec.score - 15,
+ );
+ if (betterAlt) {
+ const altCat = getCategoryBySkillId(betterAlt.skill.id)?.id || '';
+ usedCategories.add(altCat);
+ betterAlt.reasons.push('diversity');
+ betterAlt.reasonText = generateReasonText(
+ betterAlt,
+ unlockCounts,
+ locale,
+ );
+ selected.push(betterAlt);
+ continue;
+ }
+ }
+
+ usedCategories.add(catId);
+ rec.reasonText = generateReasonText(rec, unlockCounts, locale);
+ selected.push(rec);
+ }
+
+ return selected;
+}
+
+function generateReasonText(
+ rec: Recommendation,
+ unlockCounts: Record,
+ locale: TLocales = 'en',
+): string {
+ const t = vibesuiteIntl[locale];
+ const { reasons, skill } = rec;
+ const unlocks = unlockCounts[skill.id] || 0;
+
+ if (reasons.includes('hub') && reasons.includes('unlocked')) {
+ return `${t.reasonUnlocks} ${unlocks} ${unlocks === 1 ? t.reasonNewSkill : t.reasonNewSkills}`;
+ }
+ if (reasons.includes('quick_win') && reasons.includes('unlocked')) {
+ return `${t.reasonQuickWin} \u2014 ${skill.timeEstimate}`;
+ }
+ if (reasons.includes('difficulty_match') && reasons.includes('unlocked')) {
+ return t.reasonMatchesLevel;
+ }
+ if (reasons.includes('unlocked')) {
+ return t.reasonAllPrereqsDone;
+ }
+ return t.reasonGoodNextStep;
+}
diff --git a/src/local-types/pageTypes/vibesuite.ts b/src/local-types/pageTypes/vibesuite.ts
new file mode 100644
index 0000000..740b704
--- /dev/null
+++ b/src/local-types/pageTypes/vibesuite.ts
@@ -0,0 +1,53 @@
+export type Difficulty = 'beginner' | 'intermediate' | 'advanced';
+
+export interface Skill {
+ id: string;
+ name: string;
+ projectTitle: string;
+ projectDescription: string;
+ difficulty: Difficulty;
+ timeEstimate: string;
+ tools: string[];
+ dependsOn?: string[];
+}
+
+export interface SkillCategory {
+ id: string;
+ name: string;
+ icon: string;
+ color: string;
+ description: string;
+ skills: Skill[];
+}
+
+export interface UserProgress {
+ [skillId: string]: {
+ completed: boolean;
+ completedAt: string;
+ };
+}
+
+export interface UserProfile {
+ name: string;
+ joinedAt: string;
+}
+
+export interface NodePosition {
+ x: number;
+ y: number;
+ z: number;
+}
+
+export type RecommendationReason =
+ | 'unlocked'
+ | 'hub'
+ | 'difficulty_match'
+ | 'quick_win'
+ | 'diversity';
+
+export interface Recommendation {
+ skill: Skill;
+ score: number;
+ reasons: RecommendationReason[];
+ reasonText: string;
+}
diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx
index 4d43360..d0408e6 100644
--- a/src/pages/_app.tsx
+++ b/src/pages/_app.tsx
@@ -17,6 +17,8 @@ import Layout from '@layouts/Layout';
import { LongevityProvider, useLongevity } from '../context/LongevityContext';
import '../styles/globals.scss';
+import '../styles/vibesuite.scss';
+// import '../styles/tom.scss';
type TApp = {
Component: any;
@@ -68,7 +70,8 @@ function AppContent({ Component, pageProps: { session, ...pageProps } }: TApp) {
useEffect(() => {
const getData = async () => {
- if (!session?.user) return;
+ const hasAccessToken = !!localStorage.getItem('accessToken');
+ if (!session?.user && !hasAccessToken) return;
try {
const data = await getMyInfo();
if (data) {
diff --git a/src/pages/api/vibesuite/progress.ts b/src/pages/api/vibesuite/progress.ts
new file mode 100644
index 0000000..7035858
--- /dev/null
+++ b/src/pages/api/vibesuite/progress.ts
@@ -0,0 +1,30 @@
+import type { NextApiRequest, NextApiResponse } from 'next';
+import { getSkillById } from '@data/vibesuite/skills';
+import { UserProgress } from '@local-types/pageTypes/vibesuite';
+
+// In-memory progress storage (resets on server restart)
+let progress: UserProgress = {};
+
+export default async function handler(req: NextApiRequest, res: NextApiResponse) {
+ if (req.method === 'GET') {
+ return res.status(200).json({ progress });
+ }
+
+ if (req.method === 'POST') {
+ const { skillId, completed } = req.body as { skillId: string; completed: boolean };
+
+ if (!getSkillById(skillId)) {
+ return res.status(400).json({ error: 'Invalid skill ID' });
+ }
+
+ if (completed) {
+ progress[skillId] = { completed: true, completedAt: new Date().toISOString() };
+ } else {
+ delete progress[skillId];
+ }
+
+ return res.status(200).json({ progress });
+ }
+
+ return res.status(405).json({ error: 'Method not allowed' });
+}
diff --git a/src/pages/tools/vibesuite/index.tsx b/src/pages/tools/vibesuite/index.tsx
new file mode 100644
index 0000000..69190f1
--- /dev/null
+++ b/src/pages/tools/vibesuite/index.tsx
@@ -0,0 +1,62 @@
+import { GetStaticProps } from 'next';
+import { FC, useEffect } from 'react';
+
+import { TStaticProps } from '@local-types/data';
+
+import useGlobals from '@hooks/useGlobals';
+
+import { getVibesuite } from '@api/vibesuite';
+
+import SeoGenerator from '@components/SeoGenerator';
+import MapClient from '@components/vibesuite/MapClient';
+
+export type VibeSuitePageProps = {
+ vibesuite?: any | null;
+};
+
+const VibeSuitePage: FC = ({ vibesuite }) => {
+ const [{ initUseGlobals, unmountUseGlobals }, { isDarkTheme }] = useGlobals();
+
+ useEffect(() => {
+ initUseGlobals(null);
+
+ return () => {
+ unmountUseGlobals();
+ };
+ }, []);
+
+ const seoContent = vibesuite?.pageSeo;
+
+ return (
+ <>
+
+
+ >
+ );
+};
+
+export default VibeSuitePage;
+
+export const getStaticProps: GetStaticProps = async ({
+ locale,
+}: TStaticProps) => {
+ const vibesuite = await getVibesuite(locale);
+ return {
+ props: {
+ locale,
+ vibesuite,
+ },
+ revalidate: 10,
+ };
+};
diff --git a/src/styles/vibesuite.scss b/src/styles/vibesuite.scss
new file mode 100644
index 0000000..cc7fa5d
--- /dev/null
+++ b/src/styles/vibesuite.scss
@@ -0,0 +1,208 @@
+// Vibesuite — global styles, animations, and keyframes
+// This file is imported in _app.tsx. It is NOT a CSS module.
+// All animation class names used as plain strings stay as plain selectors here.
+
+@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;700&family=EB+Garamond:ital,wght@0,400;0,500;1,400&family=Jost:wght@300;400;500;600&family=Noto+Serif+JP:wght@400&display=swap');
+
+// ── CSS variable overrides scoped to vibesuite pages ─────────────────────────
+// These do NOT override keepsimple global variables; they are only applied
+// when the .vibesuite-root class is present (added by VibesuiteLayout).
+.vibesuite-root {
+ --bg-base: #f4efe6;
+ --bg-card: #f7f2ea;
+ --bg-card-active: #fdf5e8;
+ --bg-hero: #ede7da;
+
+ --text-primary: #1c1c1a;
+ --text-secondary: #756f69;
+ --text-tertiary: #968f87;
+
+ --accent: #b83232;
+ --accent-light: #d4504a;
+ --accent-kanji: rgba(184, 50, 50, 0.3);
+ --accent-kanji-active: rgba(184, 50, 50, 0.6);
+
+ --border: #ddd7ce;
+ --border-strong: #c8c0b5;
+ --bg-dim: rgba(244, 239, 230, 0.75);
+
+ --font-display: 'Playfair Display', Georgia, serif;
+ --font-body: 'EB Garamond', Georgia, serif;
+ --font-ui: 'Jost', system-ui, sans-serif;
+ --font-japanese: 'Noto Serif JP', serif;
+
+ *,
+ *::before,
+ *::after {
+ box-sizing: border-box;
+ }
+
+ // Global smooth interactions within vibesuite
+ a,
+ button,
+ [role='button'] {
+ transition:
+ color 0.15s ease,
+ background 0.15s ease,
+ border-color 0.15s ease,
+ opacity 0.15s ease,
+ transform 0.15s ease;
+ }
+
+ background-color: var(--bg-base);
+ font-family: var(--font-body);
+ color: var(--text-primary);
+ min-height: 100vh;
+
+ // Paper grain texture
+ &::after {
+ content: '';
+ position: fixed;
+ inset: 0;
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
+ pointer-events: none;
+ z-index: 9999;
+ }
+
+ // Custom scrollbar
+ ::-webkit-scrollbar {
+ width: 5px;
+ }
+
+ ::-webkit-scrollbar-track {
+ background: transparent;
+ }
+
+ ::-webkit-scrollbar-thumb {
+ background: var(--border-strong);
+ border-radius: 3px;
+ }
+
+ ::-webkit-scrollbar-thumb:hover {
+ background: var(--text-tertiary);
+ }
+}
+
+// ── Dark mode overrides ─────────────────────────────────────────────────────
+body.darkTheme .vibesuite-root {
+ --bg-base: #1b1e26;
+ --bg-card: #222730;
+ --bg-card-active: #2a2f3a;
+ --bg-hero: #1e2330;
+ --bg-dim: rgba(27, 30, 38, 0.8);
+
+ --text-primary: #dadada;
+ --text-secondary: #a0a0a0;
+ --text-tertiary: #707070;
+
+ --accent: #d4504a;
+ --accent-light: #e06060;
+ --accent-kanji: rgba(212, 80, 74, 0.3);
+ --accent-kanji-active: rgba(212, 80, 74, 0.6);
+
+ --border: #2e3340;
+ --border-strong: #3a4050;
+
+ // Paper grain — reduce & invert for dark backgrounds
+ &::after {
+ opacity: 0.02;
+ filter: invert(1);
+ }
+}
+
+// ── Animations — plain classes (not module) ──────────────────────────────────
+
+// Right detail panel slide in/out
+@keyframes vibesuite-slide-in {
+ from {
+ transform: translateX(100%);
+ }
+ to {
+ transform: translateX(0);
+ }
+}
+
+@keyframes vibesuite-slide-out {
+ from {
+ transform: translateX(0);
+ }
+ to {
+ transform: translateX(100%);
+ }
+}
+
+.animate-slide-in {
+ animation: vibesuite-slide-in 0.2s ease-out forwards;
+}
+
+.animate-slide-out {
+ animation: vibesuite-slide-out 0.2s ease-in forwards;
+}
+
+// Left sidebar slide in
+@keyframes vibesuite-slide-in-left {
+ from {
+ transform: translateX(-100%);
+ }
+ to {
+ transform: translateX(0);
+ }
+}
+
+.animate-sidebar {
+ animation: vibesuite-slide-in-left 0.25s ease-out;
+}
+
+// Modal fade + scale
+@keyframes vibesuite-modal-in {
+ from {
+ opacity: 0;
+ transform: scale(0.97) translateY(8px);
+ }
+ to {
+ opacity: 1;
+ transform: scale(1) translateY(0);
+ }
+}
+
+@keyframes vibesuite-modal-out {
+ from {
+ opacity: 1;
+ transform: scale(1) translateY(0);
+ }
+ to {
+ opacity: 0;
+ transform: scale(0.97) translateY(8px);
+ }
+}
+
+.animate-modal-in {
+ animation: vibesuite-modal-in 0.2s ease-out forwards;
+}
+
+.animate-modal-out {
+ animation: vibesuite-modal-out 0.15s ease-in forwards;
+}
+
+// Guide overlay pulse
+@keyframes guidePulse {
+ 0%,
+ 100% {
+ opacity: 0.15;
+ }
+ 50% {
+ opacity: 0.4;
+ }
+}
+
+// Loader message fade
+@keyframes loaderFadeIn {
+ from {
+ opacity: 0;
+ transform: translateY(4px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
diff --git a/yarn.lock b/yarn.lock
index bfe6ecf..eeccc1b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4,7 +4,7 @@
"@ampproject/remapping@^2.1.0":
version "2.3.0"
- resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
+ resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz"
integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
dependencies:
"@jridgewell/gen-mapping" "^0.3.5"
@@ -12,7 +12,7 @@
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0":
version "7.29.0"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c"
+ resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz"
integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==
dependencies:
"@babel/helper-validator-identifier" "^7.28.5"
@@ -21,12 +21,12 @@
"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.0":
version "7.29.0"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d"
+ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz"
integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==
"@babel/core@7.19.3":
version "7.19.3"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c"
+ resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz"
integrity sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==
dependencies:
"@ampproject/remapping" "^2.1.0"
@@ -47,7 +47,7 @@
"@babel/core@^7.21.3":
version "7.29.0"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322"
+ resolved "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz"
integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==
dependencies:
"@babel/code-frame" "^7.29.0"
@@ -68,7 +68,7 @@
"@babel/generator@^7.19.3", "@babel/generator@^7.29.0":
version "7.29.1"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50"
+ resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz"
integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==
dependencies:
"@babel/parser" "^7.29.0"
@@ -79,14 +79,14 @@
"@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3":
version "7.27.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5"
+ resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz"
integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==
dependencies:
"@babel/types" "^7.27.3"
"@babel/helper-compilation-targets@^7.19.3", "@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25"
+ resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz"
integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==
dependencies:
"@babel/compat-data" "^7.28.6"
@@ -97,7 +97,7 @@
"@babel/helper-create-class-features-plugin@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz#611ff5482da9ef0db6291bcd24303400bca170fb"
+ resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz"
integrity sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.3"
@@ -110,7 +110,7 @@
"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1", "@babel/helper-create-regexp-features-plugin@^7.28.5":
version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997"
+ resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz"
integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.3"
@@ -119,7 +119,7 @@
"@babel/helper-define-polyfill-provider@^0.6.8":
version "0.6.8"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz#cf1e4462b613f2b54c41e6ff758d5dfcaa2c85d1"
+ resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz"
integrity sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==
dependencies:
"@babel/helper-compilation-targets" "^7.28.6"
@@ -130,12 +130,12 @@
"@babel/helper-globals@^7.28.0":
version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674"
+ resolved "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz"
integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==
"@babel/helper-member-expression-to-functions@^7.28.5":
version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150"
+ resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz"
integrity sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==
dependencies:
"@babel/traverse" "^7.28.5"
@@ -143,7 +143,7 @@
"@babel/helper-module-imports@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c"
+ resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz"
integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==
dependencies:
"@babel/traverse" "^7.28.6"
@@ -151,7 +151,7 @@
"@babel/helper-module-transforms@^7.19.0", "@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e"
+ resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz"
integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==
dependencies:
"@babel/helper-module-imports" "^7.28.6"
@@ -160,19 +160,19 @@
"@babel/helper-optimise-call-expression@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200"
+ resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz"
integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==
dependencies:
"@babel/types" "^7.27.1"
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8"
+ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz"
integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==
"@babel/helper-remap-async-to-generator@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6"
+ resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz"
integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.1"
@@ -181,7 +181,7 @@
"@babel/helper-replace-supers@^7.27.1", "@babel/helper-replace-supers@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz#94aa9a1d7423a00aead3f204f78834ce7d53fe44"
+ resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz"
integrity sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==
dependencies:
"@babel/helper-member-expression-to-functions" "^7.28.5"
@@ -190,7 +190,7 @@
"@babel/helper-skip-transparent-expression-wrappers@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56"
+ resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz"
integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==
dependencies:
"@babel/traverse" "^7.27.1"
@@ -198,54 +198,46 @@
"@babel/helper-string-parser@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
+ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz"
integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
"@babel/helper-validator-identifier@^7.28.5":
version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz"
integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==
"@babel/helper-validator-option@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz"
integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==
"@babel/helper-wrap-function@^7.27.1":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz#4e349ff9222dab69a93a019cc296cdd8442e279a"
+ resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz"
integrity sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==
dependencies:
"@babel/template" "^7.28.6"
"@babel/traverse" "^7.28.6"
"@babel/types" "^7.28.6"
-"@babel/helpers@^7.19.0":
+"@babel/helpers@^7.19.0", "@babel/helpers@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7"
+ resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz"
integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==
dependencies:
"@babel/template" "^7.28.6"
"@babel/types" "^7.28.6"
-"@babel/helpers@^7.28.6":
- version "7.29.2"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.2.tgz#9cfbccb02b8e229892c0b07038052cc1a8709c49"
- integrity sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==
- dependencies:
- "@babel/template" "^7.28.6"
- "@babel/types" "^7.29.0"
-
"@babel/parser@^7.19.3", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0":
version "7.29.0"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6"
+ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz"
integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==
dependencies:
"@babel/types" "^7.29.0"
"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5":
version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz#fbde57974707bbfa0376d34d425ff4fa6c732421"
+ resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz"
integrity sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
@@ -253,21 +245,21 @@
"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d"
+ resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz"
integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72"
+ resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz"
integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd"
+ resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz"
integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
@@ -276,7 +268,7 @@
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz#0e8289cec28baaf05d54fd08d81ae3676065f69f"
+ resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz"
integrity sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
@@ -284,40 +276,40 @@
"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2":
version "7.21.0-placeholder-for-preset-env.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz"
integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==
"@babel/plugin-syntax-import-assertions@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz#ae9bc1923a6ba527b70104dd2191b0cd872c8507"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz"
integrity sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-syntax-import-attributes@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz#b71d5914665f60124e133696f17cd7669062c503"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz"
integrity sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz#f8ca28bbd84883b5fea0e447c635b81ba73997ee"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz"
integrity sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-syntax-typescript@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz#c7b2ddf1d0a811145b1de800d1abd146af92e3a2"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz"
integrity sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-syntax-unicode-sets-regex@^7.18.6":
version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz"
integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.18.6"
@@ -325,14 +317,14 @@
"@babel/plugin-transform-arrow-functions@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz"
integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-async-generator-functions@^7.29.0":
version "7.29.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz#63ed829820298f0bf143d5a4a68fb8c06ffd742f"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz"
integrity sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
@@ -341,7 +333,7 @@
"@babel/plugin-transform-async-to-generator@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz#bd97b42237b2d1bc90d74bcb486c39be5b4d7e77"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz"
integrity sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==
dependencies:
"@babel/helper-module-imports" "^7.28.6"
@@ -350,21 +342,21 @@
"@babel/plugin-transform-block-scoped-functions@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz"
integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-block-scoping@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz#e1ef5633448c24e76346125c2534eeb359699a99"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz"
integrity sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-class-properties@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz#d274a4478b6e782d9ea987fda09bdb6d28d66b72"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz"
integrity sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.28.6"
@@ -372,7 +364,7 @@
"@babel/plugin-transform-class-static-block@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz#1257491e8259c6d125ac4d9a6f39f9d2bf3dba70"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz"
integrity sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.28.6"
@@ -380,7 +372,7 @@
"@babel/plugin-transform-classes@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz#8f6fb79ba3703978e701ce2a97e373aae7dda4b7"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz"
integrity sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.3"
@@ -392,7 +384,7 @@
"@babel/plugin-transform-computed-properties@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz#936824fc71c26cb5c433485776d79c8e7b0202d2"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz"
integrity sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
@@ -400,7 +392,7 @@
"@babel/plugin-transform-destructuring@^7.28.5":
version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz#b8402764df96179a2070bb7b501a1586cf8ad7a7"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz"
integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
@@ -408,7 +400,7 @@
"@babel/plugin-transform-dotall-regex@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz#def31ed84e0fb6e25c71e53c124e7b76a4ab8e61"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz"
integrity sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.28.5"
@@ -416,14 +408,14 @@
"@babel/plugin-transform-duplicate-keys@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz"
integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.0":
version "7.29.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz#8014b8a6cfd0e7b92762724443bf0d2400f26df1"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz"
integrity sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.28.5"
@@ -431,14 +423,14 @@
"@babel/plugin-transform-dynamic-import@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz"
integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-explicit-resource-management@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz#dd6788f982c8b77e86779d1d029591e39d9d8be7"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz"
integrity sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
@@ -446,21 +438,21 @@
"@babel/plugin-transform-exponentiation-operator@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz#5e477eb7eafaf2ab5537a04aaafcf37e2d7f1091"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz"
integrity sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-export-namespace-from@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz"
integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-for-of@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz"
integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
@@ -468,7 +460,7 @@
"@babel/plugin-transform-function-name@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz"
integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==
dependencies:
"@babel/helper-compilation-targets" "^7.27.1"
@@ -477,35 +469,35 @@
"@babel/plugin-transform-json-strings@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz#4c8c15b2dc49e285d110a4cf3dac52fd2dfc3038"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz"
integrity sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-literals@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz"
integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-logical-assignment-operators@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz#53028a3d77e33c50ef30a8fce5ca17065936e605"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz"
integrity sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-member-expression-literals@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz"
integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-modules-amd@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz"
integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==
dependencies:
"@babel/helper-module-transforms" "^7.27.1"
@@ -513,7 +505,7 @@
"@babel/plugin-transform-modules-commonjs@^7.27.1", "@babel/plugin-transform-modules-commonjs@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz#c0232e0dfe66a734cc4ad0d5e75fc3321b6fdef1"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz"
integrity sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==
dependencies:
"@babel/helper-module-transforms" "^7.28.6"
@@ -521,7 +513,7 @@
"@babel/plugin-transform-modules-systemjs@^7.29.0":
version "7.29.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz#e458a95a17807c415924106a3ff188a3b8dee964"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz"
integrity sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==
dependencies:
"@babel/helper-module-transforms" "^7.28.6"
@@ -531,7 +523,7 @@
"@babel/plugin-transform-modules-umd@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz"
integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==
dependencies:
"@babel/helper-module-transforms" "^7.27.1"
@@ -539,7 +531,7 @@
"@babel/plugin-transform-named-capturing-groups-regex@^7.29.0":
version "7.29.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz#a26cd51e09c4718588fc4cce1c5d1c0152102d6a"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz"
integrity sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.28.5"
@@ -547,28 +539,28 @@
"@babel/plugin-transform-new-target@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz"
integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-nullish-coalescing-operator@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz#9bc62096e90ab7a887f3ca9c469f6adec5679757"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz"
integrity sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-numeric-separator@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz#1310b0292762e7a4a335df5f580c3320ee7d9e9f"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz"
integrity sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-object-rest-spread@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz#fdd4bc2d72480db6ca42aed5c051f148d7b067f7"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz"
integrity sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==
dependencies:
"@babel/helper-compilation-targets" "^7.28.6"
@@ -579,7 +571,7 @@
"@babel/plugin-transform-object-super@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz"
integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
@@ -587,14 +579,14 @@
"@babel/plugin-transform-optional-catch-binding@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz#75107be14c78385978201a49c86414a150a20b4c"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz"
integrity sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz#926cf150bd421fc8362753e911b4a1b1ce4356cd"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz"
integrity sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
@@ -602,14 +594,14 @@
"@babel/plugin-transform-parameters@^7.27.7":
version "7.27.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz"
integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-private-methods@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz#c76fbfef3b86c775db7f7c106fff544610bdb411"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz"
integrity sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.28.6"
@@ -617,7 +609,7 @@
"@babel/plugin-transform-private-property-in-object@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz#4fafef1e13129d79f1d75ac180c52aafefdb2811"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz"
integrity sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.3"
@@ -626,35 +618,35 @@
"@babel/plugin-transform-property-literals@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz"
integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-react-constant-elements@^7.21.3":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz#6c6b50424e749a6e48afd14cf7b92f98cb9383f9"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz"
integrity sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-react-display-name@^7.28.0":
version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz#6f20a7295fea7df42eb42fed8f896813f5b934de"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz"
integrity sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-react-jsx-development@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz#47ff95940e20a3a70e68ad3d4fcb657b647f6c98"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz"
integrity sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==
dependencies:
"@babel/plugin-transform-react-jsx" "^7.27.1"
"@babel/plugin-transform-react-jsx@^7.27.1":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz#f51cb70a90b9529fbb71ee1f75ea27b7078eed62"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz"
integrity sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.3"
@@ -665,7 +657,7 @@
"@babel/plugin-transform-react-pure-annotations@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz#339f1ce355eae242e0649f232b1c68907c02e879"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz"
integrity sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.1"
@@ -673,14 +665,14 @@
"@babel/plugin-transform-regenerator@^7.29.0":
version "7.29.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz#dec237cec1b93330876d6da9992c4abd42c9d18b"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz"
integrity sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-regexp-modifiers@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz#7ef0163bd8b4a610481b2509c58cf217f065290b"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz"
integrity sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.28.5"
@@ -688,21 +680,21 @@
"@babel/plugin-transform-reserved-words@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz"
integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-shorthand-properties@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz"
integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-spread@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz#40a2b423f6db7b70f043ad027a58bcb44a9757b6"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz"
integrity sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
@@ -710,28 +702,28 @@
"@babel/plugin-transform-sticky-regex@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz"
integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-template-literals@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz"
integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-typeof-symbol@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz"
integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-typescript@^7.28.5":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz#1e93d96da8adbefdfdade1d4956f73afa201a158"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz"
integrity sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.3"
@@ -742,14 +734,14 @@
"@babel/plugin-transform-unicode-escapes@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz"
integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-unicode-property-regex@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz#63a7a6c21a0e75dae9b1861454111ea5caa22821"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz"
integrity sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.28.5"
@@ -757,7 +749,7 @@
"@babel/plugin-transform-unicode-regex@^7.27.1":
version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz"
integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.27.1"
@@ -765,7 +757,7 @@
"@babel/plugin-transform-unicode-sets-regex@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz#924912914e5df9fe615ec472f88ff4788ce04d4e"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz"
integrity sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.28.5"
@@ -773,7 +765,7 @@
"@babel/preset-env@^7.20.2":
version "7.29.2"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.2.tgz#5a173f22c7d8df362af1c9fe31facd320de4a86c"
+ resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.2.tgz"
integrity sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==
dependencies:
"@babel/compat-data" "^7.29.0"
@@ -849,7 +841,7 @@
"@babel/preset-modules@0.1.6-no-external-plugins":
version "0.1.6-no-external-plugins"
- resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a"
+ resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz"
integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
@@ -858,7 +850,7 @@
"@babel/preset-react@^7.18.6":
version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.28.5.tgz#6fcc0400fa79698433d653092c3919bb4b0878d9"
+ resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz"
integrity sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
@@ -870,7 +862,7 @@
"@babel/preset-typescript@^7.21.0":
version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz#540359efa3028236958466342967522fd8f2a60c"
+ resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz"
integrity sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
@@ -880,13 +872,13 @@
"@babel/plugin-transform-typescript" "^7.28.5"
"@babel/runtime@^7.15.4", "@babel/runtime@^7.20.13", "@babel/runtime@^7.21.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.8.3", "@babel/runtime@^7.9.2":
- version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b"
- integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==
+ version "7.29.2"
+ resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz"
+ integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==
"@babel/template@^7.18.10", "@babel/template@^7.28.6":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57"
+ resolved "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz"
integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==
dependencies:
"@babel/code-frame" "^7.28.6"
@@ -895,7 +887,7 @@
"@babel/traverse@^7.19.3", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0":
version "7.29.0"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a"
+ resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz"
integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==
dependencies:
"@babel/code-frame" "^7.29.0"
@@ -908,7 +900,7 @@
"@babel/types@^7.19.3", "@babel/types@^7.21.3", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.4.4":
version "7.29.0"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7"
+ resolved "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz"
integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==
dependencies:
"@babel/helper-string-parser" "^7.27.1"
@@ -916,19 +908,19 @@
"@cspotcode/source-map-support@^0.8.0":
version "0.8.1"
- resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
+ resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz"
integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
dependencies:
"@jridgewell/trace-mapping" "0.3.9"
"@cypress/react@^9.0.1":
version "9.0.1"
- resolved "https://registry.yarnpkg.com/@cypress/react/-/react-9.0.1.tgz#9402ee74dc659e522e2eb620e6b4eaf188307587"
+ resolved "https://registry.npmjs.org/@cypress/react/-/react-9.0.1.tgz"
integrity sha512-qu6ziP2smdlfy3Yvrhm6PadxEtkc/cl6YhZu3h6KCtz+0s54joqxp6uGYOglpwyMBp3qjtSil1JVlFX0hUi5LQ==
"@cypress/request@^3.0.9":
version "3.0.10"
- resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.10.tgz#e09c695e8460a82acafe6cfaf089cf2ca06dc054"
+ resolved "https://registry.npmjs.org/@cypress/request/-/request-3.0.10.tgz"
integrity sha512-hauBrOdvu08vOsagkZ/Aju5XuiZx6ldsLfByg1htFeldhex+PeMrYauANzFsMJeAA0+dyPLbDoX2OYuvVoLDkQ==
dependencies:
aws-sign2 "~0.7.0"
@@ -952,7 +944,7 @@
"@cypress/vite-dev-server@^6.0.3":
version "6.0.3"
- resolved "https://registry.yarnpkg.com/@cypress/vite-dev-server/-/vite-dev-server-6.0.3.tgz#525bf0ec7fd3f3bbd6bbe47e7841ffd0bfb37550"
+ resolved "https://registry.npmjs.org/@cypress/vite-dev-server/-/vite-dev-server-6.0.3.tgz"
integrity sha512-iw5koemvIOzwjtGOKKGfNVGvmjwBmjj5DCiBW6ATUB+m1HzFM9Zmq1dpll+zym5dM+pxb5iA8zKLoAoSKutYVg==
dependencies:
debug "^4.3.4"
@@ -962,61 +954,61 @@
"@cypress/xvfb@^1.2.4":
version "1.2.4"
- resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a"
+ resolved "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz"
integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==
dependencies:
debug "^3.1.0"
lodash.once "^4.1.1"
"@emnapi/core@^1.4.3":
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.8.1.tgz#fd9efe721a616288345ffee17a1f26ac5dd01349"
- integrity sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.9.2.tgz#3870265ecffc7352d01ead62d8d83d8358a2d034"
+ integrity sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==
dependencies:
- "@emnapi/wasi-threads" "1.1.0"
+ "@emnapi/wasi-threads" "1.2.1"
tslib "^2.4.0"
"@emnapi/runtime@^1.2.0", "@emnapi/runtime@^1.4.3":
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.8.1.tgz#550fa7e3c0d49c5fb175a116e8cd70614f9a22a5"
- integrity sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.9.2.tgz#8b469a3db160817cadb1de9050211a9d1ea84fa2"
+ integrity sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==
dependencies:
tslib "^2.4.0"
-"@emnapi/wasi-threads@1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf"
- integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==
+"@emnapi/wasi-threads@1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz#28fed21a1ba1ce797c44a070abc94d42f3ae8548"
+ integrity sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==
dependencies:
tslib "^2.4.0"
"@emotion/is-prop-valid@^0.7.3":
version "0.7.3"
- resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz#a6bf4fa5387cbba59d44e698a4680f481a8da6cc"
+ resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz"
integrity sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA==
dependencies:
"@emotion/memoize" "0.7.1"
"@emotion/memoize@0.7.1":
version "0.7.1"
- resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f"
+ resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.1.tgz"
integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg==
"@eslint-community/eslint-utils@^4.8.0", "@eslint-community/eslint-utils@^4.9.1":
version "4.9.1"
- resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595"
+ resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz"
integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==
dependencies:
eslint-visitor-keys "^3.4.3"
"@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.12.2":
version "4.12.2"
- resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b"
+ resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz"
integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==
"@eslint/config-array@^0.21.1":
version "0.21.1"
- resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.1.tgz#7d1b0060fea407f8301e932492ba8c18aff29713"
+ resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz"
integrity sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==
dependencies:
"@eslint/object-schema" "^2.1.7"
@@ -1025,21 +1017,21 @@
"@eslint/config-helpers@^0.4.2":
version "0.4.2"
- resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.4.2.tgz#1bd006ceeb7e2e55b2b773ab318d300e1a66aeda"
+ resolved "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz"
integrity sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==
dependencies:
"@eslint/core" "^0.17.0"
"@eslint/core@^0.17.0":
version "0.17.0"
- resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.17.0.tgz#77225820413d9617509da9342190a2019e78761c"
+ resolved "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz"
integrity sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==
dependencies:
"@types/json-schema" "^7.0.15"
"@eslint/eslintrc@^3.3.1":
version "3.3.4"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.4.tgz#e402b1920f7c1f5a15342caa432b1348cacbb641"
+ resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz"
integrity sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==
dependencies:
ajv "^6.14.0"
@@ -1054,17 +1046,17 @@
"@eslint/js@9.39.3":
version "9.39.3"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.3.tgz#c6168736c7e0c43ead49654ed06a4bcb3833363d"
+ resolved "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz"
integrity sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==
"@eslint/object-schema@^2.1.7":
version "2.1.7"
- resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.7.tgz#6e2126a1347e86a4dedf8706ec67ff8e107ebbad"
+ resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz"
integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==
"@eslint/plugin-kit@^0.4.1":
version "0.4.1"
- resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz#9779e3fd9b7ee33571a57435cf4335a1794a6cb2"
+ resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz"
integrity sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==
dependencies:
"@eslint/core" "^0.17.0"
@@ -1072,14 +1064,14 @@
"@floating-ui/core@^1.7.4":
version "1.7.4"
- resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.4.tgz#4a006a6e01565c0f87ba222c317b056a2cffd2f4"
+ resolved "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz"
integrity sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==
dependencies:
"@floating-ui/utils" "^0.2.10"
"@floating-ui/dom@^1.6.1":
version "1.7.5"
- resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.5.tgz#60bfc83a4d1275b2a90db76bf42ca2a5f2c231c2"
+ resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz"
integrity sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==
dependencies:
"@floating-ui/core" "^1.7.4"
@@ -1087,51 +1079,51 @@
"@floating-ui/utils@^0.2.10":
version "0.2.10"
- resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c"
+ resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz"
integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==
"@hapi/address@^5.1.1":
version "5.1.1"
- resolved "https://registry.yarnpkg.com/@hapi/address/-/address-5.1.1.tgz#e9925fc1b65f5cc3fbea821f2b980e4652e84cb6"
+ resolved "https://registry.npmjs.org/@hapi/address/-/address-5.1.1.tgz"
integrity sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==
dependencies:
"@hapi/hoek" "^11.0.2"
"@hapi/formula@^3.0.2":
version "3.0.2"
- resolved "https://registry.yarnpkg.com/@hapi/formula/-/formula-3.0.2.tgz#81b538060ee079481c906f599906d163c4badeaf"
+ resolved "https://registry.npmjs.org/@hapi/formula/-/formula-3.0.2.tgz"
integrity sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==
"@hapi/hoek@^11.0.2", "@hapi/hoek@^11.0.7":
version "11.0.7"
- resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-11.0.7.tgz#56a920793e0a42d10e530da9a64cc0d3919c4002"
+ resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz"
integrity sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==
"@hapi/pinpoint@^2.0.1":
version "2.0.1"
- resolved "https://registry.yarnpkg.com/@hapi/pinpoint/-/pinpoint-2.0.1.tgz#32077e715655fc00ab8df74b6b416114287d6513"
+ resolved "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz"
integrity sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==
"@hapi/tlds@^1.1.1":
version "1.1.6"
- resolved "https://registry.yarnpkg.com/@hapi/tlds/-/tlds-1.1.6.tgz#c98ed89ca76aa030352d6d7102d0f250aed89cfb"
+ resolved "https://registry.npmjs.org/@hapi/tlds/-/tlds-1.1.6.tgz"
integrity sha512-xdi7A/4NZokvV0ewovme3aUO5kQhW9pQ2YD1hRqZGhhSi5rBv4usHYidVocXSi9eihYsznZxLtAiEYYUL6VBGw==
"@hapi/topo@^6.0.2":
version "6.0.2"
- resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-6.0.2.tgz#f219c1c60da8430228af4c1f2e40c32a0d84bbb4"
+ resolved "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz"
integrity sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==
dependencies:
"@hapi/hoek" "^11.0.2"
"@humanfs/core@^0.19.1":
version "0.19.1"
- resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77"
+ resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz"
integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==
"@humanfs/node@^0.16.6":
version "0.16.7"
- resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.7.tgz#822cb7b3a12c5a240a24f621b5a2413e27a45f26"
+ resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz"
integrity sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==
dependencies:
"@humanfs/core" "^0.19.1"
@@ -1139,12 +1131,12 @@
"@humanwhocodes/module-importer@^1.0.1":
version "1.0.1"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
"@humanwhocodes/retry@^0.4.0", "@humanwhocodes/retry@^0.4.2":
version "0.4.3"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba"
+ resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz"
integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==
"@img/sharp-darwin-arm64@0.33.5":
@@ -1262,7 +1254,7 @@
"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5":
version "0.3.13"
- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f"
+ resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz"
integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==
dependencies:
"@jridgewell/sourcemap-codec" "^1.5.0"
@@ -1270,7 +1262,7 @@
"@jridgewell/remapping@^2.3.5":
version "2.3.5"
- resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1"
+ resolved "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz"
integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==
dependencies:
"@jridgewell/gen-mapping" "^0.3.5"
@@ -1278,17 +1270,17 @@
"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0":
version "3.1.2"
- resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
+ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz"
integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0":
version "1.5.5"
- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba"
+ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz"
integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==
"@jridgewell/trace-mapping@0.3.9":
version "0.3.9"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
+ resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz"
integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
dependencies:
"@jridgewell/resolve-uri" "^3.0.3"
@@ -1296,7 +1288,7 @@
"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28":
version "0.3.31"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0"
+ resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz"
integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==
dependencies:
"@jridgewell/resolve-uri" "^3.1.0"
@@ -1304,36 +1296,36 @@
"@mixpanel/rrdom@^2.0.0-alpha.18":
version "2.0.0-alpha.18.3"
- resolved "https://registry.yarnpkg.com/@mixpanel/rrdom/-/rrdom-2.0.0-alpha.18.3.tgz#6b2a939ccc584783cdcdf61d2ad2a86bc9f50e14"
+ resolved "https://registry.npmjs.org/@mixpanel/rrdom/-/rrdom-2.0.0-alpha.18.3.tgz"
integrity sha512-FpQ/WJkVgb0kF49ebqtqf5F7dsqU/o9CfzPR8BAafzVQkieaPCRBFyLh8CDCtKKY0k8DJRqcamj388MLd6QJpQ==
dependencies:
"@mixpanel/rrweb-snapshot" "^2.0.0-alpha.18"
"@mixpanel/rrweb-plugin-console-record@2.0.0-alpha.18.3":
version "2.0.0-alpha.18.3"
- resolved "https://registry.yarnpkg.com/@mixpanel/rrweb-plugin-console-record/-/rrweb-plugin-console-record-2.0.0-alpha.18.3.tgz#d24dac13d556a89a88f16051ed037f313addc556"
+ resolved "https://registry.npmjs.org/@mixpanel/rrweb-plugin-console-record/-/rrweb-plugin-console-record-2.0.0-alpha.18.3.tgz"
integrity sha512-xau4CixCli8HepZ5snLXQAgUYluGeQg2ZHlv7bRFQTPaA02YfOiwjF295ohMtVOI1VWkFxeK5uDeFnOb/S5Uow==
"@mixpanel/rrweb-snapshot@^2.0.0-alpha.18":
version "2.0.0-alpha.18.3"
- resolved "https://registry.yarnpkg.com/@mixpanel/rrweb-snapshot/-/rrweb-snapshot-2.0.0-alpha.18.3.tgz#35b9c4e789f52ec4d0f0ba5835f4b50320be92c1"
+ resolved "https://registry.npmjs.org/@mixpanel/rrweb-snapshot/-/rrweb-snapshot-2.0.0-alpha.18.3.tgz"
integrity sha512-s+OONdR5WGpw3DapBMUeXvNGQAZuAr/VzkG+D6f/DsK2sV2PyibmrQJUZUSGYqB3pGGWzmJPO9BvqPBzfAZ5SA==
dependencies:
postcss "^8.4.38"
"@mixpanel/rrweb-types@^2.0.0-alpha.18":
version "2.0.0-alpha.18.3"
- resolved "https://registry.yarnpkg.com/@mixpanel/rrweb-types/-/rrweb-types-2.0.0-alpha.18.3.tgz#545310233182f6fb538729d91c2ae2fc9251fdb2"
+ resolved "https://registry.npmjs.org/@mixpanel/rrweb-types/-/rrweb-types-2.0.0-alpha.18.3.tgz"
integrity sha512-K6L0AQUm5SzW/nKbb68uFWwg1S+NlVt1QOW3YMROrpI0nhnntQmEfHnecjyPYE/s5MxH+kqW8bH5bVpT/uJa3A==
"@mixpanel/rrweb-utils@^2.0.0-alpha.18":
version "2.0.0-alpha.18.3"
- resolved "https://registry.yarnpkg.com/@mixpanel/rrweb-utils/-/rrweb-utils-2.0.0-alpha.18.3.tgz#b4199607f3b740c04c14d61b44ee8caf248bbd1a"
+ resolved "https://registry.npmjs.org/@mixpanel/rrweb-utils/-/rrweb-utils-2.0.0-alpha.18.3.tgz"
integrity sha512-5hvfIhYaSlpJYKQn4nK1s3Rv63UExMq5l1FtAKFXznCqsnVIEb+yICKOiESSzIRwrCxInnUvFOGCfNWBXy9QLw==
"@mixpanel/rrweb@2.0.0-alpha.18.3":
version "2.0.0-alpha.18.3"
- resolved "https://registry.yarnpkg.com/@mixpanel/rrweb/-/rrweb-2.0.0-alpha.18.3.tgz#7999d34145d704cca70acebf845129490a5ef9b6"
+ resolved "https://registry.npmjs.org/@mixpanel/rrweb/-/rrweb-2.0.0-alpha.18.3.tgz"
integrity sha512-di3QfGmRleiDN85+E6OoJHCr/vq/wX9Z8l/Jt4mqHoLcbLEa46dkZ/qSgl4pYFby1Q6BKEwfwGIav15Ay7szlg==
dependencies:
"@mixpanel/rrdom" "^2.0.0-alpha.18"
@@ -1356,12 +1348,12 @@
"@next/env@15.0.5":
version "15.0.5"
- resolved "https://registry.yarnpkg.com/@next/env/-/env-15.0.5.tgz#1cc1ca2cb0835e95260afdd31cef8c227ad86fd4"
+ resolved "https://registry.npmjs.org/@next/env/-/env-15.0.5.tgz"
integrity sha512-rDeqk/QF6OxTSvQItPdtyR0O4QN5L2a794F4+i8/syHN92DqFXcLNhZgLtYhW3rrJ23vRR7B5wIamsgGM4I6UQ==
"@next/eslint-plugin-next@15.5.12":
version "15.5.12"
- resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-15.5.12.tgz#f9acf0895169c8699bd2759d362c1ddd973fc2a2"
+ resolved "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.5.12.tgz"
integrity sha512-+ZRSDFTv4aC96aMb5E41rMjysx8ApkryevnvEYZvPZO52KvkqP5rNExLUXJFr9P4s0f3oqNQR6vopCZsPWKDcQ==
dependencies:
fast-glob "3.3.1"
@@ -1398,7 +1390,7 @@
"@next/swc-win32-arm64-msvc@15.0.5":
version "15.0.5"
- resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.5.tgz#85de76f015e7bf3458e6c0930c608729dcb1f6e6"
+ resolved "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.5.tgz"
integrity sha512-OmKXP/mUzY+AiDFk9PR3RoM6YfgzNYhtSbfvTUDk3PxoCLKnwTZ8xsFoWX2ph/RFC25QucTeAFepouGGsdBPAg==
"@next/swc-win32-x64-msvc@15.0.5":
@@ -1408,7 +1400,7 @@
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
dependencies:
"@nodelib/fs.stat" "2.0.5"
@@ -1416,12 +1408,12 @@
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
version "2.0.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
"@nodelib/fs.walk@^1.2.3":
version "1.2.8"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
dependencies:
"@nodelib/fs.scandir" "2.1.5"
@@ -1429,24 +1421,24 @@
"@nolyfill/is-core-module@1.0.39":
version "1.0.39"
- resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e"
+ resolved "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz"
integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==
"@otplib/core@^12.0.1":
version "12.0.1"
- resolved "https://registry.yarnpkg.com/@otplib/core/-/core-12.0.1.tgz#73720a8cedce211fe5b3f683cd5a9c098eaf0f8d"
+ resolved "https://registry.npmjs.org/@otplib/core/-/core-12.0.1.tgz"
integrity sha512-4sGntwbA/AC+SbPhbsziRiD+jNDdIzsZ3JUyfZwjtKyc/wufl1pnSIaG4Uqx8ymPagujub0o92kgBnB89cuAMA==
"@otplib/plugin-crypto@^12.0.1":
version "12.0.1"
- resolved "https://registry.yarnpkg.com/@otplib/plugin-crypto/-/plugin-crypto-12.0.1.tgz#2b42c624227f4f9303c1c041fca399eddcbae25e"
+ resolved "https://registry.npmjs.org/@otplib/plugin-crypto/-/plugin-crypto-12.0.1.tgz"
integrity sha512-qPuhN3QrT7ZZLcLCyKOSNhuijUi9G5guMRVrxq63r9YNOxxQjPm59gVxLM+7xGnHnM6cimY57tuKsjK7y9LM1g==
dependencies:
"@otplib/core" "^12.0.1"
"@otplib/plugin-thirty-two@^12.0.1":
version "12.0.1"
- resolved "https://registry.yarnpkg.com/@otplib/plugin-thirty-two/-/plugin-thirty-two-12.0.1.tgz#5cc9b56e6e89f2a1fe4a2b38900ca4e11c87aa9e"
+ resolved "https://registry.npmjs.org/@otplib/plugin-thirty-two/-/plugin-thirty-two-12.0.1.tgz"
integrity sha512-MtT+uqRso909UkbrrYpJ6XFjj9D+x2Py7KjTO9JDPhL0bJUYVu5kFP4TFZW4NFAywrAtFRxOVY261u0qwb93gA==
dependencies:
"@otplib/core" "^12.0.1"
@@ -1454,7 +1446,7 @@
"@otplib/preset-default@^12.0.1":
version "12.0.1"
- resolved "https://registry.yarnpkg.com/@otplib/preset-default/-/preset-default-12.0.1.tgz#cb596553c08251e71b187ada4a2246ad2a3165ba"
+ resolved "https://registry.npmjs.org/@otplib/preset-default/-/preset-default-12.0.1.tgz"
integrity sha512-xf1v9oOJRyXfluBhMdpOkr+bsE+Irt+0D5uHtvg6x1eosfmHCsCC6ej/m7FXiWqdo0+ZUI6xSKDhJwc8yfiOPQ==
dependencies:
"@otplib/core" "^12.0.1"
@@ -1463,7 +1455,7 @@
"@otplib/preset-v11@^12.0.1":
version "12.0.1"
- resolved "https://registry.yarnpkg.com/@otplib/preset-v11/-/preset-v11-12.0.1.tgz#4c7266712e7230500b421ba89252963c838fc96d"
+ resolved "https://registry.npmjs.org/@otplib/preset-v11/-/preset-v11-12.0.1.tgz"
integrity sha512-9hSetMI7ECqbFiKICrNa4w70deTUfArtwXykPUvSHWOdzOlfa9ajglu7mNCntlvxycTiOAXkQGwjQCzzDEMRMg==
dependencies:
"@otplib/core" "^12.0.1"
@@ -1472,12 +1464,12 @@
"@panva/hkdf@^1.0.2":
version "1.2.1"
- resolved "https://registry.yarnpkg.com/@panva/hkdf/-/hkdf-1.2.1.tgz#cb0d111ef700136f4580349ff0226bf25c853f23"
+ resolved "https://registry.npmjs.org/@panva/hkdf/-/hkdf-1.2.1.tgz"
integrity sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==
"@puppeteer/browsers@2.3.0":
version "2.3.0"
- resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.3.0.tgz#791ea7d80450fea24eb19fb1d70c367ad4e08cae"
+ resolved "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz"
integrity sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==
dependencies:
debug "^4.3.5"
@@ -1491,62 +1483,62 @@
"@rtsao/scc@^1.1.0":
version "1.1.0"
- resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8"
+ resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz"
integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==
"@rushstack/eslint-patch@^1.10.3":
version "1.16.1"
- resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.16.1.tgz#4f97581e114fc79f246cee3723a5c4edd3b62415"
+ resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.16.1.tgz"
integrity sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==
"@standard-schema/spec@^1.0.0":
version "1.1.0"
- resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8"
+ resolved "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz"
integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==
"@svgr/babel-plugin-add-jsx-attribute@8.0.0":
version "8.0.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz"
integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==
"@svgr/babel-plugin-remove-jsx-attribute@8.0.0":
version "8.0.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz"
integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==
"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0":
version "8.0.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz"
integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==
"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0":
version "8.0.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz"
integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==
"@svgr/babel-plugin-svg-dynamic-title@8.0.0":
version "8.0.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz"
integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==
"@svgr/babel-plugin-svg-em-dimensions@8.0.0":
version "8.0.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz"
integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==
"@svgr/babel-plugin-transform-react-native-svg@8.1.0":
version "8.1.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz"
integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==
"@svgr/babel-plugin-transform-svg-component@8.0.0":
version "8.0.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz"
integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==
"@svgr/babel-preset@8.1.0":
version "8.1.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece"
+ resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz"
integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==
dependencies:
"@svgr/babel-plugin-add-jsx-attribute" "8.0.0"
@@ -1560,7 +1552,7 @@
"@svgr/core@8.1.0":
version "8.1.0"
- resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88"
+ resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz"
integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==
dependencies:
"@babel/core" "^7.21.3"
@@ -1571,7 +1563,7 @@
"@svgr/hast-util-to-babel-ast@8.0.0":
version "8.0.0"
- resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4"
+ resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz"
integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==
dependencies:
"@babel/types" "^7.21.3"
@@ -1579,7 +1571,7 @@
"@svgr/plugin-jsx@8.1.0":
version "8.1.0"
- resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928"
+ resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz"
integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==
dependencies:
"@babel/core" "^7.21.3"
@@ -1589,7 +1581,7 @@
"@svgr/plugin-svgo@8.1.0":
version "8.1.0"
- resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00"
+ resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz"
integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==
dependencies:
cosmiconfig "^8.1.3"
@@ -1598,7 +1590,7 @@
"@svgr/webpack@^8.1.0":
version "8.1.0"
- resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.1.0.tgz#16f1b5346f102f89fda6ec7338b96a701d8be0c2"
+ resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-8.1.0.tgz"
integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==
dependencies:
"@babel/core" "^7.21.3"
@@ -1612,39 +1604,39 @@
"@swc/counter@0.1.3":
version "0.1.3"
- resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9"
+ resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz"
integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==
"@swc/helpers@0.5.13":
version "0.5.13"
- resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c"
+ resolved "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz"
integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==
dependencies:
tslib "^2.4.0"
"@tootallnate/quickjs-emscripten@^0.23.0":
version "0.23.0"
- resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c"
+ resolved "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz"
integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==
"@tsconfig/node10@^1.0.7":
version "1.0.12"
- resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.12.tgz#be57ceac1e4692b41be9de6be8c32a106636dba4"
+ resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz"
integrity sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==
"@tsconfig/node12@^1.0.7":
version "1.0.11"
- resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
+ resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz"
integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
"@tsconfig/node14@^1.0.0":
version "1.0.3"
- resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
+ resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz"
integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
"@tsconfig/node16@^1.0.2":
version "1.0.4"
- resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
+ resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz"
integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
"@tybys/wasm-util@^0.10.0":
@@ -1656,120 +1648,113 @@
"@types/amplitude-js@8.16.2":
version "8.16.2"
- resolved "https://registry.yarnpkg.com/@types/amplitude-js/-/amplitude-js-8.16.2.tgz#2cfb850a01a4171e632498821f92e45bef23c952"
+ resolved "https://registry.npmjs.org/@types/amplitude-js/-/amplitude-js-8.16.2.tgz"
integrity sha512-a+tb/CEQOlrHRvEvAuYNOcoUy1POERANnAhfKgiTmsy0eACj3eukGP0ucA9t115QOPzVUhbnUfZqtyHp99IZyA==
"@types/classnames@2.2.11":
version "2.2.11"
- resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.11.tgz#2521cc86f69d15c5b90664e4829d84566052c1cf"
+ resolved "https://registry.npmjs.org/@types/classnames/-/classnames-2.2.11.tgz"
integrity sha512-2koNhpWm3DgWRp5tpkiJ8JGc1xTn2q0l+jUNUE7oMKXUf5NpI9AIdC4kbjGNFBdHtcxBD18LAksoudAVhFKCjw==
"@types/css-font-loading-module@0.0.7":
version "0.0.7"
- resolved "https://registry.yarnpkg.com/@types/css-font-loading-module/-/css-font-loading-module-0.0.7.tgz#2f98ede46acc0975de85c0b7b0ebe06041d24601"
+ resolved "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.7.tgz"
integrity sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==
"@types/debug@^4.0.0":
version "4.1.12"
- resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917"
+ resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz"
integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==
dependencies:
"@types/ms" "*"
"@types/estree@^1.0.6":
version "1.0.8"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e"
+ resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz"
integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
"@types/hast@^2.0.0":
version "2.3.10"
- resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.10.tgz#5c9d9e0b304bbb8879b857225c5ebab2d81d7643"
+ resolved "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz"
integrity sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==
dependencies:
"@types/unist" "^2"
"@types/hoist-non-react-statics@^3.3.0":
version "3.3.7"
- resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.7.tgz#306e3a3a73828522efa1341159da4846e7573a6c"
+ resolved "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.7.tgz"
integrity sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==
dependencies:
hoist-non-react-statics "^3.3.0"
"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.5":
version "7.0.15"
- resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
+ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
"@types/json5@^0.0.29":
version "0.0.29"
- resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
+ resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz"
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
"@types/lodash.debounce@4.0.7":
version "4.0.7"
- resolved "https://registry.yarnpkg.com/@types/lodash.debounce/-/lodash.debounce-4.0.7.tgz#0285879defb7cdb156ae633cecd62d5680eded9f"
+ resolved "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.7.tgz"
integrity sha512-X1T4wMZ+gT000M2/91SYj0d/7JfeNZ9PeeOldSNoE/lunLeQXKvkmIumI29IaKMotU/ln/McOIvgzZcQ/3TrSA==
dependencies:
"@types/lodash" "*"
"@types/lodash.unescape@4.0.7":
version "4.0.7"
- resolved "https://registry.yarnpkg.com/@types/lodash.unescape/-/lodash.unescape-4.0.7.tgz#69f1cab2e755b824151346a44faeaaf93702972b"
+ resolved "https://registry.npmjs.org/@types/lodash.unescape/-/lodash.unescape-4.0.7.tgz"
integrity sha512-KGxcfHpWcOnLeK5g71YErXL6m947wQC9XfhVjENlCku85C6WxsqNIxwxpqDCpL06rY5ExQiXZH50KgJDFLzc7Q==
dependencies:
"@types/lodash" "*"
"@types/lodash@*":
version "4.17.24"
- resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.24.tgz#4ae334fc62c0e915ca8ed8e35dcc6d4eeb29215f"
+ resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz"
integrity sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==
"@types/mdast@^3.0.0":
version "3.0.15"
- resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.15.tgz#49c524a263f30ffa28b71ae282f813ed000ab9f5"
+ resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz"
integrity sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==
dependencies:
"@types/unist" "^2"
"@types/ms@*":
version "2.1.0"
- resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78"
+ resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz"
integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==
-"@types/node@*":
- version "25.3.1"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-25.3.1.tgz#82f3f6e30ac3b48560a092d9224a975b5c24e38d"
- integrity sha512-hj9YIJimBCipHVfHKRMnvmHg+wfhKc0o4mTtXh9pKBjC8TLJzz0nzGmLi5UJsYAUgSvXFHgb0V2oY10DUFtImw==
- dependencies:
- undici-types "~7.18.0"
-
-"@types/node@^24.5.2":
+"@types/node@*", "@types/node@^24.5.2":
version "24.10.14"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.14.tgz#374550a07e24c9e4e604ceadfaddec4dd60faa90"
+ resolved "https://registry.npmjs.org/@types/node/-/node-24.10.14.tgz"
integrity sha512-OowOUbD1lBCOFIPOZ8xnMIhgqA4sCutMiYOmPHL1PTLt5+y1XA+g2+yC9OOyz8p+deMZqPZLxfMjYIfrKsPeFg==
dependencies:
undici-types "~7.16.0"
"@types/parse5@^6.0.0":
version "6.0.3"
- resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb"
+ resolved "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz"
integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==
"@types/prop-types@*", "@types/prop-types@^15.0.0":
version "15.7.15"
- resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.15.tgz#e6e5a86d602beaca71ce5163fadf5f95d70931c7"
+ resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz"
integrity sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==
"@types/react-dom@18.2.14":
version "18.2.14"
- resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.14.tgz#c01ba40e5bb57fc1dc41569bb3ccdb19eab1c539"
+ resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.14.tgz"
integrity sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==
dependencies:
"@types/react" "*"
"@types/react-redux@^7.1.20":
version "7.1.34"
- resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.34.tgz#83613e1957c481521e6776beeac4fd506d11bd0e"
+ resolved "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.34.tgz"
integrity sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==
dependencies:
"@types/hoist-non-react-statics" "^3.3.0"
@@ -1779,21 +1764,14 @@
"@types/react-slick@0.23.10":
version "0.23.10"
- resolved "https://registry.yarnpkg.com/@types/react-slick/-/react-slick-0.23.10.tgz#56126e6e4e95cdce7771535b2811c2c1931a7caa"
+ resolved "https://registry.npmjs.org/@types/react-slick/-/react-slick-0.23.10.tgz"
integrity sha512-ZiqdencANDZy6sWOWJ54LDvebuXFEhDlHtXU9FFipQR2BcYU2QJxZhvJPW6YK7cocibUiNn+YvDTbt1HtCIBVA==
dependencies:
"@types/react" "*"
-"@types/react@*":
- version "19.2.14"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.14.tgz#39604929b5e3957e3a6fa0001dafb17c7af70bad"
- integrity sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==
- dependencies:
- csstype "^3.2.2"
-
-"@types/react@18.2.34":
+"@types/react@*", "@types/react@18.2.34":
version "18.2.34"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.34.tgz#aed20f19473721ba328feb99d1ec3307ebc1a8dd"
+ resolved "https://registry.npmjs.org/@types/react/-/react-18.2.34.tgz"
integrity sha512-U6eW/alrRk37FU/MS2RYMjx0Va2JGIVXELTODaTIYgvWGCV4Y4TfTUzG8DdmpDNIT0Xpj/R7GfyHOJJrDttcvg==
dependencies:
"@types/prop-types" "*"
@@ -1802,46 +1780,46 @@
"@types/scheduler@*":
version "0.26.0"
- resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.26.0.tgz#2b7183b9bbb622d130b23bedf06899b7fec7eed5"
+ resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.26.0.tgz"
integrity sha512-WFHp9YUJQ6CKshqoC37iOlHnQSmxNc795UhB26CyBBttrN9svdIrUjl/NjnNmfcwtncN0h/0PPAFWv9ovP8mLA==
"@types/sinonjs__fake-timers@8.1.1":
version "8.1.1"
- resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3"
+ resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz"
integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==
"@types/sizzle@^2.3.2":
version "2.3.10"
- resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.10.tgz#277a542aff6776d8a9b15f2ac682a663e3e94bbd"
+ resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.10.tgz"
integrity sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==
"@types/swiper@6.0.0":
version "6.0.0"
- resolved "https://registry.yarnpkg.com/@types/swiper/-/swiper-6.0.0.tgz#9934ecd569611b660a2a9bf200f25ce5ba4b4d63"
+ resolved "https://registry.npmjs.org/@types/swiper/-/swiper-6.0.0.tgz"
integrity sha512-QPZRgxZ+ivXXtzV43B3LxpXUIC7FE/EoKM+rtxngmgt2M7eeUYypZhyqZD8UxJtlBcUDw/ATGoVeSNpvBBrz2w==
dependencies:
swiper "*"
"@types/unist@^2", "@types/unist@^2.0.0":
version "2.0.11"
- resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4"
+ resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz"
integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==
"@types/uuid@8.3.1":
version "8.3.1"
- resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.1.tgz#1a32969cf8f0364b3d8c8af9cc3555b7805df14f"
+ resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz"
integrity sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==
"@types/yauzl@^2.9.1":
version "2.10.3"
- resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999"
+ resolved "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz"
integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==
dependencies:
"@types/node" "*"
"@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0":
version "8.56.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz#b1ce606d87221daec571e293009675992f0aae76"
+ resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz"
integrity sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==
dependencies:
"@eslint-community/regexpp" "^4.12.2"
@@ -1855,7 +1833,7 @@
"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0":
version "8.56.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.56.1.tgz#21d13b3d456ffb08614c1d68bb9a4f8d9237cdc7"
+ resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz"
integrity sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==
dependencies:
"@typescript-eslint/scope-manager" "8.56.1"
@@ -1866,7 +1844,7 @@
"@typescript-eslint/project-service@8.56.1":
version "8.56.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.56.1.tgz#65c8d645f028b927bfc4928593b54e2ecd809244"
+ resolved "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz"
integrity sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==
dependencies:
"@typescript-eslint/tsconfig-utils" "^8.56.1"
@@ -1875,7 +1853,7 @@
"@typescript-eslint/scope-manager@8.56.1":
version "8.56.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz#254df93b5789a871351335dd23e20bc164060f24"
+ resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz"
integrity sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==
dependencies:
"@typescript-eslint/types" "8.56.1"
@@ -1883,12 +1861,12 @@
"@typescript-eslint/tsconfig-utils@8.56.1", "@typescript-eslint/tsconfig-utils@^8.56.1":
version "8.56.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz#1afa830b0fada5865ddcabdc993b790114a879b7"
+ resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz"
integrity sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==
"@typescript-eslint/type-utils@8.56.1":
version "8.56.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz#7a6c4fabf225d674644931e004302cbbdd2f2e24"
+ resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz"
integrity sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==
dependencies:
"@typescript-eslint/types" "8.56.1"
@@ -1899,12 +1877,12 @@
"@typescript-eslint/types@8.56.1", "@typescript-eslint/types@^8.56.1":
version "8.56.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.56.1.tgz#975e5942bf54895291337c91b9191f6eb0632ab9"
+ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz"
integrity sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==
"@typescript-eslint/typescript-estree@8.56.1":
version "8.56.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz#3b9e57d8129a860c50864c42188f761bdef3eab0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz"
integrity sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==
dependencies:
"@typescript-eslint/project-service" "8.56.1"
@@ -1919,7 +1897,7 @@
"@typescript-eslint/utils@8.56.1":
version "8.56.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.56.1.tgz#5a86acaf9f1b4c4a85a42effb217f73059f6deb7"
+ resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz"
integrity sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==
dependencies:
"@eslint-community/eslint-utils" "^4.9.1"
@@ -1929,7 +1907,7 @@
"@typescript-eslint/visitor-keys@8.56.1":
version "8.56.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz#50e03475c33a42d123dc99e63acf1841c0231f87"
+ resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz"
integrity sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==
dependencies:
"@typescript-eslint/types" "8.56.1"
@@ -2019,7 +1997,7 @@
"@unrs/resolver-binding-win32-arm64-msvc@1.11.1":
version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz#ce5735e600e4c2fbb409cd051b3b7da4a399af35"
+ resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz"
integrity sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==
"@unrs/resolver-binding-win32-ia32-msvc@1.11.1":
@@ -2034,34 +2012,34 @@
"@xstate/fsm@^1.4.0":
version "1.6.5"
- resolved "https://registry.yarnpkg.com/@xstate/fsm/-/fsm-1.6.5.tgz#f599e301997ad7e3c572a0b1ff0696898081bea5"
+ resolved "https://registry.npmjs.org/@xstate/fsm/-/fsm-1.6.5.tgz"
integrity sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw==
acorn-jsx@^5.3.2:
version "5.3.2"
- resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+ resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn-walk@^8.1.1:
version "8.3.5"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.5.tgz#8a6b8ca8fc5b34685af15dabb44118663c296496"
+ resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz"
integrity sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==
dependencies:
acorn "^8.11.0"
acorn@^8.11.0, acorn@^8.15.0, acorn@^8.4.1:
version "8.16.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz"
integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==
agent-base@^7.1.0, agent-base@^7.1.2:
version "7.1.4"
- resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8"
+ resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz"
integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==
aggregate-error@^3.0.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz"
integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
dependencies:
clean-stack "^2.0.0"
@@ -2069,12 +2047,12 @@ aggregate-error@^3.0.0:
ajv-keywords@^3.5.2:
version "3.5.2"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
+ resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
ajv@^6.12.4, ajv@^6.14.0:
version "6.14.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz"
integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==
dependencies:
fast-deep-equal "^3.1.1"
@@ -2084,31 +2062,31 @@ ajv@^6.12.4, ajv@^6.14.0:
ansi-colors@^4.1.1:
version "4.1.3"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
+ resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz"
integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
ansi-escapes@^4.3.0:
version "4.3.2"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
+ resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz"
integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
dependencies:
type-fest "^0.21.3"
ansi-regex@^5.0.1:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
anymatch@~3.1.2:
version "3.1.3"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz"
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
dependencies:
normalize-path "^3.0.0"
@@ -2116,32 +2094,32 @@ anymatch@~3.1.2:
arch@^2.2.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11"
+ resolved "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz"
integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
arg@^4.1.0:
version "4.1.3"
- resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
+ resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz"
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
arg@^5.0.2:
version "5.0.2"
- resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
+ resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz"
integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
argparse@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
aria-query@^5.3.2:
version "5.3.2"
- resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59"
+ resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz"
integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==
array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b"
+ resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz"
integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==
dependencies:
call-bound "^1.0.3"
@@ -2149,7 +2127,7 @@ array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2:
array-includes@^3.1.6, array-includes@^3.1.8, array-includes@^3.1.9:
version "3.1.9"
- resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a"
+ resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz"
integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==
dependencies:
call-bind "^1.0.8"
@@ -2163,7 +2141,7 @@ array-includes@^3.1.6, array-includes@^3.1.8, array-includes@^3.1.9:
array.prototype.findlast@^1.2.5:
version "1.2.5"
- resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904"
+ resolved "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz"
integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==
dependencies:
call-bind "^1.0.7"
@@ -2175,7 +2153,7 @@ array.prototype.findlast@^1.2.5:
array.prototype.findlastindex@^1.2.6:
version "1.2.6"
- resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564"
+ resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz"
integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==
dependencies:
call-bind "^1.0.8"
@@ -2188,7 +2166,7 @@ array.prototype.findlastindex@^1.2.6:
array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.3:
version "1.3.3"
- resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5"
+ resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz"
integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==
dependencies:
call-bind "^1.0.8"
@@ -2198,7 +2176,7 @@ array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.3:
array.prototype.flatmap@^1.3.2, array.prototype.flatmap@^1.3.3:
version "1.3.3"
- resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b"
+ resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz"
integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==
dependencies:
call-bind "^1.0.8"
@@ -2208,7 +2186,7 @@ array.prototype.flatmap@^1.3.2, array.prototype.flatmap@^1.3.3:
array.prototype.tosorted@^1.1.4:
version "1.1.4"
- resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc"
+ resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz"
integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==
dependencies:
call-bind "^1.0.7"
@@ -2219,7 +2197,7 @@ array.prototype.tosorted@^1.1.4:
arraybuffer.prototype.slice@^1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c"
+ resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz"
integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==
dependencies:
array-buffer-byte-length "^1.0.1"
@@ -2232,85 +2210,85 @@ arraybuffer.prototype.slice@^1.0.4:
asn1@~0.2.3:
version "0.2.6"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d"
+ resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz"
integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
dependencies:
safer-buffer "~2.1.0"
assert-plus@1.0.0, assert-plus@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"
integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==
ast-types-flow@^0.0.8:
version "0.0.8"
- resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6"
+ resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz"
integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==
ast-types@^0.13.4:
version "0.13.4"
- resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782"
+ resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz"
integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==
dependencies:
tslib "^2.0.1"
astral-regex@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
+ resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz"
integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
async-function@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b"
+ resolved "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz"
integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==
async@^2.1.1:
version "2.6.4"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221"
+ resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz"
integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
dependencies:
lodash "^4.17.14"
async@^3.2.0:
version "3.2.6"
- resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce"
+ resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz"
integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==
asynckit@^0.4.0:
version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
at-least-node@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz"
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
available-typed-arrays@^1.0.7:
version "1.0.7"
- resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
+ resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz"
integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
dependencies:
possible-typed-array-names "^1.0.0"
aws-sign2@~0.7.0:
version "0.7.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+ resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz"
integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==
aws4@^1.8.0:
version "1.13.2"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.2.tgz#0aa167216965ac9474ccfa83892cfb6b3e1e52ef"
+ resolved "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz"
integrity sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==
axe-core@^4.10.0:
version "4.11.1"
- resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.11.1.tgz#052ff9b2cbf543f5595028b583e4763b40c78ea7"
+ resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.11.1.tgz"
integrity sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==
axios@^1.13.5:
version "1.13.5"
- resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.5.tgz#5e464688fa127e11a660a2c49441c009f6567a43"
+ resolved "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz"
integrity sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==
dependencies:
follow-redirects "^1.15.11"
@@ -2319,17 +2297,17 @@ axios@^1.13.5:
axobject-query@^4.1.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.1.0.tgz#28768c76d0e3cff21bc62a9e2d0b6ac30042a1ee"
+ resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz"
integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==
b4a@^1.6.4:
version "1.8.0"
- resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.8.0.tgz#1ca3ba0edc9469aaabef5647e769a83d50180b1a"
+ resolved "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz"
integrity sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==
babel-loader@8.2.5:
version "8.2.5"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e"
+ resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz"
integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==
dependencies:
find-cache-dir "^3.3.1"
@@ -2339,7 +2317,7 @@ babel-loader@8.2.5:
babel-plugin-polyfill-corejs2@^0.4.15:
version "0.4.17"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz#198f970f1c99a856b466d1187e88ce30bd199d91"
+ resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz"
integrity sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==
dependencies:
"@babel/compat-data" "^7.28.6"
@@ -2348,7 +2326,7 @@ babel-plugin-polyfill-corejs2@^0.4.15:
babel-plugin-polyfill-corejs3@^0.14.0:
version "0.14.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz#6ac08d2f312affb70c4c69c0fbba4cb417ee5587"
+ resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz"
integrity sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==
dependencies:
"@babel/helper-define-polyfill-provider" "^0.6.8"
@@ -2356,34 +2334,34 @@ babel-plugin-polyfill-corejs3@^0.14.0:
babel-plugin-polyfill-regenerator@^0.6.6:
version "0.6.8"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz#8a6bfd5dd54239362b3d06ce47ac52b2d95d7721"
+ resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz"
integrity sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==
dependencies:
"@babel/helper-define-polyfill-provider" "^0.6.8"
bail@^2.0.0:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d"
+ resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz"
integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==
balanced-match@^1.0.0:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
balanced-match@^4.0.2:
version "4.0.4"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a"
+ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz"
integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==
bare-events@^2.5.4, bare-events@^2.7.0:
version "2.8.2"
- resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.8.2.tgz#7b3e10bd8e1fc80daf38bb516921678f566ab89f"
+ resolved "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz"
integrity sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==
bare-fs@^4.0.1:
version "4.5.5"
- resolved "https://registry.yarnpkg.com/bare-fs/-/bare-fs-4.5.5.tgz#589a8f87a32af0266aa474413c8d7d11d50e4a65"
+ resolved "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.5.tgz"
integrity sha512-XvwYM6VZqKoqDll8BmSww5luA5eflDzY0uEFfBJtFKe4PAAtxBjU3YIxzIBzhyaEQBy1VXEQBto4cpN5RZJw+w==
dependencies:
bare-events "^2.5.4"
@@ -2394,19 +2372,19 @@ bare-fs@^4.0.1:
bare-os@^3.0.1:
version "3.7.0"
- resolved "https://registry.yarnpkg.com/bare-os/-/bare-os-3.7.0.tgz#23c60064e53400db1550ef4b2987fdc42ee399b2"
+ resolved "https://registry.npmjs.org/bare-os/-/bare-os-3.7.0.tgz"
integrity sha512-64Rcwj8qlnTZU8Ps6JJEdSmxBEUGgI7g8l+lMtsJLl4IsfTcHMTfJ188u2iGV6P6YPRZrtv72B2kjn+hp+Yv3g==
bare-path@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/bare-path/-/bare-path-3.0.0.tgz#b59d18130ba52a6af9276db3e96a2e3d3ea52178"
+ resolved "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz"
integrity sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==
dependencies:
bare-os "^3.0.1"
bare-stream@^2.6.4:
version "2.8.0"
- resolved "https://registry.yarnpkg.com/bare-stream/-/bare-stream-2.8.0.tgz#3ac6141a65d097fd2bf6e472c848c5d800d47df9"
+ resolved "https://registry.npmjs.org/bare-stream/-/bare-stream-2.8.0.tgz"
integrity sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA==
dependencies:
streamx "^2.21.0"
@@ -2414,66 +2392,66 @@ bare-stream@^2.6.4:
bare-url@^2.2.2:
version "2.3.2"
- resolved "https://registry.yarnpkg.com/bare-url/-/bare-url-2.3.2.tgz#4aef382efa662b2180a6fe4ca07a71b39bdf7ca3"
+ resolved "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz"
integrity sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==
dependencies:
bare-path "^3.0.0"
base64-arraybuffer@^1.0.1, base64-arraybuffer@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
+ resolved "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz"
integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
base64-js@^1.3.1:
version "1.5.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
baseline-browser-mapping@^2.9.0:
version "2.10.0"
- resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz#5b09935025bf8a80e29130251e337c6a7fc8cbb9"
+ resolved "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz"
integrity sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==
basic-ftp@^5.0.2:
version "5.2.0"
- resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.2.0.tgz#7c2dff63c918bde60e6bad1f2ff93dcf5137a40a"
+ resolved "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz"
integrity sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==
bcrypt-pbkdf@^1.0.0:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
+ resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz"
integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==
dependencies:
tweetnacl "^0.14.3"
big.js@^5.2.2:
version "5.2.2"
- resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz"
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
binary-extensions@^2.0.0:
version "2.3.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
+ resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz"
integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
blob-util@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb"
+ resolved "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz"
integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==
bluebird@3.7.2, bluebird@^3.7.2:
version "3.7.2"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
boolbase@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
brace-expansion@^1.1.7:
version "1.1.12"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843"
+ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz"
integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==
dependencies:
balanced-match "^1.0.0"
@@ -2481,21 +2459,21 @@ brace-expansion@^1.1.7:
brace-expansion@^5.0.2:
version "5.0.3"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.3.tgz#6a9c6c268f85b53959ec527aeafe0f7300258eef"
+ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz"
integrity sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==
dependencies:
balanced-match "^4.0.2"
braces@^3.0.3, braces@~3.0.2:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
+ resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz"
integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
dependencies:
fill-range "^7.1.1"
browserslist@^4.24.0, browserslist@^4.28.1:
version "4.28.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95"
+ resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz"
integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==
dependencies:
baseline-browser-mapping "^2.9.0"
@@ -2506,12 +2484,12 @@ browserslist@^4.24.0, browserslist@^4.28.1:
buffer-crc32@~0.2.3:
version "0.2.13"
- resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+ resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz"
integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
buffer@^5.2.1, buffer@^5.7.1:
version "5.7.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz"
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
dependencies:
base64-js "^1.3.1"
@@ -2519,19 +2497,19 @@ buffer@^5.2.1, buffer@^5.7.1:
busboy@1.6.0:
version "1.6.0"
- resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
+ resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz"
integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==
dependencies:
streamsearch "^1.1.0"
cachedir@^2.3.0:
version "2.4.0"
- resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d"
+ resolved "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz"
integrity sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==
call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
+ resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz"
integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
dependencies:
es-errors "^1.3.0"
@@ -2539,7 +2517,7 @@ call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-
call-bind@^1.0.7, call-bind@^1.0.8:
version "1.0.8"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
+ resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz"
integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
dependencies:
call-bind-apply-helpers "^1.0.0"
@@ -2549,7 +2527,7 @@ call-bind@^1.0.7, call-bind@^1.0.8:
call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a"
+ resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz"
integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
dependencies:
call-bind-apply-helpers "^1.0.2"
@@ -2557,27 +2535,27 @@ call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4:
callsites@^3.0.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
camelcase@^6.2.0:
version "6.3.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+ resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001759:
version "1.0.30001774"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz#0e576b6f374063abcd499d202b9ba1301be29b70"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz"
integrity sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==
caseless@~0.12.0:
version "0.12.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+ resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz"
integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
chalk@^4.0.0, chalk@^4.1.0:
version "4.1.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
@@ -2585,17 +2563,17 @@ chalk@^4.0.0, chalk@^4.1.0:
character-entities@^2.0.0:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22"
+ resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz"
integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
check-more-types@2.24.0, check-more-types@^2.24.0:
version "2.24.0"
- resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
+ resolved "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz"
integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==
"chokidar@>=2.0.0 <4.0.0":
version "3.6.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
+ resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz"
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
dependencies:
anymatch "~3.1.2"
@@ -2610,7 +2588,7 @@ check-more-types@2.24.0, check-more-types@^2.24.0:
chromium-bidi@0.6.3:
version "0.6.3"
- resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.6.3.tgz#363fe1ca6b9c6122b9f1b2a47f9449ecf712f755"
+ resolved "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz"
integrity sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==
dependencies:
mitt "3.0.1"
@@ -2619,34 +2597,29 @@ chromium-bidi@0.6.3:
ci-info@^4.1.0:
version "4.4.0"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.4.0.tgz#7d54eff9f54b45b62401c26032696eb59c8bd18c"
+ resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz"
integrity sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==
-classnames@2.3.1:
+classnames@2.3.1, classnames@^2.2.5, classnames@^2.3.0:
version "2.3.1"
- resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e"
+ resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz"
integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==
-classnames@^2.2.5, classnames@^2.3.0:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b"
- integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==
-
clean-stack@^2.0.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz"
integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
cli-cursor@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz"
integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
dependencies:
restore-cursor "^3.1.0"
cli-table3@0.6.1:
version "0.6.1"
- resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8"
+ resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz"
integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==
dependencies:
string-width "^4.2.0"
@@ -2655,7 +2628,7 @@ cli-table3@0.6.1:
cli-truncate@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
+ resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz"
integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==
dependencies:
slice-ansi "^3.0.0"
@@ -2663,12 +2636,12 @@ cli-truncate@^2.1.0:
client-only@0.0.1:
version "0.0.1"
- resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
+ resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz"
integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
cliui@^8.0.1:
version "8.0.1"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+ resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz"
integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
dependencies:
string-width "^4.2.0"
@@ -2677,19 +2650,19 @@ cliui@^8.0.1:
color-convert@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
dependencies:
color-name "~1.1.4"
color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-string@^1.9.0:
version "1.9.1"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
+ resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz"
integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
dependencies:
color-name "^1.0.0"
@@ -2697,7 +2670,7 @@ color-string@^1.9.0:
color@^4.2.3:
version "4.2.3"
- resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
+ resolved "https://registry.npmjs.org/color/-/color-4.2.3.tgz"
integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==
dependencies:
color-convert "^2.0.1"
@@ -2705,86 +2678,86 @@ color@^4.2.3:
colorette@^2.0.16:
version "2.0.20"
- resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a"
+ resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz"
integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==
colors@1.4.0, colors@^1.1.2:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+ resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz"
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
combined-stream@^1.0.8, combined-stream@~1.0.6:
version "1.0.8"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
comma-separated-tokens@^2.0.0:
version "2.0.3"
- resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee"
+ resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz"
integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==
commander@^6.2.1:
version "6.2.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
+ resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz"
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
commander@^7.2.0:
version "7.2.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
+ resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
common-tags@^1.8.0:
version "1.8.2"
- resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6"
+ resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz"
integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==
commondir@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz"
integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
concat-map@0.0.1:
version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
convert-source-map@^1.7.0:
version "1.9.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
+ resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
convert-source-map@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
+ resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
cookie@0.6.0:
version "0.6.0"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
+ resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz"
integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
cookie@^0.5.0:
version "0.5.0"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
+ resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz"
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
core-js-compat@^3.48.0:
version "3.49.0"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.49.0.tgz#06145447d92f4aaf258a0c44f24b47afaeaffef6"
+ resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz"
integrity sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==
dependencies:
browserslist "^4.28.1"
core-util-is@1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==
cosmiconfig@^8.1.3:
version "8.3.6"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3"
+ resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz"
integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==
dependencies:
import-fresh "^3.3.0"
@@ -2794,7 +2767,7 @@ cosmiconfig@^8.1.3:
cosmiconfig@^9.0.0:
version "9.0.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d"
+ resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz"
integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==
dependencies:
env-paths "^2.2.1"
@@ -2804,19 +2777,19 @@ cosmiconfig@^9.0.0:
create-require@^1.1.0:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
+ resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz"
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
cross-env@7.0.3:
version "7.0.3"
- resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
+ resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz"
integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
dependencies:
cross-spawn "^7.0.1"
cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.6:
version "7.0.6"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
+ resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz"
integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
dependencies:
path-key "^3.1.0"
@@ -2825,14 +2798,14 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.6:
css-box-model@^1.2.0:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1"
+ resolved "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz"
integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==
dependencies:
tiny-invariant "^1.0.6"
css-jss@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/css-jss/-/css-jss-10.10.0.tgz#bd51fbd255cc24597ac0f0f32368394794d37ef3"
+ resolved "https://registry.npmjs.org/css-jss/-/css-jss-10.10.0.tgz"
integrity sha512-YyMIS/LsSKEGXEaVJdjonWe18p4vXLo8CMA4FrW/kcaEyqdIGKCFXao31gbJddXEdIxSXFFURWrenBJPlKTgAA==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -2841,14 +2814,14 @@ css-jss@10.10.0:
css-line-break@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0"
+ resolved "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz"
integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==
dependencies:
utrie "^1.0.2"
css-select@^4.2.1:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b"
+ resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz"
integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==
dependencies:
boolbase "^1.0.0"
@@ -2859,7 +2832,7 @@ css-select@^4.2.1:
css-select@^5.1.0:
version "5.2.2"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.2.2.tgz#01b6e8d163637bb2dd6c982ca4ed65863682786e"
+ resolved "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz"
integrity sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==
dependencies:
boolbase "^1.0.0"
@@ -2870,7 +2843,7 @@ css-select@^5.1.0:
css-tree@^2.3.1:
version "2.3.1"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20"
+ resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz"
integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==
dependencies:
mdn-data "2.0.30"
@@ -2878,7 +2851,7 @@ css-tree@^2.3.1:
css-tree@~2.2.0:
version "2.2.1"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032"
+ resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz"
integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==
dependencies:
mdn-data "2.0.28"
@@ -2886,7 +2859,7 @@ css-tree@~2.2.0:
css-vendor@^2.0.8:
version "2.0.8"
- resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.8.tgz#e47f91d3bd3117d49180a3c935e62e3d9f7f449d"
+ resolved "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz"
integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==
dependencies:
"@babel/runtime" "^7.8.3"
@@ -2894,29 +2867,24 @@ css-vendor@^2.0.8:
css-what@^6.0.1, css-what@^6.1.0:
version "6.2.2"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea"
+ resolved "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz"
integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==
csso@^5.0.5:
version "5.0.5"
- resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6"
+ resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz"
integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==
dependencies:
css-tree "~2.2.0"
-csstype@^3.0.2, csstype@^3.2.2:
+csstype@^3.0.2:
version "3.2.3"
- resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a"
+ resolved "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz"
integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==
-cypress-real-events@^1.15.0:
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/cypress-real-events/-/cypress-real-events-1.15.0.tgz#b84ed97455238139ac3d0c8f803991b30f22fc8a"
- integrity sha512-in98xxTnnM9Z7lZBvvVozm99PBT2eEOjXRG5LKWyYvQnj9mGWXMiPNpfw7e7WiraBFh7XlXIxnE9Cu5o+52kQQ==
-
cypress-social-logins@^1.14.2:
version "1.14.2"
- resolved "https://registry.yarnpkg.com/cypress-social-logins/-/cypress-social-logins-1.14.2.tgz#aa73bf06fa3f825cfaa97eb7da96ca1c4de9ef73"
+ resolved "https://registry.npmjs.org/cypress-social-logins/-/cypress-social-logins-1.14.2.tgz"
integrity sha512-acTzY6axp/GJnmxCA6aHiXxg6F2vIfsa6YVvTvvu4P2MLc/cdXqhbh5JJsk5r3iGLTQwLAIos8YZuAik6eWqVQ==
dependencies:
otplib "^12.0.1"
@@ -2924,14 +2892,14 @@ cypress-social-logins@^1.14.2:
cypress-v10-preserve-cookie@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/cypress-v10-preserve-cookie/-/cypress-v10-preserve-cookie-1.2.1.tgz#7ddadb253d7cfd5570bff7938806c557eac895cc"
+ resolved "https://registry.npmjs.org/cypress-v10-preserve-cookie/-/cypress-v10-preserve-cookie-1.2.1.tgz"
integrity sha512-8JAfcrDrCCiFyce7ygtqO9Gad0yzFla9WNDGA9j4sz6kLSvh2m2fWcBcON2VwWw5GfRDXmpe+yzT2r8Mu3jGdA==
dependencies:
debug "^4.3.4"
cypress@^14.5.2:
version "14.5.4"
- resolved "https://registry.yarnpkg.com/cypress/-/cypress-14.5.4.tgz#d821fbb6220c3328e7413acc7724b75319c9e64d"
+ resolved "https://registry.npmjs.org/cypress/-/cypress-14.5.4.tgz"
integrity sha512-0Dhm4qc9VatOcI1GiFGVt8osgpPdqJLHzRwcAB5MSD/CAAts3oybvPUPawHyvJZUd8osADqZe/xzMsZ8sDTjXw==
dependencies:
"@cypress/request" "^3.0.9"
@@ -2981,24 +2949,24 @@ cypress@^14.5.2:
damerau-levenshtein@^1.0.8:
version "1.0.8"
- resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
+ resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz"
integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
dashdash@^1.12.0:
version "1.14.1"
- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz"
integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==
dependencies:
assert-plus "^1.0.0"
data-uri-to-buffer@^6.0.2:
version "6.0.2"
- resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b"
+ resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz"
integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==
data-view-buffer@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570"
+ resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz"
integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==
dependencies:
call-bound "^1.0.3"
@@ -3007,7 +2975,7 @@ data-view-buffer@^1.0.2:
data-view-byte-length@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735"
+ resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz"
integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==
dependencies:
call-bound "^1.0.3"
@@ -3016,7 +2984,7 @@ data-view-byte-length@^1.0.2:
data-view-byte-offset@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191"
+ resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz"
integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==
dependencies:
call-bound "^1.0.2"
@@ -3025,50 +2993,50 @@ data-view-byte-offset@^1.0.1:
date-fns@2.30.0:
version "2.30.0"
- resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0"
+ resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz"
integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==
dependencies:
"@babel/runtime" "^7.21.0"
dayjs@^1.10.4:
version "1.11.19"
- resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.19.tgz#15dc98e854bb43917f12021806af897c58ae2938"
+ resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz"
integrity sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==
debug@4, debug@4.4.3, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6, debug@^4.4.0, debug@^4.4.3:
version "4.4.3"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
+ resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz"
integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
dependencies:
ms "^2.1.3"
debug@^3.1.0, debug@^3.2.7:
version "3.2.7"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
dependencies:
ms "^2.1.1"
decode-named-character-reference@^1.0.0:
version "1.3.0"
- resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz#3e40603760874c2e5867691b599d73a7da25b53f"
+ resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz"
integrity sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==
dependencies:
character-entities "^2.0.0"
deep-is@^0.1.3:
version "0.1.4"
- resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
+ resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
deepmerge@^4.3.1:
version "4.3.1"
- resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
+ resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz"
integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
define-data-property@^1.0.1, define-data-property@^1.1.4:
version "1.1.4"
- resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
+ resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz"
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
dependencies:
es-define-property "^1.0.0"
@@ -3077,7 +3045,7 @@ define-data-property@^1.0.1, define-data-property@^1.1.4:
define-properties@^1.1.3, define-properties@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
+ resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz"
integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
dependencies:
define-data-property "^1.0.1"
@@ -3086,7 +3054,7 @@ define-properties@^1.1.3, define-properties@^1.2.1:
degenerator@^5.0.0:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5"
+ resolved "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz"
integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==
dependencies:
ast-types "^0.13.4"
@@ -3095,44 +3063,44 @@ degenerator@^5.0.0:
delayed-stream@~1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
dequal@^2.0.0:
version "2.0.3"
- resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
+ resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz"
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
detect-libc@^2.0.3:
version "2.1.2"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad"
+ resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz"
integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==
devtools-protocol@0.0.1312386:
version "0.0.1312386"
- resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz#5ab824d6f1669ec6c6eb0fba047e73601d969052"
+ resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz"
integrity sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==
diff@^4.0.1:
version "4.0.4"
- resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.4.tgz#7a6dbfda325f25f07517e9b518f897c08332e07d"
+ resolved "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz"
integrity sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==
diff@^5.0.0:
version "5.2.2"
- resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.2.tgz#0a4742797281d09cfa699b79ea32d27723623bad"
+ resolved "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz"
integrity sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==
doctrine@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+ resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz"
integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
dependencies:
esutils "^2.0.2"
dom-serializer@^1.0.1:
version "1.4.1"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30"
+ resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz"
integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
dependencies:
domelementtype "^2.0.1"
@@ -3141,7 +3109,7 @@ dom-serializer@^1.0.1:
dom-serializer@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
+ resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz"
integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
dependencies:
domelementtype "^2.3.0"
@@ -3150,26 +3118,26 @@ dom-serializer@^2.0.0:
domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0:
version "2.3.0"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
+ resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz"
integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
domhandler@^4.2.0, domhandler@^4.3.1:
version "4.3.1"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c"
+ resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz"
integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
dependencies:
domelementtype "^2.2.0"
domhandler@^5.0.2, domhandler@^5.0.3:
version "5.0.3"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31"
+ resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz"
integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
dependencies:
domelementtype "^2.3.0"
domutils@^2.8.0:
version "2.8.0"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
+ resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz"
integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
dependencies:
dom-serializer "^1.0.1"
@@ -3178,7 +3146,7 @@ domutils@^2.8.0:
domutils@^3.0.1:
version "3.2.2"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78"
+ resolved "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz"
integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==
dependencies:
dom-serializer "^2.0.0"
@@ -3187,7 +3155,7 @@ domutils@^3.0.1:
dot-case@^3.0.4:
version "3.0.4"
- resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
+ resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz"
integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
dependencies:
no-case "^3.0.4"
@@ -3195,12 +3163,12 @@ dot-case@^3.0.4:
dotenv@^16.4.5:
version "16.6.1"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020"
+ resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz"
integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==
dunder-proto@^1.0.0, dunder-proto@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
+ resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz"
integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
dependencies:
call-bind-apply-helpers "^1.0.1"
@@ -3209,12 +3177,12 @@ dunder-proto@^1.0.0, dunder-proto@^1.0.1:
duplexer@~0.1.1:
version "0.1.2"
- resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz"
integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
ecc-jsbn@~0.1.1:
version "0.1.2"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
+ resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz"
integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==
dependencies:
jsbn "~0.1.0"
@@ -3222,39 +3190,39 @@ ecc-jsbn@~0.1.1:
electron-to-chromium@^1.5.263:
version "1.5.302"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz#032a5802b31f7119269959c69fe2015d8dad5edb"
+ resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz"
integrity sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==
emoji-regex@^8.0.0:
version "8.0.0"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
emoji-regex@^9.2.2:
version "9.2.2"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
+ resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz"
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
emojis-list@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz"
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
end-of-stream@^1.1.0:
version "1.4.5"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c"
+ resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz"
integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==
dependencies:
once "^1.4.0"
enquire.js@^2.1.6:
version "2.1.6"
- resolved "https://registry.yarnpkg.com/enquire.js/-/enquire.js-2.1.6.tgz#3e8780c9b8b835084c3f60e166dbc3c2a3c89814"
+ resolved "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz"
integrity sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==
enquirer@^2.3.6:
version "2.4.1"
- resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56"
+ resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz"
integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==
dependencies:
ansi-colors "^4.1.1"
@@ -3262,29 +3230,29 @@ enquirer@^2.3.6:
entities@^2.0.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
+ resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
entities@^4.2.0, entities@^4.4.0:
version "4.5.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
+ resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz"
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
env-paths@^2.2.1:
version "2.2.1"
- resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
+ resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz"
integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
error-ex@^1.3.1:
version "1.3.4"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.4.tgz#b3a8d8bb6f92eecc1629e3e27d3c8607a8a32414"
+ resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz"
integrity sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==
dependencies:
is-arrayish "^0.2.1"
es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0, es-abstract@^1.24.1:
version "1.24.1"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.1.tgz#f0c131ed5ea1bb2411134a8dd94def09c46c7899"
+ resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz"
integrity sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==
dependencies:
array-buffer-byte-length "^1.0.2"
@@ -3344,17 +3312,17 @@ es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23
es-define-property@^1.0.0, es-define-property@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
+ resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz"
integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
es-errors@^1.3.0:
version "1.3.0"
- resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
+ resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
es-iterator-helpers@^1.2.1:
version "1.2.2"
- resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz#d979a9f686e2b0b72f88dbead7229924544720bc"
+ resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz"
integrity sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==
dependencies:
call-bind "^1.0.8"
@@ -3376,14 +3344,14 @@ es-iterator-helpers@^1.2.1:
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
+ resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz"
integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
dependencies:
es-errors "^1.3.0"
es-set-tostringtag@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d"
+ resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz"
integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==
dependencies:
es-errors "^1.3.0"
@@ -3393,14 +3361,14 @@ es-set-tostringtag@^2.1.0:
es-shim-unscopables@^1.0.2, es-shim-unscopables@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5"
+ resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz"
integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==
dependencies:
hasown "^2.0.2"
es-to-primitive@^1.3.0:
version "1.3.0"
- resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18"
+ resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz"
integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==
dependencies:
is-callable "^1.2.7"
@@ -3409,22 +3377,22 @@ es-to-primitive@^1.3.0:
escalade@^3.1.1, escalade@^3.2.0:
version "3.2.0"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
+ resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz"
integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
escape-string-regexp@^1.0.5:
version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
escape-string-regexp@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
escodegen@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17"
+ resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz"
integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
dependencies:
esprima "^4.0.1"
@@ -3435,7 +3403,7 @@ escodegen@^2.1.0:
eslint-config-next@^15.4.4:
version "15.5.12"
- resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-15.5.12.tgz#63cc156664dcbcb9a2ea04a3e74c3330a6d6a3f9"
+ resolved "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.5.12.tgz"
integrity sha512-ktW3XLfd+ztEltY5scJNjxjHwtKWk6vU2iwzZqSN09UsbBmMeE/cVlJ1yESg6Yx5LW7p/Z8WzUAgYXGLEmGIpg==
dependencies:
"@next/eslint-plugin-next" "15.5.12"
@@ -3451,7 +3419,7 @@ eslint-config-next@^15.4.4:
eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9:
version "0.3.9"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac"
+ resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz"
integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==
dependencies:
debug "^3.2.7"
@@ -3460,7 +3428,7 @@ eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9:
eslint-import-resolver-typescript@^3.5.2:
version "3.10.1"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz#23dac32efa86a88e2b8232eb244ac499ad636db2"
+ resolved "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz"
integrity sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==
dependencies:
"@nolyfill/is-core-module" "1.0.39"
@@ -3473,14 +3441,14 @@ eslint-import-resolver-typescript@^3.5.2:
eslint-module-utils@^2.12.1:
version "2.12.1"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff"
+ resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz"
integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==
dependencies:
debug "^3.2.7"
eslint-plugin-import@^2.31.0:
version "2.32.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980"
+ resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz"
integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==
dependencies:
"@rtsao/scc" "^1.1.0"
@@ -3505,7 +3473,7 @@ eslint-plugin-import@^2.31.0:
eslint-plugin-jsx-a11y@^6.10.0:
version "6.10.2"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#d2812bb23bf1ab4665f1718ea442e8372e638483"
+ resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz"
integrity sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==
dependencies:
aria-query "^5.3.2"
@@ -3526,12 +3494,12 @@ eslint-plugin-jsx-a11y@^6.10.0:
eslint-plugin-react-hooks@^5.0.0:
version "5.2.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz#1be0080901e6ac31ce7971beed3d3ec0a423d9e3"
+ resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz"
integrity sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==
eslint-plugin-react@^7.37.0:
version "7.37.5"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz#2975511472bdda1b272b34d779335c9b0e877065"
+ resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz"
integrity sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==
dependencies:
array-includes "^3.1.8"
@@ -3555,12 +3523,12 @@ eslint-plugin-react@^7.37.0:
eslint-plugin-simple-import-sort@^12.1.1:
version "12.1.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz#e64bfdaf91c5b98a298619aa634a9f7aa43b709e"
+ resolved "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz"
integrity sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==
eslint-scope@^8.4.0:
version "8.4.0"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82"
+ resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz"
integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==
dependencies:
esrecurse "^4.3.0"
@@ -3568,22 +3536,22 @@ eslint-scope@^8.4.0:
eslint-visitor-keys@^3.4.3:
version "3.4.3"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint-visitor-keys@^4.2.1:
version "4.2.1"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz"
integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
eslint-visitor-keys@^5.0.0:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz#9e3c9489697824d2d4ce3a8ad12628f91e9f59be"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz"
integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==
eslint@^9.32.0:
version "9.39.3"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.3.tgz#08d63df1533d7743c0907b32a79a7e134e63ee2f"
+ resolved "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz"
integrity sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==
dependencies:
"@eslint-community/eslint-utils" "^4.8.0"
@@ -3623,7 +3591,7 @@ eslint@^9.32.0:
espree@^10.0.1, espree@^10.4.0:
version "10.4.0"
- resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837"
+ resolved "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz"
integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==
dependencies:
acorn "^8.15.0"
@@ -3632,36 +3600,36 @@ espree@^10.0.1, espree@^10.4.0:
esprima@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esquery@^1.5.0:
version "1.7.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d"
+ resolved "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz"
integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==
dependencies:
estraverse "^5.1.0"
esrecurse@^4.3.0:
version "4.3.0"
- resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
dependencies:
estraverse "^5.2.0"
estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
version "5.3.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
esutils@^2.0.2:
version "2.0.3"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
event-stream@=3.3.4:
version "3.3.4"
- resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
+ resolved "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz"
integrity sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==
dependencies:
duplexer "~0.1.1"
@@ -3674,19 +3642,19 @@ event-stream@=3.3.4:
eventemitter2@6.4.7:
version "6.4.7"
- resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d"
+ resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz"
integrity sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==
events-universal@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/events-universal/-/events-universal-1.0.1.tgz#b56a84fd611b6610e0a2d0f09f80fdf931e2dfe6"
+ resolved "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz"
integrity sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==
dependencies:
bare-events "^2.7.0"
execa@4.1.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
+ resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz"
integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
dependencies:
cross-spawn "^7.0.0"
@@ -3701,7 +3669,7 @@ execa@4.1.0:
execa@5.1.1:
version "5.1.1"
- resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
+ resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz"
integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
dependencies:
cross-spawn "^7.0.3"
@@ -3716,19 +3684,19 @@ execa@5.1.1:
executable@^4.1.1:
version "4.1.1"
- resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c"
+ resolved "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz"
integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==
dependencies:
pify "^2.2.0"
extend@^3.0.0, extend@~3.0.2:
version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
extract-zip@2.0.1, extract-zip@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
+ resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz"
integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
dependencies:
debug "^4.1.1"
@@ -3737,29 +3705,24 @@ extract-zip@2.0.1, extract-zip@^2.0.1:
optionalDependencies:
"@types/yauzl" "^2.9.1"
-extsprintf@1.3.0:
+extsprintf@1.3.0, extsprintf@^1.2.0:
version "1.3.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+ resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz"
integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==
-extsprintf@^1.2.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07"
- integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==
-
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
fast-fifo@^1.2.0, fast-fifo@^1.3.2:
version "1.3.2"
- resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c"
+ resolved "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz"
integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==
fast-glob@3.3.1:
version "3.3.1"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
+ resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz"
integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
dependencies:
"@nodelib/fs.stat" "^2.0.2"
@@ -3770,57 +3733,57 @@ fast-glob@3.3.1:
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
fast-levenshtein@^2.0.6:
version "2.0.6"
- resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
fastq@^1.6.0:
version "1.20.1"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675"
+ resolved "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz"
integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==
dependencies:
reusify "^1.0.4"
fd-slicer@~1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
+ resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz"
integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
dependencies:
pend "~1.2.0"
fdir@^6.5.0:
version "6.5.0"
- resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350"
+ resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz"
integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==
figures@^3.2.0:
version "3.2.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
+ resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz"
integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
dependencies:
escape-string-regexp "^1.0.5"
file-entry-cache@^8.0.0:
version "8.0.0"
- resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
+ resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz"
integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
dependencies:
flat-cache "^4.0.0"
fill-range@^7.1.1:
version "7.1.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
+ resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz"
integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
dependencies:
to-regex-range "^5.0.1"
find-cache-dir@^3.3.1:
version "3.3.2"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
+ resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz"
integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
dependencies:
commondir "^1.0.1"
@@ -3829,7 +3792,7 @@ find-cache-dir@^3.3.1:
find-up@6.3.0:
version "6.3.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz"
integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==
dependencies:
locate-path "^7.1.0"
@@ -3837,7 +3800,7 @@ find-up@6.3.0:
find-up@^4.0.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
dependencies:
locate-path "^5.0.0"
@@ -3845,7 +3808,7 @@ find-up@^4.0.0:
find-up@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
dependencies:
locate-path "^6.0.0"
@@ -3853,7 +3816,7 @@ find-up@^5.0.0:
flat-cache@^4.0.0:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
+ resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz"
integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
dependencies:
flatted "^3.2.9"
@@ -3861,29 +3824,29 @@ flat-cache@^4.0.0:
flatted@^3.2.9:
version "3.3.3"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358"
+ resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz"
integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==
follow-redirects@^1.15.11:
version "1.15.11"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340"
+ resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz"
integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==
for-each@^0.3.3, for-each@^0.3.5:
version "0.3.5"
- resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47"
+ resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz"
integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==
dependencies:
is-callable "^1.2.7"
forever-agent@~0.6.1:
version "0.6.1"
- resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"
integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==
form-data@^4.0.5, form-data@~4.0.4:
version "4.0.5"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053"
+ resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz"
integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==
dependencies:
asynckit "^0.4.0"
@@ -3894,12 +3857,12 @@ form-data@^4.0.5, form-data@~4.0.4:
from@~0:
version "0.1.7"
- resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
+ resolved "https://registry.npmjs.org/from/-/from-0.1.7.tgz"
integrity sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==
fs-extra@^9.1.0:
version "9.1.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
+ resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz"
integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
dependencies:
at-least-node "^1.0.0"
@@ -3909,7 +3872,7 @@ fs-extra@^9.1.0:
fs.realpath@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
@@ -3919,12 +3882,12 @@ fsevents@~2.3.2:
function-bind@^1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
function.prototype.name@^1.1.6, function.prototype.name@^1.1.8:
version "1.1.8"
- resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78"
+ resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz"
integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==
dependencies:
call-bind "^1.0.8"
@@ -3936,22 +3899,22 @@ function.prototype.name@^1.1.6, function.prototype.name@^1.1.8:
functions-have-names@^1.2.3:
version "1.2.3"
- resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
+ resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz"
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
generator-function@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2"
+ resolved "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz"
integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==
gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
- resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
geoip-lite@1.4.2:
version "1.4.2"
- resolved "https://registry.yarnpkg.com/geoip-lite/-/geoip-lite-1.4.2.tgz#f41dc50086cce3bc31a6d2d578cad1c37f9f17b3"
+ resolved "https://registry.npmjs.org/geoip-lite/-/geoip-lite-1.4.2.tgz"
integrity sha512-1rUNqar68+ldSSlSMdpLZPAM+NRokIDzB2lpQFRHSOaDVqtmy25jTAWe0lM2GqWFeaA35RiLhF8GF0vvL+qOKA==
dependencies:
async "^2.1.1"
@@ -3964,12 +3927,12 @@ geoip-lite@1.4.2:
get-caller-file@^2.0.5:
version "2.0.5"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0:
version "1.3.0"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
+ resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz"
integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
dependencies:
call-bind-apply-helpers "^1.0.2"
@@ -3985,7 +3948,7 @@ get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@
get-proto@^1.0.0, get-proto@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
+ resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz"
integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
dependencies:
dunder-proto "^1.0.1"
@@ -3993,19 +3956,19 @@ get-proto@^1.0.0, get-proto@^1.0.1:
get-stream@^5.0.0, get-stream@^5.1.0:
version "5.2.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz"
integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
dependencies:
pump "^3.0.0"
get-stream@^6.0.0:
version "6.0.1"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+ resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz"
integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
get-symbol-description@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee"
+ resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz"
integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==
dependencies:
call-bound "^1.0.3"
@@ -4014,14 +3977,14 @@ get-symbol-description@^1.1.0:
get-tsconfig@^4.10.0:
version "4.13.6"
- resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.6.tgz#2fbfda558a98a691a798f123afd95915badce876"
+ resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz"
integrity sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==
dependencies:
resolve-pkg-maps "^1.0.0"
get-uri@^6.0.1:
version "6.0.5"
- resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.5.tgz#714892aa4a871db671abc5395e5e9447bc306a16"
+ resolved "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz"
integrity sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==
dependencies:
basic-ftp "^5.0.2"
@@ -4030,35 +3993,35 @@ get-uri@^6.0.1:
getos@^3.2.1:
version "3.2.1"
- resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5"
+ resolved "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz"
integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==
dependencies:
async "^3.2.0"
getpass@^0.1.1:
version "0.1.7"
- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+ resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz"
integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==
dependencies:
assert-plus "^1.0.0"
glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob-parent@^6.0.2:
version "6.0.2"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
dependencies:
is-glob "^4.0.3"
glob@^7.1.3:
version "7.2.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
+ resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
@@ -4070,19 +4033,19 @@ glob@^7.1.3:
global-dirs@^3.0.0:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485"
+ resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz"
integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==
dependencies:
ini "2.0.0"
globals@^14.0.0:
version "14.0.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
+ resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz"
integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
globalthis@^1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
+ resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz"
integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
dependencies:
define-properties "^1.2.1"
@@ -4090,53 +4053,53 @@ globalthis@^1.0.4:
gopd@^1.0.1, gopd@^1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
+ resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz"
integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+ resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
has-bigints@^1.0.2:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe"
+ resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz"
integrity sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==
has-flag@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
+ resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz"
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
dependencies:
es-define-property "^1.0.0"
has-proto@^1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5"
+ resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz"
integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==
dependencies:
dunder-proto "^1.0.0"
has-symbols@^1.0.3, has-symbols@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
+ resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz"
integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
has-tostringtag@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
+ resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz"
integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
dependencies:
has-symbols "^1.0.3"
hasha@5.2.2:
version "5.2.2"
- resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1"
+ resolved "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz"
integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==
dependencies:
is-stream "^2.0.0"
@@ -4144,14 +4107,14 @@ hasha@5.2.2:
hasown@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
+ resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz"
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
dependencies:
function-bind "^1.1.2"
hast-util-from-parse5@^7.0.0:
version "7.1.2"
- resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz#aecfef73e3ceafdfa4550716443e4eb7b02e22b0"
+ resolved "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz"
integrity sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==
dependencies:
"@types/hast" "^2.0.0"
@@ -4164,14 +4127,14 @@ hast-util-from-parse5@^7.0.0:
hast-util-parse-selector@^3.0.0:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz#25ab00ae9e75cbc62cf7a901f68a247eade659e2"
+ resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz"
integrity sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==
dependencies:
"@types/hast" "^2.0.0"
hast-util-raw@^7.2.0:
version "7.2.3"
- resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-7.2.3.tgz#dcb5b22a22073436dbdc4aa09660a644f4991d99"
+ resolved "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz"
integrity sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==
dependencies:
"@types/hast" "^2.0.0"
@@ -4188,7 +4151,7 @@ hast-util-raw@^7.2.0:
hast-util-to-parse5@^7.0.0:
version "7.1.0"
- resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz#c49391bf8f151973e0c9adcd116b561e8daf29f3"
+ resolved "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz"
integrity sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==
dependencies:
"@types/hast" "^2.0.0"
@@ -4200,12 +4163,12 @@ hast-util-to-parse5@^7.0.0:
hast-util-whitespace@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz#0ec64e257e6fc216c7d14c8a1b74d27d650b4557"
+ resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz"
integrity sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==
hastscript@^7.0.0:
version "7.2.0"
- resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-7.2.0.tgz#0eafb7afb153d047077fa2a833dc9b7ec604d10b"
+ resolved "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz"
integrity sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==
dependencies:
"@types/hast" "^2.0.0"
@@ -4216,24 +4179,24 @@ hastscript@^7.0.0:
he@1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+ resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
hoist-non-react-statics@^3.2.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2:
version "3.3.2"
- resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+ resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz"
integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
dependencies:
react-is "^16.7.0"
html-void-elements@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f"
+ resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz"
integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==
html2canvas@^1.4.1:
version "1.4.1"
- resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543"
+ resolved "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz"
integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==
dependencies:
css-line-break "^2.1.0"
@@ -4241,7 +4204,7 @@ html2canvas@^1.4.1:
http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1:
version "7.0.2"
- resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e"
+ resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz"
integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==
dependencies:
agent-base "^7.1.0"
@@ -4249,7 +4212,7 @@ http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1:
http-signature@~1.4.0:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.4.0.tgz#dee5a9ba2bf49416abc544abd6d967f6a94c8c3f"
+ resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz"
integrity sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==
dependencies:
assert-plus "^1.0.0"
@@ -4258,7 +4221,7 @@ http-signature@~1.4.0:
https-proxy-agent@^7.0.6:
version "7.0.6"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9"
+ resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz"
integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==
dependencies:
agent-base "^7.1.2"
@@ -4266,49 +4229,49 @@ https-proxy-agent@^7.0.6:
human-signals@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
+ resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz"
integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
human-signals@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
+ resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz"
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
husky@^9.1.7:
version "9.1.7"
- resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d"
+ resolved "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz"
integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==
hyphenate-style-name@^1.0.3:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz#1797bf50369588b47b72ca6d5e65374607cf4436"
+ resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz"
integrity sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==
iconv-lite@^0.4.13:
version "0.4.24"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
ieee754@^1.1.13:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
ignore@^5.2.0:
version "5.3.2"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
+ resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
ignore@^7.0.5:
version "7.0.5"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9"
+ resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz"
integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==
import-fresh@^3.2.1, import-fresh@^3.3.0:
version "3.3.1"
- resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf"
+ resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz"
integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==
dependencies:
parent-module "^1.0.0"
@@ -4316,17 +4279,17 @@ import-fresh@^3.2.1, import-fresh@^3.3.0:
imurmurhash@^0.1.4:
version "0.1.4"
- resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
indent-string@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz"
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
inflight@^1.0.4:
version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
@@ -4334,22 +4297,22 @@ inflight@^1.0.4:
inherits@2:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
ini@2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
+ resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz"
integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
inline-style-parser@0.1.1:
version "0.1.1"
- resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
+ resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz"
integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
internal-slot@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961"
+ resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz"
integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==
dependencies:
es-errors "^1.3.0"
@@ -4358,12 +4321,12 @@ internal-slot@^1.1.0:
ip-address@^10.0.1:
version "10.1.0"
- resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-10.1.0.tgz#d8dcffb34d0e02eb241427444a6e23f5b0595aa4"
+ resolved "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz"
integrity sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==
ip-address@^5.8.9:
version "5.9.4"
- resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-5.9.4.tgz#4660ac261ad61bd397a860a007f7e98e4eaee386"
+ resolved "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz"
integrity sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==
dependencies:
jsbn "1.1.0"
@@ -4372,7 +4335,7 @@ ip-address@^5.8.9:
is-array-buffer@^3.0.4, is-array-buffer@^3.0.5:
version "3.0.5"
- resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280"
+ resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz"
integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==
dependencies:
call-bind "^1.0.8"
@@ -4381,17 +4344,17 @@ is-array-buffer@^3.0.4, is-array-buffer@^3.0.5:
is-arrayish@^0.2.1:
version "0.2.1"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
is-arrayish@^0.3.1:
version "0.3.4"
- resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.4.tgz#1ee5553818511915685d33bb13d31bf854e5059d"
+ resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz"
integrity sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==
is-async-function@^2.0.0:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523"
+ resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz"
integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==
dependencies:
async-function "^1.0.0"
@@ -4402,21 +4365,21 @@ is-async-function@^2.0.0:
is-bigint@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672"
+ resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz"
integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==
dependencies:
has-bigints "^1.0.2"
is-binary-path@~2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-boolean-object@^1.2.1:
version "1.2.2"
- resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e"
+ resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz"
integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==
dependencies:
call-bound "^1.0.3"
@@ -4424,31 +4387,31 @@ is-boolean-object@^1.2.1:
is-buffer@^2.0.0:
version "2.0.5"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
+ resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz"
integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
is-bun-module@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-bun-module/-/is-bun-module-2.0.0.tgz#4d7859a87c0fcac950c95e666730e745eae8bddd"
+ resolved "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz"
integrity sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==
dependencies:
semver "^7.7.1"
is-callable@^1.2.7:
version "1.2.7"
- resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
+ resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz"
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
is-core-module@^2.13.0, is-core-module@^2.16.1:
version "2.16.1"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
+ resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz"
integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
dependencies:
hasown "^2.0.2"
is-data-view@^1.0.1, is-data-view@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e"
+ resolved "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz"
integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==
dependencies:
call-bound "^1.0.2"
@@ -4457,7 +4420,7 @@ is-data-view@^1.0.1, is-data-view@^1.0.2:
is-date-object@^1.0.5, is-date-object@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7"
+ resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz"
integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==
dependencies:
call-bound "^1.0.2"
@@ -4465,24 +4428,24 @@ is-date-object@^1.0.5, is-date-object@^1.1.0:
is-extglob@^2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
is-finalizationregistry@^1.1.0:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90"
+ resolved "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz"
integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==
dependencies:
call-bound "^1.0.3"
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-generator-function@^1.0.10:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5"
+ resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz"
integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==
dependencies:
call-bound "^1.0.4"
@@ -4493,19 +4456,19 @@ is-generator-function@^1.0.10:
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
version "4.0.3"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-in-browser@^1.0.2, is-in-browser@^1.1.3:
version "1.1.3"
- resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835"
+ resolved "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz"
integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==
is-installed-globally@~0.4.0:
version "0.4.0"
- resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
+ resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz"
integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==
dependencies:
global-dirs "^3.0.0"
@@ -4513,17 +4476,17 @@ is-installed-globally@~0.4.0:
is-map@^2.0.3:
version "2.0.3"
- resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e"
+ resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz"
integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==
is-negative-zero@^2.0.3:
version "2.0.3"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747"
+ resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz"
integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
is-number-object@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541"
+ resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz"
integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==
dependencies:
call-bound "^1.0.3"
@@ -4531,22 +4494,22 @@ is-number-object@^1.1.1:
is-number@^7.0.0:
version "7.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
is-path-inside@^3.0.2:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
is-plain-obj@^4.0.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0"
+ resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz"
integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
is-regex@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22"
+ resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz"
integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==
dependencies:
call-bound "^1.0.2"
@@ -4556,24 +4519,24 @@ is-regex@^1.2.1:
is-set@^2.0.3:
version "2.0.3"
- resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d"
+ resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz"
integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==
is-shared-array-buffer@^1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f"
+ resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz"
integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==
dependencies:
call-bound "^1.0.3"
is-stream@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+ resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz"
integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
is-string@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9"
+ resolved "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz"
integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==
dependencies:
call-bound "^1.0.3"
@@ -4581,7 +4544,7 @@ is-string@^1.1.1:
is-symbol@^1.0.4, is-symbol@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634"
+ resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz"
integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==
dependencies:
call-bound "^1.0.2"
@@ -4590,36 +4553,36 @@ is-symbol@^1.0.4, is-symbol@^1.1.1:
is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15:
version "1.1.15"
- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b"
+ resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz"
integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==
dependencies:
which-typed-array "^1.1.16"
is-typedarray@~1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz"
integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
is-unicode-supported@^0.1.0:
version "0.1.0"
- resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
+ resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz"
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
is-weakmap@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd"
+ resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz"
integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==
is-weakref@^1.0.2, is-weakref@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293"
+ resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz"
integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==
dependencies:
call-bound "^1.0.3"
is-weakset@^2.0.3:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca"
+ resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz"
integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==
dependencies:
call-bound "^1.0.3"
@@ -4627,22 +4590,22 @@ is-weakset@^2.0.3:
isarray@^2.0.5:
version "2.0.5"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
+ resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz"
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
isexe@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
isstream@~0.1.2:
version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
iterator.prototype@^1.1.5:
version "1.1.5"
- resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39"
+ resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz"
integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==
dependencies:
define-data-property "^1.1.4"
@@ -4654,7 +4617,7 @@ iterator.prototype@^1.1.5:
joi@^18.0.2:
version "18.0.2"
- resolved "https://registry.yarnpkg.com/joi/-/joi-18.0.2.tgz#30ced6aed00a7848cc11f92859515258301dc3a4"
+ resolved "https://registry.npmjs.org/joi/-/joi-18.0.2.tgz"
integrity sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA==
dependencies:
"@hapi/address" "^5.1.1"
@@ -4667,93 +4630,93 @@ joi@^18.0.2:
jose@^4.11.4, jose@^4.15.9:
version "4.15.9"
- resolved "https://registry.yarnpkg.com/jose/-/jose-4.15.9.tgz#9b68eda29e9a0614c042fa29387196c7dd800100"
+ resolved "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz"
integrity sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
js-yaml@^4.1.0, js-yaml@^4.1.1:
version "4.1.1"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b"
+ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz"
integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==
dependencies:
argparse "^2.0.1"
jsbn@1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040"
+ resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz"
integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==
jsbn@~0.1.0:
version "0.1.1"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+ resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz"
integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==
jsesc@^3.0.2, jsesc@~3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d"
+ resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz"
integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==
json-buffer@3.0.1:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
+ resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
json-logic-js@2.0.5:
version "2.0.5"
- resolved "https://registry.yarnpkg.com/json-logic-js/-/json-logic-js-2.0.5.tgz#55f0c687dd6f56b02ccdcfdd64171ed998ab5499"
+ resolved "https://registry.npmjs.org/json-logic-js/-/json-logic-js-2.0.5.tgz"
integrity sha512-rTT2+lqcuUmj4DgWfmzupZqQDA64AdmYqizzMPWj3DxGdfFNsxPpcNVSaTj4l8W2tG/+hg7/mQhxjU3aPacO6g==
json-parse-even-better-errors@^2.3.0:
version "2.3.1"
- resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
json-schema-traverse@^0.4.1:
version "0.4.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
json-schema@0.4.0:
version "0.4.0"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
+ resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz"
integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
json-stringify-safe@~5.0.1:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
json2mq@^0.2.0:
version "0.2.0"
- resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a"
+ resolved "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz"
integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==
dependencies:
string-convert "^0.2.0"
json5@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
+ resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz"
integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
dependencies:
minimist "^1.2.0"
json5@^2.1.2, json5@^2.2.1, json5@^2.2.3:
version "2.2.3"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
jsonfile@^6.0.1:
version "6.2.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62"
+ resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz"
integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==
dependencies:
universalify "^2.0.0"
@@ -4762,7 +4725,7 @@ jsonfile@^6.0.1:
jsprim@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d"
+ resolved "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz"
integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==
dependencies:
assert-plus "1.0.0"
@@ -4772,7 +4735,7 @@ jsprim@^2.0.2:
jss-plugin-camel-case@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz#27ea159bab67eb4837fa0260204eb7925d4daa1c"
+ resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz"
integrity sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4781,7 +4744,7 @@ jss-plugin-camel-case@10.10.0:
jss-plugin-compose@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-plugin-compose/-/jss-plugin-compose-10.10.0.tgz#00d7a79adf7fcfe4927a792febdf0deceb0a7cd2"
+ resolved "https://registry.npmjs.org/jss-plugin-compose/-/jss-plugin-compose-10.10.0.tgz"
integrity sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4790,7 +4753,7 @@ jss-plugin-compose@10.10.0:
jss-plugin-default-unit@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz#db3925cf6a07f8e1dd459549d9c8aadff9804293"
+ resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz"
integrity sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4798,7 +4761,7 @@ jss-plugin-default-unit@10.10.0:
jss-plugin-expand@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-plugin-expand/-/jss-plugin-expand-10.10.0.tgz#5debd80554174ca2d9b9e38d85d4cb6f3e0393ab"
+ resolved "https://registry.npmjs.org/jss-plugin-expand/-/jss-plugin-expand-10.10.0.tgz"
integrity sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4806,7 +4769,7 @@ jss-plugin-expand@10.10.0:
jss-plugin-extend@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-plugin-extend/-/jss-plugin-extend-10.10.0.tgz#94eb450847a8941777e77ea4533a579c1c578430"
+ resolved "https://registry.npmjs.org/jss-plugin-extend/-/jss-plugin-extend-10.10.0.tgz"
integrity sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4815,7 +4778,7 @@ jss-plugin-extend@10.10.0:
jss-plugin-global@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz#1c55d3c35821fab67a538a38918292fc9c567efd"
+ resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz"
integrity sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4823,7 +4786,7 @@ jss-plugin-global@10.10.0:
jss-plugin-nested@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz#db872ed8925688806e77f1fc87f6e62264513219"
+ resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz"
integrity sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4832,7 +4795,7 @@ jss-plugin-nested@10.10.0:
jss-plugin-props-sort@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz#67f4dd4c70830c126f4ec49b4b37ccddb680a5d7"
+ resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz"
integrity sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4840,7 +4803,7 @@ jss-plugin-props-sort@10.10.0:
jss-plugin-rule-value-function@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz#7d99e3229e78a3712f78ba50ab342e881d26a24b"
+ resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz"
integrity sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4849,7 +4812,7 @@ jss-plugin-rule-value-function@10.10.0:
jss-plugin-rule-value-observable@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.10.0.tgz#d17b28c4401156bbe4cd0c4a73a80aad70613e8b"
+ resolved "https://registry.npmjs.org/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.10.0.tgz"
integrity sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4858,7 +4821,7 @@ jss-plugin-rule-value-observable@10.10.0:
jss-plugin-template@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-plugin-template/-/jss-plugin-template-10.10.0.tgz#072cda74a94c91b02d3a895d9e2408fd978ce033"
+ resolved "https://registry.npmjs.org/jss-plugin-template/-/jss-plugin-template-10.10.0.tgz"
integrity sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4867,7 +4830,7 @@ jss-plugin-template@10.10.0:
jss-plugin-vendor-prefixer@10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz#c01428ef5a89f2b128ec0af87a314d0c767931c7"
+ resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz"
integrity sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4876,7 +4839,7 @@ jss-plugin-vendor-prefixer@10.10.0:
jss-preset-default@10.10.0, jss-preset-default@^10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss-preset-default/-/jss-preset-default-10.10.0.tgz#c8209449a0f6d232526c2ba3a3a6ec69ee97e023"
+ resolved "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-10.10.0.tgz"
integrity sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4896,7 +4859,7 @@ jss-preset-default@10.10.0, jss-preset-default@^10.10.0:
jss@10.10.0, jss@^10.10.0:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/jss/-/jss-10.10.0.tgz#a75cc85b0108c7ac8c7b7d296c520a3e4fbc6ccc"
+ resolved "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz"
integrity sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -4906,7 +4869,7 @@ jss@10.10.0, jss@^10.10.0:
"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5:
version "3.3.5"
- resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a"
+ resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz"
integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==
dependencies:
array-includes "^3.1.6"
@@ -4916,46 +4879,46 @@ jss@10.10.0, jss@^10.10.0:
keyv@^4.5.4:
version "4.5.4"
- resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
+ resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
dependencies:
json-buffer "3.0.1"
kleur@^4.0.3:
version "4.1.5"
- resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"
+ resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz"
integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
klona@^2.0.4:
version "2.0.6"
- resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22"
+ resolved "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz"
integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==
language-subtag-registry@^0.3.20:
version "0.3.23"
- resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7"
+ resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz"
integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==
language-tags@^1.0.9:
version "1.0.9"
- resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777"
+ resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz"
integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==
dependencies:
language-subtag-registry "^0.3.20"
lazy-ass@1.6.0, lazy-ass@^1.6.0:
version "1.6.0"
- resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
+ resolved "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz"
integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==
lazy@^1.0.11:
version "1.0.11"
- resolved "https://registry.yarnpkg.com/lazy/-/lazy-1.0.11.tgz#daa068206282542c088288e975c297c1ae77b690"
+ resolved "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz"
integrity sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==
levn@^0.4.1:
version "0.4.1"
- resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
dependencies:
prelude-ls "^1.2.1"
@@ -4963,12 +4926,12 @@ levn@^0.4.1:
lines-and-columns@^1.1.6:
version "1.2.4"
- resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
listr2@^3.8.3:
version "3.14.0"
- resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e"
+ resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz"
integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==
dependencies:
cli-truncate "^2.1.0"
@@ -4982,7 +4945,7 @@ listr2@^3.8.3:
loader-utils@^2.0.0:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c"
+ resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz"
integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==
dependencies:
big.js "^5.2.2"
@@ -4991,53 +4954,53 @@ loader-utils@^2.0.0:
locate-path@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
dependencies:
p-locate "^4.1.0"
locate-path@^6.0.0:
version "6.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
dependencies:
p-locate "^5.0.0"
locate-path@^7.1.0:
version "7.2.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz"
integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==
dependencies:
p-locate "^6.0.0"
lodash.debounce@4.0.8, lodash.debounce@^4.0.8:
version "4.0.8"
- resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz"
integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
lodash.merge@^4.6.2:
version "4.6.2"
- resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
lodash.once@^4.1.1:
version "4.1.1"
- resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
+ resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz"
integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==
lodash.unescape@4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
+ resolved "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz"
integrity sha512-DhhGRshNS1aX6s5YdBE3njCCouPgnG29ebyHvImlZzXZf2SHgt+J08DHgytTPnpywNbO1Y8mNUFyQuIDBq2JZg==
lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.23:
version "4.17.23"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a"
+ resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz"
integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==
log-symbols@^4.0.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
+ resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz"
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
dependencies:
chalk "^4.1.0"
@@ -5045,7 +5008,7 @@ log-symbols@^4.0.0:
log-update@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1"
+ resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz"
integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==
dependencies:
ansi-escapes "^4.3.0"
@@ -5055,62 +5018,62 @@ log-update@^4.0.0:
loose-envify@^1.4.0:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
dependencies:
js-tokens "^3.0.0 || ^4.0.0"
lower-case@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
+ resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz"
integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
dependencies:
tslib "^2.0.3"
lru-cache@^5.1.1:
version "5.1.1"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
dependencies:
yallist "^3.0.2"
lru-cache@^6.0.0:
version "6.0.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
dependencies:
yallist "^4.0.0"
lru-cache@^7.14.1:
version "7.18.3"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz"
integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
make-dir@^3.0.2, make-dir@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+ resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz"
integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
dependencies:
semver "^6.0.0"
make-error@^1.1.1:
version "1.3.6"
- resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
+ resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
map-stream@~0.1.0:
version "0.1.0"
- resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
+ resolved "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz"
integrity sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==
math-intrinsics@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9"
+ resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz"
integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
mdast-util-definitions@^5.0.0:
version "5.1.2"
- resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz#9910abb60ac5d7115d6819b57ae0bcef07a3f7a7"
+ resolved "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz"
integrity sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==
dependencies:
"@types/mdast" "^3.0.0"
@@ -5119,7 +5082,7 @@ mdast-util-definitions@^5.0.0:
mdast-util-from-markdown@^1.0.0:
version "1.3.1"
- resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz#9421a5a247f10d31d2faed2a30df5ec89ceafcf0"
+ resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz"
integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==
dependencies:
"@types/mdast" "^3.0.0"
@@ -5137,7 +5100,7 @@ mdast-util-from-markdown@^1.0.0:
mdast-util-to-hast@^12.1.0:
version "12.3.0"
- resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz#045d2825fb04374e59970f5b3f279b5700f6fb49"
+ resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz"
integrity sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==
dependencies:
"@types/hast" "^2.0.0"
@@ -5151,39 +5114,39 @@ mdast-util-to-hast@^12.1.0:
mdast-util-to-string@^3.1.0:
version "3.2.0"
- resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789"
+ resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz"
integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==
dependencies:
"@types/mdast" "^3.0.0"
mdn-data@2.0.28:
version "2.0.28"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba"
+ resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz"
integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==
mdn-data@2.0.30:
version "2.0.30"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc"
+ resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz"
integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==
memoize-one@^5.1.1:
version "5.2.1"
- resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e"
+ resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz"
integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==
merge-stream@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
merge2@^1.3.0:
version "1.4.1"
- resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
micromark-core-commonmark@^1.0.1:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz#1386628df59946b2d39fb2edfd10f3e8e0a75bb8"
+ resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz"
integrity sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==
dependencies:
decode-named-character-reference "^1.0.0"
@@ -5205,7 +5168,7 @@ micromark-core-commonmark@^1.0.1:
micromark-factory-destination@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz#eb815957d83e6d44479b3df640f010edad667b9f"
+ resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz"
integrity sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==
dependencies:
micromark-util-character "^1.0.0"
@@ -5214,7 +5177,7 @@ micromark-factory-destination@^1.0.0:
micromark-factory-label@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz#cc95d5478269085cfa2a7282b3de26eb2e2dec68"
+ resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz"
integrity sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==
dependencies:
micromark-util-character "^1.0.0"
@@ -5224,7 +5187,7 @@ micromark-factory-label@^1.0.0:
micromark-factory-space@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf"
+ resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz"
integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==
dependencies:
micromark-util-character "^1.0.0"
@@ -5232,7 +5195,7 @@ micromark-factory-space@^1.0.0:
micromark-factory-title@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz#dd0fe951d7a0ac71bdc5ee13e5d1465ad7f50ea1"
+ resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz"
integrity sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==
dependencies:
micromark-factory-space "^1.0.0"
@@ -5242,7 +5205,7 @@ micromark-factory-title@^1.0.0:
micromark-factory-whitespace@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz#798fb7489f4c8abafa7ca77eed6b5745853c9705"
+ resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz"
integrity sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==
dependencies:
micromark-factory-space "^1.0.0"
@@ -5252,7 +5215,7 @@ micromark-factory-whitespace@^1.0.0:
micromark-util-character@^1.0.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc"
+ resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz"
integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==
dependencies:
micromark-util-symbol "^1.0.0"
@@ -5260,14 +5223,14 @@ micromark-util-character@^1.0.0:
micromark-util-chunked@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz#37a24d33333c8c69a74ba12a14651fd9ea8a368b"
+ resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz"
integrity sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==
dependencies:
micromark-util-symbol "^1.0.0"
micromark-util-classify-character@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz#6a7f8c8838e8a120c8e3c4f2ae97a2bff9190e9d"
+ resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz"
integrity sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==
dependencies:
micromark-util-character "^1.0.0"
@@ -5276,7 +5239,7 @@ micromark-util-classify-character@^1.0.0:
micromark-util-combine-extensions@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz#192e2b3d6567660a85f735e54d8ea6e3952dbe84"
+ resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz"
integrity sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==
dependencies:
micromark-util-chunked "^1.0.0"
@@ -5284,14 +5247,14 @@ micromark-util-combine-extensions@^1.0.0:
micromark-util-decode-numeric-character-reference@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz#b1e6e17009b1f20bc652a521309c5f22c85eb1c6"
+ resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz"
integrity sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==
dependencies:
micromark-util-symbol "^1.0.0"
micromark-util-decode-string@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz#dc12b078cba7a3ff690d0203f95b5d5537f2809c"
+ resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz"
integrity sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==
dependencies:
decode-named-character-reference "^1.0.0"
@@ -5301,31 +5264,31 @@ micromark-util-decode-string@^1.0.0:
micromark-util-encode@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz#92e4f565fd4ccb19e0dcae1afab9a173bbeb19a5"
+ resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz"
integrity sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==
micromark-util-html-tag-name@^1.0.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz#48fd7a25826f29d2f71479d3b4e83e94829b3588"
+ resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz"
integrity sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==
micromark-util-normalize-identifier@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz#7a73f824eb9f10d442b4d7f120fecb9b38ebf8b7"
+ resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz"
integrity sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==
dependencies:
micromark-util-symbol "^1.0.0"
micromark-util-resolve-all@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz#4652a591ee8c8fa06714c9b54cd6c8e693671188"
+ resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz"
integrity sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==
dependencies:
micromark-util-types "^1.0.0"
micromark-util-sanitize-uri@^1.0.0, micromark-util-sanitize-uri@^1.1.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz#613f738e4400c6eedbc53590c67b197e30d7f90d"
+ resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz"
integrity sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==
dependencies:
micromark-util-character "^1.0.0"
@@ -5334,7 +5297,7 @@ micromark-util-sanitize-uri@^1.0.0, micromark-util-sanitize-uri@^1.1.0:
micromark-util-subtokenize@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz#941c74f93a93eaf687b9054aeb94642b0e92edb1"
+ resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz"
integrity sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==
dependencies:
micromark-util-chunked "^1.0.0"
@@ -5344,17 +5307,17 @@ micromark-util-subtokenize@^1.0.0:
micromark-util-symbol@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142"
+ resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz"
integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==
micromark-util-types@^1.0.0, micromark-util-types@^1.0.1:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283"
+ resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz"
integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==
micromark@^3.0.0:
version "3.2.0"
- resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.2.0.tgz#1af9fef3f995ea1ea4ac9c7e2f19c48fd5c006e9"
+ resolved "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz"
integrity sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==
dependencies:
"@types/debug" "^4.0.0"
@@ -5377,7 +5340,7 @@ micromark@^3.0.0:
micromatch@^4.0.4:
version "4.0.8"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
+ resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz"
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
dependencies:
braces "^3.0.3"
@@ -5385,48 +5348,48 @@ micromatch@^4.0.4:
mime-db@1.52.0:
version "1.52.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
mime-types@^2.1.12, mime-types@~2.1.19:
version "2.1.35"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
mimic-fn@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
minimatch@^10.2.2:
version "10.2.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.4.tgz#465b3accbd0218b8281f5301e27cedc697f96fde"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz"
integrity sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==
dependencies:
brace-expansion "^5.0.2"
minimatch@^3.1.1, minimatch@^3.1.2, minimatch@^3.1.3:
version "3.1.5"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz"
integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==
dependencies:
brace-expansion "^1.1.7"
minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8:
version "1.2.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
+ resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
mitt@3.0.1, mitt@^3.0.0:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
+ resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz"
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
mixpanel-browser@^2.65.0:
version "2.75.0"
- resolved "https://registry.yarnpkg.com/mixpanel-browser/-/mixpanel-browser-2.75.0.tgz#2aeb71e84f3d27c1665b23b1a35b44495bf41b29"
+ resolved "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.75.0.tgz"
integrity sha512-jii/M8lXgHHgJ922t+lvUPSuzYEnME1WlXr2Okak6XdZ1WlTv/L2EOnCWAyM750zoHA6kbJIN2XswoGLnaLPnw==
dependencies:
"@mixpanel/rrweb" "2.0.0-alpha.18.3"
@@ -5435,42 +5398,42 @@ mixpanel-browser@^2.65.0:
mri@^1.1.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b"
+ resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz"
integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
ms@^2.1.1, ms@^2.1.3:
version "2.1.3"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
nanoid@^3.3.11, nanoid@^3.3.6:
version "3.3.11"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
+ resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz"
integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
napi-postinstall@^0.3.0:
version "0.3.4"
- resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.3.4.tgz#7af256d6588b5f8e952b9190965d6b019653bbb9"
+ resolved "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz"
integrity sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==
natural-compare@^1.4.0:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
neo-async@^2.6.2:
version "2.6.2"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
netmask@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7"
+ resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz"
integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==
next-auth@4.23.2:
version "4.23.2"
- resolved "https://registry.yarnpkg.com/next-auth/-/next-auth-4.23.2.tgz#6a93ec8bb59890dd43ed149a367852c7d12d0f7c"
+ resolved "https://registry.npmjs.org/next-auth/-/next-auth-4.23.2.tgz"
integrity sha512-VRmInu0r/yZNFQheDFeOKtiugu3bt90Po3owAQDnFQ3YLQFmUKgFjcE2+3L0ny5jsJpBXaKbm7j7W2QTc6Ye2A==
dependencies:
"@babel/runtime" "^7.20.13"
@@ -5485,7 +5448,7 @@ next-auth@4.23.2:
next@15.0.5:
version "15.0.5"
- resolved "https://registry.yarnpkg.com/next/-/next-15.0.5.tgz#6f75b4d5c7dda0705171486e180821146816d130"
+ resolved "https://registry.npmjs.org/next/-/next-15.0.5.tgz"
integrity sha512-WTh/Rmxkn4J4vwSYiqEZGzoxjid83iCyN0qg7oJFKzHjYCzy5mwBRqWVlFotM9nAnxGGv5MzbMa4gMu88qeGLA==
dependencies:
"@next/env" "15.0.5"
@@ -5508,7 +5471,7 @@ next@15.0.5:
no-case@^3.0.4:
version "3.0.4"
- resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
+ resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz"
integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
dependencies:
lower-case "^2.0.2"
@@ -5516,7 +5479,7 @@ no-case@^3.0.4:
node-exports-info@^1.6.0:
version "1.6.0"
- resolved "https://registry.yarnpkg.com/node-exports-info/-/node-exports-info-1.6.0.tgz#1aedafb01a966059c9a5e791a94a94d93f5c2a13"
+ resolved "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz"
integrity sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==
dependencies:
array.prototype.flatmap "^1.3.3"
@@ -5526,7 +5489,7 @@ node-exports-info@^1.6.0:
node-html-parser@5.3.3:
version "5.3.3"
- resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-5.3.3.tgz#2845704f3a7331a610e0e551bf5fa02b266341b6"
+ resolved "https://registry.npmjs.org/node-html-parser/-/node-html-parser-5.3.3.tgz"
integrity sha512-ncg1033CaX9UexbyA7e1N0aAoAYRDiV8jkTvzEnfd1GDvzFdrsXLzR4p4ik8mwLgnaKP/jyUFWDy9q3jvRT2Jw==
dependencies:
css-select "^4.2.1"
@@ -5534,61 +5497,61 @@ node-html-parser@5.3.3:
node-releases@^2.0.27:
version "2.0.27"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e"
+ resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz"
integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==
nodemailer@^6.10.0:
version "6.10.1"
- resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.10.1.tgz#cbc434c54238f83a51c07eabd04e2b3e832da623"
+ resolved "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.1.tgz"
integrity sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
npm-run-path@^4.0.0, npm-run-path@^4.0.1:
version "4.0.1"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz"
integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
dependencies:
path-key "^3.0.0"
nth-check@^2.0.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
+ resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz"
integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
dependencies:
boolbase "^1.0.0"
oauth@^0.9.15:
version "0.9.15"
- resolved "https://registry.yarnpkg.com/oauth/-/oauth-0.9.15.tgz#bd1fefaf686c96b75475aed5196412ff60cfb9c1"
+ resolved "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz"
integrity sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==
object-assign@^4.1.1:
version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
object-hash@^2.2.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5"
+ resolved "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz"
integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==
object-inspect@^1.13.3, object-inspect@^1.13.4:
version "1.13.4"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213"
+ resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz"
integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==
object-keys@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
object.assign@^4.1.4, object.assign@^4.1.7:
version "4.1.7"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d"
+ resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz"
integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==
dependencies:
call-bind "^1.0.8"
@@ -5600,7 +5563,7 @@ object.assign@^4.1.4, object.assign@^4.1.7:
object.entries@^1.1.9:
version "1.1.9"
- resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.9.tgz#e4770a6a1444afb61bd39f984018b5bede25f8b3"
+ resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz"
integrity sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==
dependencies:
call-bind "^1.0.8"
@@ -5610,7 +5573,7 @@ object.entries@^1.1.9:
object.fromentries@^2.0.8:
version "2.0.8"
- resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65"
+ resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz"
integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==
dependencies:
call-bind "^1.0.7"
@@ -5620,7 +5583,7 @@ object.fromentries@^2.0.8:
object.groupby@^1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e"
+ resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz"
integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==
dependencies:
call-bind "^1.0.7"
@@ -5629,7 +5592,7 @@ object.groupby@^1.0.3:
object.values@^1.1.6, object.values@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216"
+ resolved "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz"
integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==
dependencies:
call-bind "^1.0.8"
@@ -5639,26 +5602,26 @@ object.values@^1.1.6, object.values@^1.2.1:
oidc-token-hash@^5.0.3:
version "5.2.0"
- resolved "https://registry.yarnpkg.com/oidc-token-hash/-/oidc-token-hash-5.2.0.tgz#be8a8885c7e2478d21a674e15afa31f1bcc4a61f"
+ resolved "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.2.0.tgz"
integrity sha512-6gj2m8cJZ+iSW8bm0FXdGF0YhIQbKrfP4yWTNzxc31U6MOjfEmB1rHvlYvxI1B7t7BCi1F2vYTT6YhtQRG4hxw==
once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
onetime@^5.1.0, onetime@^5.1.2:
version "5.1.2"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz"
integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
dependencies:
mimic-fn "^2.1.0"
openid-client@^5.4.0:
version "5.7.1"
- resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-5.7.1.tgz#34cace862a3e6472ed7d0a8616ef73b7fb85a9c3"
+ resolved "https://registry.npmjs.org/openid-client/-/openid-client-5.7.1.tgz"
integrity sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==
dependencies:
jose "^4.15.9"
@@ -5668,7 +5631,7 @@ openid-client@^5.4.0:
optionator@^0.9.3:
version "0.9.4"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
+ resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz"
integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
dependencies:
deep-is "^0.1.3"
@@ -5680,12 +5643,12 @@ optionator@^0.9.3:
ospath@^1.2.2:
version "1.2.2"
- resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b"
+ resolved "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz"
integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==
otplib@^12.0.1:
version "12.0.1"
- resolved "https://registry.yarnpkg.com/otplib/-/otplib-12.0.1.tgz#c1d3060ab7aadf041ed2960302f27095777d1f73"
+ resolved "https://registry.npmjs.org/otplib/-/otplib-12.0.1.tgz"
integrity sha512-xDGvUOQjop7RDgxTQ+o4pOol0/3xSZzawTiPKRrHnQWAy0WjhNs/5HdIDJCrqC4MBynmjXgULc6YfioaxZeFgg==
dependencies:
"@otplib/core" "^12.0.1"
@@ -5694,7 +5657,7 @@ otplib@^12.0.1:
own-keys@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358"
+ resolved "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz"
integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==
dependencies:
get-intrinsic "^1.2.6"
@@ -5703,61 +5666,61 @@ own-keys@^1.0.1:
p-limit@^2.2.0:
version "2.3.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
dependencies:
p-try "^2.0.0"
p-limit@^3.0.2:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
dependencies:
yocto-queue "^0.1.0"
p-limit@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz"
integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==
dependencies:
yocto-queue "^1.0.0"
p-locate@^4.1.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz"
integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
dependencies:
p-limit "^2.2.0"
p-locate@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
dependencies:
p-limit "^3.0.2"
p-locate@^6.0.0:
version "6.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz"
integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==
dependencies:
p-limit "^4.0.0"
p-map@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz"
integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
dependencies:
aggregate-error "^3.0.0"
p-try@^2.0.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
pac-proxy-agent@^7.1.0:
version "7.2.0"
- resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz#9cfaf33ff25da36f6147a20844230ec92c06e5df"
+ resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz"
integrity sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==
dependencies:
"@tootallnate/quickjs-emscripten" "^0.23.0"
@@ -5771,7 +5734,7 @@ pac-proxy-agent@^7.1.0:
pac-resolver@^7.0.1:
version "7.0.1"
- resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6"
+ resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz"
integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==
dependencies:
degenerator "^5.0.0"
@@ -5779,14 +5742,14 @@ pac-resolver@^7.0.1:
parent-module@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
dependencies:
callsites "^3.0.0"
parse-json@^5.2.0:
version "5.2.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz"
integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
dependencies:
"@babel/code-frame" "^7.0.0"
@@ -5796,91 +5759,91 @@ parse-json@^5.2.0:
parse5@^6.0.0:
version "6.0.1"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
+ resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz"
integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
path-exists@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
path-exists@^5.0.0:
version "5.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7"
+ resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz"
integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==
path-is-absolute@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
path-key@^3.0.0, path-key@^3.1.0:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
path-parse@^1.0.7:
version "1.0.7"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
path-type@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
pause-stream@0.0.11:
version "0.0.11"
- resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
+ resolved "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz"
integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==
dependencies:
through "~2.3"
pend@~1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+ resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz"
integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
performance-now@^2.1.0:
version "2.1.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+ resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz"
integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
picocolors@^1.0.0, picocolors@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
+ resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
version "2.3.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
picomatch@^4.0.3:
version "4.0.3"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042"
+ resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz"
integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
pify@^2.2.0:
version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"
integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
pkg-dir@^4.1.0:
version "4.2.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz"
integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
dependencies:
find-up "^4.0.0"
possible-typed-array-names@^1.0.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae"
+ resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz"
integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==
postcss@8.4.31:
version "8.4.31"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz"
integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
dependencies:
nanoid "^3.3.6"
@@ -5889,7 +5852,7 @@ postcss@8.4.31:
postcss@^8.4.38:
version "8.5.6"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz"
integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==
dependencies:
nanoid "^3.3.11"
@@ -5898,49 +5861,49 @@ postcss@^8.4.38:
preact-render-to-string@^5.1.19:
version "5.2.6"
- resolved "https://registry.yarnpkg.com/preact-render-to-string/-/preact-render-to-string-5.2.6.tgz#0ff0c86cd118d30affb825193f18e92bd59d0604"
+ resolved "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-5.2.6.tgz"
integrity sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==
dependencies:
pretty-format "^3.8.0"
preact@^10.6.3:
- version "10.28.4"
- resolved "https://registry.yarnpkg.com/preact/-/preact-10.28.4.tgz#8ffab01c5c0590535bdaecdd548801f44c6e483a"
- integrity sha512-uKFfOHWuSNpRFVTnljsCluEFq57OKT+0QdOiQo8XWnQ/pSvg7OpX5eNOejELXJMWy+BwM2nobz0FkvzmnpCNsQ==
+ version "10.24.3"
+ resolved "https://registry.npmjs.org/preact/-/preact-10.24.3.tgz"
+ integrity sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==
prelude-ls@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
prettier@^3.6.2:
version "3.8.1"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.8.1.tgz#edf48977cf991558f4fcbd8a3ba6015ba2a3a173"
+ resolved "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz"
integrity sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==
pretty-bytes@^5.6.0:
version "5.6.0"
- resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
+ resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz"
integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
pretty-format@^3.8.0:
version "3.8.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385"
+ resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz"
integrity sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==
process@^0.11.10:
version "0.11.10"
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz"
integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
progress@^2.0.3:
version "2.0.3"
- resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
prop-types@^15.0.0, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1"
- resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
+ resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
dependencies:
loose-envify "^1.4.0"
@@ -5949,12 +5912,12 @@ prop-types@^15.0.0, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.7.2,
property-information@^6.0.0:
version "6.5.0"
- resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec"
+ resolved "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz"
integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==
proxy-agent@^6.4.0:
version "6.5.0"
- resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.5.0.tgz#9e49acba8e4ee234aacb539f89ed9c23d02f232d"
+ resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz"
integrity sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==
dependencies:
agent-base "^7.1.2"
@@ -5968,24 +5931,24 @@ proxy-agent@^6.4.0:
proxy-from-env@1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee"
+ resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz"
integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==
proxy-from-env@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
ps-tree@1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd"
+ resolved "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz"
integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==
dependencies:
event-stream "=3.3.4"
pump@^3.0.0:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d"
+ resolved "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz"
integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==
dependencies:
end-of-stream "^1.1.0"
@@ -5993,12 +5956,12 @@ pump@^3.0.0:
punycode@^2.1.0:
version "2.3.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
+ resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
puppeteer-core@22.15.0:
version "22.15.0"
- resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-22.15.0.tgz#c76926cce5dbc177572797a9dacc325c313fa91a"
+ resolved "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz"
integrity sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==
dependencies:
"@puppeteer/browsers" "2.3.0"
@@ -6009,7 +5972,7 @@ puppeteer-core@22.15.0:
puppeteer@^22.15.0:
version "22.15.0"
- resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-22.15.0.tgz#4f842087090f1d9017ce947512e7baff55a10e75"
+ resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-22.15.0.tgz"
integrity sha512-XjCY1SiSEi1T7iSYuxS82ft85kwDJUS7wj1Z0eGVXKdtr5g4xnVcbjwxhq5xBnpK/E7x1VZZoJDxpjAOasHT4Q==
dependencies:
"@puppeteer/browsers" "2.3.0"
@@ -6019,24 +5982,24 @@ puppeteer@^22.15.0:
qs@~6.14.1:
version "6.14.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.2.tgz#b5634cf9d9ad9898e31fba3504e866e8efb6798c"
+ resolved "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz"
integrity sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==
dependencies:
side-channel "^1.1.0"
queue-microtask@^1.2.2:
version "1.2.3"
- resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
raf-schd@^4.0.2:
version "4.0.3"
- resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.3.tgz#5d6c34ef46f8b2a0e880a8fcdb743efc5bfdbc1a"
+ resolved "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz"
integrity sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==
react-beautiful-dnd@13.1.1:
version "13.1.1"
- resolved "https://registry.yarnpkg.com/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz#b0f3087a5840920abf8bb2325f1ffa46d8c4d0a2"
+ resolved "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz"
integrity sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==
dependencies:
"@babel/runtime" "^7.9.2"
@@ -6049,7 +6012,7 @@ react-beautiful-dnd@13.1.1:
react-confetti-explosion@2.1.2:
version "2.1.2"
- resolved "https://registry.yarnpkg.com/react-confetti-explosion/-/react-confetti-explosion-2.1.2.tgz#dfbccf28985ce6938143ceb1023b9facfb0a5835"
+ resolved "https://registry.npmjs.org/react-confetti-explosion/-/react-confetti-explosion-2.1.2.tgz"
integrity sha512-4UzDFBajAGXmF9TSJoRMO2QOBCIXc66idTxH8l7Mkul48HLGtk+tMzK9HYDYsy7Zmw5sEGchi2fbn4AJUuLrZw==
dependencies:
lodash "^4.17.21"
@@ -6057,51 +6020,51 @@ react-confetti-explosion@2.1.2:
react-confetti@6.1.0:
version "6.1.0"
- resolved "https://registry.yarnpkg.com/react-confetti/-/react-confetti-6.1.0.tgz#03dc4340d955acd10b174dbf301f374a06e29ce6"
+ resolved "https://registry.npmjs.org/react-confetti/-/react-confetti-6.1.0.tgz"
integrity sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==
dependencies:
tween-functions "^1.2.0"
react-display-name@^0.2.4:
version "0.2.5"
- resolved "https://registry.yarnpkg.com/react-display-name/-/react-display-name-0.2.5.tgz#304c7cbfb59ee40389d436e1a822c17fe27936c6"
+ resolved "https://registry.npmjs.org/react-display-name/-/react-display-name-0.2.5.tgz"
integrity sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg==
react-dom@19.0.3:
version "19.0.3"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.3.tgz#517de15717f686dd6e39488434b6dd18f01ef1fb"
+ resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.0.3.tgz"
integrity sha512-a7ezLfxibhu6fZBVLwy6WEd3Jn/4H8JYVO8K8GtBfRf1Pl+ox7KFoMCzAGlxLZUXo0t44YZShzhhoDH3yMVdxQ==
dependencies:
scheduler "^0.25.0"
react-ga4@1.4.1:
version "1.4.1"
- resolved "https://registry.yarnpkg.com/react-ga4/-/react-ga4-1.4.1.tgz#6ee2a2db115ed235b2f2092bc746b4eeeca9e206"
+ resolved "https://registry.npmjs.org/react-ga4/-/react-ga4-1.4.1.tgz"
integrity sha512-ioBMEIxd4ePw4YtaloTUgqhQGqz5ebDdC4slEpLgy2sLx1LuZBC9iYCwDymTXzcntw6K1dHX183ulP32nNdG7w==
react-intersection-observer@^9.16.0:
version "9.16.0"
- resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-9.16.0.tgz#7376d54edc47293300961010844d53b273ee0fb9"
+ resolved "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.16.0.tgz"
integrity sha512-w9nJSEp+DrW9KmQmeWHQyfaP6b03v+TdXynaoA964Wxt7mdR3An11z4NNCQgL4gKSK7y1ver2Fq+JKH6CWEzUA==
react-is@^16.13.1, react-is@^16.7.0:
version "16.13.1"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-is@^17.0.2:
version "17.0.2"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
+ resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
react-is@^18.0.0:
version "18.3.1"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
+ resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz"
integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
react-jss@^10.9.2:
version "10.10.0"
- resolved "https://registry.yarnpkg.com/react-jss/-/react-jss-10.10.0.tgz#d08ab3257b0eed01e15d6d8275840055c279b0da"
+ resolved "https://registry.npmjs.org/react-jss/-/react-jss-10.10.0.tgz"
integrity sha512-WLiq84UYWqNBF6579/uprcIUnM1TSywYq6AIjKTTTG5ziJl9Uy+pwuvpN3apuyVwflMbD60PraeTKT7uWH9XEQ==
dependencies:
"@babel/runtime" "^7.3.1"
@@ -6118,12 +6081,12 @@ react-jss@^10.9.2:
react-loading-skeleton@3.4.0:
version "3.4.0"
- resolved "https://registry.yarnpkg.com/react-loading-skeleton/-/react-loading-skeleton-3.4.0.tgz#c71a3a17259d08e4064974aa0b07f150a09dfd57"
+ resolved "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.4.0.tgz"
integrity sha512-1oJEBc9+wn7BbkQQk7YodlYEIjgeR+GrRjD+QXkVjwZN7LGIcAFHrx4NhT7UHGBxNY1+zax3c+Fo6XQM4R7CgA==
react-markdown@8.0.3:
version "8.0.3"
- resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-8.0.3.tgz#e8aba0d2f5a1b2124d476ee1fff9448a2f57e4b3"
+ resolved "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.3.tgz"
integrity sha512-We36SfqaKoVNpN1QqsZwWSv/OZt5J15LNgTLWynwAN5b265hrQrsjMtlRNwUvS+YyR3yDM8HpTNc4pK9H/Gc0A==
dependencies:
"@types/hast" "^2.0.0"
@@ -6144,7 +6107,7 @@ react-markdown@8.0.3:
react-redux@^7.2.0:
version "7.2.9"
- resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.9.tgz#09488fbb9416a4efe3735b7235055442b042481d"
+ resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz"
integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==
dependencies:
"@babel/runtime" "^7.15.4"
@@ -6156,7 +6119,7 @@ react-redux@^7.2.0:
react-slick@0.29.0:
version "0.29.0"
- resolved "https://registry.yarnpkg.com/react-slick/-/react-slick-0.29.0.tgz#0bed5ea42bf75a23d40c0259b828ed27627b51bb"
+ resolved "https://registry.npmjs.org/react-slick/-/react-slick-0.29.0.tgz"
integrity sha512-TGdOKE+ZkJHHeC4aaoH85m8RnFyWqdqRfAGkhd6dirmATXMZWAxOpTLmw2Ll/jPTQ3eEG7ercFr/sbzdeYCJXA==
dependencies:
classnames "^2.2.5"
@@ -6167,7 +6130,7 @@ react-slick@0.29.0:
react-tooltip@5.27.1:
version "5.27.1"
- resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-5.27.1.tgz#a94481ba146d828d31642f14d6ab29b56998fcda"
+ resolved "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.27.1.tgz"
integrity sha512-a+micPXcMOMt11CYlwJD4XShcqGziasHco4NPe1OFw298WBTILMyzUgNC1LAFViAe791JdHNVSJIpzhZm2MvDA==
dependencies:
"@floating-ui/dom" "^1.6.1"
@@ -6175,26 +6138,26 @@ react-tooltip@5.27.1:
react@19.0.3:
version "19.0.3"
- resolved "https://registry.yarnpkg.com/react/-/react-19.0.3.tgz#dc803a2316a97d8a1619bf460353c8ccdb7d3a60"
+ resolved "https://registry.npmjs.org/react/-/react-19.0.3.tgz"
integrity sha512-owzQanTgpB8GF7pVL6mUwZZyhKzFePi9++GkFk54i9PRU0jq+z7v9Mwg7PAZJYCiYl5YwcyQGGq5/PLkesd8nw==
readdirp@~3.6.0:
version "3.6.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
redux@^4.0.0, redux@^4.0.4:
version "4.2.1"
- resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197"
+ resolved "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz"
integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==
dependencies:
"@babel/runtime" "^7.9.2"
reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9:
version "1.0.10"
- resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9"
+ resolved "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz"
integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==
dependencies:
call-bind "^1.0.8"
@@ -6208,19 +6171,19 @@ reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9:
regenerate-unicode-properties@^10.2.2:
version "10.2.2"
- resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz#aa113812ba899b630658c7623466be71e1f86f66"
+ resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz"
integrity sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==
dependencies:
regenerate "^1.4.2"
regenerate@^1.4.2:
version "1.4.2"
- resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
+ resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz"
integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4:
version "1.5.4"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19"
+ resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz"
integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==
dependencies:
call-bind "^1.0.8"
@@ -6232,7 +6195,7 @@ regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4:
regexpu-core@^6.3.1:
version "6.4.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.4.0.tgz#3580ce0c4faedef599eccb146612436b62a176e5"
+ resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz"
integrity sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==
dependencies:
regenerate "^1.4.2"
@@ -6244,19 +6207,19 @@ regexpu-core@^6.3.1:
regjsgen@^0.8.0:
version "0.8.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab"
+ resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz"
integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==
regjsparser@^0.13.0:
version "0.13.0"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.13.0.tgz#01f8351335cf7898d43686bc74d2dd71c847ecc0"
+ resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz"
integrity sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==
dependencies:
jsesc "~3.1.0"
rehype-raw@6.1.1:
version "6.1.1"
- resolved "https://registry.yarnpkg.com/rehype-raw/-/rehype-raw-6.1.1.tgz#81bbef3793bd7abacc6bf8335879d1b6c868c9d4"
+ resolved "https://registry.npmjs.org/rehype-raw/-/rehype-raw-6.1.1.tgz"
integrity sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==
dependencies:
"@types/hast" "^2.0.0"
@@ -6265,7 +6228,7 @@ rehype-raw@6.1.1:
remark-breaks@3.0.2:
version "3.0.2"
- resolved "https://registry.yarnpkg.com/remark-breaks/-/remark-breaks-3.0.2.tgz#f466b9d3474d7323146c0149fc1496dabadd908e"
+ resolved "https://registry.npmjs.org/remark-breaks/-/remark-breaks-3.0.2.tgz"
integrity sha512-x96YDJ9X+Ry0/JNZFKfr1hpcAKvGYWfUTszxY9RbxKEqq6uzPPoLCuHdZsLPZZUdAv3nCROyc7FPrQLWr2rxyw==
dependencies:
"@types/mdast" "^3.0.0"
@@ -6274,7 +6237,7 @@ remark-breaks@3.0.2:
remark-parse@^10.0.0:
version "10.0.2"
- resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.2.tgz#ca241fde8751c2158933f031a4e3efbaeb8bc262"
+ resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz"
integrity sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==
dependencies:
"@types/mdast" "^3.0.0"
@@ -6283,7 +6246,7 @@ remark-parse@^10.0.0:
remark-rehype@^10.0.0:
version "10.1.0"
- resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279"
+ resolved "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz"
integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==
dependencies:
"@types/hast" "^2.0.0"
@@ -6293,34 +6256,34 @@ remark-rehype@^10.0.0:
request-progress@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe"
+ resolved "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz"
integrity sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==
dependencies:
throttleit "^1.0.0"
require-directory@^2.1.1:
version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
resize-observer-polyfill@^1.5.0:
version "1.5.1"
- resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
+ resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz"
integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
resolve-from@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
resolve-pkg-maps@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
+ resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz"
integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
resolve@^1.22.11, resolve@^1.22.4:
version "1.22.11"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262"
+ resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz"
integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==
dependencies:
is-core-module "^2.16.1"
@@ -6329,7 +6292,7 @@ resolve@^1.22.11, resolve@^1.22.4:
resolve@^2.0.0-next.5:
version "2.0.0-next.6"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.6.tgz#b3961812be69ace7b3bc35d5bf259434681294af"
+ resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz"
integrity sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==
dependencies:
es-errors "^1.3.0"
@@ -6341,7 +6304,7 @@ resolve@^2.0.0-next.5:
restore-cursor@^3.1.0:
version "3.1.0"
- resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz"
integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
dependencies:
onetime "^5.1.0"
@@ -6349,45 +6312,45 @@ restore-cursor@^3.1.0:
reusify@^1.0.4:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f"
+ resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz"
integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==
rfdc@^1.3.0:
version "1.4.1"
- resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca"
+ resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz"
integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==
rimraf@^2.5.2:
version "2.7.1"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
glob "^7.1.3"
run-parallel@^1.1.9:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
dependencies:
queue-microtask "^1.2.2"
rxjs@^7.5.1, rxjs@^7.8.2:
version "7.8.2"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b"
+ resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz"
integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==
dependencies:
tslib "^2.1.0"
sade@^1.7.3:
version "1.8.1"
- resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701"
+ resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz"
integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==
dependencies:
mri "^1.1.0"
safe-array-concat@^1.1.3:
version "1.1.3"
- resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3"
+ resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz"
integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==
dependencies:
call-bind "^1.0.8"
@@ -6398,12 +6361,12 @@ safe-array-concat@^1.1.3:
safe-buffer@^5.0.1, safe-buffer@^5.1.2:
version "5.2.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
safe-push-apply@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5"
+ resolved "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz"
integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==
dependencies:
es-errors "^1.3.0"
@@ -6411,7 +6374,7 @@ safe-push-apply@^1.0.0:
safe-regex-test@^1.0.3, safe-regex-test@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1"
+ resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz"
integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==
dependencies:
call-bound "^1.0.2"
@@ -6420,12 +6383,12 @@ safe-regex-test@^1.0.3, safe-regex-test@^1.1.0:
"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sass-loader@13.1.0:
version "13.1.0"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.1.0.tgz#e5b9acf14199a9bc6eaed7a0b8b23951c2cebf6f"
+ resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-13.1.0.tgz"
integrity sha512-tZS1RJQ2n2+QNyf3CCAo1H562WjL/5AM6Gi8YcPVVoNxQX8d19mx8E+8fRrMWsyc93ZL6Q8vZDSM0FHVTJaVnQ==
dependencies:
klona "^2.0.4"
@@ -6433,24 +6396,24 @@ sass-loader@13.1.0:
sass@1.32.8:
version "1.32.8"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.8.tgz#f16a9abd8dc530add8834e506878a2808c037bdc"
+ resolved "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz"
integrity sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==
dependencies:
chokidar ">=2.0.0 <4.0.0"
sax@^1.5.0:
version "1.6.0"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.6.0.tgz#da59637629307b97e7c4cb28e080a7bc38560d5b"
+ resolved "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz"
integrity sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==
scheduler@^0.25.0:
version "0.25.0"
- resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0.tgz#336cd9768e8cceebf52d3c80e3dcf5de23e7e015"
+ resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz"
integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==
schema-utils@^2.6.5:
version "2.7.1"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz"
integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
dependencies:
"@types/json-schema" "^7.0.5"
@@ -6459,17 +6422,17 @@ schema-utils@^2.6.5:
semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
version "6.3.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.6.3, semver@^7.7.1, semver@^7.7.3:
version "7.7.4"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz"
integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==
set-function-length@^1.2.2:
version "1.2.2"
- resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
+ resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz"
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
dependencies:
define-data-property "^1.1.4"
@@ -6481,7 +6444,7 @@ set-function-length@^1.2.2:
set-function-name@^2.0.2:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985"
+ resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz"
integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
dependencies:
define-data-property "^1.1.4"
@@ -6491,7 +6454,7 @@ set-function-name@^2.0.2:
set-proto@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e"
+ resolved "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz"
integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==
dependencies:
dunder-proto "^1.0.1"
@@ -6500,12 +6463,12 @@ set-proto@^1.0.0:
shallow-equal@^1.2.0:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da"
+ resolved "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz"
integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==
sharp@^0.33.5:
version "0.33.5"
- resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.5.tgz#13e0e4130cc309d6a9497596715240b2ec0c594e"
+ resolved "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz"
integrity sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==
dependencies:
color "^4.2.3"
@@ -6534,19 +6497,19 @@ sharp@^0.33.5:
shebang-command@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
dependencies:
shebang-regex "^3.0.0"
shebang-regex@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
side-channel-list@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad"
+ resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz"
integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
dependencies:
es-errors "^1.3.0"
@@ -6554,7 +6517,7 @@ side-channel-list@^1.0.0:
side-channel-map@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42"
+ resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz"
integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==
dependencies:
call-bound "^1.0.2"
@@ -6564,7 +6527,7 @@ side-channel-map@^1.0.1:
side-channel-weakmap@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea"
+ resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz"
integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==
dependencies:
call-bound "^1.0.2"
@@ -6575,7 +6538,7 @@ side-channel-weakmap@^1.0.2:
side-channel@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9"
+ resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz"
integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
dependencies:
es-errors "^1.3.0"
@@ -6586,19 +6549,19 @@ side-channel@^1.1.0:
signal-exit@^3.0.2, signal-exit@^3.0.3:
version "3.0.7"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+ resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
simple-swizzle@^0.2.2:
version "0.2.4"
- resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.4.tgz#a8d11a45a11600d6a1ecdff6363329e3648c3667"
+ resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz"
integrity sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==
dependencies:
is-arrayish "^0.3.1"
slice-ansi@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787"
+ resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz"
integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==
dependencies:
ansi-styles "^4.0.0"
@@ -6607,7 +6570,7 @@ slice-ansi@^3.0.0:
slice-ansi@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
+ resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz"
integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
dependencies:
ansi-styles "^4.0.0"
@@ -6616,17 +6579,17 @@ slice-ansi@^4.0.0:
slick-carousel@1.8.1:
version "1.8.1"
- resolved "https://registry.yarnpkg.com/slick-carousel/-/slick-carousel-1.8.1.tgz#a4bfb29014887bb66ce528b90bd0cda262cc8f8d"
+ resolved "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz"
integrity sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==
smart-buffer@^4.2.0:
version "4.2.0"
- resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
+ resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"
integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
snake-case@^3.0.4:
version "3.0.4"
- resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c"
+ resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz"
integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==
dependencies:
dot-case "^3.0.4"
@@ -6634,7 +6597,7 @@ snake-case@^3.0.4:
socks-proxy-agent@^8.0.5:
version "8.0.5"
- resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee"
+ resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz"
integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==
dependencies:
agent-base "^7.1.2"
@@ -6643,7 +6606,7 @@ socks-proxy-agent@^8.0.5:
socks@^2.8.3:
version "2.8.7"
- resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.7.tgz#e2fb1d9a603add75050a2067db8c381a0b5669ea"
+ resolved "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz"
integrity sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==
dependencies:
ip-address "^10.0.1"
@@ -6651,34 +6614,34 @@ socks@^2.8.3:
source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
+ resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz"
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
source-map@~0.6.1:
version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
space-separated-tokens@^2.0.0:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f"
+ resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz"
integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==
split@0.3:
version "0.3.3"
- resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
+ resolved "https://registry.npmjs.org/split/-/split-0.3.3.tgz"
integrity sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==
dependencies:
through "2"
sprintf-js@1.1.2:
version "1.1.2"
- resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
+ resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz"
integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
sshpk@^1.18.0:
version "1.18.0"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028"
+ resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz"
integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==
dependencies:
asn1 "~0.2.3"
@@ -6693,12 +6656,12 @@ sshpk@^1.18.0:
stable-hash@^0.0.5:
version "0.0.5"
- resolved "https://registry.yarnpkg.com/stable-hash/-/stable-hash-0.0.5.tgz#94e8837aaeac5b4d0f631d2972adef2924b40269"
+ resolved "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz"
integrity sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==
start-server-and-test@^2.0.12:
version "2.1.5"
- resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-2.1.5.tgz#15eaa6c152dedccff942ad8e442311bf459f1430"
+ resolved "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-2.1.5.tgz"
integrity sha512-A/SbXpgXE25ScSkpLLqvGvVZT0ykN6+AzS8tVqMBCTxbJy2Nwuen59opT+afalK5aS+AuQmZs0EsLwjnuDN+/g==
dependencies:
arg "^5.0.2"
@@ -6712,7 +6675,7 @@ start-server-and-test@^2.0.12:
stop-iteration-iterator@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad"
+ resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz"
integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==
dependencies:
es-errors "^1.3.0"
@@ -6720,19 +6683,19 @@ stop-iteration-iterator@^1.1.0:
stream-combiner@~0.0.4:
version "0.0.4"
- resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
+ resolved "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz"
integrity sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==
dependencies:
duplexer "~0.1.1"
streamsearch@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
+ resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz"
integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
streamx@^2.12.5, streamx@^2.15.0, streamx@^2.21.0:
version "2.23.0"
- resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.23.0.tgz#7d0f3d00d4a6c5de5728aecd6422b4008d66fd0b"
+ resolved "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz"
integrity sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==
dependencies:
events-universal "^1.0.0"
@@ -6741,12 +6704,12 @@ streamx@^2.12.5, streamx@^2.15.0, streamx@^2.21.0:
string-convert@^0.2.0:
version "0.2.1"
- resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97"
+ resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz"
integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
@@ -6755,7 +6718,7 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
string.prototype.includes@^2.0.1:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92"
+ resolved "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz"
integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==
dependencies:
call-bind "^1.0.7"
@@ -6764,7 +6727,7 @@ string.prototype.includes@^2.0.1:
string.prototype.matchall@^4.0.12:
version "4.0.12"
- resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz#6c88740e49ad4956b1332a911e949583a275d4c0"
+ resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz"
integrity sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==
dependencies:
call-bind "^1.0.8"
@@ -6783,7 +6746,7 @@ string.prototype.matchall@^4.0.12:
string.prototype.repeat@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#e90872ee0308b29435aa26275f6e1b762daee01a"
+ resolved "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz"
integrity sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==
dependencies:
define-properties "^1.1.3"
@@ -6791,7 +6754,7 @@ string.prototype.repeat@^1.0.0:
string.prototype.trim@^1.2.10:
version "1.2.10"
- resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81"
+ resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz"
integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==
dependencies:
call-bind "^1.0.8"
@@ -6804,7 +6767,7 @@ string.prototype.trim@^1.2.10:
string.prototype.trimend@^1.0.9:
version "1.0.9"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942"
+ resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz"
integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==
dependencies:
call-bind "^1.0.8"
@@ -6814,7 +6777,7 @@ string.prototype.trimend@^1.0.9:
string.prototype.trimstart@^1.0.8:
version "1.0.8"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde"
+ resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz"
integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
dependencies:
call-bind "^1.0.7"
@@ -6823,67 +6786,67 @@ string.prototype.trimstart@^1.0.8:
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
ansi-regex "^5.0.1"
strip-bom@^3.0.0:
version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz"
integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
strip-final-newline@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz"
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
strip-json-comments@^3.1.1:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
style-to-object@^0.3.0:
version "0.3.0"
- resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46"
+ resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz"
integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==
dependencies:
inline-style-parser "0.1.1"
styled-jsx@5.1.6:
version "5.1.6"
- resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.6.tgz#83b90c077e6c6a80f7f5e8781d0f311b2fe41499"
+ resolved "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz"
integrity sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==
dependencies:
client-only "0.0.1"
supports-color@^7.1.0:
version "7.2.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
supports-color@^8.1.1:
version "8.1.1"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz"
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
dependencies:
has-flag "^4.0.0"
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
svg-parser@^2.0.4:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
+ resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz"
integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==
svgo@^3.0.2:
version "3.3.3"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.3.tgz#8246aee0b08791fde3b0ed22b5661b471fadf58e"
+ resolved "https://registry.npmjs.org/svgo/-/svgo-3.3.3.tgz"
integrity sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==
dependencies:
commander "^7.2.0"
@@ -6896,17 +6859,17 @@ svgo@^3.0.2:
swiper@*:
version "12.1.2"
- resolved "https://registry.yarnpkg.com/swiper/-/swiper-12.1.2.tgz#39eaad0c088def66a7eb8f6bae1439384586ab90"
+ resolved "https://registry.npmjs.org/swiper/-/swiper-12.1.2.tgz"
integrity sha512-4gILrI3vXZqoZh71I1PALqukCFgk+gpOwe1tOvz5uE9kHtl2gTDzmYflYCwWvR4LOvCrJi6UEEU+gnuW5BtkgQ==
symbol-observable@^1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
+ resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
tar-fs@^3.0.6:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.1.1.tgz#4f164e59fb60f103d472360731e8c6bb4a7fe9ef"
+ resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz"
integrity sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==
dependencies:
pump "^3.0.0"
@@ -6917,7 +6880,7 @@ tar-fs@^3.0.6:
tar-stream@^3.1.5:
version "3.1.7"
- resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b"
+ resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz"
integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==
dependencies:
b4a "^1.6.4"
@@ -6926,28 +6889,28 @@ tar-stream@^3.1.5:
teex@^1.0.1:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/teex/-/teex-1.0.1.tgz#b8fa7245ef8e8effa8078281946c85ab780a0b12"
+ resolved "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz"
integrity sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==
dependencies:
streamx "^2.12.5"
text-decoder@^1.1.0:
version "1.2.7"
- resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.2.7.tgz#5d073a9a74b9c0a9d28dfadcab96b604af57d8ba"
+ resolved "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz"
integrity sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==
dependencies:
b4a "^1.6.4"
text-segmentation@^1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943"
+ resolved "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz"
integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==
dependencies:
utrie "^1.0.2"
theming@^3.3.0:
version "3.3.0"
- resolved "https://registry.yarnpkg.com/theming/-/theming-3.3.0.tgz#dacabf04aa689edde35f1e1c117ec6de73fbf870"
+ resolved "https://registry.npmjs.org/theming/-/theming-3.3.0.tgz"
integrity sha512-u6l4qTJRDaWZsqa8JugaNt7Xd8PPl9+gonZaIe28vAhqgHMIG/DOyFPqiKN/gQLQYj05tHv+YQdNILL4zoiAVA==
dependencies:
hoist-non-react-statics "^3.3.0"
@@ -6957,32 +6920,32 @@ theming@^3.3.0:
thirty-two@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/thirty-two/-/thirty-two-1.0.2.tgz#4ca2fffc02a51290d2744b9e3f557693ca6b627a"
+ resolved "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz"
integrity sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==
throttleit@^1.0.0:
version "1.0.1"
- resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.1.tgz#304ec51631c3b770c65c6c6f76938b384000f4d5"
+ resolved "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz"
integrity sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==
through@2, through@^2.3.8, through@~2.3, through@~2.3.1:
version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
tiny-invariant@^1.0.6:
version "1.3.3"
- resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127"
+ resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz"
integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==
tiny-warning@^1.0.2:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
+ resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz"
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
tinyglobby@^0.2.13, tinyglobby@^0.2.15:
version "0.2.15"
- resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2"
+ resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz"
integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==
dependencies:
fdir "^6.5.0"
@@ -6990,58 +6953,58 @@ tinyglobby@^0.2.13, tinyglobby@^0.2.15:
tldts-core@^6.1.86:
version "6.1.86"
- resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.86.tgz#a93e6ed9d505cb54c542ce43feb14c73913265d8"
+ resolved "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz"
integrity sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==
tldts@^6.1.32:
version "6.1.86"
- resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.86.tgz#087e0555b31b9725ee48ca7e77edc56115cd82f7"
+ resolved "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz"
integrity sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==
dependencies:
tldts-core "^6.1.86"
tmp@~0.2.3:
version "0.2.5"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.5.tgz#b06bcd23f0f3c8357b426891726d16015abfd8f8"
+ resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz"
integrity sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==
to-regex-range@^5.0.1:
version "5.0.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
tough-cookie@^5.0.0:
version "5.1.2"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.1.2.tgz#66d774b4a1d9e12dc75089725af3ac75ec31bed7"
+ resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz"
integrity sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==
dependencies:
tldts "^6.1.32"
tree-kill@1.2.2:
version "1.2.2"
- resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
+ resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz"
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
trim-lines@^3.0.0:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338"
+ resolved "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz"
integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==
trough@^2.0.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f"
+ resolved "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz"
integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==
ts-api-utils@^2.4.0:
version "2.4.0"
- resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8"
+ resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz"
integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==
ts-node@^10.9.2:
version "10.9.2"
- resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f"
+ resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz"
integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==
dependencies:
"@cspotcode/source-map-support" "^0.8.0"
@@ -7060,7 +7023,7 @@ ts-node@^10.9.2:
tsconfig-paths@^3.15.0:
version "3.15.0"
- resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4"
+ resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz"
integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==
dependencies:
"@types/json5" "^0.0.29"
@@ -7070,46 +7033,46 @@ tsconfig-paths@^3.15.0:
tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0:
version "2.8.1"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
+ resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
tunnel-agent@^0.6.0:
version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+ resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz"
integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
dependencies:
safe-buffer "^5.0.1"
tween-functions@^1.2.0:
version "1.2.0"
- resolved "https://registry.yarnpkg.com/tween-functions/-/tween-functions-1.2.0.tgz#1ae3a50e7c60bb3def774eac707acbca73bbc3ff"
+ resolved "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz"
integrity sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz"
integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
- resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
dependencies:
prelude-ls "^1.2.1"
type-fest@^0.21.3:
version "0.21.3"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz"
integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
type-fest@^0.8.0:
version "0.8.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz"
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
typed-array-buffer@^1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536"
+ resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz"
integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==
dependencies:
call-bound "^1.0.3"
@@ -7118,7 +7081,7 @@ typed-array-buffer@^1.0.3:
typed-array-byte-length@^1.0.3:
version "1.0.3"
- resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce"
+ resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz"
integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==
dependencies:
call-bind "^1.0.8"
@@ -7129,7 +7092,7 @@ typed-array-byte-length@^1.0.3:
typed-array-byte-offset@^1.0.4:
version "1.0.4"
- resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355"
+ resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz"
integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==
dependencies:
available-typed-arrays "^1.0.7"
@@ -7142,7 +7105,7 @@ typed-array-byte-offset@^1.0.4:
typed-array-length@^1.0.7:
version "1.0.7"
- resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d"
+ resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz"
integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==
dependencies:
call-bind "^1.0.7"
@@ -7154,12 +7117,12 @@ typed-array-length@^1.0.7:
typescript@5.2.2:
version "5.2.2"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78"
+ resolved "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz"
integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==
unbox-primitive@^1.1.0:
version "1.1.0"
- resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2"
+ resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz"
integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==
dependencies:
call-bound "^1.0.3"
@@ -7169,7 +7132,7 @@ unbox-primitive@^1.1.0:
unbzip2-stream@^1.4.3:
version "1.4.3"
- resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
+ resolved "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz"
integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==
dependencies:
buffer "^5.2.1"
@@ -7177,22 +7140,17 @@ unbzip2-stream@^1.4.3:
undici-types@~7.16.0:
version "7.16.0"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46"
+ resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz"
integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==
-undici-types@~7.18.0:
- version "7.18.2"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9"
- integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==
-
unicode-canonical-property-names-ecmascript@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2"
+ resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz"
integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==
unicode-match-property-ecmascript@^2.0.0:
version "2.0.0"
- resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3"
+ resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz"
integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
dependencies:
unicode-canonical-property-names-ecmascript "^2.0.0"
@@ -7200,17 +7158,17 @@ unicode-match-property-ecmascript@^2.0.0:
unicode-match-property-value-ecmascript@^2.2.1:
version "2.2.1"
- resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz#65a7adfad8574c219890e219285ce4c64ed67eaa"
+ resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz"
integrity sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==
unicode-property-aliases-ecmascript@^2.0.0:
version "2.2.0"
- resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz#301d4f8a43d2b75c97adfad87c9dd5350c9475d1"
+ resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz"
integrity sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==
unified@^10.0.0:
version "10.1.2"
- resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df"
+ resolved "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz"
integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==
dependencies:
"@types/unist" "^2.0.0"
@@ -7223,33 +7181,33 @@ unified@^10.0.0:
unist-util-generated@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.1.tgz#e37c50af35d3ed185ac6ceacb6ca0afb28a85cae"
+ resolved "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz"
integrity sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==
unist-util-is@^5.0.0:
version "5.2.1"
- resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.2.1.tgz#b74960e145c18dcb6226bc57933597f5486deae9"
+ resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz"
integrity sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==
dependencies:
"@types/unist" "^2.0.0"
unist-util-position@^4.0.0:
version "4.0.4"
- resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.4.tgz#93f6d8c7d6b373d9b825844645877c127455f037"
+ resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz"
integrity sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==
dependencies:
"@types/unist" "^2.0.0"
unist-util-stringify-position@^3.0.0:
version "3.0.3"
- resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d"
+ resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz"
integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==
dependencies:
"@types/unist" "^2.0.0"
unist-util-visit-parents@^5.1.1:
version "5.1.3"
- resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz#b4520811b0ca34285633785045df7a8d6776cfeb"
+ resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz"
integrity sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==
dependencies:
"@types/unist" "^2.0.0"
@@ -7257,7 +7215,7 @@ unist-util-visit-parents@^5.1.1:
unist-util-visit@^4.0.0:
version "4.1.2"
- resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.2.tgz#125a42d1eb876283715a3cb5cceaa531828c72e2"
+ resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz"
integrity sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==
dependencies:
"@types/unist" "^2.0.0"
@@ -7266,12 +7224,12 @@ unist-util-visit@^4.0.0:
universalify@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
+ resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
unrs-resolver@^1.6.2:
version "1.11.1"
- resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.11.1.tgz#be9cd8686c99ef53ecb96df2a473c64d304048a9"
+ resolved "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz"
integrity sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==
dependencies:
napi-postinstall "^0.3.0"
@@ -7298,12 +7256,12 @@ unrs-resolver@^1.6.2:
untildify@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
+ resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz"
integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
update-browserslist-db@^1.2.0:
version "1.2.3"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d"
+ resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz"
integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==
dependencies:
escalade "^3.2.0"
@@ -7311,36 +7269,36 @@ update-browserslist-db@^1.2.0:
uri-js@^4.2.2:
version "4.4.1"
- resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
dependencies:
punycode "^2.1.0"
urlpattern-polyfill@10.0.0:
version "10.0.0"
- resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz#f0a03a97bfb03cdf33553e5e79a2aadd22cac8ec"
+ resolved "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz"
integrity sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==
use-memo-one@^1.1.1:
version "1.1.3"
- resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.3.tgz#2fd2e43a2169eabc7496960ace8c79efef975e99"
+ resolved "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz"
integrity sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==
utrie@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645"
+ resolved "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz"
integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==
dependencies:
base64-arraybuffer "^1.0.2"
uuid@8.3.2, uuid@^8.3.2:
version "8.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
uvu@^0.5.0:
version "0.5.6"
- resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df"
+ resolved "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz"
integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==
dependencies:
dequal "^2.0.0"
@@ -7350,12 +7308,12 @@ uvu@^0.5.0:
v8-compile-cache-lib@^3.0.1:
version "3.0.1"
- resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
+ resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz"
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
verror@1.10.0:
version "1.10.0"
- resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+ resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz"
integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==
dependencies:
assert-plus "^1.0.0"
@@ -7364,7 +7322,7 @@ verror@1.10.0:
vfile-location@^4.0.0:
version "4.1.0"
- resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-4.1.0.tgz#69df82fb9ef0a38d0d02b90dd84620e120050dd0"
+ resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz"
integrity sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==
dependencies:
"@types/unist" "^2.0.0"
@@ -7372,7 +7330,7 @@ vfile-location@^4.0.0:
vfile-message@^3.0.0:
version "3.1.4"
- resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.4.tgz#15a50816ae7d7c2d1fa87090a7f9f96612b59dea"
+ resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz"
integrity sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==
dependencies:
"@types/unist" "^2.0.0"
@@ -7380,7 +7338,7 @@ vfile-message@^3.0.0:
vfile@^5.0.0:
version "5.3.7"
- resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.7.tgz#de0677e6683e3380fafc46544cfe603118826ab7"
+ resolved "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz"
integrity sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==
dependencies:
"@types/unist" "^2.0.0"
@@ -7390,7 +7348,7 @@ vfile@^5.0.0:
wait-on@9.0.4:
version "9.0.4"
- resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-9.0.4.tgz#ddf3a44ebd18f380621855d52973069ff2cb5b54"
+ resolved "https://registry.npmjs.org/wait-on/-/wait-on-9.0.4.tgz"
integrity sha512-k8qrgfwrPVJXTeFY8tl6BxVHiclK11u72DVKhpybHfUL/K6KM4bdyK9EhIVYGytB5MJe/3lq4Tf0hrjM+pvJZQ==
dependencies:
axios "^1.13.5"
@@ -7401,12 +7359,12 @@ wait-on@9.0.4:
web-namespaces@^2.0.0:
version "2.0.1"
- resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692"
+ resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz"
integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==
which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1:
version "1.1.1"
- resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e"
+ resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz"
integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==
dependencies:
is-bigint "^1.1.0"
@@ -7417,7 +7375,7 @@ which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1:
which-builtin-type@^1.2.1:
version "1.2.1"
- resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e"
+ resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz"
integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==
dependencies:
call-bound "^1.0.2"
@@ -7436,7 +7394,7 @@ which-builtin-type@^1.2.1:
which-collection@^1.0.2:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0"
+ resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz"
integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==
dependencies:
is-map "^2.0.3"
@@ -7446,7 +7404,7 @@ which-collection@^1.0.2:
which-typed-array@^1.1.16, which-typed-array@^1.1.19:
version "1.1.20"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.20.tgz#3fdb7adfafe0ea69157b1509f3a1cd892bd1d122"
+ resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz"
integrity sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==
dependencies:
available-typed-arrays "^1.0.7"
@@ -7459,19 +7417,19 @@ which-typed-array@^1.1.16, which-typed-array@^1.1.19:
which@^2.0.1:
version "2.0.2"
- resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
dependencies:
isexe "^2.0.0"
word-wrap@^1.2.5:
version "1.2.5"
- resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
+ resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz"
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
wrap-ansi@^6.2.0:
version "6.2.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz"
integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
dependencies:
ansi-styles "^4.0.0"
@@ -7480,7 +7438,7 @@ wrap-ansi@^6.2.0:
wrap-ansi@^7.0.0:
version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
dependencies:
ansi-styles "^4.0.0"
@@ -7489,37 +7447,37 @@ wrap-ansi@^7.0.0:
wrappy@1:
version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
ws@^8.18.0:
version "8.19.0"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.19.0.tgz#ddc2bdfa5b9ad860204f5a72a4863a8895fd8c8b"
+ resolved "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz"
integrity sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==
y18n@^5.0.5:
version "5.0.8"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
+ resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
yallist@^3.0.2:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
yallist@^4.0.0:
version "4.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
yargs-parser@^21.1.1:
version "21.1.1"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
+ resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
yargs@^17.7.2:
version "17.7.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
+ resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz"
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
dependencies:
cliui "^8.0.1"
@@ -7532,7 +7490,7 @@ yargs@^17.7.2:
yauzl@^2.10.0, yauzl@^2.9.2:
version "2.10.0"
- resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
+ resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz"
integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
dependencies:
buffer-crc32 "~0.2.3"
@@ -7540,25 +7498,25 @@ yauzl@^2.10.0, yauzl@^2.9.2:
yn@3.1.1:
version "3.1.1"
- resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
+ resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz"
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
yocto-queue@^0.1.0:
version "0.1.0"
- resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
yocto-queue@^1.0.0:
version "1.2.2"
- resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.2.tgz#3e09c95d3f1aa89a58c114c99223edf639152c00"
+ resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz"
integrity sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==
zod@3.23.8:
version "3.23.8"
- resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d"
+ resolved "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz"
integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==
zwitch@^2.0.0:
version "2.0.4"
- resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7"
+ resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz"
integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==